Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
DLLHijackHunter — Descubrimiento automatizado de DLL Hijacking, validación y confirmación. Convirtiendo configuraciones locales incorrectas en rutas de ataque armadas y confirmadas. | Kitploit
Herramientas/GitHubGitHub/ghostvectoracademy/dllhijackhunter
Escalada de PrivilegiosEscáneres de VulnerabilidadesGeneración de PayloadsMecanismos de PersistenciaAnálisis Dinámico de Código (DAST)ExplotaciónMovimiento LateralPruebas de PenetraciónAnálisis de Binarios

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
Aprendizaje y Educación
Red Teaming
GitHubghostvectoracademy/dllhijackhunter

DLLHijackHunter

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

Ver Repositorio
39644hace 2 mesesRevisado por Kitploit

DLLHijackHunter

Por GhostVector Academy

Descubrimiento, Validación y Confirmación Automatizados de Secuestro de DLL
Convirtiendo configuraciones incorrectas locales en rutas de ataque armadas y confirmadas.


Resumen

DLLHijackHunter es una herramienta automatizada de detección de secuestro de DLL en Windows que va más allá del análisis estático. Descubre, valida y confirma oportunidades de secuestro de DLL mediante un pipeline de múltiples fases:

  1. Descubrimiento — Enumera binarios a través de servicios, tareas programadas, elementos de inicio, objetos COM y vectores de derivación UAC AutoElevate
  2. Filtración — Elimina falsos positivos mediante puertas estrictas y suaves inteligentes
  3. Confirmación Canary — Implementa una DLL canary inofensiva y activa el binario para demostrar que el secuestro funciona
  4. Puntuación e Informes — Clasifica los hallazgos por explotabilidad con un sistema de confianza por niveles

La mayoría de herramientas de secuestro de DLL se detienen en "esta DLL podría ser secuestrable". DLLHijackHunter intenta validarlo, cruzarlo con inteligencia de explotación conocida y confirmar rutas de ejecución reales cuando sea posible.


Arquitectura

root@kitploit:~
flowchart TB
    subgraph Phase1["Phase 1: Discovery"]
        SE["Static Engine<br/>Services, Tasks, Startup,<br/>COM, Run Keys"]
        AE["AutoElevate Engine<br/>Manifest + COM UAC Bypass"]
        PE["PE Analyzer<br/>Import Tables, Delay Loads,<br/>Manifests, Exports"]
        ETW["ETW Engine<br/>Real-time DLL Load<br/>Monitoring"]
        SO["Search Order<br/>Calculator"]
    end

    subgraph Phase2["Phase 2: Filter Pipeline"]
        direction LR
        HG["Hard Gates<br/>(Binary Kill)"]
        SG["Soft Gates<br/>(Confidence Adj.)"]
    end

    subgraph Phase3["Phase 3: Canary"]
        CB["Canary DLL Builder"]
        TE["Trigger Executor"]
        VF["Verification"]
    end

    subgraph Phase4["Phase 4: Output"]
        SC["Tiered Scorer"]
        RC["Console Report"]
        RJ["JSON Report"]
        RH["HTML Report"]
    end

    SE --> PE --> SO
    AE --> PE
    ETW --> SO
    SO --> Phase2
    HG --> SG
    Phase2 --> Phase3
    CB --> TE --> VF
    Phase3 --> Phase4

Características Clave

Cobertura de Tipos de Secuestro

Las entradas IFEO Debugger se enumeran y el binario referenciado se analiza en busca de importaciones de DLL, pero no hay un tipo de secuestro dedicado a IFEO/KnownDLL-bypass — no se publicitan como detecciones independientes.

Descubrimiento de Derivación UAC

DLLHijackHunter incluye descubrimiento dedicado de derivación UAC:

  • Manifest AutoElevate — Escanea System32 y SysWOW64 en busca de EXEs con <autoElevate>true</autoElevate> en manifiestos incrustados
  • AutoElevación COM — Escanea HKLM\SOFTWARE\Classes\CLSID en busca de objetos COM con Elevation\Enabled=1
  • Simulación de Side-Load — Para binarios AutoElevate que no llaman a SetDllDirectory o SetDefaultDllDirectories, simula la ruta de ataque "copiar EXE a carpeta escribible + soltar DLL"

Base de Conocimiento de Vulnerabilidades Dirigidas

  • Mapeo de vulnerabilidades dirigidas — Cruza las importaciones descubiertas con una instantánea empaquetada 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 HijackLibs; la ausencia de coincidencia no significa nada. El conjunto de datos está basado en datos reales; actualícelo descargando nuevamente https://hijacklibs.net/api/hijacklibs.json sobre ese recurso (no se requieren cambios de código). Conjunto de datos © el proyecto HijackLibs y sus colaboradores.
  • Explotación automatizada de PATH — Evalúa carpetas PATH escribibles y genera candidatos de secuestro para un mapa curado de servicios nativos de Windows que se sabe que buscan en PATH DLLs faltantes
  • Búsqueda ampliada de DLL fantasma — Busca una biblioteca de oportunidades de DLL fantasma de alto valor en múltiples categorías

Pipeline de Filtración

El pipeline reduce falsos positivos mediante dos etapas:

Puertas Estrictas

  • Filtrado de esquema de conjunto de API (api-ms-*, ext-ms-*)
  • Filtrado de KnownDLL
  • Validación de permisos de escritura ACL relativos al atacante — una ruta cuenta como escribible solo si un principal no privilegiado (Usuarios / Usuarios Autenticados / Everyone, más cuentas de servicio sub-administrador sin fugas como LOCAL SERVICE/NETWORK SERVICE) tiene derechos de escritura efectivos. Fundamentalmente, esto se calcula independientemente del token bajo el que se ejecuta la herramienta, por lo que ejecutarse como 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 Suaves

  • 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 secuestros funcionan:

root@kitploit:~
sequenceDiagram
    participant H as DLLHijackHunter
    participant B as Canary DLL Builder
    participant T as Trigger Executor
    participant V as Victim Binary

    H->>B: Build canary DLL
    B->>B: Extract precompiled canary<br/>(or compile a proxy with MSVC)
    B-->>H: canary.dll + confirmation file path
    H->>H: Place DLL at hijack path
    H->>T: Trigger binary execution
    T->>V: Start service / run task / COM activate
    V->>V: Loads canary DLL
    V-->>H: Writes confirmation file<br/>PID, privilege, integrity level
    H->>H: Record: CONFIRMED
    H->>H: Cleanup canary DLL

La DLL canary:

  • Se envía precompilada tanto para x64 como para x86, incrustada en el escáner, por lo que no se requiere compilador en el momento del escaneo. Se selecciona la arquitectura correcta para coincidir con la tasa de bits de la víctima y se extrae bajo demanda.
  • Es autoubicativa: deriva la ruta de su archivo de confirmación en tiempo de ejecución desde su propia ruta de módulo cargado (%ProgramData%\DLLHijackHunter\canary_<hash>.confirm), por lo que un binario sirve para cada candidato. El escáner calcula el mismo hash desde la ruta de implementación y sondea ese archivo.
  • Utiliza un mecanismo de confirmación basado en archivos.
  • Captura metadatos de ejecución como usuario, nivel de integridad e indicadores de privilegios.
  • No contiene carga maliciosa; es estrictamente un mecanismo de detección y validación.
  • Enlaza estáticamente el CRT, por lo que no tiene dependencia de tiempo de ejecución (ucrtbase/vcruntime) en el host víctima.

Los binarios empaquetados se construyen a partir del código fuente auditable en src/DLLHijackHunter/Resources/canary_src.c y se pueden regenerar con Resources/build_canary.bat (requiere el conjunto de herramientas MSVC C++; el escáner no lo requiere).

Excepción de proxy funcional: Cuando un secuestro de orden de búsqueda apunta a una DLL que existe y expone exportaciones, mantener el host vivo después de la confirmación requiere un proxy de reenvío de exportaciones, que se compila por DLL con MSVC (cl.exe, localizado a través de vswhere/vcvarsall). Si no hay un conjunto de herramientas presente, se utiliza la canary precompilada — aún confirma la carga (se dispara DllMain) pero no reenvía exportaciones, por lo que el proceso host puede fallar después de que se registre la confirmación. Los candidatos de DLL fantasma y otros sin exportaciones no necesitan compilador en absoluto.

Firma: Las canarys incrustadas no están firmadas. Firmarlas con código (para que se carguen bajo políticas más estrictas y sean atribuibles) requiere un certificado de firma y se deja como un paso en el momento del lanzamiento para el mantenedor.

Nota importante sobre el modo proxy/reenvío de exportaciones

Las canarys de proxy/reenvío de exportaciones son experimentales y de mejor esfuerzo. Algunos objetivos pueden fallar al cargarse correctamente o comportarse de manera inesperada dependiendo de:

  • exportaciones solo por ordinal
  • nombres de exportación decorados
  • discrepancias en convenciones de llamada
  • suposiciones del cargador/tiempo de ejecución en el proceso objetivo

Esto significa que una canary proxy fallida no siempre implica que la ruta de secuestro subyacente sea imposible.


Verificación de Orden de Carga (--verify-load)

Una verificación optativa, de usuario estándar, que se sitúa entre el pipeline de filtrado y la fase canary. Para cada candidato aplicable, escribe brevemente una DLL de sonda benigna en la posición de secuestro escribible, luego pregunta al cargador real de Windows — en un proceso hijo de corta duración — que resuelva la DLL por nombre. Donde el cargador la resuelva determina el veredicto:

  • Victoria verificada — el cargador elige la posición escribible. La afirmación de orden de búsqueda está demostrada (esta corroboración permite que el hallazgo alcance el nivel Alto; la ejecución canary sigue siendo la única ruta a Confirmado).
  • Pierde contra protegido — el cargador elige una KnownDLL, la copia de System32 o una copia redirigida por SxS. La posición casi con certeza no es secuestrable, por lo que el candidato se degrada fuertemente. Esto captura los falsos positivos clásicos que un calculador de orden de búsqueda estático pasa por alto (por ejemplo, un hallazgo de orden de búsqueda/.local para ntdll.dll que KnownDLLs hace inexplotable).

Notas de diseño y seguridad:

  • Se ejecuta en un proceso hijo para que un nombre ya cargado en el escáner no pueda cortocircuitar el resultado, y para que cualquier efecto secundario de carga o fallo esté aislado. No se requiere elevación.
  • Cada sonda se coloca, resuelve y luego se elimina; cualquier archivo preexistente se respalda y restaura.
  • Modela el ordenamiento LOAD_LIBRARY_SEARCH moderno, por lo que solo se aplica a candidatos Fantasma / Orden de Búsqueda / Side-Load. Los candidatos .local, PATH y AppInit/AppCert utilizan mecanismos diferentes y se informan como Saltados.
  • Escribe archivos transitoriamente en posiciones candidatas (impacto medio); déjelo desactivado para un triaje completamente pasivo y de solo lectura.
root@kitploit:~
# Triaje de usuario estándar con orden de búsqueda verificado por cargador (sin canary, sin ETW)
.\DLLHijackHunter.exe --lpe-only --no-canary --no-etw --verify-load

Comparación

¹ Las canarys precompiladas para ambas arquitecturas están incrustadas — **no se necesita compilador** para confirmar una carga. Solo el *proxy* opcional de reenvío de exportaciones (para mantener vivo un host que consume exportaciones) necesita MSVC.
² Mediante permisos de escritura ACL relativos al atacante (ver Pipeline de Filtración). Reduce — no elimina — falsos positivos; las heurísticas de puertas suaves (manifest/SxS/LoadLibraryEx) aún conllevan incertidumbre. Los hallazgos estáticos no verificados ahora están limitados por debajo del nivel **Alto**.
³ Derivado del estado de inicio automático, no una prueba de reinicio verificada.
⁴ El proxy de reenvío de exportaciones es experimental/de mejor esfuerzo (ver nota arriba).
⁵ Solo disparadores de Servicio/Tarea/COM; los hallazgos de derivación UAC no se activan con canary.
⁶ Respaldado por una instantánea empaquetada del conjunto de datos HijackLibs (~590 entradas); actualizable desde hijacklibs.net.

Uso

Requisitos Previos

  • Windows 10/11 o Windows Server 2016+
  • Runtime .NET 8.0 (o use una compilación autónoma)
  • Privilegios de Administrador recomendados (requerido para ETW, implementación canary y algunos disparadores de servicio)

Compilación

root@kitploit:~
git clone https://github.com/ghostvectoracademy/DLLHijackHunter.git
cd DLLHijackHunter

# Compilar (archivo único autónomo)
dotnet publish src/DLLHijackHunter/DLLHijackHunter.csproj `
    -c Release -r win-x64 --self-contained `
    -p:PublishSingleFile=true -o ./publish

# O usar el script de compilación
.\build.ps1

Inicio Rápido

root@kitploit:~
# Escaneo agresivo completo (recomendado, requiere admin)
.\DLLHijackHunter.exe --profile aggressive

# Escaneo seguro (sin descargas de archivos, sin disparadores)
.\DLLHijackHunter.exe --profile safe

# Escaneo centrado en derivación UAC
.\DLLHijackHunter.exe --profile uac-bypass

# Apuntar a un binario específico
.\DLLHijackHunter.exe --target "C:\Program Files\MyApp\app.exe"

# Apuntar por nombre de archivo (coincidencia parcial)
.\DLLHijackHunter.exe --target notepad.exe

# Solo hallazgos confirmados
.\DLLHijackHunter.exe --profile redteam --format json -o report.json

Opciones de CLI

root@kitploit:~
DLLHijackHunter — Detección Automatizada de Secuestro de DLL

Opciones:
  -p, --profile <perfil>         Perfil de escaneo [predeterminado: aggressive]
                                   aggressive | strict | safe | redteam | uac-bypass
  -o, --output <ruta>            Ruta de archivo de salida (detecta formato automáticamente)
  -f, --format <formato>         Formato de salida [predeterminado: console]
                                   console | json | html
  -t, --target <objetivo>        Apuntar a un binario, directorio o nombre de archivo específico
      --min-confidence <valor>   Umbral mínimo de confianza 0-100. Cuando se omite, se aplica
                                   el umbral de cada perfil; pasarlo lo anula.
      --no-canary                Deshabilitar confirmación canary
      --no-etw                   Deshabilitar descubrimiento en tiempo de ejecución ETW
      --verify-load              Verificar orden de búsqueda con el cargador real (ver abajo).
                                   Usuario estándar; escribe transitoriamente una sonda benigna.
      --confirmed-only           Mostrar solo hallazgos confirmados por canary
      --lpe-only                 Caza estricta de LPE: ignorar System32/Program Files, mostrar
                                   solo vulnerabilidades escribibles por usuario estándar
      --log-file <ruta>          Escribir un registro de escaneo de diagnóstico a un archivo
  -v, --verbose                  Salida detallada

Nota: --min-confidence solo se trata como anulación cuando se pasa explícitamente. De lo contrario, se utiliza el umbral del perfil seleccionado (por ejemplo, safe = 50%, strict = 80%).

Perfiles de Escaneo


Puntuación

Cada hallazgo recibe señales de confianza e impacto que se combinan en un nivel de priorización final.

Las consideraciones típicas de impacto incluyen:

  • privilegio obtenido
  • fiabilidad del disparador
  • sigilo
  • persistencia tras reinicio

La ejecución canary confirmada debe tratarse como la señal de validación más fuerte.

Bloqueo de nivel: los niveles Alto y Confirmado están reservados para hallazgos respaldados por una señal de prueba — una canary disparada, una observación de carga en tiempo de ejecución ETW o una coincidencia documentada en la base de conocimiento. Una coincidencia puramente estática de orden de búsqueda, por limpia que sea, está limitada al nivel superior del nivel Medio y anotada como Solo estático para que las heurísticas no verificadas nunca se presenten como de alta confianza.

Configuración de triaje recomendada

Dado que la capacidad de escritura se evalúa relativa al atacante, tanto las ejecuciones elevadas como las de usuario estándar son significativas:

  • Para triaje de LPE, la configuración más fiable es una ejecución de usuario estándar con --lpe-only (y --no-canary si no hay compilador disponible) — cada hallazgo superviviente es genuinamente escribible por un principal no privilegiado.
  • Las ejecuciones elevadas son necesarias para ETW y confirmación canary, y ahora están a salvo de la inversión histórica de "todo en System32 parece escribible".

Seguridad

DLLHijackHunter está diseñado para investigación de seguridad defensiva, validación en laboratorio, auditoría y simulación de equipos rojos en entornos autorizados.

Úselo solo en sistemas y redes de su propiedad o para los que tenga autorización explícita para evaluar.

Notas operativas

  • El modo canary escribe DLLs de prueba en ubicaciones candidatas
  • Algunos disparadores pueden iniciar o detener brevemente servicios/tareas durante la validación
  • Las canarys de proxy/reenvío de exportaciones pueden desestabilizar objetivos frágiles
  • El perfil seguro es el modo preferido para triaje en producción cuando no se aceptan descargas de archivos ni disparadores

Salida

DLLHijackHunter admite:

  • informes en consola
  • exportación JSON
  • exportación HTML

Flujo de trabajo recomendado:

  1. ejecutar un escaneo amplio
  2. revisar hallazgos de alta confianza
  3. usar confirmación canary selectivamente en rutas de alto valor
  4. conservar la salida JSON/HTML para informes y triaje

Licencia

MIT


Créditos

Construido por GhostVector Academy.

Descargar herramienta
TipoDescripciónSigiloEstado
FantasmaLa DLL no existe en ningún lugar del discoAltoImplementado
Orden de BúsquedaColocar la DLL antes en el orden de búsqueda de WindowsAltoImplementado
Side-LoadingAbusar de una aplicación legítima que carga DLLs desde su directorioAltoImplementado (ruta de copia a temp de AutoElevate)
Redirección .localSecuestro mediante redirección de directorio .localAltoImplementado
PATH ENVArmado de directorios con permisos de escritura en PATH del sistemaAltoImplementado (mapa curado de servicios/DLL)
DLLs AppInitAbuso de registro AppInit_DLLsBajoImplementado
DLLs AppCertAbuso de registro AppCertDLLs (se carga en cada llamador de CreateProcess/WinExec)BajoImplementado
CWDSecuestro del Directorio de Trabajo ActualBajoPlanificado — actualmente no producido por ninguna ruta de descubrimiento
CaracterísticaDLLHijackHunterRobberDLLSpyWinPEASProcmon
Descubrimiento automatizado✅✅✅✅❌
Detección de DLL fantasma✅❌✅❌✅
Análisis de orden de búsqueda✅❌❌❌❌
Verificación de permisos de escritura basada en ACL✅Parcial❌Básica❌
Monitoreo en tiempo real ETW✅❌❌❌✅
Confirmación canary✅¹❌❌❌❌
Verificación de escalada de privilegios✅❌❌❌❌
Descubrimiento de derivación UAC✅❌❌❌❌
Reducción de falsos positivos✅²NingunaBásicaNingunaNinguna
Verificación de persistencia tras reinicio✅³❌❌❌❌
Generación de DLL proxy✅⁴❌❌❌❌
Puntuación de confianza✅❌❌❌❌
Disparador automático (svc/task/COM)✅⁵❌❌❌❌
Informes HTML/JSON✅❌❌❌❌
Correlación con inteligencia de amenazas✅⁶❌❌❌❌
Explotación automatizada de PATH✅❌❌❌❌
Escaneo específico de objetivo✅❌❌❌✅
Binario autónomo✅❌❌✅❌
PerfilCaso de UsoCanaryETWDerivación UACConfianza MínimaDisparadores
aggressiveAuditoría completa, entornos de laboratorio✅✅✅15%Servicios, Tareas, COM
strictSolo hallazgos de alta confianza✅✅❌80%Servicios, Tareas
safeSistemas de producción, solo lectura❌❌❌50%Ninguno
redteamSolo explotable confirmado✅✅❌50%Servicios, Tareas, COM
uac-bypassSolo vectores de derivación UAC❌❌✅20%Solo AutoElevate