Назад к обновлениям
New releaseSep 1, 2026

DLLHijackHunter v2.4.0

Автоматизированное обнаружение, проверка и подтверждение подмены DLL. Превращение локальных неверных конфигураций в вооруженные, подтвержденные пути атаки.

Поделиться

DLLHijackHunter

От ProjectMerai

Автоматизированный поиск, проверка и подтверждение перехвата DLL в Windows
От «эту DLL, возможно, можно перехватить» до «обычный пользователь может заставить SYSTEM загрузить её — вот доказательство».


Содержание


Обзор

DLLHijackHunter находит возможности перехвата DLL на хосте Windows и стремится их доказать, а не просто перечислить. Он:

  1. Обнаруживает каждое место, где бинарный файл запускается автоматически — службы, запланированные задачи, ключи Run, папки автозагрузки, COM-серверы, DLL AppInit/AppCert, записи IFEO и автоматически повышающие привилегии бинарники UAC — и вычисляет, где будет выполняться поиск каждой импортируемой DLL.
  2. Отфильтровывает позиции, которые атакующий фактически не может использовать: API sets, KnownDLLs, каталоги, в которые обычный пользователь не может писать, защищённые процессы и другое.
  3. Проверяет (опционально) с помощью настоящего загрузчика Windows, размещая безвредную пробную DLL и проверяя, какая копия побеждает в поиске.
  4. Подтверждает (опционально) путём развёртывания безвредной канареечной DLL, запуска службы/задачи/COM-объекта и записи идентификатора, от имени которого она фактически выполнилась.
  5. Оценивает и сообщает о каждой находке по уровню уверенности и воздействию, а также связывает находки в цепочки атак (например, обычный пользователь → SYSTEM).

Каждое суждение выносится с точки зрения атакующего — непривилегированного обычного пользователя — независимо от того, запущен ли сам сканер с повышенными привилегиями. Запуск от имени администратора даёт инструменту больше видимости (ETW, канарейка, триггеры служб); он никогда не делает защищённые каталоги доступными для записи и не завышает полученные привилегии.


Быстрый старт

Скачайте или соберите DLLHijackHunter.exe (самодостаточный; установка .NET не требуется), затем из командной строки с повышенными привилегиями:

# Passive, read-only triage: no file drops, no service/task starts
.\DLLHijackHunter.exe --profile safe

# Full static analysis without touching the system, JSON report
.\DLLHijackHunter.exe --profile aggressive --no-canary --no-etw -o report.json

# Static analysis + real-loader verification (writes probe DLLs transiently)
.\DLLHijackHunter.exe --profile aggressive --no-canary --no-etw --verify-load -o report.html

# Everything, including ETW and canary confirmation — lab / authorised targets only
.\DLLHijackHunter.exe --profile aggressive -o report.html

# Focus on one application
.\DLLHijackHunter.exe --target "C:\Program Files\MyApp\app.exe" --no-canary

Антивирус: канареечные и пробные DLL не подписаны и ведут себя как полезные нагрузки для перехвата, поэтому Microsoft Defender может поместить их в карантин. Инструмент обнаруживает это и сообщает о таких результатах как неубедительных, а не как о «не поддающихся перехвату». На тестовой машине исключите целевые каталоги и %ProgramData%\DLLHijackHunter, чтобы получить однозначные результаты.


Как это работает

flowchart TB
    subgraph S1["1 · Discovery"]
        direction LR
        EN["Launch points<br/>services · tasks · Run keys<br/>startup · COM · AutoElevate"] --> PE["PE analysis<br/>imports · delay loads<br/>manifest"] --> SO["Search order<br/>identity-aware PATH"]
        ETW["ETW runtime trace<br/>optional, elevated"]
    end
    subgraph S2["2 · Filter pipeline"]
        direction LR
        HG["Hard gates<br/>API sets · KnownDLLs<br/>writability"] --> SG["Soft gates<br/>manifest · privilege<br/>PPL · LoadLibraryEx"] --> DD["Dedup and<br/>profile filters"]
    end
    subgraph S3["3 · Verification (optional)"]
        direction LR
        LP["Load probe<br/>real Windows loader"] --> CN["Canary<br/>deploy, trigger, confirm"]
    end
    subgraph S4["4 · Output"]
        direction LR
        SC["Scoring and tiers"] --> AC["Attack chains"] --> RP["Console · JSON · HTML"]
    end
    S1 --> S2 --> S3 --> S4
ФазаТребует прав администратораИзменяет систему
Статическое обнаружение + фильтрыНет (администратор видит больше)Нет
Обнаружение во время выполнения через ETWДаЗапускает службы с автозапуском (до 100) и выполняет запланированные задачи (до 30), чтобы спровоцировать загрузку DLL
Проверка загрузки (--verify-load)НетКратковременно записывает безвредную пробную DLL в каждую позицию-кандидат, затем удаляет её и восстанавливает любую исходную
Подтверждение через canaryДаЗаписывает canary DLL, останавливает/запускает службы, выполняет задачи, активирует COM-объекты, затем выполняет очистку

Что он обнаруживает

Типы перехвата

ТипЧто это означаетПримечания
PhantomDLL не существует нигде в пути поискаРазместите её в любом месте, где ищет бинарный файл
Порядок поискаКаталог с правами записи просматривается раньше легитимной копииВключает перезапись DLL в каталоге с правами записи
ENV PATHКаталог с правами записи в PATH просматривается в поисках отсутствующей DLLСлужбы проверяются только по машинному PATH — записи PATH самого пользователя службой никогда не просматриваются
Перенаправление .localПеренаправление <app>.exe.local\<dll>Сообщается только для исполняемых файлов без манифеста (или когда IFEO DevOverrideEnable=1); в противном случае загрузчик игнорирует .local, и он никогда не перенаправляет KnownDLLs
Side-load (UAC)Копирование авто-повышающего права EXE рядом с подложенной DLLТолько для EXE с <autoElevate>true</autoElevate> в их манифесте. Авто-повышение требует доверенного расположения, поэтому копия должна пройти эту проверку (например, фиктивная папка C:\Windows \System32\)
AppInit DLLsAppInit_DLLs указывает на DLL с правами записиЗагружается в каждый процесс, который загружает user32.dll
AppCert DLLsAppCertDLLs указывает на DLL с правами записиЗагружается в каждый вызывающий CreateProcess/WinExec

Бинарные файлы IFEO Debugger и SilentProcessExit\MonitorProcess перечисляются и анализируются как любая другая точка запуска. Перехваты на основе CWD в настоящее время не формируются.

От чьего имени запускается цель

Правильная идентификация определяет как вердикт о повышении привилегий, так и оценку воздействия:

Категории