CERT Kaiju est une collection d'outils d'analyse binaire pour Ghidra.
Il s'agit d'une implémentation Ghidra/Java de certaines fonctionnalités du cadre d'analyse binaire CERT Pharos, en particulier les outils de hachage de fonctions et d'analyse des logiciels malveillants, mais elle devrait développer de nouveaux outils et capacités au fil du temps.
Comme il s'agit d'un nouvel effort, cette implémentation n'a pas encore la parité complète des fonctionnalités avec l'implémentation C++ originale basée sur ROSE ; cependant, le passage à Java et Ghidra a en fait permis de nouvelles fonctionnalités non disponibles dans le framework d'origine, notamment une meilleure gestion des architectures non x86. Étant donné qu'une réarchitecture importante du framework et des outils est en cours et que le passage à Java et Ghidra permet des fonctionnalités différentes de celles de l'implémentation C++, la décision a été prise d'utiliser une nouvelle image de marque de sorte qu'il y ait moins de confusion entre les implémentations lors de la discussion de la différents outils et capacités.
Notre intention dans un avenir proche est de maintenir côte à côte à la fois le framework Pharos original et Kaiju, car les deux peuvent fournir des fonctionnalités et des capacités uniques.
CAVEAT : en tant que prototype, de nombreux problèmes peuvent survenir lors de l'évaluation des hachages de fonction créés par ce plugin. Par exemple, contrairement à l'implémentation Pharos, le module de hachage de fonctions de Kaiju créera des hachages pour de très petites fonctions (par exemple celles avec une seule instruction comme RET provoquant beaucoup plus de collisions involontaires). En tant que tel, les résultats analytiques peuvent varier entre ce plugin et Pharos fn2hash.
Des packages Kaiju prédéfinis 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 le décompresser manuellement dans le répertoire approprié pour l'installer.
CERT Kaiju nécessite les dépendances d'exécution suivantes :
Z3 est fourni précompilé dans le cadre des packages prédéfinis, ou vous pouvez créer Z3 vous-même ou utiliser le package de votre distribution Linux.
Démarrez 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 le navigateur de fichiers et appuyez sur OK. L'extension sera installée et une case à cocher sera cochée à côté du nom de l'extension dans la fenêtre pour vous informer qu'elle est installée et prête.
L'interface vous demandera de redémarrer Ghidra pour commencer à utiliser l'extension. Redémarrez simplement, et les fonctionnalités supplémentaires de Kaiju seront alors disponibles pour une utilisation interactive ou dans des scripts.
Certaines fonctionnalités peuvent nécessiter l'activation des plugins Kaiju. Pour cela, ouvrez le navigateur de code puis accédez au menu File > Configure
. Dans la fenêtre qui apparaît, cliquez sur le lien Configure
sous l'icône de 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 désormais accès aux fonctionnalités interactives du plugin.
Si un plugin n'est pas immédiatement visible une fois activé, vous pouvez trouver le plugin sous le menu Window
du navigateur de codes.
Des versions expérimentales « alpha » des futurs outils pourront être disponibles dans la catégorie « Expérimental » si vous souhaitez les tester. Cependant, ces plugins sont définitivement expérimentaux et non pris en charge et ne sont pas recommandés pour une utilisation en production. Nous apprécions cependant les premiers commentaires !
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 le guide d'installation de Ghidra.
Vous pouvez également créer l'extension Kaiju directement à partir du code source. Voir le fichier INSTALL.md
inclus dans le répertoire source supérieur de Kaiju.
Les outils de Kaiju peuvent être utilisés soit de manière graphique interactive, soit via un mode « headless » plus adapté aux travaux batch. Certains outils peuvent uniquement être disponibles pour une utilisation graphique ou sans tête, en raison de la nature de l'outil.
Kaiju crée une interface graphique interactive (GUI) dans Ghidra en utilisant Java Swing et l'architecture de plugin de Ghidra.
La plupart des outils de Kaiju sont en fait des plugins d'analyse qui s'exécutent automatiquement lorsque l'option "Auto Analysis" est choisie, soit lors de l'importation d'un nouvel exécutable à démonter, soit en choisissant directement Analysis > Auto Analyze...
depuis la fenêtre du navigateur de code. Vous verrez plusieurs plugins d'analyse CERT sélectionnés par défaut dans l'outil d'analyse automatique, mais vous pouvez activer/désactiver n'importe lequel à votre guise.
Cependant, les outils d'analyse doivent être exécutés avant que les différents outils de l'interface graphique ne fonctionnent. Dans certains cas particuliers, il peut même être utile d'exécuter l'analyse automatique deux fois pour garantir que toutes les métadonnées sont produites afin de créer des informations de partitionnement et de désassemblage correctes, 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 comprennent :
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 Function Hash Viewer
dans le menu pour démarrer 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 des données vers un fichier ou une signature YARA. Cette fenêtre peut également être ancrée dans le navigateur principal de Ghidra CodeBrowser pour une utilisation plus facile avec d'autres plugins. Une documentation d'utilisation plus complète peut être trouvée dans le menu Help > Contents
de Ghidra lors de l'utilisation de l'outil.Kaiju > OOAnalyzer Importer
dans le menu pour démarrer 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 peut être trouvée dans le menu Help > Contents
de Ghidra lors de l'utilisation de l'outil.Ghidra prend également en charge un mode « sans tête » permettant aux outils d'être exécutés dans certaines circonstances sans utiliser l'interface graphique interactive. Ces commandes peuvent donc être utilisées pour des tâches de script et de « mode batch » sur un grand nombre de fichiers.
Les outils sans tête s'appuient en grande partie sur la fonctionnalité GhidraScript de Ghidra.
Les outils sans tête incluent :
Un simple script de lancement de shell nommé kaijuRun
a été inclus pour exécuter ces commandes sans tête pour des scénarios simples, tels que la sortie des hachages de fonction pour chaque fonction dans un seul exécutable. En supposant que la variable GHIDRA_INSTALL_DIR
soit 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 afficherait les résultats dans un fichier nommé automatiquement comme example.exe.Hashes.csv
.
L'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 référentiel 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, dans l'un des deux formats suivants.
Consultez le répertoire docs/
pour la documentation au format Markdown et l'aide pour tous les outils et composants Kaiju. Ces documents sont faciles à gérer, à modifier et à lire, même à partir d'une 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, accédez à Help > Contents
, puis sélectionnez CERT Kaiju
dans l'arborescence située à gauche de la fenêtre d'aide.
Veuillez noter que la documentation d'aide de Ghidra a exactement le même contenu que les fichiers Markdown du répertoire docs/
; grâce à un plugin gradle intégré à l'arborescence, gradle analysera automatiquement le Markdown et l'exportera dans Ghidra HTML pendant le processus de construction. Cela permet une maintenance encore plus simple (mettre à jour les documents en un seul endroit, pas deux) et maintient les deux synchronisés.
Toute nouvelle documentation doit être ajoutée au répertoire docs/
.
Ce logiciel est distribué sous licence simplifiée de type BSD 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 référentiel.
Le logo CERT Kaiju est basé sur l'art créé par Cameron Spahn, initialement publié sous les termes de la licence Creative Commons Attribution-Share Alike 4.0 International.