
DLLHijackHunter v2.5.0
Automatisierte Entdeckung, Validierung und Bestätigung von DLL-Hijacking. Lokale Fehlkonfigurationen in bewaffnete, bestätigte Angriffspfade verwandeln.
DLLHijackHunter
Von ProjectMerai
Automatisierte DLL-Hijacking-Erkennung, -Validierung und -Bestätigung
Lokale Fehlkonfigurationen in bewaffnete, bestätigte Angriffspfade verwandeln.
Überblick
DLLHijackHunter ist ein automatisiertes Windows-DLL-Hijacking-Erkennungstool, das über die statische Analyse hinausgeht. Es entdeckt, validiert und bestätigt DLL-Hijacking-Möglichkeiten mithilfe einer mehrphasigen Pipeline:
- Erkennung — Durchsucht Binärdateien in Diensten, geplanten Aufgaben, Autostart-Elementen, COM-Objekten und AutoElevate-UAC-Bypass-Vektoren
- Filterung — Eliminiert Fehlalarme durch intelligente harte und weiche Gates
- Canary-Bestätigung — Setzt eine harmlose Canary-DLL ein und löst die Binärdatei aus, um zu beweisen, dass der Hijack funktioniert
- Bewertung & Berichterstattung — Ordnet Ergebnisse nach Ausnutzbarkeit mit einem abgestuften Konfidenzsystem ein
Die meisten DLL-Hijacking-Tools stoppen bei „diese DLL könnte hijackbar sein.“ DLLHijackHunter versucht, sie zu validieren, sie mit bekannten Exploit-Intelligenzdaten abzugleichen und reale Ausführungspfade zu bestätigen, wo dies möglich ist.
Architektur
flowchart TB
subgraph Phase1["Phase 1: Erkennung"]
SE["Statische Engine<br/>Dienste, Aufgaben, Autostart,<br/>COM, Run-Keys"]
AE["AutoElevate-Engine<br/>Manifest + COM-UAC-Bypass"]
PE["PE-Analysator<br/>Import-Tabellen, verzögerte Ladungen,<br/>Manifeste, Exporte"]
ETW["ETW-Engine<br/>Echtzeit-DLL-Lade-<br/>Überwachung"]
SO["Suchreihenfolgen-<br/>Rechner"]
end
subgraph Phase2["Phase 2: Filter-Pipeline"]
direction LR
HG["Harte Gates<br/>(Binär-Kill)"]
SG["Weiche Gates<br/>(Konfidenz-Anpassung)"]
end
subgraph Phase3["Phase 3: Lade-Verifizierung (--verify-load)"]
LP["LoadProbe<br/>Kindprozess-Ladetest<br/>Probe-DLL platziert & entfernt"]
end
subgraph Phase4["Phase 4: Canary"]
CB["Canary-DLL-Builder"]
TE["Trigger-Ausführer"]
VF["Verifizierung"]
end
subgraph Phase5["Phase 5: Ausgabe"]
SC["Abgestufter Bewerter"]
RC["Konsolenbericht"]
RJ["JSON-Bericht"]
RH["HTML-Bericht"]
end
SE --> PE --> SO
AE --> PE
ETW --> SO
SO --> Phase2
HG --> SG
Phase2 --> Phase3
Phase3 --> Phase4
CB --> TE --> VF
Phase4 --> Phase5
Hauptfunktionen
Hijack-Typ-Abdeckung
| Typ | Beschreibung | Tarnung | Status |
|---|---|---|---|
| Phantom | DLL existiert nirgendwo auf der Festplatte | Hoch | Implementiert |
| Suchreihenfolge | DLL früher in der Windows-Suchreihenfolge platzieren | Hoch | Implementiert |
| Side-Loading | Missbrauch legitimer Apps, die DLLs aus ihrem Verzeichnis laden | Hoch | Implementiert (AutoElevate-Kopieren-in-Temp-Pfad) |
| .local-Umleitung | Hijack über .local-Verzeichnisumleitung | Hoch | Implementiert |
| ENV-PATH | Bewaffnung beschreibbarer Verzeichnisse im System-PATH | Hoch | Implementiert (kuratierte Dienst-/DLL-Zuordnung) |
| AppInit-DLLs | AppInit_DLLs-Registry-Missbrauch | Niedrig | Implementiert |
| AppCert-DLLs | AppCertDLLs-Registry-Missbrauch (wird in jeden CreateProcess/WinExec-Aufrufer geladen) | Niedrig | Implementiert |
| CWD | Current-Working-Directory-Hijack | Niedrig | Geplant — wird derzeit von keinem Erkennungspfad erzeugt |
IFEO-Debugger-Einträge werden aufgelistet und die referenzierte Binärdatei wird auf DLL-Importe analysiert, aber es gibt keinen dedizierten IFEO/KnownDLL-Bypass-Hijack-Typ — diese werden nicht als eigenständige Erkennungen beworben.
UAC-Bypass-Erkennung
DLLHijackHunter enthält eine dedizierte UAC-Bypass-Erkennung:
- Manifest-AutoElevate — Scannt
System32undSysWOW64nach EXEs mit<autoElevate>true</autoElevate>in eingebetteten Manifesten - COM-AutoElevation — Scannt
HKLM\SOFTWARE\Classes\CLSIDnach COM-Objekten mitElevation\Enabled=1 - Side-Load-Simulation — Für AutoElevate-Binärdateien, die weder
SetDllDirectorynochSetDefaultDllDirectoriesaufrufen, wird der Angriffspfad „EXE in beschreibbaren Ordner kopieren + DLL ablegen“ simuliert
Gezielte Schwachstellen-Wissensbasis
- Gezielte Schwachstellen-Zuordnung — Gleicht entdeckte Importe mit einem gebündelten Schnappschuss des HijackLibs-Datensatzes ab (≈590 dokumentierte DLL-Einträge, die ≈700 anfällige ausführbare Dateien umfassen), eingebettet als
Resources/hijacklibs.json. Ein Treffer erhöht die Konfidenz und verlinkt den Befund auf seine HijackLibs-Referenzseite; das Fehlen eines Treffers bedeutet nichts. Der Datensatz ist datengetrieben — aktualisieren Sie ihn, indem Siehttps://hijacklibs.net/api/hijacklibs.jsonüber diese Ressource erneut herunterladen (keine Codeänderungen erforderlich). Datensatz © das HijackLibs-Projekt und seine Mitwirkenden. - Automatisierte PATH-Ausnutzung — Bewertet beschreibbare
PATH-Ordner und generiert Hijack-Kandidaten für eine kuratierte Zuordnung nativer Windows-Dienste, die bekanntermaßenPATHnach fehlenden DLLs durchsuchen - Erweiterte Phantom-DLL-Suche — Durchsucht eine Bibliothek hochwertiger Phantom-DLL-Möglichkeiten in mehreren Kategorien
Filter-Pipeline
Die Pipeline reduziert Fehlalarme in zwei Stufen:
Harte Gates
- API-Set-Schema-Filterung (
api-ms-*,ext-ms-*) - KnownDLL-Filterung
- Angreifer-relative ACL-Schreibbarkeitsvalidierung — ein Pfad zählt nur dann als beschreibbar, wenn ein unprivilegierter Prinzipal (
Users/Authenticated Users/Everyone, plus leckgeschützte Sub-Admin-Dienstkonten wieLOCAL SERVICE/NETWORK SERVICE) effektive Schreibrechte hat. Entscheidend ist, dass dies unabhängig vom Token berechnet wird, unter dem das Tool läuft, sodass ein erhöhter LaufSystem32/Program Filesnicht als beschreibbar erscheinen lässt. Genau das macht erhöhte Läufe für die LPE-Triage sinnvoll.
Weiche Gates
- WinSxS-Manifest-Strafe
- Privilegien-Delta-Analyse
LoadLibraryEx-Minderungsprüfungen- Signaturvalidierungsprüfungen
- Strafen für elegante Fehlerbehandlung
Canary-Bestätigung
Statt zu raten, versucht DLLHijackHunter zu beweisen, dass Hijacks funktionieren:
sequenceDiagram
participant H as DLLHijackHunter
participant B as Canary-DLL-Builder
participant T as Trigger-Ausführer
participant V as Opfer-Binärdatei
H->>B: Canary-DLL erstellen
B->>B: Vorkompilierte Canary extrahieren<br/>(oder Proxy mit MSVC kompilieren)
B-->>H: canary.dll + Bestätigungsdateipfad
H->>H: DLL am Hijack-Pfad platzieren
H->>T: Binärausführung auslösen
T->>V: Dienst starten / Aufgabe ausführen / COM aktivieren
V->>V: Lädt Canary-DLL
V-->>H: Schreibt Bestätigungsdatei<br/>PID, Privileg, Integritätsstufe
H->>H: Aufzeichnen: BESTÄTIGT
H->>H: Canary-DLL bereinigen