
DLLHijackHunter v2.4.0
Автоматизированное обнаружение, проверка и подтверждение подмены DLL. Превращение локальных неверных конфигураций в вооруженные, подтвержденные пути атаки.
DLLHijackHunter
Автор: ProjectMerai
Автоматизированное обнаружение, проверка и подтверждение DLL-хайжекинга
Превращение локальных ошибок конфигурации в подтверждённые векторы атак.
Обзор
DLLHijackHunter — это автоматизированный инструмент обнаружения DLL-хайжекинга в Windows, который выходит за рамки статического анализа. Он обнаруживает, проверяет и подтверждает возможности DLL-хайжекинга с помощью многоэтапного конвейера:
- Обнаружение — перечисляет исполняемые файлы в службах, запланированных задачах, элементах автозагрузки, COM-объектах и векторах обхода UAC AutoElevate
- Фильтрация — устраняет ложные срабатывания с помощью интеллектуальных жёстких и мягких фильтров
- Подтверждение канарейкой — разворачивает безвредную DLL-канарейку и запускает исполняемый файл, чтобы доказать работоспособность хайжека
- Оценка и отчётность — ранжирует находки по эксплуатируемости с помощью многоуровневой системы доверия
Большинство инструментов DLL-хайжекинга останавливаются на этапе «эта DLL может быть хайжекнута». DLLHijackHunter пытается проверить её, сопоставить с известной разведданной об эксплойтах и подтвердить реальные пути выполнения там, где это возможно.
Архитектура
flowchart TB
subgraph Phase1["Фаза 1: Обнаружение"]
SE["Статический движок<br/>Службы, задачи, автозагрузка,<br/>COM, ключи Run"]
AE["Движок AutoElevate<br/>Манифест + обход UAC через COM"]
PE["Анализатор PE<br/>Таблицы импорта, отложенные загрузки,<br/>манифесты, экспорты"]
ETW["Движок ETW<br/>Мониторинг загрузки DLL<br/>в реальном времени"]
SO["Калькулятор<br/>порядка поиска"]
end
subgraph Phase2["Фаза 2: Конвейер фильтрации"]
direction LR
HG["Жёсткие фильтры<br/>(исключение кандидата)"]
SG["Мягкие фильтры<br/>(корректировка доверия)"]
end
subgraph Phase3["Фаза 3: Проверка загрузки (--verify-load)"]
LP["LoadProbe<br/>Тест загрузки в дочернем процессе<br/>Пробная DLL размещается и удаляется"]
end
subgraph Phase4["Фаза 4: Канарейка"]
CB["Конструктор DLL-канарейки"]
TE["Исполнитель триггеров"]
VF["Проверка"]
end
subgraph Phase5["Фаза 5: Вывод"]
SC["Многоуровневая оценка"]
RC["Отчёт в консоль"]
RJ["Отчёт в JSON"]
RH["Отчёт в HTML"]
end
SE --> PE --> SO
AE --> PE
ETW --> SO
SO --> Phase2
HG --> SG
Phase2 --> Phase3
Phase3 --> Phase4
CB --> TE --> VF
Phase4 --> Phase5
Ключевые возможности
Покрытие типов хайжекинга
| Тип | Описание | Скрытность | Статус |
|---|---|---|---|
| Phantom | DLL не существует нигде на диске | Высокая | Реализовано |
| Search Order | Размещение DLL раньше в порядке поиска Windows | Высокая | Реализовано |
| Side-Loading | Злоупотребление загрузкой легитимным приложением DLL из своей директории | Высокая | Реализовано (путь AutoElevate copy-to-temp) |
| .local Redirect | Хайджек через перенаправление директории .local | Высокая | Реализовано |
| ENV PATH | Использование доступных для записи директорий в системном PATH | Высокая | Реализовано (подобранная карта служб/DLL) |
| AppInit DLLs | Злоупотребление реестром AppInit_DLLs | Низкая | Реализовано |
| AppCert DLLs | Злоупотребление реестром AppCertDLLs (загружается в каждый вызов CreateProcess/WinExec) | Низкая | Реализовано |
| CWD | Хайджек через текущую рабочую директорию | Низкая | Запланировано — в настоящее время не генерируется ни одним путём обнаружения |
Записи IFEO Debugger перечисляются, а указанный исполняемый файл анализируется на предмет импорта DLL, но выделенного типа хайджека IFEO/KnownDLL-bypass не существует — они не заявляются как отдельные детекции.
Обнаружение обхода UAC
DLLHijackHunter включает специализированное обнаружение обхода UAC:
- Манифест AutoElevate — сканирует
System32иSysWOW64на наличие EXE с<autoElevate>true</autoElevate>во встроенных манифестах - COM AutoElevation — сканирует
HKLM\SOFTWARE\Classes\CLSIDна наличие COM-объектов сElevation\Enabled=1 - Симуляция Side-Load — для исполняемых файлов AutoElevate, которые не вызывают
SetDllDirectoryилиSetDefaultDllDirectories, симулирует путь атаки «копирование EXE в доступную для записи папку + размещение DLL»
Целевая база знаний об уязвимостях
- Сопоставление целевых уязвимостей — перекрёстно сопоставляет обнаруженные импорты с встроенным снимком набора данных HijackLibs (≈590 задокументированных записей DLL, охватывающих ≈700 уязвимых исполняемых файлов), встроенным как
Resources/hijacklibs.json. Совпадение повышает доверие и связывает находку со страницей ссылок HijackLibs; отсутствие совпадения ничего не значит. Набор данных управляется данными — обновите его, повторно загрузивhttps://hijacklibs.net/api/hijacklibs.jsonповерх этого ресурса (без изменения кода). Набор данных © проект HijackLibs и его участники. - Автоматизированная эксплуатация PATH — оценивает доступные для записи папки
PATHи генерирует кандидатов на хайджек для подобранной карты нативных служб Windows, известных тем, что ищут отсутствующие DLL вPATH - Расширенный поиск phantom DLL — ищет библиотеку ценных возможностей phantom DLL по нескольким категориям
Конвейер фильтрации
Конвейер снижает количество ложных срабатываний в два этапа:
Жёсткие фильтры
- Фильтрация схем API-наборов (
api-ms-*,ext-ms-*) - Фильтрация KnownDLL
- Проверка доступности записи ACL относительно атакующего — путь считается доступным для записи только если непривилегированный субъект (
Users/Authenticated Users/Everyone, а также защищённые от утечек служебные учётные записи ниже администратора, такие какLOCAL SERVICE/NETWORK SERVICE) имеет эффективные права записи. Важно, что это вычисляется независимо от токена, под которым работает инструмент, поэтому запуск с повышенными привилегиями не делаетSystem32/Program Filesдоступными для записи. Именно это делает запуски с повышенными привилегиями значимыми для триажа LPE.
Мягкие фильтры
- Штраф за манифест WinSxS
- Анализ дельты привилегий
- Проверки обходных мер
LoadLibraryEx - Проверки проверки подписи
- Штрафы за корректную обработку ошибок
Подтверждение канарейкой
Вместо предположений DLLHijackHunter пытается доказать работоспособность хайджеков:
sequenceDiagram
participant H as DLLHijackHunter
participant B as Конструктор DLL-канарейки
participant T as Исполнитель триггеров
participant V as Целевой исполняемый файл