YaDiff: Corrélation de binaires, méthodes empiriques et machine learning — Benoît Amiaux, Eric Renault, Frédéric Grelot, Jérémy Bouétard, Martin Tourneboeuf, Valérian Comiti
Date : 14 June 2018 à 11:45 — 30 min.
YaDiff est un outil développé au sein des laboratoires de rétro-ingénierie de DGA-MI pour permettre facilement la propagation d'information d'une base IDA à l'autre.
Nous présentons l'état de l'art des méthodes existantes et leurs limites : fermeture du code, difficulté d'utilisation, performances, incapacité à analyser des bases de taille importante.
Nous présentons ensuite une première méthode "empirique" développée pour répondre à ces problèmes : elle allie simplicité d'utilisation et fonctionnalités étendues. L'outil développé permet de faire une analyse comparative de deux bases afin de propager un maximum d'information d'une base à l'autre (par exemple, bibliothèque avec les symboles vs bibliothèque embarquée en statique dans un binaire sans symbole).
Par informations, nous entendons les données suivantes : noms de fonctions, de données globales, de labels, commentaires, prototypes de fonctions ou données, renommage (variables, registres...), typage de structures...
Nous présentons enfin une méthode utilisant des techniques d'intelligence artificielle ayant pour but de pallier aux principales limites de cet algorithme et de ceux existants : incapacité à identifier les fonctions semblables si elles ont trop changé, mais également incapacité à fonctionner entre deux architectures (32 vs 64 bit, ou ARM vs x86 par exemple). Nous présentons les résultats obtenus avec cette méthode et comment ils sont intégrés à YaDiff.
YaDiff est un outil de la suite des "YaTools" (avec YaCo, présenté au SSTIC 2017) et est diffusé sous licence GNU GENERAL PUBLIC LICENSE.