Table des matières
Triton : Framework d'exécution concolique et
d'analyses en runtime
Jonathan Salwan et Florent Saudel
jsalwan@quarkslab.com
florent.saudel@etu.u-bordeaux.fr
Quarkslab, Université de Bordeaux
?Ce projet a été fait dans le cadre de notre master CSI à Bordeaux sous la
supervision d'Emmanuel Fleury. Je remercie donc Quarkslab pour le temps
libre qui m'a été donné.
??Je remercie Georges Bossert pour sa relecture.
Résumé Triton est un framework d'exécution concolique basé sur Pin.
L'objectif de Triton est d'apporter des composants supplémentaires au
framework Pin déjà existant a n de faciliter la mise en place d'analyses
concoliques poussées. Triton s'utilise depuis des bindings Python et
propose des composants tel que de l'analyse par teinte (taint analysis),
un moteur d'exécution symbolique, un moteur de prise d'instantané
(snapshot), une sémantique des instructions x86-64 en SMT2 ainsi
qu'une interface avec le SMT solver Z3. Basé sur ces composants, il
est possible de développer des outils externes en Python permettant
d'e ectuer du fuzzing symbolique, d'analyser des traces, d'e ectuer des
analyses en runtime pour de la recherche de vulnérabilités, etc.
1 Introduction
Les binaires évoluent de plus en plus vite, que cela soit en terme de taille
comme en terme de complexité. L'utilisation de techniques d'obfuscation pour
protéger des binaires tend à se généraliser, compliquant et ralentissant la
tâche de l'analyste. Les outils d'analyse se doivent donc également d'évoluer
pour faire en sorte de ne pas être noyés dans la quantité d'informations à
analyser.
Il existe plusieurs techniques d'analyse que cela soit en statique ou en
dynamique. Il n'y a pas de mauvaise ou bonne méthode, chacune d'entre elles
a ses avantages et ses inconvénients.
Les analyses statiques permettent de couvrir un maximum de code
mais ne permettent pas d'avoir les valeurs concrètes des variables à un
instant T. L'idée est de dé