## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-MEIN-0-CVE-2025-7771
# CVE-2025-7771 — ThrottleStop.sys LPE
PoC для CVE-2025-7771. ThrottleStop.sys предоставляет два обработчика IOCTL, которые позволяют произвольное чтение/запись физической памяти без контроля доступа — любой процесс с правами администратора может читать или записывать в любом месте физической ОЗУ.
Протестировано на Windows 10 22H2 и Windows 11 23H2 x64.
* * *
## Что я сделал
Начал с загрузки бинарного файла драйвера в IDA Pro, чтобы разобраться, как он работает внутри. Нашел диспетчерскую процедуру `IRP_MJ_DEVICE_CONTROL` и проследил ее до двух кодов IOCTL:
* `0x80006498` — чтение из физического адреса
* `0x8000649C` — запись по физическому адресу
Оба просто вызывают `MmMapIoSpace` напрямую с любым переданным адресом. Никакой проверки границ, ни валидации вызывающего, ничего. В этом и заключается ошибка.
Отсюда путь эксплуатации довольно прямолинеен:
1. Открыть дескриптор `\\.\ThrottleStop`
2. Использовать запрос Superfetch PFN (`NtQuerySystemInformation` класс 79) для построения карты трансляции виртуальных→физических адресов
3. Утечка базы ntoskrnl через `NtQuerySystemInformation` класс 11
4. Загрузить `ntoskrnl.exe` с диска, чтобы определить RVA экспорта `PsInitialSystemProcess`, добавить к базе времени выполнения, чтобы получить VA ядра
5. Перевести этот VA в физический адрес, прочитать его — получите указатель на SYSTEM EPROCESS
6. Прочитать токен SYSTEM из `EPROCESS+0x4b8`
7. Пройти по `ActiveProcessLinks`, чтобы найти собственный EPROCESS
8. Записать токен SYSTEM в поле нашего собственного токена (физическая запись, обходит все защиты виртуальной памяти)
9. Запустить cmd.exe — он наследует наш теперь-токен SYSTEM
Поле токена — это `_EX_FAST_REF`, поэтому младшие 4 бита являются счетчиком ссылок, а не частью указателя. Отмаскируйте их при чтении токена SYSTEM, сохраняйте свои биты счетчика ссылок при записи, иначе рискуете получить BSOD.
* * *
## Сборка
root@kitploit:~
cl /std:c++20 /EHsc /O2 exploit_single.cpp /link ntdll.lib advapi32.lib
Требуется MSVC (VS2022+) и загруженный драйвер. Запускать от имени администратора.
## Смещения EPROCESS
Эти смещения для Windows 10 20H2–22H2 и Windows 11 22H2/23H2 x64. Проверьте с помощью `dt nt!_EPROCESS` в WinDbg, если у вас другая сборка.
Поле| Смещение
---|---
UniqueProcessId| 0x440
ActiveProcessLinks| 0x448
Token| 0x4b8
* * *
## Ссылки
* CVE-2025-7771
* Исследование Kaspersky об активной эксплуатации в реальных условиях
* jonomango/superfetch
* * *
_Только для образовательных и исследовательских целей. Протестировано на личной виртуальной машине._