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

F AILLES A PPLICATIVES – I NTRODUCTION & E XPLOITATION – Projet Tutorat Réseau / Sécurité INSA de Lyon – 2011 Lucas BouillotGaétan Bouquet Arnaud KleinpeterXavier.

Présentations similaires


Présentation au sujet: "F AILLES A PPLICATIVES – I NTRODUCTION & E XPLOITATION – Projet Tutorat Réseau / Sécurité INSA de Lyon – 2011 Lucas BouillotGaétan Bouquet Arnaud KleinpeterXavier."— Transcription de la présentation:

1 F AILLES A PPLICATIVES – I NTRODUCTION & E XPLOITATION – Projet Tutorat Réseau / Sécurité INSA de Lyon – 2011 Lucas BouillotGaétan Bouquet Arnaud KleinpeterXavier Paquin

2 – I NTRODUCTION –

3 Quest ce quune faille applicative ? « faiblesse dans un système informatique permettant à un attaquant de porter atteinte à l'intégrité de ce système, c'est-à-dire à son fonctionnement normal, à la confidentialité et l'intégrité des données qu'il contient » Dans notre cas : exploitation de programmes codés en C / C++ Quels types dexploitation : Fuite dinformations Contournement de protections Détournement du flux dexécution …

4 – C ONTEXTE DA TTAQUE – Architecture INTEL x86 32 bits « little endian » Premières démonstrations sous Linux Dernière démonstration sous Windows XP Programmes C / C++ Démonstration, « Proof Of Concept »

5 – C ONTEXTE DA TTAQUE – 2 types dattaques : « remote » « local » Attaque en local : Contexte : lattaquant possède un compte sur la machine cible (ex : session SSH) Cible : exploitation de binaires « setuid » But : « privilege escalation »

6 – R APPELS & P RE -R EQUIS –

7 – R APPELS & P RE -R EQUIS – Segmentation de la mémoire code du programme.Text.Heap.Data.Bss.Stack adresses hautes adresses basses données statiques et globales initialisées données statiques et globales non-initialisées données allouées dynamiquement Variables locales, contexte de fonction

8 Les registres : De calcul : EAX, EBX, ECX, EDX De pile : EBP, ESP Dinstruction : EIP Quelques instructions : PUSH reg, POP reg CALL / RET MOV dest, src – R APPELS & P RE -R EQUIS – Quelques notions dassembleur

9 – R APPELS & P RE -R EQUIS – Appel de fonction : gestion de la pile adresses hautes adresses basses Sens de la pile ESP EBP Contexte dexécution de main()

10 – R APPELS & P RE -R EQUIS – Appel de fonction : gestion de la pile Contexte dexécution de fonction() SEIP SEBP Contexte dexécution de main() 1. Empilement des arguments 2. Sauvegarde dEIP (SEIP) sur la pile 3. EIP adresse de la fonction à appeler 4. Sauvegarde dEBP (SEBP) 5. EBP « remonte » au niveau dESP 6. Création despace pour le contexte de la fonction 2, adresses hautes adresses basses Argument 1 … Argument N 1 6 ESP EBP

11 – R APPELS & P RE -R EQUIS – Appel de fonction : gestion de la pile 1. Suppression du contexte de la fonction 2. Restauration dEBP (depuis SEBP) 3. RET = POP EIP = Restauration dEIP (depuis SEIP) Contexte dexécution de fonction() SEIP SEBP Contexte dexécution de main() adresses hautes adresses basses Argument 1 … Argument N ESP EBP

12 Un désassembleur / débuggeur : UNIX : GDB – GNU Debugger Windows : OllyDBG, WinDBG, IDA Un peu de shell Des « shellcodes » Suite dinstruction assembleur précompilées Permet de lancer un shell (doù le nom…) On détournera le flux dexécution grâce à ça – R APPELS & P RE -R EQUIS – Outils pour lexploitation

13 – E XPLOITATION N°1 – Buffer Overflow

14 « buffer » ? Zone de mémoire (ex : tableau déléments, structure de donnée, zone allouée avec malloc, …) « overflow » ? dépassement Lors dune copie, que se passe-t-il si la taille des données est supérieure à la taille du buffer qui est censé les recevoir ? – E XPLOITATION N°1 – Buffer Overflow – Introduction

15 La faille : copie de données utilisateur sans vérification de la taille Exploitation la plus courante : « stack overflow » Injection dun shellcode sur la pile et calcul de son adresse Dépassement de capacité dune variable sur la pile Écrasement de SEIP par ladresse du shellcode Le programme saute à ladresse du shellcode lors du « RET » et lexécute ! – E XPLOITATION N°1 – Buffer Overflow – Explications

16 AAAAAAAA AAAAAAAA AAAAAAAA SHELLCODE : \x90\x90\x90\x90 \xEB\x1A\x31\xC0 … adresses hautes adresses basses ESP EBP Contexte dexécution actuel SEIP SEBP adresses hautes adresses basses ESP EBP

17

18 – E XPLOITATION N°2 – Integer Overflow

19 Opération mathématique qui produit une valeur numérique supérieure au maximum stockable Limites : – E XPLOITATION N°2 – Integer Overflow – Introduction TypeTailleSignéNon signé char8 bits[ -128 ; 127 ][ 0 ; 255 ] short16 bits[ ; ][ 0 ; ] int32 bits[ ; ][ 0 ; ] …

20 Exemple : avec un char – E XPLOITATION N°2 – Integer Overflow – Introduction

21 Exemple : avec un unsigned int – E XPLOITATION N°2 – Integer Overflow – Introduction * = =

22 La faille : erreur de typage, non vérification des conditions limites, … Diverses exploitations selon les cas : Contournement de vérification sur la taille Tentative dallocation dune zone mémoire de taille nulle … – E XPLOITATION N°2 – Integer Overflow – Explications

23

24 – E XPLOITATION N°3 – Format String Attack

25 Fonctions à arguments variables fonction( argument1, … ); Un 1 er argument obligatoire Utilisation des macros va_start, va_arg et va_end pour récupérer les arguments suivants Exemple : la famille « printf » printf( "chaîne de format", argument1, …, argumentN ) Affichage dune chaine formatée – E XPLOITATION N°3 – Format String – Introduction

26 Que se passe-t-il si on ne donne pas le bon nombre darguments à printf() ? printf( "%x" ); ? utilisation des valeurs de la pile ou « seraient » normalement empilés les arguments résultat : bffffbd4 – E XPLOITATION N°3 – Format String – Introduction Contexte dexécution de printf() SEIP SEBP Contexte dexécution de la fonction appelante adresses hautes adresses basses ESP EBP %x

27 La faille : utilisation dune entrée utilisateur dans une chaine de format lutilisateur pour fournir lui-même un formatage pour manipuler la mémoire Exemple : printf( argv[1] ); Bonne utilisation : printf( "%s", argv[1] ); – E XPLOITATION N°3 – Format String – Explication Si argv[1] contient des « %... » ils seront interprété comme chaîne de format Peu importe ce que contient argv[1], ce sera uniquement affiché comme une chaine de caractères

28 Formats utiles pour lexploitation : %x : affichage hexadécimal dune valeur fournie printf( "%x", 1234 ) affiche « 4d2 », conversion hexadécimale de 1234 Lectures arbitraires en mémoire %hn : écriture du nombre doctet traité par printf à ladresse fournie (sur 2 octets) printf( "%x%hn", 1234, 0x ) affiche « 4d2 » (donc 3 caractères) écrit la valeur « 0x0003 » à ladresse 0x Écritures arbitraires en mémoire – E XPLOITATION N°3 – Format String – Explication

29 2 problèmes 2 solutions 1.Problème : Comment spécifier ladresse où écrire, puisque les valeurs utilisées seront celles qui suivent sur la pile ? Solution : « Direct Parameter Access » printf( "%3$x", 1, 2, 3 ) affiche « 3 » Nos données aussi sont sur la pile : e n donnant un numéro dargument suffisamment lointain on peut retomber sur une valeur que lon contrôle, comme si on contrôlait le N ième paramètre de printf. – E XPLOITATION N°3 – Format String – Explication

30 2 problèmes 2 solutions 2.Problème : Comment écrire une valeur précise, puisque cest le nombre doctets traité par printf qui est écrit ? Solution : Taille minimum printf( "%010x", 1234 ) affiche d2 A partir de la valeur voulue, on peut spécifier une taille minimum pour ajuster le nombre doctets traités par printf sur cette valeur – E XPLOITATION N°3 – Format String – Explication

31 Une exploitation parmi dautres : Injection dun shellcode sur la pile et calcul de son adresse Recherche dun pointeur de fonction utilisée après lappel à printf Écrasement du pointeur de fonction par ladresse du shellcode en 2 étapes : Adresse = 4 octets, or %hn = écriture de 2 octets Ajustement et écriture de la 1 ère moitié Ajustement et écriture de la 2 ème moitié Lors de lappel de la fonction écrasée, le programme saute à ladresse du shellcode et lexécute, croyant se trouver dans la fonction légitime ! – E XPLOITATION N°3 – Format String – Explication

32 Chaine type pour lexploitation : – E XPLOITATION N°3 – Format String – Explication : adresse des 2 premiers octets du pointeur de fonction : adresse des 2 derniers octets du pointeur de fonction : nombre pour lajustement de la valeur écrite, sur la 1 ère moitié de ladresse du shellcode : numéro daccès direct au paramètre pour : nombre pour lajustement de la valeur écrite, sur la 2 ème moitié de ladresse du shellcode : numéro daccès direct à (généralement +1) % x% $hn% x % $hn

33 Où trouver notre pointeur de fonction ? Dans la GOT – Global Offset Table – E XPLOITATION N°3 – Format String – Explication MALLOC : push ebp mov ebp,esp push ebx call 0xb7ff9d0b add ebx,0x68eb … EXIT : push ebp mov ebp,esp push edi push esi push ebx … PRINTF : push ebp mov ebp,esp push ebx call 0xb7e9828f add ebx,0x10db3b … SHELLCODE : \x90\x90\x90\x90 \xEB\x1A\x31\xC0 … printf 0xb7ecb4b0 malloc 0xb7ff8700 exit 0xb7eb0a30 … GOT appel de fonction

34

35 – E XPLOITATION N°3 – In The Wild

36 Les programmes précédents sont faits pour être corrompus Quen est-t-il de « vrais programmes » ? Une multitude de programmes vulnérables utilisés tous les jours IE, Firefox, Adobe Reader, libc, Exim4, … – E XPLOITATION N°3 – In The Wild – Introduction

37 Une cible pour la démonstration ? Les logiciels en IF : – E XPLOITATION N°3 – In The Wild – Introduction LogicielDernière versionVulnérabilité connue ? IE v v 9 beta Pas assez de place ici… ;) Firefox v v (v 4 beta 10) Use After Free Notepad++ v5.8.1 v DLL Hijacking Acrobat Reader v9.3.4 v 10.0 Buffer overflow Filezilla v v (v beta) Passwords en clair …

38 Quelques informations sur le format PDF Une collection dobjets Un dictionnaire des références aux objets Peut être compressé, chiffré Médias embarqués : images, vidéos, flash, pièces jointes, … Le coté obscur : JavaScript : implémentation parfois douteuse OpenAction / AutomaticAction / Handlers – E XPLOITATION N°3 – In The Wild – Adobe Acrobat Reader

39 La cible : Adobe Acrobat Reader … v La faille : mauvaise implémentation de la méthode JavaScript getIcon() Stack Overflow Lexploitation : Ouverture dun PDF malveillant – E XPLOITATION N°3 – In The Wild – Adobe Acrobat Reader

40 Le PDF : Presque vide Un script JavaScript Appel du script à louverture Appel de la fonction getIcon() – E XPLOITATION N°3 – In The Wild – Adobe Acrobat Reader PDF JavaScript OpenAction Shellcode Heap Spray getIcon()

41 La technique du « Heap Spraying » Choix dun adresse de retour sur le tas Allocation de nombreux blocs contenant : Un « NOP Sled » Un shellcode Saut à ladresse choisie sur le tas – E XPLOITATION N°3 – In The Wild – Adobe Acrobat Reader Heap NOP + SHELLCODE Adresse choisie 0x0c0c0c0c

42

43 – C ONCLUSION –

44 Facile de prendre le contrôle dun programme à partir dune erreur de codage Exploitations de plus en plus compliquées, mais de plus en plus fréquentes : Exploitations qui ciblent le français moyen Lecteurs PDF PDF malveillant Navigateurs Page Web malveillant Clients Mail malveillant …

45 – C ONCLUSION – Sécurisation / Protection : Impossible à éradiquer : le processeur ne différencie pas « code » et « données » Moyens de protections alternatifs qui rendent lexploitation plus compliquée : ASLR – Address Space Layout Randomization Bit NX – Page mémoire « Non eXecutable » DEP, SafeSEH, Kernel patches, … La meilleure des protection reste encore de coder proprement impossible…

46 – Q UESTIONS ? –

47 – L E M OT D E L A F IN – Intéressé par la sécurité ? La « Nuit Du Hack » juin à Paris entrée : 30

48 – L E M OT D E L A F IN – Programme : Conférences Ateliers Challenge ! Exemple dépreuves : Failles web : injection SQL et xpath, XSS, includes, … Wargame : overflow, format string, race conditions … Reverse : crackme android, nintendo DS, ARM, … CTF : attaque défense en équipe !

49 – L E M OT D E L A F IN –


Télécharger ppt "F AILLES A PPLICATIVES – I NTRODUCTION & E XPLOITATION – Projet Tutorat Réseau / Sécurité INSA de Lyon – 2011 Lucas BouillotGaétan Bouquet Arnaud KleinpeterXavier."

Présentations similaires


Annonces Google