Que fait techniques-anti-reversing ?
Comprendre les techniques d'anti-reversing, d'obfuscation et de protection rencontrées lors de l'analyse logicielle. Utilisez cette compétence lors de l'analyse de techniques d'évasion de malware, de la mise en œuvre de protections anti-débogage pour les défis CTF, du reverse engineering de binaires packés, ou de la création d'outils de recherche en sécurité nécessitant la détection d'environnements virtualisés.
Introduction
L'ingénierie inverse est souvent confrontée à des techniques défensives conçues pour compliquer l'analyse. Cette compétence vous aide à reconnaître et à contourner ces protections.
Techniques d'Anti-Débogage
Détection de Débogueur
IsDebuggerPresent(): Vérifie le flag PEBBeingDebugged.CheckRemoteDebuggerPresent(): Détecte un débogueur distant viaNtQueryInformationProcess.NtQueryInformationProcess(): Interroge le noyau pour les flags de débogage.
Anti-Débogage Manuel
- Détection de points d'arrêt : Recherche d'instructions
INT 3(0xCC) dans le code. - Vérifications de timing : Utilisation de
RDTSCouGetTickCount()pour détecter les délais de débogage. - Exceptions : Utilisation d'exceptions non gérées (ex.
int 2d) pour piéger les débogueurs.
Techniques d'Obfuscation
- Emballage (Packing) : Compression ou chiffrement du code exécutable.
- Réencodage (Morphing) : Modification constante du code (polymorphisme).
- Étapes de décodage : Plusieurs couches de déchiffrement/décompression.
- Débogueurs personnalisés : Extraction des couches par émulation.
Détection de Machine Virtuelle
Techniques Matérielles
- Vérification de la table IDT : Adresse de la table d'interruptions.
- Vérification de la table GDT : Adresse de la table de descripteurs globaux.
- Vérification de la table LDT : Adresse de la table de descripteurs locaux.
Techniques Logicielles
- Red Pill : Détection de VM via l'instruction
SIDT. - No Pill : Détection de VM via l'instruction
SGDT. - Strider : Détection de VM via l'instruction
SLDT.
Contournement
Ces techniques ne sont pas infaillibles. Les attaquants expérimentés peuvent les contourner en :
- Modifiant manuellement les flags dans un débogueur.
- Patchant le code pour ignorer les vérifications.
- Utilisant des émulateurs ou des machines virtuelles configurées pour échapper à la détection.
Ressources
- GitHub - Anti-Reversing Techniques
- The Art of Software Security Assessment
- Practical Malware Analysis
Note : Cette compétence est destinée à des fins éducatives et de recherche uniquement. Respectez toujours les lois et réglementations applicables lors de l'analyse de logiciels.