
Descubrimiento automatizado de DLL Hijacking, validación y confirmación. Convirtiendo configuraciones locales incorrectas en rutas de ataque armadas y confirmadas.
Descubrimiento, Validación y Confirmación Automatizada de DLL Hijacking
Convirtiendo configuraciones locales erróneas en rutas de ataque armadas y confirmadas.
DLLHijackHunter es una herramienta automatizada de detección de DLL hijacking en Windows que va más allá del análisis estático. Descubre, valida y confirma oportunidades de DLL hijacking mediante un pipeline de múltiples fases:
La mayoría de las herramientas de DLL hijacking se detienen en "este DLL podría ser secuestrable". DLLHijackHunter intenta validarlo, contrastarlo con inteligencia de exploits conocida y confirmar rutas de ejecución reales cuando sea posible.
flowchart TB
subgraph Phase1["Fase 1: Descubrimiento"]
SE["Motor Estático<br/>Servicios, Tareas, Inicio,<br/>COM, Claves Run"]
AE["Motor AutoElevate<br/>Manifiesto + Bypass UAC COM"]
PE["Analizador PE<br/>Tablas de Importación, Cargas Diferidas,<br/>Manifiestos, Exportaciones"]
ETW["Motor ETW<br/>Monitoreo de Carga de DLL<br/>en Tiempo Real"]
SO["Calculador de<br/>Orden de Búsqueda"]
end
subgraph Phase2["Fase 2: Pipeline de Filtrado"]
direction LR
HG["Puertas Duras<br/>(Eliminación Binaria)"]
SG["Puertas Blandas<br/>(Ajuste de Confianza)"]
end
subgraph Phase3["Fase 3: Verificación de Carga (--verify-load)"]
LP["LoadProbe<br/>Prueba de carga en proceso hijo<br/>DLL de prueba colocado y eliminado"]
end
subgraph Phase4["Fase 4: Canary"]
CB["Constructor de DLL Canary"]
TE["Ejecutor de Disparo"]
VF["Verificación"]
end
subgraph Phase5["Fase 5: Salida"]
SC["Puntuador por Niveles"]
RC["Informe de Consola"]
RJ["Informe JSON"]
RH["Informe HTML"]
end
SE --> PE --> SO
AE --> PE
ETW --> SO
SO --> Phase2
HG --> SG
Phase2 --> Phase3
Phase3 --> Phase4
CB --> TE --> VF
Phase4 --> Phase5
| Tipo | Descripción | Sigilo | Estado |
|---|---|---|---|
| Fantasma | El DLL no existe en ningún lugar del disco | Alto | Implementado |
| Orden de Búsqueda | Colocar el DLL antes en el orden de búsqueda de Windows | Alto | Implementado |
| Side-Loading | Abusar de aplicaciones legítimas que cargan DLLs desde su directorio | Alto | Implementado (ruta de copia a temp de AutoElevate) |
| Redirección .local | Hijack mediante redirección de directorio .local | Alto | Implementado |
| ENV PATH | Armado de directorios escribibles en el PATH del sistema | Alto | Implementado (mapa curado de servicios/DLL) |
| DLLs AppInit | Abuso del registro AppInit_DLLs | Bajo | Implementado |
| DLLs AppCert | Abuso del registro AppCertDLLs (se carga en cada llamador de CreateProcess/WinExec) | Bajo | Implementado |
| CWD | Hijack del Directorio de Trabajo Actual | Bajo | Planificado — actualmente no producido por ninguna ruta de descubrimiento |
Las entradas de depurador IFEO se enumeran y el binario referenciado se analiza en busca de importaciones de DLL, pero no existe un tipo de hijack dedicado de bypass de IFEO/KnownDLL — esos no se anuncian como detecciones independientes.
DLLHijackHunter incluye descubrimiento dedicado de bypass de UAC:
System32 y SysWOW64 en busca de EXEs con <autoElevate>true</autoElevate> en manifiestos incrustadosHKLM\SOFTWARE\Classes\CLSID en busca de objetos COM con Elevation\Enabled=1SetDllDirectory o SetDefaultDllDirectories, simula la ruta de ataque "copiar EXE a carpeta escribible + soltar DLL"Resources/hijacklibs.json. Una coincidencia aumenta la confianza y vincula el hallazgo a su página de referencia de HijackLibs; la ausencia de coincidencia no significa nada. El conjunto de datos está basado en datos — actualícelo re-descargando https://hijacklibs.net/api/hijacklibs.json sobre ese recurso (sin cambios de código necesarios). Conjunto de datos © el proyecto HijackLibs y sus contribuyentes.PATH escribibles y genera candidatos de hijack para un mapa curado de servicios nativos de Windows conocidos por buscar PATH en busca de DLLs faltantesEl pipeline reduce los falsos positivos mediante dos etapas:
Puertas Duras
api-ms-*, ext-ms-*)Users / Authenticated Users / Everyone, más cuentas de servicio sub-admin a prueba de fugas como LOCAL SERVICE/NETWORK SERVICE) tiene derechos de escritura efectivos. Crucialmente, esto se calcula independientemente del token bajo el que se ejecuta la herramienta, por lo que ejecutarse elevado no hace que System32/Program Files parezcan escribibles. Esto es lo que hace que las ejecuciones elevadas sean significativas para el triaje de LPE.Puertas Blandas
LoadLibraryExEn lugar de adivinar, DLLHijackHunter intenta demostrar que los hijacks funcionan:
sequenceDiagram
participant H as DLLHijackHunter
participant B as Constructor de DLL Canary
participant T as Ejecutor de Disparo
participant V as Binario Víctima