Volver a actualizaciones
Nuevo releaseSep 1, 2026

DLLHijackHunter v2.4.0

Descubrimiento automatizado de DLL Hijacking, validación y confirmación. Convirtiendo configuraciones locales incorrectas en rutas de ataque armadas y confirmadas.

Compartir

DLLHijackHunter

Por ProjectMerai

Descubrimiento, validación y confirmación automatizados de DLL hijacking para Windows
Desde "esta DLL podría ser secuestrable" hasta "un usuario estándar puede hacer que SYSTEM cargue esto — aquí está la prueba."


Contenido


Descripción general

DLLHijackHunter encuentra oportunidades de DLL hijacking en un host Windows y se esfuerza por demostrarlas, no solo listarlas. El tool:

  1. Descubre cada lugar donde un binario se lanza automáticamente — servicios, tareas programadas, claves Run, carpetas de Inicio, servidores COM, DLLs AppInit/AppCert, entradas IFEO y binarios UAC con auto-elevación — y calcula dónde se buscaría cada DLL importada.
  2. Filtra las posiciones que un atacante no puede usar realmente: API sets, KnownDLLs, directorios en los que un usuario estándar no puede escribir, procesos protegidos y más.
  3. Verifica (opcional) con el cargador real de Windows, colocando una DLL sonda benigna y comprobando qué copia gana la búsqueda.
  4. Confirma (opcional) desplegando una DLL canary inofensiva, activando el servicio/tarea/objeto COM y registrando la identidad con la que realmente se ejecutó.
  5. Puntúa y reporta cada hallazgo por confianza e impacto, y correlaciona los hallazgos en cadenas de ataque (por ejemplo, usuario estándar → SYSTEM).

Cada juicio se realiza desde el punto de vista del atacante — un usuario estándar sin privilegios — independientemente de si el propio escáner se ejecuta con privilegios elevados. Ejecutarse como Administrador da al tool más visibilidad (ETW, canary, activadores de servicios); nunca hace que los directorios protegidos parezcan escribibles ni infla el privilegio obtenido.


Inicio rápido

Descarga o compila DLLHijackHunter.exe (autocontenido; no requiere instalar .NET), luego desde un símbolo del sistema elevado:

# 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

Antivirus: los DLL canary y probe no están firmados y se comportan como payloads de secuestro, por lo que Microsoft Defender puede ponerlos en cuarentena. La herramienta detecta esto y reporta esos resultados como no concluyentes en lugar de "no secuestrable". En una máquina de prueba, excluya los directorios objetivo y %ProgramData%\DLLHijackHunter para obtener resultados definitivos.


Cómo funciona

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
FaseRequiere adminModifica el sistema
Descubrimiento estático + filtrosNo (el admin ve más)No
Descubrimiento en tiempo de ejecución mediante ETWSíInicia servicios de inicio automático (hasta 100) y ejecuta tareas programadas (hasta 30) para provocar cargas de DLL
Sonda de carga (--verify-load)NoEscribe brevemente una DLL de sonda benigna en cada posición candidata, luego la elimina y restaura cualquier original
Confirmación mediante canarySíEscribe una DLL canary, detiene/inicia servicios, ejecuta tareas, activa objetos COM y luego limpia

Qué detecta

Tipos de secuestro

TipoQué significaNotas
PhantomLa DLL no existe en ninguna parte de la ruta de búsquedaColócala en cualquier lugar donde el binario busque
Orden de búsquedaSe busca en un directorio escribible antes que en la copia legítimaIncluye sobrescribir una DLL en un directorio escribible
ENV PATHSe busca una DLL faltante en un directorio escribible de PATHLos servicios se evalúan solo contra el PATH de máquina — las entradas del PATH del propio usuario nunca son buscadas por un servicio
Redirección .localRedirección <app>.exe.local\<dll>Solo se reporta para ejecutables sin manifiesto (o cuando IFEO DevOverrideEnable=1); el cargador ignora .local en caso contrario, y nunca redirige KnownDLLs
Side-load (UAC)Copiar un EXE con auto-elevación junto a una DLL plantadaSolo para EXEs con <autoElevate>true</autoElevate> en su manifiesto. La auto-elevación requiere una ubicación de confianza, por lo que la copia debe superar esa comprobación (p. ej., una carpeta simulada C:\Windows \System32\)
AppInit DLLsAppInit_DLLs apunta a una DLL escribibleSe carga en cada proceso que carga user32.dll
AppCert DLLsAppCertDLLs apunta a una DLL escribibleSe carga en cada llamador de CreateProcess/WinExec

Los binarios de IFEO Debugger y SilentProcessExit\MonitorProcess se enumeran y analizan como cualquier otro punto de lanzamiento. Actualmente no se generan secuestros basados en CWD.

Con qué identidad se ejecuta el objetivo

La identidad correcta determina tanto el veredicto de escalada de privilegios como la puntuación de impacto:

Categorías