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´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation Conclusion(s) Plan La compilation dans tous ses ´ etats 1 Optimiser pour r´ egner Les limites de la virtualisation Conclusion(s) D´ ecompilation 2 A. Gazet, Y. Guillot D´ esobfuscation automatique de binaires 2/26
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation Conclusion(s) Point de d´ epart N´ ecessit´ e d’automatisation Nous avons d´ ej` a : Processeur filtrant Parcours du graphe de contrˆ ole ( 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
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation 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
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation 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
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation Conclusion(s) Constant propagation cfh mov al , 12h cfh mov al , 12h 67h mov cl , 46h 67h mov cl , 46h 69h xor cl , a l 69h xor cl , 12h Fig. : Propagation de 12h ` a travers al . A. Gazet, Y. Guillot D´ esobfuscation automatique de binaires 6/26
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation Conclusion(s) Constant folding cfh mov al , 12h cfh mov al , 12h 67h mov cl , 46h 67h mov cl , 54h 69h xor cl , 12h Fig. : R´ eduction de cl . A. Gazet, Y. Guillot D´ esobfuscation automatique de binaires 7/26
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation Conclusion(s) Operation folding 4 fh add al , − 7fh 4 fh add al , 11h 51h add al , bl 51h add al , bl 53h add al , − 70h Fig. : R´ eduction de l’op´ eration add . A. Gazet, Y. Guillot D´ esobfuscation automatique de binaires 8/26
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation Conclusion(s) D´ emo Optimisation d’un handler A. Gazet, Y. Guillot D´ esobfuscation automatique de binaires 9/26
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation 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
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation Conclusion(s) Au commencement eme projection de Futamura 2 ` ´ Etant donnn´ es deux langages L a et L b , il est possible de trouver un compilateur de L b vers L a , si on connaˆ ıt un interpr´ eteur de L b ´ ecrit en L a Comment ? A. Gazet, Y. Guillot D´ esobfuscation automatique de binaires 11/26
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation 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
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation Conclusion(s) D´ emo Ex´ ecution symbolique et g´ en´ eration assembleur A. Gazet, Y. Guillot D´ esobfuscation automatique de binaires 13/26
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation 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
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation 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
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation Conclusion(s) D´ emo Chunk optimis´ e avec registres virtuels A. Gazet, Y. Guillot D´ esobfuscation automatique de binaires 16/26
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation 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
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation Conclusion(s) D´ emo Code d´ evirtualis´ e, mapp´ e dans le binaire original A. Gazet, Y. Guillot D´ esobfuscation automatique de binaires 18/26
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation 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ˆ ole 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
Optimiser pour r´ egner La compilation dans tous ses ´ etats Les limites de la virtualisation D´ ecompilation 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
La compilation dans tous ses ´ etats D´ ecompilation Plan La compilation dans tous ses ´ etats 1 D´ ecompilation 2 A. Gazet, Y. Guillot D´ esobfuscation automatique de binaires 21/26
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
Recommend
More recommend