SSTIC 2009 Optimiser pour r egner La compilation dans tous ses - - PowerPoint PPT Presentation

sstic 2009
SMART_READER_LITE
LIVE PREVIEW

SSTIC 2009 Optimiser pour r egner La compilation dans tous ses - - PowerPoint PPT Presentation

D esobfuscation automatique de binaires Et autres idyles bucoliques. . . Alexandre Gazet Yoann Guillot Sogeti / ESEC R&D Sogeti / ESEC R&D alexandre.gazet(at)sogeti.com yoann.guillot(at)sogeti.com SSTIC 2009 Optimiser pour r


slide-1
SLIDE 1

D´ esobfuscation automatique de binaires

Et autres idyles bucoliques. . .

Alexandre Gazet

Sogeti / ESEC R&D alexandre.gazet(at)sogeti.com

Yoann Guillot

Sogeti / ESEC R&D yoann.guillot(at)sogeti.com

SSTIC 2009

slide-2
SLIDE 2

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Plan

1

La compilation dans tous ses ´ etats Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

2

D´ ecompilation

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 2/26

slide-3
SLIDE 3

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Point de d´ epart

N´ ecessit´ e d’automatisation Nous avons d´ ej` a :

Processeur filtrant Parcours du graphe de contrˆ

  • le (CFG)

Application de r` egles de r´ e´ ecriture Modification ` a la vol´ ee du CFG

Analyse manuelle du code obfusqu´ e Recherche manuelle de motifs

P´ enible Peu g´ en´ erique ´ Eventuellement inefficace : ex r´ esistance au polymorphisme

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 3/26

slide-4
SLIDE 4

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Nouvelle approche

Besoins Conservation de la s´ emantique R´ e´ ecriture du code dans une forme plus simple ´ Elimination du code mort etc. Les compilateurs le font d´ ej` a : l’optimisation Notre crit` ere d’optimisation : la concision du code

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 4/26

slide-5
SLIDE 5

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Pr´ esentation de la cible

La cible Une protection ` a base de virtualisation Massivement obfusqu´ ee (difficult´ e d’analyse + polymorphisme) Approche propos´ ee Greffe d’un module d’optimisation sur le module du parcours de graphes

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 5/26

slide-6
SLIDE 6

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Constant propagation

cfh mov al , 12h 67h mov cl , 46h 69h xor cl , a l cfh mov al , 12h 67h mov cl , 46h 69h xor cl , 12h

Fig.: Propagation de 12h ` a travers al.

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 6/26

slide-7
SLIDE 7

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Constant folding

cfh mov al , 12h 67h mov cl , 46h 69h xor cl , 12h cfh mov al , 12h 67h mov cl , 54h

Fig.: R´ eduction de cl.

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 7/26

slide-8
SLIDE 8

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Operation folding

4 fh add al , −7fh 51h add al , bl 53h add al , −70h 4 fh add al , 11h 51h add al , bl

Fig.: R´ eduction de l’op´ eration add.

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 8/26

slide-9
SLIDE 9

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

D´ emo

Optimisation d’un handler

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 9/26

slide-10
SLIDE 10

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Analyse s´ emantique des handlers

M´ ethode code binding de l’objet disassembler Exemple de handler optimis´ e

l od s d xor eax , ebx add eax , 859 f c f a e h sub ebx , eax push eax

S´ emantique (binding)

dword p t r [ esp ] := ( dword p t r [ e s i ]ˆ ebx )+859 f c f a e h eax := ( dword p t r [ e s i ]ˆ ebx )+859 f c f a e h ebx := ebx+−(dword p t r [ e s i ]ˆ ebx )−859 f c f a e h e s i := e s i +4 esp := esp −4

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 10/26

slide-11
SLIDE 11

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Au commencement

2`

eme projection de Futamura

´ Etant donnn´ es deux langages La et Lb, il est possible de trouver un compilateur de Lb vers La, si on connaˆ ıt un interpr´ eteur de Lb ´ ecrit en La Comment ?

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 11/26

slide-12
SLIDE 12

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Du statique au (presque) dynamique

Binding contextualis´ e :

dword p t r [ esp ] := 0 c0000001h eax := 0 c0000001h ebx := 4000 fd8ch e s i := 100167 c2h esp := esp −4

Assembleur g´ en´ er´ e : push 0c0000001h Suivi du flot d’ex´ ecution du bytecode

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 12/26

slide-13
SLIDE 13

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

D´ emo

Ex´ ecution symbolique et g´ en´ eration assembleur

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 13/26

slide-14
SLIDE 14

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Interpr´ etation du r´ esultat

L’int´ egralit´ e du bytecode a ´ et´ e compil´ ee en asm Ia32 natif Des r´ ef´ erences au contexte de l’interpr´ eteur Proche d’un automate ` a pile ⇒ module d’optimisation + abstraction

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 14/26

slide-15
SLIDE 15

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Injection d’abstraction

Extension du processeur

Ia32 : : Reg . i t o s [ 3 2 ] . concat ( % w[ v i r t e a x ] ) Ia32 : : Reg . i t o s [ 1 6 ] . concat ( % w[ v i r t a x ] ) Ia32 : : Reg . i t o s [ 8 ] . concat ( % w[ v i r t a l ] ) Ia32 : : Reg . s t o i . c l e a r Ia32 : : Reg . i t o s . each { | sz , hh | hh . e a c h w i t h i n d e x { | r , i | Ia32 : : Reg . s t o i [ r ] = [ i , sz ] } } Ia32 : : Reg : : Sym . r e p l a c e Ia32 : : Reg . i t o s [ 3 2 ] . map { | s | s . to sym }

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 15/26

slide-16
SLIDE 16

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

D´ emo

Chunk optimis´ e avec registres virtuels

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 16/26

slide-17
SLIDE 17

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Phase finale

Injections des registres virtuels Optimisation Expression du code en registres virtuels uniquement Registres virtuels remapp´ es sur les registres natifs Compilation et ´ edition des liens

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 17/26

slide-18
SLIDE 18

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

D´ emo

Code d´ evirtualis´ e, mapp´ e dans le binaire

  • riginal
  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 18/26

slide-19
SLIDE 19

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Conclusion(s) 1/2

M´ ethodes d’optimisation (r` egles de r´ e´ ecriture)

Tr` es efficaces Implementation limit´ ee

localit´ e des optimisations manque d’une repr´ esentation interm´ ediaire inadapt´ ee aux obfuscations du flot de contrˆ

  • le

L’´ evaluation partielle ou sp´ ecialisation

Pr´ e-calcul de tous les ´ el´ ements statiques :

Mouvements de donn´ ees dans le code obfusqu´ e Application de l’interpr´ eteur au bytecode

Approche g´ en´ erique Relativement coˆ uteux en temps de calcul

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 19/26

slide-20
SLIDE 20

La compilation dans tous ses ´ etats D´ ecompilation Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s)

Conclusion(s) 2/2

Int´ egration et r´ eutilisation du d´ esobfuscateur

Le code actuel est ` a l’´ etat de prototype En cours d’int´ egration au framework sous forme d’un plugin propre Utilisable sur tout code x86, avec des parties cross-platforme

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 20/26

slide-21
SLIDE 21

La compilation dans tous ses ´ etats D´ ecompilation

Plan

1

La compilation dans tous ses ´ etats

2

D´ ecompilation

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 21/26

slide-22
SLIDE 22

La compilation dans tous ses ´ etats D´ ecompilation

D´ ecompilation

Interface arch-sp´ ecifique r´ eduite Meilleure expressivit´ e du code Repr´ esentation plus simple des boucles S´ emantique plus simple ` a manipuler

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 22/26

slide-23
SLIDE 23

La compilation dans tous ses ´ etats D´ ecompilation

D´ ecompilation : limitations

Des constructions assembleur sont difficiles ` a transcrire en C

rol, ror jmp eax

N´ ecessit´ e que le code soit formatt´ e correctement

Fonction/sous-fonctions ABIs/Conventions d’appels

On peut imaginer des moyens de s’en accomoder

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 23/26

slide-24
SLIDE 24

La compilation dans tous ses ´ etats D´ ecompilation

D´ emo

D´ ecompilation

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 24/26

slide-25
SLIDE 25

La compilation dans tous ses ´ etats D´ ecompilation

N’oubliez pas

Metasm https://metasm.cr0.org/ Blog http://esec.fr.sogeti.com/blog/

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 25/26

slide-26
SLIDE 26

La compilation dans tous ses ´ etats D´ ecompilation

Conclusion

Merci pour votre attention.

Des questions ?

  • A. Gazet, Y. Guillot

D´ esobfuscation automatique de binaires 26/26