Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Outils open source — Gratuits, portables, hors ligne
Caractéristiques communes
100 % hors ligne — aucune donnée transmise
Portables — un seul fichier exécutable
Gratuits — MIT ou GPL v3
Code source ouvert sur GitHub
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Academy Contact

DLL Injection

hacking

Définition

L'injection de DLL (Dynamic Link Library) est une technique permettant d'exécuter du code dans le contexte d'un autre processus en forçant ce processus à charger une DLL malveillante. Cette technique est utilisée en post-exploitation pour l'injection de payloads, l'évasion de processus (exécuter du code malveillant dans un processus légitime), et le hooking d'APIs. Les méthodes d'injection DLL classiques incluent : CreateRemoteThread + LoadLibrary (ouvrir un handle vers le processus cible avec OpenProcess, allouer de la mémoire avec VirtualAllocEx, écrire le path de la DLL avec WriteProcessMemory, créer un thread dans le processus cible qui appelle LoadLibraryA avec ce path), SetWindowsHookEx (enregistrer un hook Windows qui force tous les processus utilisant ce hook à charger la DLL), et l'injection via le registre AppInit_DLLs (charge la DLL dans tous les processus utilisant user32.dll). La Reflective DLL Injection est une variante plus avancée et furtive : au lieu d'écrire un fichier DLL sur disque et d'appeler LoadLibrary (qui génère des événements de chargement de module), la DLL est chargée entièrement en mémoire sans passer par les APIs Windows standard de chargement de DLL. La DLL inclut son propre loader qui applique les relocations et importe les fonctions nécessaires. L'injection DLL dans des processus légitimes (svchost.exe, explorer.exe, lsass.exe) permet au code malveillant d'opérer sous le couvert d'un processus de confiance, potentiellement héritant de ses permissions et sa réputation pour les solutions de sécurité basées sur les processus. Des outils comme Metasploit Meterpreter utilisent l'injection DLL réflexive pour leurs payloads en mémoire, et des frameworks comme Cobalt Strike et Sliver offrent des commandes d'injection DLL dans des processus cibles.

Fonctionnement

DLL injection classique avec Python ctypes : handle = OpenProcess(PROCESS_ALL_ACCESS, False, target_pid); addr = VirtualAllocEx(handle, 0, len(dll_path), MEM_COMMIT, PAGE_READWRITE); WriteProcessMemory(handle, addr, dll_path, len(dll_path), 0); CreateRemoteThread(handle, None, 0, LoadLibraryA_addr, addr, 0, None). La DLL malveillante est chargée dans le processus cible. Reflective injection : ChargeRunPE ou Cobalt Strike shinject shinject PID arch shellcode.bin.

Exploitation offensive

L'injection dans des processus légitimsest utilisée pour contourner les whitelists d'applications et les solutions de sécurité qui font confiance aux processus système. Injecter dans lsass.exe permet d'accéder à des credentials en mémoire. Injecter dans des navigateurs permet de hooker les APIs crypto pour intercepter les credentials de certificats ou les sessions SSL.

Détection et mitigation

Les EDR surveillent les appels VirtualAllocEx + WriteProcessMemory + CreateRemoteThread sur des processus tiers — c'est une séquence très caractéristique d'injection DLL. Process Isolation (Microsoft Protected Process Light - PPL) protège les processus critiques (lsass) contre les injections non autorisées. Les solutions EDR avec analyse comportementale détectent les injections même avec des techniques réflexives avancées.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis