
Plugin IDA Python pour la correspondance rapide et orientée par l'emplacement des symboles de bibliothèques open-source dans les binaires, permettant un rétro-ingénierie efficace et une analyse des vulnérabilités des grands firmwares et malwares.
/$$ /$$ /$$
| $$ /$$/ | $$
| $$ /$$/ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$
| $$$$$/ |____ $$ /$$__ $$|_ $$_/ |____ $$
| $$ $$ /$$$$$$$| $$ \__/ | $$ /$$$$$$$
| $$\ $$ /$$__ $$| $$ | $$ /$$ /$$__ $$
| $$ \ $$| $$$$$$$| $$ | $$$$/| $$$$$$$
|__/ \__/ \_______/|__/ \___/ \_______/
"Karta" (russe pour "Carte") est un plugin IDA Python qui identifie et fait correspondre les bibliothèques open source dans un binaire donné. Le plugin utilise une technique unique qui lui permet de prendre en charge des binaires volumineux (>200 000 fonctions), avec presque aucun impact sur les performances globales.
L'algorithme de correspondance est basé sur la localisation. Cela signifie qu'il se concentre principalement sur la localisation des différents fichiers compilés, et fait correspondre chaque fonction du fichier en fonction de leur ordre d'origine dans le fichier. Ainsi, la correspondance dépend de K (nombre de fonctions dans l'open source) au lieu de N (taille du binaire), ce qui offre un gain de performances significatif car généralement N >> K.
Nous pensons qu'il y a 3 cas d'utilisation principaux pour ce plugin IDA :
Pour les dernières versions, utilisant Python 3, clonez simplement le dépôt git et exécutez le script setup.py install.
Python 3 est supporté depuis les versions v2.0.0 et supérieures.
Depuis la sortie d'IDA 7.4, Karta n'est développé activement que pour IDA 7.4 ou plus récent, et Python 3. Python 2 et les anciennes versions d'IDA sont toujours supportés via la version v1.2.0, qui sera très probablement la dernière version supportée en raison de la fin de vie de Python 2.X.
L'identifiant de Karta est un plugin plus petit qui identifie l'existence et les empreintes des versions des bibliothèques open source (supportées) existantes dans le binaire. Plus besoin de reverse engineer la même bibliothèque open source encore et encore, exécutez simplement le plugin d'identification et obtenez une liste détaillée des open sources utilisés. Karta supporte actuellement plus de 10 bibliothèques open source, notamment :
Après avoir identifié les open sources utilisés, on peut compiler un fichier de configuration .JSON pour une bibliothèque spécifique (par exemple libpng version 1.2.29). Une fois compilé, Karta tentera automatiquement de faire correspondre les fonctions (symboles) de l'open source dans le binaire chargé. De plus, si votre open source utilise des fonctions externes (memcpy, fread, ou zlib_inflate), Karta tentera également de faire correspondre ces fonctions externes.
Ce projet a été développé par moi (voir les coordonnées ci-dessous) avec l'aide et le soutien de mon groupe de recherche chez Check Point (Check Point Research).
Ce dépôt a été développé et maintenu par moi, Eyal Itkin, pendant mes années chez Check Point Research. Malheureusement, avec mon départ du groupe de recherche, je ne pourrai plus maintenir ce dépôt. Cela est principalement dû à la longue liste d'exigences pour exécuter tous les tests de régression, et aux versions d'IDA Pro impliquées dans le processus.
Veuillez accepter mes sincères excuses.