Le polymorphisme est une technique d'obfuscation de shellcodes rendant obsolètes les techniques de détection basées sur de la simple recherche de motif (pattern matching). Cet article décrit un certain nombre de solutions de contournement issues du monde de la recherche.
1. Les shellcodes polymorphes
1.1 Evolution des techniques d'obfusctation de shellcodes, du métamorphisme au polymorphisme
Une attaque par débordement de tampon (buffer overflow) au niveau de la pile fait généralement intervenir la charge utile (payload) présentée au niveau de la figure 1. À la vue de ce schéma, on comprend qu'il est trivial pour un NIDS (Network Intrusion Detection System) de détecter un tel code malveillant. En effet, une longue séquence d'instructions NOP (No OPeration, opcode 0x90) est souvent révélatrice d'une attaque de type buffer overflow ou d'une exploitation d'un bug de chaîne de format (format string bug). Une partie du shellcode (ex. : la chaîne /bin/sh) ou bien la répétition successive de l'adresse de retour (RET) sont également candidats à faire partie d'une signature d'attaque. Afin d'échapper à la détection, plusieurs techniques d'évasion ont vu le jour. Elles peuvent s'appliquer à chacune des parties composant la charge...
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première