12
CSE-Section Sécurité Buffer Overflow Exploitation The Basics SMAHI Zakaria <[email protected]>

"Introduction aux exploits et à la faille BufferOverflow"

Embed Size (px)

DESCRIPTION

exploiter une faille de type buffer overflow dans une application pour avoir accès au système complet. by SMAHI Zakaria

Citation preview

Page 1: "Introduction aux exploits et à la faille BufferOverflow"

CSE-Section Sécurité

Buffer Overflow Exploitation

The Basics

SMAHI Zakaria <[email protected]>

Page 2: "Introduction aux exploits et à la faille BufferOverflow"

Système et CPU

Page 3: "Introduction aux exploits et à la faille BufferOverflow"

CPU

Unité de contôle: Charger et décoder les instructions, charger et stocker les données.

Unité de traitement: l'endroit d'exécution des instructions.

Les registres: cases mémoires internes au processeur.

Les flags : indicateur d'une panoplie d'évènement lors de l'éxcution.

Page 4: "Introduction aux exploits et à la faille BufferOverflow"

C'est quoi un Buffer Overflow ?

Buffer : un buffer est un espace de donnée temporaire dans la mémoire.

Buffer Overflow : un buffer overflow ou dépassement du tampon survient lorsque la taille de la donnée stockée dans le buffer dépasse l'espace du buffer lui-même.

Ce phénomème agit sur les cases mémoires adjacentes.

Page 5: "Introduction aux exploits et à la faille BufferOverflow"

Les registres

EIP (Instruction Pointer): C'est un pointeur contenant l'offset de la prochaine instruction à exécuter.

ESP (Stack Pointer): Pointeur sur le sommet de la pile.

EBP (Base Pointer): Sert à pointer sur une donnée dans la pile.

Page 6: "Introduction aux exploits et à la faille BufferOverflow"

Mémoire virtuelle

Chaque processus est aménagé dans le même espace de mémoire virtuelle indépendamment de l'emplacemnt de mémoire physique.

Chaque processus estime qu'il est seul dans le système ; qu'il jouit de toute la mémoire et qu'aucun autre processus n'existe.

L'OS et le CPU maintiennent cette abstraction.

Page 7: "Introduction aux exploits et à la faille BufferOverflow"

Programme

Page 8: "Introduction aux exploits et à la faille BufferOverflow"

Programme en assembleur

Page 9: "Introduction aux exploits et à la faille BufferOverflow"

Stack et Passage de paramétres

Int Add (int a, intb){

int c ;c = a+b ;return c ;

}

Main(){

Add(10,20) ;print() ;

}

Page 10: "Introduction aux exploits et à la faille BufferOverflow"

Exploit the BufferOverflow

« Talk is Cheap, Show me the Code ». Linus Torvalds

Page 11: "Introduction aux exploits et à la faille BufferOverflow"

Comment se protéger ?

Bon sens: Ecrire un code sécurisé en controlant la taille des arguments que le programme accepte.

NX(Non Executable Memory): Les instructions contenues dans la mémoire ne peuvent pas être exécutée.

ASLR(Address Space Layout Randomize) : A chaque exécution, les zones mémoires allouées pour le programme changent d'une façon aléatoire.

Stack Canaries: placer un int avant l'adresse RET ainsi pour changer le RET(EIP) on doit changer la valeur de ce int, une fois cette valeur est changée, le programme s'arrétera.

Page 12: "Introduction aux exploits et à la faille BufferOverflow"

Prochainement

Partie pratique : Remote Buffer Overflow. Exploiter une faille buffer Overflow pour

contrôler un système complét.

____________________________ A suivre ...