
Драйвер Windows в режиме ядра, блокирующий эксплуатацию CVE-2017-11882 путем перехвата создания процессов и запрета вредоносных дочерних процессов, порождаемых eqnedt32.exe.
Драйвер Windows, нейтрализующий CVE-2017-11882 : )
Этот проект разделён на драйвер ядра и компонент уведомлений в пользовательском режиме, которые взаимодействуют через специальное устройство с использованием инвертированной модели вызовов.
DriverEntry регистрирует обратный вызов PsSetCreateProcessNotifyRoutineEx, чтобы драйвер вызывался синхронно при каждом создании процесса в масштабе всей системы, до начала выполнения нового процесса.ZwOpenProcess и запрашивает ProcessImageFileName, чтобы получить полный NT-путь. Сравнение завершающего суффикса с помощью RtlCompareUnicodeString с eqnedt32.exe определяет, является ли это попыткой эксплуатации.CreateInfo->CreationStatus = STATUS_ACCESS_DENIED. Это документированный способ прервать запуск процесса из обратного вызова.Агент использует два потока: диспетчер ввода-вывода, выполняющий цикл инвертированных вызовов с WaitForSingleObject + GetOverlappedResult, и рабочий поток интерфейса, который показывает всплывающие оповещения и отображает их с помощью MessageBoxW. Дескрипторы управляются небольшой RAII-обёрткой AutoHandle.
Вся логика обнаружения полагается на родительский PID, сообщаемый ядром. Злоумышленник, вызывающий NtCreateUserProcess с PROC_THREAD_ATTRIBUTE_PARENT_PROCESS, может переназначить родителя для полезной нагрузки на explorer.exe и избежать обнаружения : )
Это решение не обнаруживает продвинутые эксплойты, выполняющие внедрение в процессы или выполнение кода в памяти. Оно обнаруживает только распространённый эксплойт для этого CVE, который запускает новый (вредоносный) процесс.