
CERT Kaiju est une extension de framework d'analyse binaire pour la suite de rétro-ingénierie logicielle Ghidra. Ce dépôt est un "miroir" -- veuillez soumettre les tickets, rapports de bugs ou pull requests sur le dépôt amont chez @CERTCC : https://github.com/certcc/kaiju
CERT Kaiju est un ensemble d’outils d’analyse binaire pour Ghidra.
Il s’agit d’une implémentation en Java pour Ghidra de certaines fonctionnalités du CERT Pharos Binary Analysis Framework, notamment les outils de hachage de fonctions et d’analyse de malwares, mais devrait s’enrichir de nouveaux outils et capacités au fil du temps.
Comme il s’agit d’un nouvel effort, cette implémentation n’offre pas encore la parité complète de fonctionnalités avec l’implémentation originale en C++ basée sur ROSE ; cependant, le passage à Java et à Ghidra a en réalité permis de nouvelles fonctionnalités absentes du cadre original – notamment une meilleure gestion des architectures non x86. Étant donné qu’une réarchitecture significative du cadre et des outils est en cours, et que le passage à Java et à Ghidra offre des capacités différentes de l’implémentation C++, il a été décidé d’utiliser une nouvelle marque afin d’éviter toute confusion entre les implémentations lors de la discussion des différents outils et capacités.
Notre intention pour le futur proche est de maintenir à la fois le cadre original Pharos et Kaiju, côte à côte, car chacun peut offrir des fonctionnalités et capacités uniques.
AVERTISSEMENT : En tant que prototype, de nombreux problèmes peuvent survenir lors de l’évaluation des hachages de fonctions créés par ce plugin. Par exemple, contrairement à l’implémentation Pharos, le module de hachage de fonctions de Kaiju crée des hachages pour des fonctions très petites (par exemple, celles avec une seule instruction comme RET, ce qui provoque beaucoup plus de collisions non intentionnelles). Ainsi, les résultats analytiques peuvent varier entre ce plugin et Pharos fn2hash.
Des paquets Kaiju préconstruits sont disponibles. Téléchargez simplement le fichier ZIP correspondant à votre version de Ghidra et installez-le selon les instructions ci-dessous. Il est recommandé d’installer via l’interface graphique de Ghidra, mais il est également possible de décompresser manuellement dans le répertoire approprié pour installer.
CERT Kaiju nécessite les dépendances d’exécution suivantes :
Z3 est fourni précompilé dans les paquets préconstruits, ou vous pouvez compiler Z3 vous-même ou utiliser le paquet de votre distribution Linux.
Lancez Ghidra, et depuis la fenêtre d’ouverture, sélectionnez dans le menu :
File > Install Extension. Cliquez sur le signe plus en haut de la fenêtre
des extensions, naviguez et sélectionnez le fichier .zip dans l’explorateur
de fichiers et cliquez sur OK. L’extension sera installée et une case à
cocher sera marquée à côté du nom de l’extension dans la fenêtre pour vous
indiquer qu’elle est installée et prête.
L’interface vous demandera de redémarrer Ghidra pour commencer à utiliser l’extension. Redémarrez simplement, puis les fonctionnalités supplémentaires de Kaiju seront disponibles pour une utilisation interactive ou dans des scripts.
Certaines fonctionnalités peuvent nécessiter l’activation des plugins Kaiju.
Pour ce faire, ouvrez le Code Browser puis naviguez dans le menu
File > Configure. Dans la fenêtre qui s’affiche, cliquez sur le lien
Configure sous l’icône de la catégorie « CERT Kaiju ». Une fenêtre
contextuelle affichera tous les plugins Kaiju disponibles publiquement.
Cochez tous les plugins que vous souhaitez activer, puis cliquez sur OK.
Vous aurez alors accès aux fonctionnalités interactives des plugins.
Si un plugin n’est pas immédiatement visible une fois activé, vous pouvez le
trouver sous le menu Window dans le Code Browser.
Des versions expérimentales « alpha » des futurs outils peuvent être disponibles dans la catégorie « Experimental » si vous souhaitez les tester. Cependant, ces plugins sont définitivement expérimentaux et non supportés, et ne sont pas recommandés pour une utilisation en production. Nous accueillons cependant les retours précoces !
Les extensions Ghidra comme Kaiju peuvent également être installées manuellement en décompressant le contenu de l’extension dans le répertoire approprié de votre installation Ghidra. Pour plus d’informations, veuillez consulter The Ghidra Installation Guide.
Vous pouvez également compiler l’extension Kaiju directement à partir du code
source. Voir le fichier INSTALL.md inclus dans le répertoire source
principal de Kaiju.
Les outils de Kaiju peuvent être utilisés soit de manière interactive avec interface graphique, soit via un mode « headless » (sans interface) plus adapté aux traitements par lots. Certains outils peuvent n’être disponibles que pour une utilisation graphique ou sans interface, selon leur nature.
Kaiju crée une interface graphique interactive (GUI) dans Ghidra utilisant Java Swing et l’architecture de plugins de Ghidra.
La plupart des outils de Kaiju sont en réalité des plugins d’analyse qui
s’exécutent automatiquement lorsque l’option « Auto Analysis » est choisie,
soit lors de l’import d’un nouvel exécutable à désassembler, soit en
choisissant directement Analysis > Auto Analyze... depuis la fenêtre du
code browser. Vous verrez plusieurs plugins d’analyse CERT sélectionnés par
défaut dans l’outil Auto Analyze, mais vous pouvez activer/désactiver ceux
que vous souhaitez.
Cependant, les outils d’analyse doivent être exécutés avant que les différents outils GUI ne fonctionnent. Dans certains cas particuliers, il peut même être utile d’exécuter l’analyse automatique deux fois pour garantir la production de toutes les métadonnées nécessaires à la création d’un partitionnement et d’informations de désassemblage corrects, ce qui peut à son tour influencer les résultats de hachage.
Les analyseurs sont automatiquement exécutés pendant la phase d’analyse de Ghidra et incluent :
Les outils GUI incluent :
Kaiju > GhiHorn pour accéder à cet outil depuis le
CodeBrowser de Ghidra. Vous pouvez également lancer le plugin en
appuyant sur CTRL-G.Window > CERT Kaiju Function Hash Viewer dans le menu
pour commencer avec cet outil s’il n’est pas déjà visible. Une nouvelle
fenêtre apparaîtra affichant un tableau de hachages et d’autres données.
Les boutons en haut de la fenêtre peuvent actualiser le tableau ou
exporter les données vers un fichier ou une signature YARA. Cette
fenêtre peut également être ancrée dans le CodeBrowser principal de
Ghidra pour une utilisation plus facile aux côtés d’autres plugins.
Une documentation d’utilisation plus complète se trouve dans le menu
Help > Contents de Ghidra lors de l’utilisation de l’outil.Kaiju > OOAnalyzer Importer dans le menu pour commencer
avec cet outil. Une simple boîte de dialogue vous demandera de localiser
le fichier JSON que vous souhaitez importer. Une documentation
d’utilisation plus complète se trouve dans le menu Help > Contents de
Ghidra lors de l’utilisation de l’outil.Ghidra prend également en charge un mode « headless » (sans interface graphique) permettant d’exécuter des outils dans certaines circonstances sans utiliser l’interface graphique interactive. Ces commandes peuvent donc être utilisées pour des travaux de script et de « mode batch » sur un grand nombre de fichiers.
Les outils headless reposent en grande partie sur la fonctionnalité GhidraScript de Ghidra.
Les outils headless incluent :
Un simple script de lancement shell nommé kaijuRun a été inclus pour
exécuter ces commandes headless dans des scénarios simples, comme la sortie
des hachages de fonctions pour chaque fonction d’un seul exécutable. En
supposant que la variable GHIDRA_INSTALL_DIR est définie, on pourrait par
exemple exécuter le script de lancement sur un seul exécutable comme suit :
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun fn2hash example.exe
Cette commande sortirait les résultats dans un fichier nommé automatiquement
example.exe.Hashes.csv.
Une aide de base pour le script kaijuRun est disponible en exécutant :
$GHIDRA_INSTALL_DIR/Ghidra/Extensions/kaiju/kaijuRun --help
Veuillez consulter le fichier docs/HeadlessKaiju.md dans le dépôt pour plus
d’informations sur l’utilisation de ce mode et du script de lancement
kaijuRun.
Une documentation et une aide plus complètes sont disponibles, sous l’un des deux formats suivants.
Voir le répertoire docs/ pour une documentation formatée en Markdown et de
l’aide pour tous les outils et composants Kaiju. Ces documents sont faciles à
maintenir, à éditer et à lire même en ligne de commande.
Alternativement, vous pouvez trouver la même documentation dans le système
d’aide intégré de Ghidra. Pour accéder à ces documents d’aide, depuis le menu
Ghidra, allez dans Help > Contents puis sélectionnez CERT Kaiju dans
l’arbre de navigation sur le côté gauche de la fenêtre d’aide.
Veuillez noter que la documentation d’aide de Ghidra est exactement le même
contenu que les fichiers Markdown dans le répertoire docs/ ; grâce à un
plugin gradle intégré, gradle analysera automatiquement le Markdown et
l’exportera en HTML Ghidra pendant le processus de construction. Cela permet
une maintenance encore plus simple (mise à jour de la documentation à un seul
endroit, et non deux) et maintient les deux synchronisés.
Toute nouvelle documentation doit être ajoutée au répertoire docs/.
Ce logiciel est sous licence de type BSD simplifié par le Software
Engineering Institute de l’Université Carnegie Mellon. Veuillez trouver tous
les détails de cette licence, ainsi que les conditions de licence des
dépendances utilisées dans ce projet, dans le fichier LICENSE.md à la
racine de ce dépôt.
Le logo CERT Kaiju est basé sur une œuvre créée par Cameron Spahn, initialement publiée sous les termes de la licence Creative Commons Attribution-Share Alike 4.0 International.