
DLLHijackHunter v2.5.0
Découverte, validation et confirmation automatisées du détournement de DLL. Transformer des erreurs de configuration locales en chemins d’attaque armés et confirmés.
DLLHijackHunter
Par ProjectMerai
Découverte, validation et confirmation automatisées du détournement de DLL
Transformer les mauvaises configurations locales en chemins d'attaque confirmés et exploitables.
Vue d'ensemble
DLLHijackHunter est un outil automatisé de détection de détournement de DLL sous Windows qui va au-delà de l'analyse statique. Il découvre, valide et confirme les opportunités de détournement de DLL grâce à un pipeline en plusieurs phases :
- Découverte — Énumère les binaires à travers les services, les tâches planifiées, les éléments de démarrage, les objets COM et les vecteurs de contournement UAC AutoElevate
- Filtration — Élimine les faux positifs grâce à des portes dures et souples intelligentes
- Confirmation par canari — Déploie une DLL canari inoffensive et déclenche le binaire pour prouver que le détournement fonctionne
- Notation et rapport — Classe les résultats par exploitabilité avec un système de confiance par niveaux
La plupart des outils de détournement de DLL s'arrêtent à « cette DLL pourrait être détournable ». DLLHijackHunter tente de la valider, de la recouper avec des renseignements d'exploitation connus et de confirmer les chemins d'exécution réels lorsque c'est possible.
Architecture
flowchart TB
subgraph Phase1["Phase 1 : Découverte"]
SE["Moteur statique<br/>Services, tâches, démarrage,<br/>COM, clés Run"]
AE["Moteur AutoElevate<br/>Manifeste + contournement UAC COM"]
PE["Analyseur PE<br/>Tables d'imports, chargements différés,<br/>manifestes, exports"]
ETW["Moteur ETW<br/>Surveillance en temps réel<br/>des chargements de DLL"]
SO["Calculateur d'ordre<br/>de recherche"]
end
subgraph Phase2["Phase 2 : Pipeline de filtrage"]
direction LR
HG["Portes dures<br/>(élimination du binaire)"]
SG["Portes souples<br/>(ajustement de confiance)"]
end
subgraph Phase3["Phase 3 : Vérification du chargement (--verify-load)"]
LP["LoadProbe<br/>Test de chargement en processus enfant<br/>DLL sonde placée et retirée"]
end
subgraph Phase4["Phase 4 : Canari"]
CB["Générateur de DLL canari"]
TE["Exécuteur de déclenchement"]
VF["Vérification"]
end
subgraph Phase5["Phase 5 : Sortie"]
SC["Notateur par niveaux"]
RC["Rapport console"]
RJ["Rapport JSON"]
RH["Rapport HTML"]
end
SE --> PE --> SO
AE --> PE
ETW --> SO
SO --> Phase2
HG --> SG
Phase2 --> Phase3
Phase3 --> Phase4
CB --> TE --> VF
Phase4 --> Phase5
Fonctionnalités clés
Couverture des types de détournement
| Type | Description | Furtivité | Statut |
|---|---|---|---|
| Fantôme | La DLL n'existe nulle part sur le disque | Élevée | Implémenté |
| Ordre de recherche | Placer la DLL plus tôt dans l'ordre de recherche Windows | Élevée | Implémenté |
| Chargement latéral | Abuser du chargement par une application légitime de DLL depuis son répertoire | Élevée | Implémenté (chemin AutoElevate copie-vers-temp) |
| Redirection .local | Détournement via la redirection de répertoire .local | Élevée | Implémenté |
| PATH d'environnement | Exploitation de répertoires inscriptibles dans le PATH système | Élevée | Implémenté (carte service/DLL organisée) |
| DLL AppInit | Abus de la clé de registre AppInit_DLLs | Faible | Implémenté |
| DLL AppCert | Abus de la clé de registre AppCertDLLs (chargée dans chaque appelant CreateProcess/WinExec) | Faible | Implémenté |
| CWD | Détournement du répertoire de travail courant | Faible | Prévu — actuellement non produit par aucun chemin de découverte |
Les entrées IFEO Debugger sont énumérées et le binaire référencé est analysé pour ses imports de DLL, mais il n'existe pas de type de détournement IFEO/contournement KnownDLL dédié — ceux-ci ne sont pas présentés comme des détections autonomes.
Découverte de contournement UAC
DLLHijackHunter inclut une découverte dédiée des contournements UAC :
- AutoElevate par manifeste — Analyse
System32etSysWOW64à la recherche d'EXE avec<autoElevate>true</autoElevate>dans les manifestes intégrés - Autoélévation COM — Analyse
HKLM\SOFTWARE\Classes\CLSIDà la recherche d'objets COM avecElevation\Enabled=1 - Simulation de chargement latéral — Pour les binaires AutoElevate qui n'appellent pas
SetDllDirectoryouSetDefaultDllDirectories, simule le chemin d'attaque « copier l'EXE dans un dossier inscriptible + déposer la DLL »
Base de connaissances ciblée sur les vulnérabilités
- Cartographie ciblée des vulnérabilités — Recoupe les imports découverts avec un instantané intégré du jeu de données HijackLibs (≈590 entrées de DLL documentées couvrant ≈700 exécutables vulnérables), intégré sous
Resources/hijacklibs.json. Une correspondance augmente la confiance et relie le résultat à sa page de référence HijackLibs ; l'absence de correspondance ne signifie rien. Le jeu de données est piloté par les données — actualisez-le en retéléchargeanthttps://hijacklibs.net/api/hijacklibs.jsonsur cette ressource (aucune modification de code requise). Jeu de données © le projet HijackLibs et ses contributeurs. - Exploitation automatisée du PATH — Évalue les dossiers
PATHinscriptibles et génère des candidats de détournement pour une carte organisée de services Windows natifs connus pour rechercher des DLL manquantes dans lePATH - Recherche élargie de DLL fantômes — Recherche une bibliothèque d'opportunités de DLL fantômes à forte valeur dans plusieurs catégories
Pipeline de filtrage
Le pipeline réduit les faux positifs en deux étapes :
Portes dures
- Filtrage du schéma des ensembles d'API (
api-ms-*,ext-ms-*) - Filtrage KnownDLL
- Validation de l'inscriptibilité ACL relative à l'attaquant — un chemin ne compte comme inscriptible que si un principal non privilégié (
Users/Authenticated Users/Everyone, plus les comptes de service sous-administrateurs sans fuite commeLOCAL SERVICE/NETWORK SERVICE) dispose de droits d'écriture effectifs. De manière cruciale, ceci est calculé indépendamment du jeton sous lequel l'outil s'exécute, donc une exécution élevée ne rend pasSystem32/Program Filesinscriptibles. C'est ce qui rend les exécutions élevées significatives pour le triage LPE.
Portes souples
- Pénalité de manifeste WinSxS
- Analyse du delta de privilèges
- Vérifications des atténuations
LoadLibraryEx - Vérifications de validation de signature
- Pénalités de gestion d'erreurs gracieuses
Confirmation par canari
Au lieu de deviner, DLLHijackHunter tente de prouver que les détournements fonctionnent :
sequenceDiagram
participant H as DLLHijackHunter
participant B as Générateur de DLL canari
participant T as Exécuteur de déclenchement
participant V as Binaire victime