Frage:
Automatisierte Tools für das Reverse Engineering von Dateiformaten?
Brendan Dolan-Gavitt
2013-03-27 22:17:59 UTC
view on stackexchange narkive permalink

Gibt es Tools zur Automatisierung des Reverse Engineering von Dateiformaten? Insbesondere interessieren mich Tools, die die dynamische Analyse einer Anwendung zum Parsen des Formats verwenden, und weniger Visualisierungs- oder Hex-Editor-Tools (z. B. 010-Editor).

Es gibt einige akademische Literatur zum Thema:

Hat dies alles in die Praxis umgesetzt?

Drei antworten:
#1
+9
0xC0000022L
2013-03-27 23:58:38 UTC
view on stackexchange narkive permalink

Sie geben den Zweck nicht an. Wenn Sie das Format vollständig verstehen und nicht nur bestimmte anfängliche Aspekte der Analyse automatisieren möchten, ist es sehr schwierig, ein ausreichend allgemeines Tool zu finden. Dafür gibt es domänenspezifische Sprachen und erweiterbare Tools (010 Editor, Skriptsprachen). Im Moment sind mir keine Tools bekannt, die "alles machen" würden.

Tools wie der 010 Editor bieten tatsächlich zusätzliche nützliche Informationen wie ein Histogramm (geben Hinweise auf die Entropie, Komprimierung / Verschlüsselung) und geben Ihnen die binären Vorlagen, um Ihr Wissen über das Dateiformat immer weiter zu verfeinern. Der nervigste Aspekt ist, wie begrenzt die Skripterstellung ist und dass Sie beispielsweise keine Plugins schreiben können (stellen Sie sich vor, Sie könnten bzip2 dekomprimieren oder Streams und dergleichen entleeren, was häufig vorkommt, aber vom 010-Editor überhaupt nicht unterstützt wird). Einer der Hauptschmerzpunkte bei mir und dem 010 Editor war, dass ich auf einige syntaktische Einschränkungen von Binärvorlagen gestoßen bin, um etwas Wichtiges auszudrücken, und dies auf seltsame Weise umgehen musste (parametrisierte struct s sind ein großer Schmerz ), obwohl dies genau das Problem ist, das mit seinem eigenen DSL behoben werden soll. Ich denke, wir brauchen dringend eine FLOSS-Lösung (und ich habe mich tatsächlich irgendwann mit Lua befasst frhed).

A. Das Dateiformat kann sich unter einer Verschlüsselungs- oder Komprimierungsschicht befinden, die pro Abschnitt der Datei und nicht pro Datei getrennt sein kann. Es kann mehrere Schichten geben. Ich möchte zwar nicht so weit gehen zu behaupten, dass es absolut unmöglich ist, sich so etwas auszudenken, aber es gibt einen Grund, warum IDA beispielsweise interaktiv ist. Bei den meisten RCE-Aufgaben können selbst die besten Heuristiken die Fähigkeiten und Erfahrungen eines erfahrenen Reverse Engineers nicht ersetzen. Aus Erfahrung würde ich das gleiche auf das Reverse Engineering von Dateiformaten anwenden.

Auch ich habe einige Dateiformate umgekehrt und normalerweise eine Kombination aus dem Schreiben eines Parsers in einer Skriptsprache einerseits und dem Schreiben einer Binärvorlage für 010 Editor andererseits verwendet. Letzteres bietet einen guten Fallback, denn selbst wenn das Parsen fehlschlägt, kann ich dorthin gehen, untersuchen, was los ist, anpassen und erneut ausführen. Schäumen, spülen, wiederholen ... Sie haben die Idee.

Die mit Abstand größte Herausforderung bestand darin, die geheimnisvolleren Aspekte wie Ganzzahlen herauszufinden, die in 24-Bit-Daten codiert sind, manchmal LSB und manchmal MSB zuerst, Daten, Bäume basierend auf xor zwei Indizes von anderswo, wobei ein paar Bits von einem Byte und ein paar von einem anderen verwendet werden, die eine bestimmte Bedeutung haben ... das Zeug. Und ich kann mir wirklich nicht vorstellen, wie Sie diese Lücken füllen würden, ohne den Code , der das Format ursprünglich liest / schreibt, rückzuentwickeln. Ohne Dokumentation / Standard ist dies die beste Referenz, die Sie erhalten haben.

Unterschätzen Sie auch nicht die Leistungsfähigkeit der Visualisierung. Natürlich liefert ein einzelner Winkel, wie z. B. ein Histogramm, nur wenige Informationen. Es gibt jedoch viele interessante Algorithmen, die auf unbekannte Daten angewendet und Strukturen angezeigt werden können.

Ich sollte klarstellen: Ich suche nicht nach etwas, das * alles * automatisiert - wie Sie sagen, wäre ein Tool wie IDA am besten. Es gibt jedoch viel Raum für Verbesserungen zwischen vollständig manuell und vollständig automatisiert. Sogar ein Tool, das gerade eine Datei mit dem Code versehen hat, der jeden Bytebereich analysiert hat, wäre äußerst wertvoll.
@BrendanDolan-Gavitt: Ich stimme vollkommen zu. Leider sind mir keine bekannt. Es wäre von der Architektur und darüber hinaus von der Plattform abhängig, sinnvoll zu sein. Ich könnte mir jedoch vorstellen, dass so etwas existiert, um zum Beispiel die Ausgabe von "strace" zu analysieren.
Ich möchte auch hinzufügen, dass ich die Visualisierung definitiv nicht rabattiere. Ich habe ein wenig daran gearbeitet [hier] (http://amnesia.gtisc.gatech.edu/~brendan/hal_mixed_annotated.pdf) und [hier] (http://amnesia.gtisc.gatech.edu) /~brendan/hal_dbi.pdf). Dies sind beide Teile des PDB-Dateiformats, und es ist sehr hilfreich, die Zugriffsmuster visuell anzuzeigen, um eine Vorstellung davon zu erhalten, wo sich Strukturgrenzen befinden.
#2
+2
joxeankoret
2013-03-27 22:52:09 UTC
view on stackexchange narkive permalink

Die Akademie ist sehr weit von der Industrie entfernt, die immer viele, viele Jahre voraus ist. Ich denke, es gibt nichts 'Magisches', um Dateiformate zurückzuentwickeln. In der Tat habe ich verschiedene Dateiformate umgekehrt und beim ersten Mal versucht, herauszufinden, ob es ein solches Tool gibt. Zu dieser Zeit gab es jedoch nichts und ich glaube, dass es heute überhaupt nichts gibt.

Es ist möglich, ein Tool zu schreiben, das einige Muster 'automatisch' erkennt und eine anfängliche Struktur erstellt, an der mit der Arbeit begonnen werden kann ohne die Notwendigkeit, bei Null zu beginnen, aber ich glaube nicht, dass etwas anderes existiert.

Es ist eine Schande, wenn es keine Tools gibt - ich kann mir eine Menge Automatisierung vorstellen, die sehr nützlich wäre, insbesondere wenn wir eine Datenflussanalyse einführen! Vielleicht noch etwas zu meiner Aufgabenliste hinzufügen ...
#3
+2
0xea
2013-03-28 02:28:25 UTC
view on stackexchange narkive permalink

Keine direkte Antwort auf Ihre Frage, aber ich denke, es könnte helfen.

Es wurden mehr Versuche unternommen, unbekannte Netzwerkprotokolle zu analysieren, und ich denke, einige Ideen und Techniken könnten zur Analyse unbekannter Dateiformate angewendet werden. Einige der Dokumente sind:

Es gibt auch das Netzob -Tool:

Netzob ist ein Open-Source-Tool für Reverse Engineering, Verkehrserzeugung und Fuzzing von Kommunikationsprotokollen. Es ermöglicht das Ableiten des Nachrichtenformats und der Zustandsmaschine eines Protokolls durch passive und aktive Prozesse. Das Modell kann anschließend verwendet werden, um einen realistischen und kontrollierbaren Verkehr zu simulieren.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...