Contribuez à SecuObs en envoyant des bitcoins ou des dogecoins.
Nouveaux articles (fr): 1pwnthhW21zdnQ5WucjmnF3pk9puT5fDF
Amélioration du site: 1hckU85orcGCm8A9hk67391LCy4ECGJca

Contribute to SecuObs by sending bitcoins or dogecoins.



TurboDiff, un plugin IDA performant pour l'analyse différentielle de binaires et la rétro-ingénierie des correctifs de sécurité

Par Rédaction, secuobs.com
Le 22/10/2009


Résumé : CoreLabs vient de publier le composant additionnel Open Source gratuit TurboDiff pour IDA. Il permet d'obtenir des performances accrues en ce qui concerne les opérations d'analyses différentielles de binaires dans le cadre d'ingénierie inverse des correctifs de sécurité silencieux.



Le laboratoire CoreLabs ( lien ) de la société Core Security Technologies vient de publier une seconde version beta de leur outil d'analyse différentielle de binaires ( Diffing - lien ), TurboDiff. Il se présente sous la forme d'un composant additionnel pour IDA ( lien ) et permet de comparer deux binaires afin de faire ressortir les blocs de codes les différenciant. TurboDiff est compatible avec les versions d'IDA qui sont supérieures (payantes) ou égales à la 4.9 ( gratuite - lien ).

Comme PatchDiff ( lien ) ou BinDiff ( lien ), TurboDiff facilite les opérations d'ingénierie inverse ( lien ) à l'encontre des correctifs « silencieux » de sécurité afin de permettre l'identification des vulnérabilités qui ont été corrigées depuis la version précédente. C'est notamment cette méthode qui est utilisée pour le développement de certains codes d'exploitation qui sont rapidement publiés après la sortie d'un correctif de cet nature.

La réussite des analyses linéaires étant soumise aux caractéristiques propres à chaque environnement de compilation, des outils comme TurboDiff s'attachent quant à eux à analyser uniquement les blocs basiques de code afin de générer des graphes différentiels à l'aide d'algorithmes pré-définis. Les fonctions sont tout d'abord identifiées au niveau de chacun des binaires, puis couplées avec leur homologue, et cela de façon indépendante de l'ordre imposé par le compilateur. La comparaison s'effectue ici bloc par bloc.

Turbodiff se démarque par ses performances qui sont en moyenne de l'ordre de quelques minutes pour de larges exécutables. Relativement récent, quelques dysfonctionnements seront néanmoins surement à constater lors de son utilisation. L'interface utilisateur reste elle aussi encore assez sommaire pour le moment. A noter par ailleurs que les algorithmes complexes de Turbodiff, ayant été volontairement optimisés pour la rétro-ingénierie de correctifs, peuvent s'avérer moins flexibles et performants pour d'autres types d'opérations.

Les résultats sont présentés sous la forme de graphes et de tableaux. Au sein de ces derniers, les enregistrements comportent le nom et l'adresse de la fonction pour chaque binaire, ainsi que le niveau différentiel constaté après comparaison des graphes de fonctions, des sommes de contrôles par bloc et du nombre d'instructions que ces derniers comportent. Les valeurs Suspicious+ et Suspicious++ différent par exemple de par le nombre de blocs présentant des sommes de contrôles non similaires.

Les blocs sont également représentés au niveau des graphes par des couleurs caractérisant visuellement ces niveaux de différence. Turbodiff est un projet publié sous la licence GPLv2 et est à mettre aux crédits de Nicolas Economou. Ce dernier faisant par ailleurs partie de l'équipe en charge du développement des codes d'exploitation pour l'environnement Core Impact ( lien ) de Core Security Technologies ( lien ).

La page officiel du projet TurboDiff ( lien )
La présentation Binary Diffing à EKO-PARTY 2009 ( lien )
TurboDiff 1.01 beta, r1, second build pour IDA 5.0 et + ( lien )
TurboDiff 1.01 beta, r1, second build pour IDA 4.9 ( lien )

Source : Breaking Code ( lien )