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
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.

Import Obfuscation

hacking

Définition

L'obfuscation d'imports désigne les techniques permettant à un binaire malveillant de résoudre et d'utiliser des fonctions d'API Windows sans les déclarer dans sa table d'imports PE (Import Address Table - IAT), rendant l'analyse statique moins révélatrice. La table d'imports d'un binaire est une source d'information majeure pour les analyseurs de malwares — des imports comme VirtualAlloc, WriteProcessMemory, ou CreateRemoteThread signalent immédiatement un comportement potentiellement malveillant. Les techniques d'obfuscation d'imports incluent : la résolution dynamique (utiliser GetProcAddress(GetModuleHandle('ntdll'), 'NtAllocateVirtualMemory') au lieu d'un import statique — la chaîne de nom peut être obfusquée), la résolution par hash (calculer un hash du nom de chaque fonction exportée et le comparer à des hashes hardcodés — même technique que dans le hash-based shellcode), le custom PE loader (ne pas utiliser le loader Windows pour charger les DLLs, implémenter un loader custom qui résout les exports manuellement), et les forwarded exports (utiliser des chaînes de forwarding d'exports pour atteindre la fonction cible via des indirections). Des outils comme Donut (pour convertir des .NET en shellcode) et des frameworks de C2 implémentent des techniques d'obfuscation d'imports avancées. Cobalt Strike avec des Malleable C2 Profiles peut configurer le Beacon pour minimiser ses imports visibles. Un binaire avec zéro imports ou uniquement des imports dans des DLLs légitimes et innocentes (kernel32.dll pour GetProcAddress/GetModuleHandle uniquement) est suspect mais difficile à analyser statiquement sans l'exécuter ou l'émuler. Les analyseurs dynamiques et les sandboxes contournent cette technique en observant les appels d'API à l'exécution.

Fonctionnement

GetProcAddress dynamique avec nom obfusqué : typedef LPVOID (WINAPI *pVA)(LPVOID,SIZE_T,DWORD,DWORD); char fname[] = {0x56^0x11,'i'^0x11,...}; // 'VirtualAlloc' XOR 0x11 decrypt(fname); HMODULE hk = GetModuleHandleA('kernel32'); pVA VA = (pVA)GetProcAddress(hk, fname); VA(NULL, 4096, MEM_COMMIT, PAGE_EXECUTE_READWRITE);. La table d'imports ne montre que GetModuleHandleA et GetProcAddress, pas VirtualAlloc. L'analyste statique ne voit pas le comportement réel.

Exploitation offensive

L'obfuscation d'imports combinée avec l'obfuscation de chaînes crée un binaire dont la table d'imports ne contient aucune fonction révélatrice. Les outils de triage malware (capa, FLOSS) ont du mal à classifier correctement ces binaires sans émulation. Des payloads offensifs modernes utilisent exclusivement des direct syscalls (sans imports ntdll) + hash-based resolution (sans strings) pour un profil d'imports minimal.

Détection et mitigation

Les analyses dynamiques (Cuckoo, Any.run) observent les appels d'API réels lors de l'exécution, révélant les imports dynamiques. Les outils d'analyse de malware comme capa (MANDIANT) identifient les patterns de résolution dynamique d'API même sans imports statiques. Les EDR avec ETW API monitoring capturent tous les appels d'API Windows indépendamment du mécanisme de résolution.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis