
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.
DLLHijackHunter
Por ProjectMerai
Descubrimiento, Validación y Confirmación Automatizada de DLL Hijacking
Convirtiendo configuraciones locales erróneas en rutas de ataque armadas y confirmadas.
Descripción General
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:
- Descubrimiento — Enumera binarios en servicios, tareas programadas, elementos de inicio, objetos COM y vectores de bypass de UAC AutoElevate
- Filtración — Elimina falsos positivos mediante puertas inteligentes duras y blandas
- Confirmación Canary — Despliega un DLL canary inofensivo y dispara el binario para demostrar que el hijack funciona
- Puntuación e Informes — Clasifica los hallazgos según su explotabilidad con un sistema de confianza por niveles
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.
Arquitectura
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
Características Clave
Cobertura de Tipos de Hijack
| 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.
Descubrimiento de Bypass de UAC
DLLHijackHunter incluye descubrimiento dedicado de bypass de UAC:
- AutoElevate de Manifiesto — Escanea
System32ySysWOW64en busca de EXEs con<autoElevate>true</autoElevate>en manifiestos incrustados - AutoElevación COM — Escanea
HKLM\SOFTWARE\Classes\CLSIDen busca de objetos COM conElevation\Enabled=1 - Simulación de Side-Load — Para binarios AutoElevate que no llaman a
SetDllDirectoryoSetDefaultDllDirectories, simula la ruta de ataque "copiar EXE a carpeta escribible + soltar DLL"
Base de Conocimiento de Vulnerabilidades Dirigidas
- Mapeo de vulnerabilidades dirigidas — Contrasta las importaciones descubiertas con una instantánea incluida del conjunto de datos HijackLibs (≈590 entradas de DLL documentadas que abarcan ≈700 ejecutables vulnerables), incrustada como
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-descargandohttps://hijacklibs.net/api/hijacklibs.jsonsobre ese recurso (sin cambios de código necesarios). Conjunto de datos © el proyecto HijackLibs y sus contribuyentes. - Explotación automatizada de PATH — Evalúa carpetas
PATHescribibles y genera candidatos de hijack para un mapa curado de servicios nativos de Windows conocidos por buscarPATHen busca de DLLs faltantes - Búsqueda ampliada de DLLs fantasma — Busca una biblioteca de oportunidades de DLL fantasma de alto valor en múltiples categorías
Pipeline de Filtrado
El pipeline reduce los falsos positivos mediante dos etapas:
Puertas Duras
- Filtrado de esquema de conjuntos de API (
api-ms-*,ext-ms-*) - Filtrado de KnownDLL
- Validación de escribibilidad ACL relativa al atacante — una ruta cuenta como escribible solo si un principal no privilegiado (
Users/Authenticated Users/Everyone, más cuentas de servicio sub-admin a prueba de fugas comoLOCAL 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 queSystem32/Program Filesparezcan escribibles. Esto es lo que hace que las ejecuciones elevadas sean significativas para el triaje de LPE.
Puertas Blandas
- Penalización de manifiesto WinSxS
- Análisis de delta de privilegios
- Comprobaciones de mitigación de
LoadLibraryEx - Comprobaciones de validación de firma
- Penalizaciones por manejo elegante de errores
Confirmación Canary
En 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