
DLLHijackHunter v2.4.0
Descoberta, Validação e Confirmação Automatizada de DLL Hijacking. Transformando configurações incorretas locais em caminhos de ataque armados e confirmados.
DLLHijackHunter
Por ProjectMerai
Descoberta, Validação e Confirmação Automatizada de DLL Hijacking
Transformando configurações incorretas locais em caminhos de ataque confirmados e armados.
Visão Geral
O DLLHijackHunter é uma ferramenta automatizada de detecção de DLL hijacking para Windows que vai além da análise estática. Ele descobre, valida e confirma oportunidades de DLL hijacking usando um pipeline de múltiplas fases:
- Descoberta — Enumera binários em serviços, tarefas agendadas, itens de inicialização, objetos COM e vetores de bypass de UAC AutoElevate
- Filtragem — Elimina falsos positivos por meio de portões rígidos e flexíveis inteligentes
- Confirmação Canary — Implanta um DLL canary inofensivo e aciona o binário para provar que o hijack funciona
- Pontuação e Relatórios — Classifica os achados por explorabilidade com um sistema de confiança em níveis
A maioria das ferramentas de DLL hijacking para em "este DLL pode ser sequestrável". O DLLHijackHunter tenta validá-lo, cruzá-lo com inteligência de exploração conhecida e confirmar caminhos de execução reais quando possível.
Arquitetura
flowchart TB
subgraph Phase1["Fase 1: Descoberta"]
SE["Mecanismo Estático<br/>Serviços, Tarefas, Inicialização,<br/>COM, Chaves Run"]
AE["Mecanismo AutoElevate<br/>Manifesto + Bypass UAC COM"]
PE["Analisador PE<br/>Tabelas de Importação, Cargas Atrasadas,<br/>Manifestos, Exportações"]
ETW["Mecanismo ETW<br/>Monitoramento de Carga de DLL<br/>em Tempo Real"]
SO["Calculadora de<br/>Ordem de Busca"]
end
subgraph Phase2["Fase 2: Pipeline de Filtragem"]
direction LR
HG["Portões Rígidos<br/>(Eliminação Binária)"]
SG["Portões Flexíveis<br/>(Ajuste de Confiança)"]
end
subgraph Phase3["Fase 3: Verificação de Carga (--verify-load)"]
LP["LoadProbe<br/>Teste de carregador em processo filho<br/>DLL de sonda colocada e removida"]
end
subgraph Phase4["Fase 4: Canary"]
CB["Construtor de DLL Canary"]
TE["Executor de Gatilho"]
VF["Verificação"]
end
subgraph Phase5["Fase 5: Saída"]
SC["Pontuador em Níveis"]
RC["Relatório de Console"]
RJ["Relatório JSON"]
RH["Relatório HTML"]
end
SE --> PE --> SO
AE --> PE
ETW --> SO
SO --> Phase2
HG --> SG
Phase2 --> Phase3
Phase3 --> Phase4
CB --> TE --> VF
Phase4 --> Phase5
Principais Recursos
Cobertura de Tipos de Hijack
| Tipo | Descrição | Furtividade | Status |
|---|---|---|---|
| Fantasma | DLL não existe em nenhum lugar do disco | Alta | Implementado |
| Ordem de Busca | Colocar o DLL antes na ordem de busca do Windows | Alta | Implementado |
| Side-Loading | Abusar de aplicativos legítimos que carregam DLLs do próprio diretório | Alta | Implementado (caminho AutoElevate copiar-para-temp) |
| Redirecionamento .local | Hijack via redirecionamento de diretório .local | Alta | Implementado |
| ENV PATH | Armação de diretórios graváveis no PATH do sistema | Alta | Implementado (mapa curado de serviço/DLL) |
| DLLs AppInit | Abuso do registro AppInit_DLLs | Baixa | Implementado |
| DLLs AppCert | Abuso do registro AppCertDLLs (carrega em todo chamador de CreateProcess/WinExec) | Baixa | Implementado |
| CWD | Hijack do Diretório de Trabalho Atual | Baixa | Planejado — atualmente não produzido por nenhum caminho de descoberta |
Entradas IFEO Debugger são enumeradas e o binário referenciado é analisado quanto a importações de DLL, mas não há um tipo de hijack IFEO/bypass de KnownDLL dedicado — esses não são anunciados como detecções independentes.
Descoberta de Bypass de UAC
O DLLHijackHunter inclui descoberta dedicada de bypass de UAC:
- AutoElevate de Manifesto — Verifica
System32eSysWOW64em busca de EXEs com<autoElevate>true</autoElevate>em manifestos incorporados - AutoElevação COM — Verifica
HKLM\SOFTWARE\Classes\CLSIDem busca de objetos COM comElevation\Enabled=1 - Simulação de Side-Load — Para binários AutoElevate que não chamam
SetDllDirectoryouSetDefaultDllDirectories, simula o caminho de ataque "copiar EXE para pasta gravável + soltar DLL"
Base de Conhecimento de Vulnerabilidades Direcionadas
- Mapeamento de vulnerabilidades direcionadas — Cruza importações descobertas com um instantâneo integrado do conjunto de dados HijackLibs (≈590 entradas de DLL documentadas abrangendo ≈700 executáveis vulneráveis), incorporado como
Resources/hijacklibs.json. Uma correspondência aumenta a confiança e vincula o achado à página de referência do HijackLibs; a ausência de correspondência não significa nada. O conjunto de dados é orientado por dados — atualize-o baixando novamentehttps://hijacklibs.net/api/hijacklibs.jsonsobre esse recurso (sem necessidade de alterações de código). Conjunto de dados © o projeto HijackLibs e colaboradores. - Exploração automatizada de PATH — Avalia pastas graváveis do
PATHe gera candidatos a hijack para um mapa curado de serviços nativos do Windows conhecidos por buscar DLLs ausentes noPATH - Caça expandida a DLLs fantasmas — Busca uma biblioteca de oportunidades de DLL fantasma de alto valor em várias categorias
Pipeline de Filtragem
O pipeline reduz falsos positivos por meio de dois estágios:
Portões Rígidos
- Filtragem de esquema de conjuntos de API (
api-ms-*,ext-ms-*) - Filtragem de KnownDLL
- Validação de gravabilidade ACL relativa ao atacante — um caminho conta como gravável somente se um principal não privilegiado (
Users/Authenticated Users/Everyone, além de contas de serviço subadministrador à prova de vazamento comoLOCAL SERVICE/NETWORK SERVICE) tiver direitos de escrita efetivos. Crucialmente, isso é calculado independentemente do token sob o qual a ferramenta é executada, então executar elevado não fazSystem32/Program Filesparecerem graváveis. É isso que torna execuções elevadas significativas para triagem de LPE.
Portões Flexíveis
- Penalidade de manifesto WinSxS
- Análise de delta de privilégios
- Verificações de mitigação de
LoadLibraryEx - Verificações de validação de assinatura
- Penalidades de tratamento gracioso de erros
Confirmação Canary
Em vez de adivinhar, o DLLHijackHunter tenta provar que os hijacks funcionam:
sequenceDiagram
participant H as DLLHijackHunter
participant B as Construtor de DLL Canary
participant T as Executor de Gatilho
participant V as Binário Vítima