## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-DONKEY0XSHOT-CVE-2017-11882-BLOCKER
# CVE-2017-11882-Blocker
Драйвер Windows, нейтрализующий _CVE-2017-11882_ : )
## Как это работает
Этот проект разделён на драйвер ядра и компонент уведомлений в пользовательском режиме, которые взаимодействуют через специальное устройство с использованием **инвертированной модели вызовов**.
### Драйвер ядра
1. **Обратный вызов процесса** \- `DriverEntry` регистрирует обратный вызов `PsSetCreateProcessNotifyRoutineEx`, чтобы драйвер вызывался синхронно при каждом создании процесса в масштабе всей системы, до начала выполнения нового процесса.
2. **Проверка родительского процесса** \- Внутри обратного вызова драйвер открывает родительский процесс через `ZwOpenProcess` и запрашивает `ProcessImageFileName`, чтобы получить полный NT-путь. Сравнение завершающего суффикса с помощью `RtlCompareUnicodeString` с `eqnedt32.exe` определяет, является ли это попыткой эксплуатации.
3. **Предотвращение** \- При совпадении драйвер устанавливает `CreateInfo->CreationStatus = STATUS_ACCESS_DENIED`. Это документированный способ прервать запуск процесса из обратного вызова.
### Агент пользовательского режима
Агент использует два потока: диспетчер ввода-вывода, выполняющий цикл инвертированных вызовов с `WaitForSingleObject` \+ `GetOverlappedResult`, и рабочий поток интерфейса, который показывает всплывающие оповещения и отображает их с помощью `MessageBoxW`. Дескрипторы управляются небольшой RAII-обёрткой `AutoHandle`.
### Примечание о подмене PPID
Вся логика обнаружения полагается на родительский PID, сообщаемый ядром. Злоумышленник, вызывающий `NtCreateUserProcess` с `PROC_THREAD_ATTRIBUTE_PARENT_PROCESS`, может переназначить родителя для полезной нагрузки на `explorer.exe` и избежать обнаружения : )
### Ограничения
Это решение не обнаруживает продвинутые эксплойты, выполняющие внедрение в процессы или выполнение кода в памяти. Оно обнаруживает только распространённый эксплойт для этого CVE, который запускает новый (вредоносный) процесс.