Apiscout
Dieses Projekt zielt darauf ab, Windows -API -Importwiederherstellungen zu vereinfachen. Als Eingabe können beliebige Speicher -Müllkopien für eine bekannte Umgebung verarbeitet werden (Bitte beachten Sie: Eine Referenz -DB muss zuerst mit Apiscout/db_builder erstellt werden).
Die Ausgabe ist eine geordnete Liste identifizierter Windows -API -Referenzen mit einigen Meta -Informationen und einem Abdruckabdruck.
- Scout.py - sollte einen guten Überblick darüber geben, wie man mit der Bibliothek arbeitet.
- IDA_SCOUT.PY - ist ein Convenience GUI -Wrapper für die Verwendung in IDA Pro.
- Ghidrascout.java-ist ein Ghidra-Plugin für Apiscout (beigetragen von @mari-mari).
- match.py - zeigt, wie Ableitungen gegeneinander und Sammlungen von Fingerabdrücken abgestimmt werden können.
- sammeln.py - Erstellt eine Datenbank von WinAPi -Fingerabdrücken (Abschlüsse), die zum Matching verwendet werden kann.
- export.py - generiert APIQR -Diagramme, die sich visualisieren.
- UPDATE.PY - Ziehen Sie den neuesten APIVECTER DB von Malpedia (erfordert Malpedia -Konto / API -Token).
Der Code sollte mit Python 2 und 3 vollständig kompatibel sein.
Es gibt einen Blog-Beitrag, in dem Apiscout genauer beschrieben wird: http://byte-atlas.blogspot.com/2017/04/apiscout.html.
Ein weiterer Blog-Beitrag, in dem erklärt wird, wie die Ableitungen konstruiert und gespeichert werden: https://byte-atlas.blogspot.com/2018/04/apivectors.html.
Wir haben auch ein Papier bei BotConf 2018 vorgestellt, in dem die Apiscout-Methodik eingebaut ist, einschließlich einer Bewertung über Malpedia: https://journal.cecyf.fr/ojs/index.php/cybin/article/view/20/23
Versionsgeschichte
- 2023-03-27: v2.0.2-Bugfix für Idascout und Handhabung von Sets, beigetragen von @7a6570 (thx !!)
- 2023-01-02: v2.0.1-Bugfix für LAF-basierte Importtabelle Parsing mit Python 3.10, beigetragen von @Malware-Kitten (thx !!)
- 2022-08-01: v1.2.0-Plugin für Ghidra hinzugefügt, beigesteuert von @mari-mari (thx !!)
- 2022-09-20: v2.0.0-(potenziell brechen) CRABS-Ergebnisse haben jetzt ein zusätzliches Ausgangsfeld mit einer Reihe von Rufreferenzen für einen bestimmten WinAPI. Dies ist auch in der JSON -Ausgabe von
scout.py enthalten, die von @renzhexigua (thx !!) beigetragen wird - 2022-08-01: v1.2.0-Plugin für Ghidra hinzugefügt, beigesteuert von @mari-mari (thx !!)
- 2022-01-17: v1.1.9-behoben
ida_scout.py für die Arbeit mit IDA 7.5+, wenn Apiscout auch als Python-Paket installiert wird. - 2021-10-04: v1.1.8-Erweiterung der WinAPI-Kontexte basierend auf Beobachtungen von @Blattm (thx!).
- 2021-08-30: V1.1.7-Festung der Abschaltwarnung in APIQR, wie von Numpy erhöht.
- 2021-07-31: v1.1.6-Es ist nicht mehr erforderlich, eine feste LIEF-Version zu führen. (Danke an @CCCS-RS!)
- 2021-01-10: v1.1.5-Python3 Liefpaket behoben auf Version 0.10.1 (thx an @akhribfarouk!)
- 2020-12-09: v1.1.4-Python3-Korrekturen auf Databasebuilder (thx an @Dump-Guy!)
- 2020-07-13: v1.1.3-"Install_Rires" an setup.py hinzugefügt, um sicherzustellen, dass die Abhängigkeiten installiert sind.
- 2020-06-30: V1.1.0-Verwenden Sie jetzt LEF für die Analyse von Importtabellen. Fehler behoben, das bei Verwendung der Analyse von Importtabellen keine Abneigung erzeugt würde. Apiscout ist jetzt auch über PYPI erhältlich.
- 2020-03-03: Ein Drehbuch hinzugefügt, um den neuesten Ablagerungs-DB von Malpedia zu ziehen (erfordert Malpedia-Konto / API-Token).
- 2020-03-02: portiert auf IDA 7.4 (thx an @Jenfrie).
- 2020-02-18: DB Builder ist jetzt mit Python 3.7 kompatibel (thx an @elanfer).
- 2019-10-08: Problemumgehung für die gebrochene Filterung der API-Ansicht in IDA 7.3 (thx an @enzok für das Hinweis).
- 2019-08-22: Ein Fehler behoben, bei dem fehlende Typinformationen in IDA zu einem Absturz führen würden (jetzt gibt es stattdessen eine Fehlermeldung).
- 2019-08-20: Selbstfilter hinzugefügt, um Zeiger auf das Besitz von Gedächtnisbild zu beseitigen, das fälschlicherweise als API-Referenzen behandelt werden könnte.
- 2019-06-06: Unterstützung für die ordnungsgemäße Rekonstruktion für kommentierte APIs in IDA Pro (thx to @flxp0c) hinzugefügt.
- 2019-05-15: Numpy Support für Vektorberechnungen hinzugefügt (basierend auf der Implementierung von @garanews-thx!)
- 2019-05-15: Ein Fehler in PE Mapper behoben, bei dem der Puffer aufgrund der Fehlinterpretation der Abschnittsgrößen verkürzt wird.
- 2019-01-23: QOL-Verbesserungen: Automatisierte Datenordnerbereitstellung bei Verwendung als Modul, Logger-Initialisierung (THX bis @jdval)
- 2018-08-23: Ein Fehler in PE Mapper behoben, bei dem der PE-Header durch (leere) Abschnittsdaten überschrieben wird.
- 2018-08-21: Zusätzliche Funktionalität, die die Verwendung von Importtabelleninformationen anstelle von Referenzen ermöglicht.
- 2018-07-31: Fixe Convenience-Funktionen zum Erstellen/Exportieren von Vektoren von/zu Listen und Diktieren, zusätzliche Testabdeckung.
- 2018-07-23: WARNUNG: Änderung des Ableitungsformates-Einführte sortierte Ableitungen, die noch räumlicher effizienter sind (20%+).
- 2018-06-25: Inkompatibilität mit IDA Pro 7.0+ festgelegt (thx an @nazywam!)
- 2018-05-23: Weitere semantische Kontextgruppen hinzugefügt (thx to quoscient.io)
- 2018-03-27: Heuristische Schätzung von Windows-API-Referenzzählungen hinzugefügt
- 2018-03-06: APIQR-Visualisierung der Vektorergebnisse (C-1024)
- 2017-11-28: EIGENSCHAFTE TABELLE PARSER FÜHREN SIE ERGEBNISSIGEN INFORMATIONEN FÜHREN
- 2017-08-24: Multi-Segment-Support in IDA Pro (thx an @nazywam!)
- 2017-05-31: Windows 7 SP1 64-Bit-Import DB hinzugefügt (kompatibel für Malpedia)
Credits
Die Idee hat bisher mehrere Iterationen durchlaufen, bis diese nachgeaktete Veröffentlichung erreicht wurde.
Vielen Dank an Thorsten Jenke und Steffen Enders für ihre früheren Bemühungen und die Bewertung eines Proof-of-Concept dieser Methode.
Mehr Dank an Steffen Enders für seine Arbeit an der Visualisierung von APIQR -Diagrammen.
Auch dank Ero Carrera für Pefile und Elias Bachaalany für die Ida Python AskuSuseForm -Vorlage. :)
Zusätzlich dank Andrea Garavaglia für seine Leistungsbenchmarks, die zu drastischen Beschleunigungen im angewandten Matching führen!
Anfragen willkommen! :)