Ce référentiel contient une collection de scripts et de plugins IDA Pro utilisés par l'équipe FireEye Labs Advanced Reverse Engineering (FLARE).
Pour l'installer, copiez le contenu du répertoire plugins de ce référentiel dans votre dossier %PROGRAMFILES%IDAplugins.
Le répertoire python ici peut être copié dans votre dossier %PROGRAMFILES%IDApython, ou vous pouvez modifier votre variable d'environnement PYTHONPATH pour inclure le répertoire.
Le plugin shellcode_hashes_search_plugin.py IDA implémente la recherche de hachage décrite ici : https://www.mandiant.com/blog/precalculated-string-hashes-reverse-engineering-shellcode/.
Le répertoire shellcode_hashes contient le script utilisé pour créer la base de données pour le script shellcode_hash_search.py, ainsi qu'une base de données fournie.
Le plugin struct_typer_plugin.py implémente le typage struct décrit ici : https://www.mandiant.com/blog/applying-function-types-structure-fields-ida/
Le stackstrings_plugin.py implémente la récupération des chaînes construites manuellement décrite ici : http://www.fireeye.com/blog/threat-research/2014/08/flare-ida-pro-script-series-automatic-recovery-of- chaînes-construites-dans-malware.html
Ce script pour IDA Pro ajoute les informations MSDN d'un fichier XML à la base de données. Des informations sur ce plugin sont disponibles sur : https://www.fireeye.com/blog/threat-research/2014/09/flare-ida-pro-script-series-msdn-annotations-ida-pro-for-malware -analyse.html
Les fonctionnalités suivantes sont incluses :
TL;DR : dans IDA, exécutez annotate_IDB_MSDN.py .
Tous les fichiers (scripts IDAPython, analyseur XML, fichier XML d'informations MSDN, etc.) doivent être situés dans le même répertoire accessible par IDA Pro. Dans IDA, utilisez File - Script file... (ALT + F7) pour ouvrir annotate_IDB_MSDN.py . Le formulaire vous permettra de modifier les paramètres et d'annoter le fichier IDB après avoir cliqué sur OK.
Après avoir exécuté le script une fois, View - Les scripts récents (ALT + F9) peuvent également être utilisés.
Ce plugin vous permet de spécifier ou de choisir un type de fonction pour les appels indirects comme décrit ici : https://www.fireeye.com/blog/threat-research/2015/04/flare_ida_pro_script.html
Ce script vous permet de générer facilement des modèles de fonctions à partir d'une base de données IDB existante qui peuvent ensuite être transformés en signatures FLIRT pour aider à identifier des fonctions similaires dans de nouveaux fichiers. Plus d'informations sont disponibles sur : https://www.fireeye.com/blog/threat-research/2015/01/flare_ida_pro_script.html
Cet utilitaire peut vous aider à identifier les arguments statiques des fonctions utilisées dans un programme. Ceci est le plus souvent utilisé pour extraire les arguments des fonctions du décodeur de chaînes. Un exemple d'utilisation est disponible dans
Un article de blog contenant de plus amples informations est disponible à l'adresse :
https://www.fireeye.com/blog/threat-research/2015/11/flare_ida_pro_script.html
Ce script crée des références croisées entre les références de sélecteur et leurs implémentations telles que définies dans les sections relatives au runtime Objective-C de l'exécutable Mach-O cible. Il corrige également les pointeurs de référence du sélecteur pour qu'ils pointent vers leur fonction d'implémentation. Cela facilite l'analyse du code Objective-C en permettant des transitions fluides entre une implémentation et les emplacements où son sélecteur est référencé dans tout le code. Des commentaires utiles sur le code Objective-C sont ajoutés à chaque appel aux variantes objc_msgSend pour indiquer clairement quelle méthode est appelée sur quelle classe.
ironstrings.py
est un script IDAPython qui utilise l'émulation de code pour récupérer les chaînes construites (stackstrings) à partir de logiciels malveillants. Veuillez consulter les détails dans le README du script.
code_grafter.py
est un script IDAPython qui greffe du code sur une base de données IDA pour implémenter diverses fonctions importées et augmenter la probabilité de pouvoir exécuter un décompresseur ou un décodeur entièrement sous Bochs (ou tout autre outil d'émulation qui n'implémente pas de gestion spéciale pour celles-ci). fonctions). Cela évite les erreurs lorsque l'exécution émulée atteint des fonctions telles que VirtualAlloc
ou lstrlenA
.