Definition

Reverse Engineering bezeichnet in der Softwareanalyse und IT-Sicherheit die Untersuchung eines fertigen Programms, bei der etwa Quellcode oder eine vergleichbare Beschreibung aus dem Maschinencode zurückgewonnen wird, zum Beispiel um Schadsoftware zu verstehen.

Auf einen Blick

Ghidra, ein kostenloses Open-Source-Werkzeug, wurde in einem dokumentierten Fall bei der Suche nach Bugs in einer Firmware eingesetzt.

Manche Malware erkennt, wenn sie beobachtet oder analysiert wird, und beendet sich beispielsweise selbst.

In einem dokumentierten Fall stufte ein Sicherheitsforscher die Kombination aus eigenem Fachwissen und KI-Tools bei der Analyse einer Firmware als erfolgreich ein.

Was ist Reverse Engineering?

Reverse Engineering dient dazu, ein Programm ohne vorhandenen Quellcode zu verstehen, indem Analysten das Programm mit Werkzeugen wie Disassemblern und Debuggern untersuchen. Debugger können gezielt auf die Analyse von Schadsoftware ausgerichtet sein und beim Reverse Engineering von Programmen ohne Sourcecode helfen. Als Suite für Software Reverse Engineering galt IDA Pro jahrelang als erste Wahl; 2019 wurde Ghidra veröffentlicht. Der Begriff ist nicht auf Software beschränkt: Im allgemeinen Sinn wird angestrebt, ein vorliegendes Objekt weitgehend exakt abzubilden, anders als bei einer funktionellen Nachempfindung, die ebenfalls auf Analysen nach dem Black-Box-Prinzip aufbauen kann.

Wird die Software eines Versicherers per Reverse Engineering analysiert, lassen sich aus dem Maschinencode Quellcode oder eine vergleichbare Beschreibung zurückgewinnen und dabei unter Umständen Sicherheitslücken aufdecken. Verteidiger nutzen das Verfahren, um Schadcode zu verstehen, indem sie etwa den Code einer Datei manuell nachvollziehen. In einem dokumentierten Fall führte die Analyse einer Firmware durch einen Sicherheitsforscher zu insgesamt drei gefundenen Sicherheitslücken. Die gewonnenen Informationen können dazu dienen, Erkennungssignaturen zu entwickeln, Patches für Schwachstellen zu erstellen und Sicherheitskontrollen zu verbessern.

Wie funktioniert Reverse Engineering?

Analysten untersuchen ein Programm statisch, ohne es auszuführen, oder dynamisch, indem sie den verdächtigen Code in einer Sandbox-Umgebung ausführen und sein Verhalten beobachten. Bei der statischen Analyse von Schadsoftware wird die Datei auf Anzeichen schädlicher Absicht untersucht. Mit einem Disassembler wie IDA Pro oder Ghidra untersuchen Analysten die Codestruktur, statt den Code auszuführen, sodass der Code statisch analysiert werden kann.

Für eine tiefere Analyse kommen Disassembler zusammen mit Debuggern zum Einsatz, mit denen sich die Ausführung beobachten lässt. Zudem können Analysten den Code manuell nachvollziehen und in einer untersuchten Probe gespeicherte verschlüsselte Daten entschlüsseln. Der dokumentierte Ablauf bei einer Firmware umfasste die Entschlüsselung, die Rekonstruktion des Codes und die Suche nach Bugs mit Werkzeugen wie Ghidra. Bei der Rekonstruktion des Codes stieß ein Sicherheitsforscher in diesem Fall auf Sicherheitsprobleme. Von Debugger-Erkennung bis zur Codeverschleierung nutzen Angreifer eine Vielzahl an Techniken, um sich vor Reverse Engineering zu schützen.

Beispiele aus der Praxis

  • Am Beispiel einer Firmware von TP-Link zeigte ein Sicherheitsforscher, wie die Rekonstruktion des Codes ablaufen kann: Nach der Entschlüsselung suchte er mit Werkzeugen wie Ghidra nach Bugs und stieß auf Sicherheitslücken.
  • Ein Analyst untersucht die Codestruktur einer verdächtigen Datei mit einem Disassembler, ohne den Code auszuführen; aus den gewonnenen Erkenntnissen können Erkennungssignaturen entstehen.
  • Ein Analyst führt eine verdächtige Datei in einer Sandbox-Umgebung aus, um ihr Verhalten dynamisch zu beobachten, und nutzt für eine tiefere Analyse zusätzlich einen Debugger.
  • Wer ein Programm eines Versicherers per Reverse Engineering untersucht, kann daraus Aufschluss über den Aufbau des Programms und mögliche Sicherheitslücken gewinnen.