La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

ANATOMY OF AN EXPLOIT BUFFER OVERFLOW. INTRODUCTION Le cas du Buffer Overflow Connu et documenté depuis 1978 Fonctionnement de la mémoire Corruption de.

Présentations similaires


Présentation au sujet: "ANATOMY OF AN EXPLOIT BUFFER OVERFLOW. INTRODUCTION Le cas du Buffer Overflow Connu et documenté depuis 1978 Fonctionnement de la mémoire Corruption de."— Transcription de la présentation:

1 ANATOMY OF AN EXPLOIT BUFFER OVERFLOW

2 INTRODUCTION Le cas du Buffer Overflow Connu et documenté depuis 1978 Fonctionnement de la mémoire Corruption de la mémoire Création d’un ‘Shell-code’

3 FONCTIONNEMENT DE LA MÉMOIRE Le buffer est une quantité de mémoire réservée pour être rempli par des données Le pointer est une adresse qui sert à référencer un endroit de la mémoire. La mémoire plate est un espace de mémoire continu (virtuel) qui permet au programme de n’avoir qu’un seul emplacement mémoire

4 LA PILE A chaque appel de fonction, la place est réservée et le pointeur se déplace

5 FONCTIONNEMENT DE LA MÉMOIRE Registres : nSP (rsp) = Stack Pointer ( haut de la pile ) nIP = Instruction Pointer ( point d’éxécution) Big endian Vs Little endian NUL Terminated Strings 0x00 « Texte » = 0x54 0x65 0x78 0x74 0x65 0x00 Le programme écrit jusqu’à arriver au NUL contenu dans la String

6 PRISE DE CONTRÔLE Test des limites non effectués Ecriture sur les données suivantes dont les pointeurs. But est de faire pointer sur un endroit sur lequel l’attaquant peut écrire.

7 EXEMPLE

8 On veut voir ce qu’il se passe lors du déroulement On met un break point avant l’allocation de mémoire et on compare.

9 EXEMPLE Avant Continue Apres

10 STACK SMACHING CORRUPTION DE VARIABLES La variable loggedin est initialisé avant la string password La valeur de loggedin est sous la string password dans la pile. loggedin Pointeur retour

11 STACK SMACHING CORRUPTION DES POINTEURS Pointeur de retour sauvé en fin de fonction Idée : Repointer vers un endroit ou l’on peut écrire, par exemple l’espace alloué à password Sous unix, utiliser les variables d’environnement En pratique on ne pointe pas directement sur le code malicieux

12 NOP SLED NOP = No-Operation Permet de déplacer le pointeur d’instruction vers le code à exécuter. Exemple : On ne sait pas ou l’on commence : 1 : continue 6 : continue 2 : continue 7 : continue 3 : continue 8 : continue 4 : continue 9 : continue 5 : Exécuter10 : Aller en 1

13 SHELL-CODE Shell-code généralement écrit en assembleur pour obtenir des OPCODES But : Faire apparaitre un root shell. Contraintes : Caractères non utilisables ( 0x00 ) Taille restreinte ( souvent par le ou les buffers )

14 D’UN CODE MACHINE À UN SHELL-CODE Peut-on encore définir des variables au milieu du code ?

15 PROBLÈMES Ne fonctionne pas dans un buffer overflow Enlever les ‘NUL’ un à un

16 CODE SANS 0X00

17 AUTRES MAUVAIS CARACTÈRES 0x0a retour à la ligne 0x09 tabulation Remplaçable par 0x0d ( pas tout le temps ) Résultat :

18 CONCLUSION Marche a suivre en 4 points : Identification des vulnérabilités Découverte des emplacements des objets et stabilisation Construction du payload Exploitation Faille propre à l’utilisation de la mémoire


Télécharger ppt "ANATOMY OF AN EXPLOIT BUFFER OVERFLOW. INTRODUCTION Le cas du Buffer Overflow Connu et documenté depuis 1978 Fonctionnement de la mémoire Corruption de."

Présentations similaires


Annonces Google