Dieses Repository enthält eine Sammlung von IDA Pro-Skripten und Plugins, die vom FireEye Labs Advanced Reverse Engineering (FLARE)-Team verwendet werden.
Kopieren Sie zur Installation den Inhalt des Plugins-Verzeichnisses in diesem Repository in Ihren Ordner %PROGRAMFILES%IDAplugins.
Das Python-Verzeichnis hier kann in Ihren Ordner %PROGRAMFILES%IDApython kopiert werden, oder Sie können Ihre Umgebungsvariable PYTHONPATH so ändern, dass sie das Verzeichnis enthält.
Das IDA-Plugin „shellcode_hashes_search_plugin.py“ implementiert die hier beschriebene Hash-Suche: https://www.mandiant.com/blog/precalculated-string-hashes-reverse-engineering-shellcode/.
Das Verzeichnis „shellcode_hashes“ enthält das Skript, das zum Erstellen der Datenbank für das Skript „shellcode_hash_search.py“ verwendet wird, sowie eine bereitgestellte Datenbank.
Das Plugin struct_typer_plugin.py implementiert die hier beschriebene Strukturtypisierung: https://www.mandiant.com/blog/applying-function-types-structure-fields-ida/
Das stackstrings_plugin.py implementiert die hier beschriebene Wiederherstellung manuell erstellter Zeichenfolgen: http://www.fireeye.com/blog/threat-research/2014/08/flare-ida-pro-script-series-automatic-recovery-of- konstruierte-Strings-in-Malware.html
Dieses Skript für IDA Pro fügt der Datenbank MSDN-Informationen aus einer XML-Datei hinzu. Informationen zu diesem Plugin finden Sie unter: https://www.fireeye.com/blog/threat-research/2014/09/flare-ida-pro-script-series-msdn-annotations-ida-pro-for-malware -analysis.html
Folgende Funktionalität ist enthalten:
TL;DR: Führen Sie in IDA annotate_IDB_MSDN.py aus.
Alle Dateien (IDAPython-Skripte, XML-Parser, MSDN-Informations-XML-Datei usw.) sollten sich im selben Verzeichnis befinden, auf das IDA Pro zugreifen kann. Verwenden Sie in IDA Datei - Skriptdatei... (ALT + F7), um annotate_IDB_MSDN.py zu öffnen. Das Formular ermöglicht es Ihnen, die Einstellungen zu ändern und die IDB-Datei mit Anmerkungen zu versehen, nachdem Sie auf „OK“ geklickt haben.
Nach einmaliger Ausführung des Skripts kann auch Ansicht – Letzte Skripte (ALT + F9) verwendet werden.
Mit diesem Plugin können Sie einen Funktionstyp für indirekte Aufrufe angeben oder auswählen, wie hier beschrieben: https://www.fireeye.com/blog/threat-research/2015/04/flare_ida_pro_script.html
Mit diesem Skript können Sie auf einfache Weise Funktionsmuster aus einer vorhandenen IDB-Datenbank generieren, die dann in FLIRT-Signaturen umgewandelt werden können, um bei der Identifizierung ähnlicher Funktionen in neuen Dateien zu helfen. Weitere Informationen finden Sie unter: https://www.fireeye.com/blog/threat-research/2015/01/flare_ida_pro_script.html
Dieses Dienstprogramm kann Ihnen dabei helfen, statische Argumente für Funktionen zu identifizieren, die in einem Programm verwendet werden. Dies wird am häufigsten zum Extrahieren von Argumenten für String-Decoder-Funktionen verwendet. Beispielverwendung finden Sie in
Einen Blogbeitrag mit weiteren Informationen finden Sie unter:
https://www.fireeye.com/blog/threat-research/2015/11/flare_ida_pro_script.html
Dieses Skript erstellt Querverweise zwischen Selektorverweisen und ihren Implementierungen, wie in den Objective-C-Laufzeitabschnitten der ausführbaren Mach-O-Zieldatei definiert. Außerdem werden Selektor-Referenzzeiger so gepatcht, dass sie stattdessen auf ihre Implementierungsfunktion verweisen. Dies erleichtert die Analyse von Objective-C-Code, indem es reibungslose Übergänge zwischen einer Implementierung und den Stellen ermöglicht, an denen im gesamten Code auf den Selektor verwiesen wird. Bei jedem Aufruf von objc_msgSend-Varianten werden hilfreiche Objective-C-Codekommentare hinzugefügt, um klar anzugeben, welche Methode für welche Klasse aufgerufen wird.
ironstrings.py
ist ein IDAPython-Skript, das Code-Emulation verwendet, um konstruierte Strings (Stackstrings) aus Malware wiederherzustellen. Bitte lesen Sie die Details in der README-Datei des Skripts.
code_grafter.py
ist ein IDAPython-Skript, das Code in eine IDA-Datenbank einpfropft, um verschiedene importierte Funktionen zu implementieren und die Wahrscheinlichkeit zu erhöhen, dass ein Entpacker oder Decoder vollständig unter Bochs (oder anderen Emulationstools, die keine spezielle Behandlung für diese implementieren) ausgeführt werden kann Funktionen). Dies verhindert Fehler, wenn die emulierte Ausführung Funktionen wie VirtualAlloc
oder lstrlenA
erreicht.