
DLLHijackHunter v2.5.0
Scoperta, validazione e conferma automatizzata del DLL Hijacking. Trasformare le configurazioni errate locali in percorsi di attacco confermati e weaponizzati.
DLLHijackHunter
Di ProjectMerai
Scoperta, Validazione e Conferma Automatica del DLL Hijacking
Trasformare le misconfigurazioni locali in percorsi d'attacco confermati e weaponizzati.
Panoramica
DLLHijackHunter è uno strumento automatizzato di rilevamento del DLL hijacking su Windows che va oltre l'analisi statica. Scopre, valida e conferma le opportunità di DLL hijacking tramite una pipeline multi-fase:
- Scoperta — Enumera i binari tra servizi, attività pianificate, elementi di avvio, oggetti COM e vettori di bypass UAC AutoElevate
- Filtraggio — Elimina i falsi positivi tramite gate intelligenti hard e soft
- Conferma Canary — Distribuisce una DLL canary innocua e attiva il binario per dimostrare che l'hijack funziona
- Scoring e Report — Classifica i risultati in base alla sfruttabilità con un sistema di confidenza a livelli
La maggior parte degli strumenti di DLL hijacking si ferma a "questa DLL potrebbe essere hijackabile." DLLHijackHunter tenta di validarla, incrociarla con intelligence sulle vulnerabilità note e confermare i percorsi di esecuzione reali dove possibile.
Architettura
flowchart TB
subgraph Phase1["Fase 1: Scoperta"]
SE["Motore Statico<br/>Servizi, Attività, Avvio,<br/>COM, Run Keys"]
AE["Motore AutoElevate<br/>Manifest + Bypass UAC COM"]
PE["Analizzatore PE<br/>Tabelle Import, Delay Loads,<br/>Manifest, Export"]
ETW["Motore ETW<br/>Monitoraggio Caricamento DLL<br/>in Tempo Reale"]
SO["Calcolatore Ordine<br/>di Ricerca"]
end
subgraph Phase2["Fase 2: Pipeline di Filtraggio"]
direction LR
HG["Gate Hard<br/>(Kill Binario)"]
SG["Gate Soft<br/>(Aggiustamento Confidenza)"]
end
subgraph Phase3["Fase 3: Verifica Caricamento (--verify-load)"]
LP["LoadProbe<br/>Test loader processo figlio<br/>Probe DLL posizionata & rimossa"]
end
subgraph Phase4["Fase 4: Canary"]
CB["Builder DLL Canary"]
TE["Esecutore Trigger"]
VF["Verifica"]
end
subgraph Phase5["Fase 5: Output"]
SC["Scorer a Livelli"]
RC["Report Console"]
RJ["Report JSON"]
RH["Report HTML"]
end
SE --> PE --> SO
AE --> PE
ETW --> SO
SO --> Phase2
HG --> SG
Phase2 --> Phase3
Phase3 --> Phase4
CB --> TE --> VF
Phase4 --> Phase5
Caratteristiche Principali
Copertura dei Tipi di Hijack
| Tipo | Descrizione | Stealth | Stato |
|---|---|---|---|
| Phantom | La DLL non esiste da nessuna parte su disco | Alta | Implementato |
| Ordine di Ricerca | Posizionare la DLL prima nell'ordine di ricerca di Windows | Alta | Implementato |
| Side-Loading | Abusare di app legittime che caricano DLL dalla propria directory | Alta | Implementato (percorso AutoElevate copy-to-temp) |
| Reindirizzamento .local | Hijack tramite reindirizzamento directory .local | Alta | Implementato |
| ENV PATH | Weaponizzazione di directory scrivibili nel PATH di sistema | Alta | Implementato (mappa curata servizi/DLL) |
| DLL AppInit | Abuso del registro AppInit_DLLs | Bassa | Implementato |
| DLL AppCert | Abuso del registro AppCertDLLs (caricate in ogni chiamante CreateProcess/WinExec) | Bassa | Implementato |
| CWD | Hijack della Directory di Lavoro Corrente | Bassa | Pianificato — attualmente non prodotto da alcun percorso di scoperta |
Le voci IFEO Debugger vengono enumerate e il binario referenziato viene analizzato per gli import DLL, ma non esiste un tipo di hijack IFEO/KnownDLL-bypass dedicato — questi non vengono pubblicizzati come rilevamenti autonomi.
Scoperta Bypass UAC
DLLHijackHunter include una scoperta dedicata del bypass UAC:
- AutoElevate Manifest — Scansiona
System32eSysWOW64per EXE con<autoElevate>true</autoElevate>nei manifest incorporati - AutoElevation COM — Scansiona
HKLM\SOFTWARE\Classes\CLSIDper oggetti COM conElevation\Enabled=1 - Simulazione Side-Load — Per binari AutoElevate che non chiamano
SetDllDirectoryoSetDefaultDllDirectories, simula il percorso d'attacco "copia EXE in cartella scrivibile + rilascia DLL"
Knowledge Base Mirata sulle Vulnerabilità
- Mappatura vulnerabilità mirate — Incrocia gli import scoperti con uno snapshot integrato del dataset HijackLibs (≈590 voci DLL documentate che coprono ≈700 eseguibili vulnerabili), incorporato come
Resources/hijacklibs.json. Una corrispondenza aumenta la confidenza e collega il risultato alla pagina di riferimento HijackLibs; l'assenza di corrispondenza non significa nulla. Il dataset è data-driven — aggiornalo riscaricandohttps://hijacklibs.net/api/hijacklibs.jsonsu quella risorsa (nessuna modifica al codice richiesta). Dataset © il progetto HijackLibs e i suoi contributori. - Sfruttamento PATH automatizzato — Valuta le cartelle
PATHscrivibili e genera candidati hijack per una mappa curata di servizi Windows nativi noti per cercare DLL mancanti nelPATH - Caccia phantom DLL ampliata — Cerca una libreria di opportunità phantom DLL ad alto valore in più categorie
Pipeline di Filtraggio
La pipeline riduce i falsi positivi attraverso due fasi:
Gate Hard
- Filtraggio schema API set (
api-ms-*,ext-ms-*) - Filtraggio KnownDLL
- Validazione scrivibilità ACL relativa all'attaccante — un percorso conta come scrivibile solo se un principal non privilegiato (
Users/Authenticated Users/Everyone, più account di servizio sub-admin a prova di leak comeLOCAL SERVICE/NETWORK SERVICE) ha diritti di scrittura effettivi. Fondamentalmente, questo viene calcolato indipendentemente dal token con cui lo strumento viene eseguito, quindi l'esecuzione con privilegi elevati non rendeSystem32/Program Filesscrivibili. Questo è ciò che rende significative le esecuzioni elevate per il triage LPE.
Gate Soft
- Penalità manifest WinSxS
- Analisi delta privilegi
- Controlli mitigazione
LoadLibraryEx - Controlli validazione firma
- Penalità gestione errori graceful
Conferma Canary
Invece di indovinare, DLLHijackHunter tenta di dimostrare che gli hijack funzionano:
sequenceDiagram
participant H as DLLHijackHunter
participant B as Builder DLL Canary
participant T as Esecutore Trigger
participant V as Binario Vittima
H->>B: Costruisci DLL canary
B->>B: Estrai canary precompilata<br/>(o compila un proxy con MSVC)
B-->>H: canary.dll + percorso file conferma
H->>H: Posiziona DLL nel percorso hijack
H->>T: Attiva esecuzione binario
T->>V: Avvia servizio / esegui attività / attiva COM
V->>V: Carica DLL canary
V-->>H: Scrive file conferma<br/>PID, privilegio, livello integrità
H->>H: Registra: CONFERMATO
H->>H: Pulizia DLL canary