
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.
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.
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 :
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.
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
| 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.
DLLHijackHunter inclut une découverte dédiée des contournements UAC :
System32 et SysWOW64 à la recherche d'EXE avec <autoElevate>true</autoElevate> dans les manifestes intégrésHKLM\SOFTWARE\Classes\CLSID à la recherche d'objets COM avec Elevation\Enabled=1SetDllDirectory ou SetDefaultDllDirectories, simule le chemin d'attaque « copier l'EXE dans un dossier inscriptible + déposer la DLL »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échargeant https://hijacklibs.net/api/hijacklibs.json sur cette ressource (aucune modification de code requise). Jeu de données © le projet HijackLibs et ses contributeurs.PATH inscriptibles 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 le PATHLe pipeline réduit les faux positifs en deux étapes :
Portes dures
api-ms-*, ext-ms-*)Users / Authenticated Users / Everyone, plus les comptes de service sous-administrateurs sans fuite comme LOCAL 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 pas System32/Program Files inscriptibles. C'est ce qui rend les exécutions élevées significatives pour le triage LPE.Portes souples
LoadLibraryExAu 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