Détection des shellcodes polymorphes

Magazine
Marque
MISC
Numéro
70
Mois de parution
novembre 2013
Domaines


Résumé

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

Cet article est réservé aux abonnés. Il vous reste 94% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite


Articles qui pourraient vous intéresser...

Zéro SQLi malgré les développeurs

Magazine
Marque
MISC
Numéro
111
Mois de parution
septembre 2020
Domaines
Résumé

Nous proposons une méthode pour effectuer des requêtes SQL qui garantit l'invulnérabilité aux injections SQL, y compris lorsqu'elle est utilisée par un développeur pressé ou incompétent, contrairement aux requêtes paramétrées. Basée sur l'utilisation d'arbres de syntaxe abstraite, elle permet facilement de construire des requêtes dynamiques et est plus facile à mettre en œuvre qu'un ORM. Nous proposons une bibliothèque Java implémentant nos idées, mais la méthode peut s'appliquer à d'autres langages de programmation et d'autres types de requêtes.

Introduction à QBDI et ses bindings Python

Magazine
Marque
MISC
Numéro
109
Mois de parution
mai 2020
Domaines
Résumé

Le présent article traite de l'outil d'instrumentation dynamique QBDI. C'est un framework de DBI (Dynamic Binary Instrumentation), comparable à d'autres projets publics tels qu’Intel PIN, Valgrind ou encore DynamoRIO. Avant d'entrer dans le vif du sujet, quelques rappels peuvent s'avérer nécessaires…