SSTIC 2009. Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...



Documents pareils
Désobfuscation automatique de binaire - The Barbarian Sublimation

Déprotection semi-automatique de binaire

Structure d un programme

Architecture des ordinateurs

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

Programmation assembleur : aperçu

Compilation (INF 564)

Évaluation et implémentation des langages

Le Projet BINSEC. Automatiser l analyse de sécurité au niveau binaire. Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier. p.

AVERTISSEMENT. D'autre part, toute contrefaçon, plagiat, reproduction encourt une poursuite pénale. LIENS

Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96

Traduction des Langages : Le Compilateur Micro Java

ERESI : une plate-forme d'analyse binaire au niveau noyau. The ERESI team

Chapitre 2 : Abstraction et Virtualisation

Résumé Génération de code Le code intermédiaire

Assembleur. Faculté I&C, André Maurer, Claude Petitpierre

Vulgarisation Java EE Java EE, c est quoi?

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)

Playing with ptrace() for fun and profit

Introduction aux Machines Virtuelles avec VMKit

GlobalScape Secure FTP Server Buffer Overflow

Logiciel de base. Première année ENSIMAG

Immersive and Collaborative Data Visualization Using Virtual Reality Platforms

Cours 1 : La compilation

Table des matières. Avant-propos... Préface... XIII. Remerciements...

Architecture des ordinateurs

Vérification formelle de la plate-forme Java Card

Initiation à la sécurité

Machines virtuelles Cours 1 : Introduction

Java - la plateforme

Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel

DECLARATION DES PERFORMANCES N 1

Solution du challenge SSTIC Emilien Girault ANSSI/COSSI/DTO/BAI 06/06/13

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Recompilation dynamique de codes binaires hostiles

Formula Negator, Outil de négation de formule.

Triton : Framework d exécution concolique et d analyses en runtime

DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION

D AIDE À L EXPLOITATION

Les rootkits navigateurs

EXCEL & XLCubed 10 raisons d en faire l assise de votre Managed Self-Service BI

Conception de circuits numériques et architecture des ordinateurs

Programmation C. Apprendre à développer des programmes simples dans le langage C

CM2 L architecture MIPS32

Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Virtualisation logicielle De la machine réelle à la machine virtuelle abstraite

Annexe : La Programmation Informatique

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Machines Virtuelles. et bazard autour. Rémi Forax

La mémoire. Un ordinateur. L'octet. Le bit

CH.3 SYSTÈMES D'EXPLOITATION

Les techniques de protection du logiciel

Chapitre I Notions de base et outils de travail

Étude de l interopérabilité de deux langages de programmation basée sur la machine virtuelle de Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Sanity Check. bgcolor mgcolor fgcolor

3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures

Le cloud computing au service des applications cartographiques à haute disponibilité

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

L enseignement de méthodes agiles dans un contexte d apprentissage actif

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

Utilisation du Cloud StratusLab dans le cadre d application astroparticule à l APC

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Réalisation d un OS 32 bits pour PC(x86)

openarchitectureware & transformation de modèle Yannick Lizzi Architecte Logiciel itemis France Mail: lizzi@itemis.de

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

Jeu d instructions NIOS II

Configuration de WebDev déploiement Version 7

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

modules & compilation

Instrumentation de code Java

Introduction Damien Nouvel

Cours de Programmation 2

La fédération des infrastructures cloud

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Informatique UE 102. Jean-Yves Antoine. Architecture des ordinateurs et Algorithmique de base. UFR Sciences et Techniques Licence S&T 1ère année

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

ASR1 TD7 : Un microprocesseur RISC 16 bits

Celui qui vous parle. Yann Vigara

TD Architecture des ordinateurs. Jean-Luc Dekeyser

les techniques d'extraction, les formulaires et intégration dans un site WEB

Rappels d architecture

Programmation Orientée Objet

Le Framework.Net. Introduction. Pourquoi.Net?

Utilisation de l ingénierie des modèles pour la conception collaborative de produits mécaniques

Architecture matérielle des systèmes informatiques

CQP 112 Introduc/on à la programma/on. Thème 2 : Architecture d un système informa/que. Département d informa/que

Classes et Objets en Ocaml.

Cours 1 : Qu est-ce que la programmation?

Initiation. àl algorithmique et à la programmation. en C

Logiciel Libre Cours 2 Fondements: Programmation

Département informatique de l université d Angers

The Mozilla Art Of War. David Teller. 20 septembre Laboratoire d Informatique Fondamentale d Orléans. La sécurité des extensions.

Transcription:

Désobfuscation 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

. Gazet, Y. Guillot Désobfuscation automatique de binaires 2/27 Plan (s) 1 (s) 2 3

Point de départ (s) Nécessité d automatisation Nous avons déjà : Processeur filtrant Parcours du graphe de contrôle (CFG) Application de règles de réécriture Modification à la volée du CFG Analyse manuelle du code obfusqué Recherche manuelle de motifs Pénible Peu générique Éventuellement inefficace : ex résistance au polymorphisme. Gazet, Y. Guillot Désobfuscation automatique de binaires 3/27

Nouvelle approche (s) Besoins Conservation de la sémantique Réécriture du code dans une forme plus simple Élimination du code mort etc. Les compilateurs le font déjà : l optimisation Notre critère d optimisation : la concision du code. Gazet, Y. Guillot Désobfuscation automatique de binaires 4/27

Présentation de la cible (s) La cible Une protection à base de virtualisation Massivement obfusquée (difficulté d analyse + polymorphisme) Approche proposée Greffe d un module d optimisation sur le module du parcours de graphes. Gazet, Y. Guillot Désobfuscation automatique de binaires 5/27

. Gazet, Y. Guillot Désobfuscation automatique de binaires 6/27 Constant propagation (s) c f h mov al, 12h 67h mov c l, 46h 69h xor c l, a l c f h mov al, 12h 67h mov c l, 46h 69h xor c l, 12h Fig.: Propagation de 12h à travers al.

. Gazet, Y. Guillot Désobfuscation automatique de binaires 7/27 Constant folding (s) c f h mov al, 12h 67h mov c l, 46h 69h xor c l, 12h c f h mov al, 67h mov c l, 12h 54h Fig.: Réduction de cl.

Operation folding (s) 4 f h add al, 7f h 51h add al, b l 53h add al, 70h 4 f h add al, 11h 51h add al, b l Fig.: Réduction de l opération add.. Gazet, Y. Guillot Désobfuscation automatique de binaires 8/27

. Gazet, Y. Guillot Désobfuscation automatique de binaires 9/27 Démo (s) Optimisation d un handler

. Gazet, Y. Guillot Désobfuscation automatique de binaires 10/27 Analyse sémantique des handlers (s) Méthode code binding de l objet disassembler Exemple de handler optimisé l o d s d x o r eax, ebx add eax, 859 f c f a e h sub ebx, eax push eax Sémantique (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

Au commencement (s) 2ème projection de Futamura Étant donnnés 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éteur de L b écrit en L a Comment?. Gazet, Y. Guillot Désobfuscation automatique de binaires 11/27

. Gazet, Y. Guillot Désobfuscation automatique de binaires 12/27 Du statique au (presque) dynamique (s) Binding contextualisé : dword p t r [ esp ] := 0 c0000001h eax := 0 c0000001h ebx := 4000 f d 8 c h e s i := 100167 c2h esp := esp 4 Assembleur généré : push 0c0000001h Suivi du flot d exécution du bytecode

. Gazet, Y. Guillot Désobfuscation automatique de binaires 13/27 Démo (s) Exécution symbolique et génération assembleur

Interprétation du résultat (s) L intégralité du bytecode a été compilée en asm Ia32 natif Des références au contexte de l interpréteur Proche d un automate à pile module d optimisation + abstraction. Gazet, Y. Guillot Désobfuscation automatique de binaires 14/27

Injection d abstraction (s) Extension du processeur I a 3 2 : : Reg. i t o s [ 3 2 ]. c o n c a t ( %w[ v i r t e a x ] ) I a 3 2 : : Reg. i t o s [ 1 6 ]. c o n c a t ( %w[ v i r t a x ] ) I a 3 2 : : Reg. i t o s [ 8 ]. c o n c a t ( %w[ v i r t a l ] ) I a 3 2 : : Reg. s t o i. c l e a r I a 3 2 : : Reg. i t o s. each { sz, hh hh. e a c h w i t h i n d e x { r, i I a 3 2 : : Reg. s t o i [ r ] = [ i, s z ] } } I a 3 2 : : Reg : : Sym. r e p l a c e I a 3 2 : : Reg. i t o s [ 3 2 ]. map { s s. to sym }. Gazet, Y. Guillot Désobfuscation automatique de binaires 15/27

. Gazet, Y. Guillot Désobfuscation automatique de binaires 16/27 Démo (s) Chunk optimisé avec registres virtuels

Phase finale (s) Injections des registres virtuels Optimisation Expression du code en registres virtuels uniquement Registres virtuels remappés sur les registres natifs Compilation et édition des liens. Gazet, Y. Guillot Désobfuscation automatique de binaires 17/27

. Gazet, Y. Guillot Désobfuscation automatique de binaires 18/27 Démo (s) Code dévirtualisé, mappé dans le binaire original

(s) 1/2 (s) Méthodes d optimisation (règles de réécriture) Très efficaces Implementation limitée localité des optimisations manque d une représentation intermédiaire inadaptée aux obfuscations du flot de contrôle L évaluation partielle ou spécialisation Pré-calcul de tous les éléments statiques : Mouvements de données dans le code obfusqué Application de l interpréteur au bytecode Approche générique Relativement coûteux en temps de calcul. Gazet, Y. Guillot Désobfuscation automatique de binaires 19/27

(s) 2/2 (s) Intégration et réutilisation du désobfuscateur Le code actuel est à l état de prototype En cours d intégration au framework sous forme d un plugin propre Utilisable sur tout code x86, avec des parties cross-platforme. Gazet, Y. Guillot Désobfuscation automatique de binaires 20/27

. Gazet, Y. Guillot Désobfuscation automatique de binaires 21/27 Plan 1 2 3

. Gazet, Y. Guillot Désobfuscation automatique de binaires 22/27 Interface arch-spécifique réduite Meilleure expressivité du code Représentation plus simple des boucles Sémantique plus simple à manipuler

: limitations. Gazet, Y. Guillot Désobfuscation automatique de binaires 23/27 Des constructions assembleur sont difficiles à transcrire en C rol, ror jmp eax Nécessité que le code soit formatté correctement Fonction/sous-fonctions ABIs/Conventions d appels On peut imaginer des moyens de s en accomoder

. Gazet, Y. Guillot Désobfuscation automatique de binaires 24/27 Démo

. Gazet, Y. Guillot Désobfuscation automatique de binaires 25/27 Plan 1 2 3

N oubliez pas. Gazet, Y. Guillot Désobfuscation automatique de binaires 26/27 Metasm https://metasm.cr0.org/ Blog http://esec.fr.sogeti.com/blog/

. Gazet, Y. Guillot Désobfuscation automatique de binaires 27/27 Merci pour votre attention. Des questions?