Frida. Comment ça marche, comment l utiliser. Présenté 14/06/2016. Pour OSSIR Par Eloi Vanderbeken

Documents pareils
Un serveur web léger et ouvert

Intervenants. Thomas d'erceville Project Manager. Christian NGUYEN Practice Manager IT Quality

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

Catalogue des stages Ercom 2013

Installation et prise en main

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Introduction à l informatique en BCPST

Prise en compte des ressources dans les composants logiciels parallèles

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

Android 4 Les fondamentaux du développement d'applications Java

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

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

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

Architecture distribuée

TD/TP 1 Introduction au SDK d Android

Machines Virtuelles. et bazard autour. Rémi Forax

La technologie Java Card TM

Atelier Pivoting KHOULOUD GATTOUSSI (RT3) ASMA LAHBIB (RT3) KHAOULA BLEL (RT3) KARIMA MAALAOUI (RT3)

Mise en œuvre des serveurs d application

Environnements de développement (intégrés)

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Exécutif temps réel Pierre-Yves Duval (cppm)

Une bibliothèque de templates pour CUDA

DEVELOPPEMENT MOBILE - ETAT DE L ART DES SOLUTIONS

Point sur les solutions de développement d apps pour les périphériques mobiles

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

La programmation orientée objet et le langage C++

Chapitre 1 Retour en arrière

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Jean-Philippe Paquette

Quarkslab. Reverse engineering sous Android et ios JSSI Sébastien Kaczmarek

ANALYSTE PROGRAMMEUR DIPLÔME D ÉTABLISSEMENT

Vers l urbanisation agile d un client mobile ios/android natif, économique, flexible et pérenne


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

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Rebol, un langage «différent»

modules & compilation

Programme ASI Développeur

Virtual Box Mettez un PC dans votre... PC

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Chapitre I Notions de base et outils de travail

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

Nicolas Hanteville. for(e=n;s<i;c++){attitude();} Sur environnement Microsoft Windows

Éléments de programmation et introduction à Java

Solution de Mobilité SAP SUP & AFARIA. Meltz Jérôme

Introduction aux Machines Virtuelles avec VMKit

SRS Day. Attaque BitLocker par analyse de dump mémoire

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

SRS Day. Vue d ensemble. Avérous Julien-Pierre

MAC-TC: programmation d un plate forme DSP-FPGA

Agenda 1. Stratégie 2. Devices Management 3. Documents Management 4. Développement 5. Supply Chain 6. Support 7. Et après?

La mobilité: Perspectives et enjeux de développement d une application mobile. NOTE DE SYNTHÈSE version finale

Cours 1 : La compilation

Unity. Moteur de jeu 3D et 2D. Cross platform: Windows, Mac, Linux, ios, Android, Blackberry, Xbox, Playstation, Wii

GPC Computer Science

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Productivité Performance Mobilité

Livre Blanc XAMARIN. Le développement mobile multiplateforme

Le tout à l usage dans un IaaS public «Comment une plateforme industrielle permet de déployer des usages applicatifs en accord avec cette promesse»

Android. Présentation d Android. Florent Garin

APPLICATIONS MOBILES Catalogue de services Econocom-Osiatis

Conférence SIG 2011 Versailles 5-6 Octobre 2011 Atelier Technique ArcGIS for Server en 10.1

Bases de programmation. Cours 5. Structurer les données

LES FONCTIONS DE SURVEILLANCE DES FICHIERS

Introduction à la Programmation Parallèle: MPI

Rapport de projet fin d étude Client VoIP/SIP RATP

VMware ESX/ESXi. 1. Les composants d ESX. VMware ESX4 est le cœur de l infrastructure vsphere 4.

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

Séminaire Partenaires Esri France 7-8 juin Paris Les API ArcGIS pour les smartphones

as Architecture des Systèmes d Information

Plan du cours. Historique du langage Nouveautés de Java 7

Génération de code binaire pour application multimedia : une approche au vol

AUVRAY Clément (168187) HOMBERGER Alexandre (186897) GLADE. Langages, outils et méthodes pour la programmation avancée Page 1 sur 12

«clustering» et «load balancing» avec Zope et ZEO

Instrumentation de code Java

Développement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France

PHP et LeMonde.fr : passé, présent et avenir Olivier Grange-Labat <grange@lemonde.fr>

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Vérifier la qualité de vos applications logicielle de manière continue

30.avr.10 Présentation miniprojet. 9.mars.10 Cours 3 4.mai.10 Cours C mars.10 Cours 4 11.mai.10 Cours C++ 2

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Formation, Audit, Conseil, Développement, UX WinRT Silverlight WPF Android Windows Phone

Sauvegarde et Restauration d un environnement SAS

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

Simplifiez la ges-on de votre parc informa-que

Connexion à SQL server

Playing with ptrace() for fun and profit

Architecture existante (principale)

L informatique en BCPST

Environnement Zebra Link-OS version 2.0

OS Réseaux et Programmation Système - C5

GlobalScape Secure FTP Server Buffer Overflow

21 mars Simulations et Méthodes de Monte Carlo. DADI Charles-Abner. Objectifs et intérêt de ce T.E.R. Générer l'aléatoire.

Grid Technology. ActiveMQ pour le grand collisionneur de hadrons (LHC) Lionel Cons Grid Technology Group Information Technology Department

Linux embarqué: une alternative à Windows CE?

JAB, une backdoor pour réseau Win32 inconnu

DÉVELOPPEMENT D UNE APPLICATION DE COMMUNICATION BLUETOOTH SUR ANDROID. Projet de fin d étude VAP «Architecte de Services en Réseau»

Transcription:

Frida Comment ça marche, comment l utiliser Présenté 14/06/2016 Pour OSSIR Par Eloi Vanderbeken

Whoami Eloi Vanderbeken @elvanderb Synacktiv www.synacktiv.ninja Utilisateur et contributeur de Frida

Plan Intro Pourquoi l instrumentation dynamique de code? Pourquoi Frida? Description des outils et de l API DEMO! Questions

Frida En quelques mots : Du python...ou du JavaScript...ou du QML, du Swift, du.net......qui injecte du C/C++ scripté en JavaScript......pour reverser de l assembleur (x86, x86_64, ARM, ARM64)...ou de l Objective-C...ou du Dalvik...sur Windows, Mac, Linux, ios, Android et... QNX.

A quoi ça sert? Instrumentation Modification du flot d exécution du programme Pour lire / écrire des données Pour modifier le comportement du programme Dynamique Les modifications sont faites dynamiquement, en mémoire Plus discret Pas de modification des fichiers Plus facile modifier et reconstruire un exécutable pour y ajouter du code est compliqué, voire impossible Plus pratique possibilité de modifier l instrumentation à la demande Possibilité d instrumenter facilement du code généré dynamiquement (programmes packés) Code binaire Inutile d avoir les sources

Pourquoi? Intercepter des données Interception des données avant chiffrement / après déchiffrement Lecture de valeurs calculées pendant l exécution / dépendantes de l environnement Injecter des données Fuzzing d un client lourd, du serveur associé... Modifier le comportement du programme Contourner une vérification coté client Utiliser des fonctions du programme Utilisation d une méthode de chiffrement / compression propriétaire, fuzzing en mémoire, émulation d un serveur, etc. Créer des traces d exécution... Vue d ensemble de l exécution du programme Localisation de code utile

Pourquoi Frida? Multi-plateforme Windows, Mac, Linux, ios, Android et QNX VRAIMENT multi-plateforme Réutilisation de code directe ou avec très peu de modifications Installation SIMPLE Pas plus de 3 commandes par plateformes Prototypage rapide JavaScript Pas de compilation Toutes les bibliothèques JavaScript sont utilisables directement Résilient Pas de crash en cas d erreur Nettoyage du processus à la fin du script On peut injecter 1000 versions d un script à la suite dans 1 process Licence permissive wxwindows Library Licence LGPLv2 + exception du linkage statique

Pourquoi Frida? cont d Piles incluses Les briques de bases pour l étude dynamique de code binaire sont incluses Des modules pour l Objective-C et le Dalvik sont intégrés Modulaire Il est possible d utiliser ou de remplacer des briques de Frida de manière indépendante Frida peut utiliser 3 moteurs JavaScript différents Le support QNX a été ajouté par un tiers BLACKBUCK de Immunity est basé sur frida-gum Bien codé Mais pas très commenté... API documentée L architecture interne l est un peu moins... Communauté réactive #frida sur irc.freenode.net Projet actif Plusieurs contributeurs, commits fréquents

Un projet tenu d une main de fer

Architecture de Frida Client Sur la machine du reverser Pilote les servers Python / node-js / Swift / QML... Serveurs Sur la machine cible Chargés de l interaction avec l OS cible liste des processus / injection / création Communiquent via TCP ou des pipes support natif de usbmuxd et adb pour les communications Agents Injectés dans le processus cible LD_PRELOAD / insert_dylib / ptrace / CreateRemoteThread Communiquent avec le client directement ou via le serveur Cœur codé en C avec la glib (frida-gum) Scriptés en JavaScript (V8, Duktape) Exposent un serveur RPC

Outils CLI frida-ls-devices Liste les devices accessibles frida-ps Liste les processus sur les devices frida-trace Hooks des APIs / méthodes suivant des templates Génère des traces d exécution Avec des couleurs! frida Console JavaScript avec auto-complétion Et des couleurs!

API Interceptor Permet de poser des hooks Interceptor.attach - callbacks Callbacks appelées avant et après l exécution de la fonction Accès aux arguments, au contexte et à la valeur de retour Interceptor.attach watch-point Callback appelée lors de l exécution de l instruction Accès au contexte Interceptor.replace Remplace une fonction par une autre fonction Potentiellement en JavaScript Possibilité d appeler la fonction originale

API NativeXXX Permet d interagir avec le système NativePointer / Int64 / UInt64 Équivalent de void * / int64_t / uint64_t Supporte les opérations arithmétiques de base Entiers JavaScript : float ou Int32 NativeFunction Permet d appeler des fonctions natives depuis du JS Utilisation de fonctions de chiffrement custom / in-memory fuzzing / etc. NativeCallback Permet d appeler des fonctions JS depuis du code natif Utilisation de fonctions nécessitant des callback / modifications de v-tables / utilisation avec Interceptor.replace etc.

API Interaction avec le système Process Contient toutes les informations sur le process arch, platform, pagesize, pointersize, isdebuggerattached, threads, modules, page / malloc ranges etc. Thread Manipulation du thread courant backtrace, sleep Module Informations sur le module nom, adresse de base, exports, imports, pages mémoire etc. Memory Permet la manipulation de la mémoire Allocation, scan, protection, manipulation etc. MemoryAccessMonitor (Windows only) Surveille les accès mémoire

API Utils DebugSymbol Parse les informations de debug à l aide des API natives (dbghelp / libunwind / CoreSymbolication.framework) Instruction.parse Binding pour capstone Stalker (x86 / x86_64) ObjC Java Fonctionne comme Pin / DynamoRIO Capture l exécution des {JMP, CALL, instructions} Accès à TOUTE l API Objective-C Création de classes en JS, support de l héritage, hook de méthodes, création d instances, recherche d objets en mémoire etc. Sur MacOS et ios Même chose que ObjC mais pour Java et Android

API Helpers Socket Inspection des sockets Type / adresse locale / adresse distante Stream File Lecture / écriture asynchrones sur des fd / handles (UNIX / Windows) Manipulation de fichiers ApiResolver Facilite l énumeration de fonctions Ex : new ApiResolver('objc').enumerateMatches('-[NSURL* *HTTP*]', {onmatch: function (match) { }, oncomplete: function () { }});

DEMO!

Pour en savoir plus... http://www.frida.re #frida sur irc.freenode.net https://groups.google.com/d/forum/frida-dev

AVEZ-VOUS DES QUESTIONS? MERCI DE VOTRE ATTENTION,