Reverse Engineering
Reverse Engineering ist die Analyse von Systemen mit dem Ziel, ihren Aufbau und ihre Funktionsweise zu verstehen.
Typische Anwendungsfälle:
die Rekonstruktion (von Teilen) des Quellcodes von Programmen, die nur als Binärabbild vorliegen.
die Analyse von Kommunikationsprotokollen proprietärer Software
Vom Reverse Engineering ist das Reengineering zu unterscheiden. Im Fall von letzteren geht es nur darum die Funktionalität eines bestehenden Systems mit neuen Techniken wiederherzustellen.
Zweck von Reverse Engineering
Herstellung von Interoperabilität
Untersuchung auf Schwachstellen
Untersuchung auf Copyrightverletzungen
Untersuchung auf Backdoors
Analyse von Viren, Würmern etc.
Umgehung von ungerechtfertigten(?) Schutzmaßnahmen (z. B. bei Malware)
Bootrom Lücke
CPU-Lücke macht Malware-Infektionen nahezu unumkehrbar
Die Schwachstelle verschafft Angreifern Zugang zu einer der höchsten Privilegienstufen heutiger PC-Systeme. Schadsoftware entzieht sich damit jeglicher Erkennung.
[...] Gegenüber Wired erklärten die Forscher, per Sinkclose ließen sich etwa Bootkits installieren, die für das Betriebssystem und gängige Antivirensoftware unsichtbar seien, während Angreifer einen Vollzugriff auf das Zielsystem erhielten.
—August, 2024 - Golem.de (AMD CVE )
CVE-2024-3094 - liblzma Backdoor in OpenSSH
Ziel
Das Verhalten von SSH bei der Authentifikation so zu verändern, dass es dem Angreifer Zugang zum System erlaubt.
Zur Absicherung der Backdoor ist diese über ein Zertifikat abgesichert.
Verbreitung des Schadcode?
Die Bibliothek liblzma wurde so angepasst, dass diese eine Backdoor in SSH einbaut.
Der Schadcode ist nur in den Tarballs zu finden - nicht im SourceCode im GIT. Der eigentliche Schadcode wurde versteckt in Testfixtures .
Der Code wurde so entworfen, dass bekannte Werkzeuge (Valgrind ) keine Probleme erkennen.
Die Bibliothek wurde nur in bestimmten Situationen von OpenSSH verwendet.
Bewertung
CVSS Base Score : 10.0 (kritisch)
Entstandener Schaden : vermutlich gering, da (gerade noch) keine offiziellen Releases (von Debian, Ubuntu, etc.) betroffen waren.
Dem Angriff ging ein sehr langer Social Engineering Angriff voraus, weswegen mit höherer Wahrscheinlichkeit ein State-sponsored Actor dahintersteckt.
Backdoor in 16 D-Link Routern
Angreifer können aus dem lokalen Netzwerk heraus den Telnet-Dienst betroffener D-Link-Router durch Angabe einer bestimmten Ziel URL aktivieren.
Die Admin-Zugangsdaten sind in der Firmware hinterlegt.
Vermutlich ursprünglich für werksseitige Tests.
CVSS Base Score : 8.8 (hoch)
Reverse Engineering - grundlegende Schritte
Informationsgewinnung zur Gewinnung aller relevanten Informationen über das Produkt.
Modellierung mit dem Ziel der (Wieder-)Gewinnung eines (abstrakten) Modells der relevanten Funktionalität.
Überprüfung (review ) des Modells auf seine Richtigkeit und Vollständigkeit.
Rechtliche Aspekte des Reverse Engineering
Die Rechtslage hat sich in Deutschland mehrfach geändert.
Umgehung von Kopierschutzmechanismen ist im Allgemeinen verboten.
Lizenzen verbieten das Reverse Engineering häufig; es stellt sich aber die Frage nach der Rechtmäßigkeit der Klauseln.
Warnung
Bevor Sie Reverse Engineering von Systemen betreiben, erkundigen sie sich erst über mögliche rechtliche Konsequenzen.
Software Reverse Engineering
Disassembler
Überführt (maschinenlesbaren) Binärcode in Assemblercode
Kommandozeilenwerkzeuge (exemplarisch):
objdump -d
gdb
radare
javap (für Java)
Hinweis
Für einfache Programme ist es häufig möglich direkt den gesamten Assemblercode mittels der entsprechenden Werkzeuge zu erhalten. Im Falle komplexer Binärdateien (z. B. im ELF (Linux) und PE (Windows) Format) gilt dies nicht und erfordert ggf. manuelle Unterstützung zum Beispiel durch das Markieren von Methodenanfängen.
Im Fall von Java .class ist die Disassemblierung immer möglich.
Decompiler
Überführt (maschinenlesbarem) Binärcode bestmöglich in Hochsprache (meist C ähnlich oder Java). Eine kleine Auswahl von verfügbaren Werkzeugen:
Hex-Rays IDAPro (kommerziell)
Ghidra (unterstützt fast jede Platform; die Ergebnisse sind sehr unterschiedlich.)
JadX (Androids .dex Format)
CFR (Java .class Dateien)
IntelliJ
Mittels Decompiler ist es ggf. möglich Code, der zum Beispiel ursprünglich in Kotlin oder Scala geschrieben und für die JVM kompiliert wurde, als Java Code zurückzubekommen.
Die Ergebnisse sind für Analysezwecke zwar häufig ausreichend gut – von funktionierendem Code jedoch ggf. (sehr) weit entfernt.
decompiler.com unterstützt eine große Anzahl ausführbaren Dateien.
Hinweis
Decompiler sind generell sehr hilfreich, aber gleichzeitig auch sehr fehlerbehaftet. Vieles, dass im Binärcode möglich ist, hat auf der Ebene des Sourcecodes keine Entsprechung.
Zum Beispiel unterstützt Java Bytecode beliebige Sprünge. Solche Code wird aber durch normale Programme, die z. B. in Java, Kotlin, Scala oder Clojure geschrieben wurden, nicht erzeugt. Decompiler kommen mit solchem Code in der Regel nicht (gut) zurecht.
cfr Decompiler
JD Decompiler
Beispiel fehlgeschlagener Dekompilierung
JDec Decompiler
Debugger
Dient der schrittweisen Ausführung des zu analysierenden Codes oder Hardware; ermöglichen zum Beispiel Speicherinspektion und Manipulation.
Hardware Debugger
Für das Debuggen von Hardware gibt es entsprechende Werkzeuge, z. B.
Lauterbach Hardware Debugger (kommerziell und sehr teuer).
Mittels solcher Werkzeuge ist es möglich die Ausführung von Hardware Schritt für Schritt (single step mode` ) zu verfolgen und den Zustand der Hardware (Speicher und Register) zu inspizieren. Dies erfordert jedoch häufig eine JTAG Schnittstelle oder etwas vergleichbares.
Erschwerung des Reverse Engineering
Obfuscation (Verschleierung )
Obfuscation → für Menschen unverständlich Code
Gerade im Umfeld von klassischen Binaries für Windows, Mac und Linux erhöhen Compiler Optimierungen, z. B. von C/C++ und Rust Compilern (-O2 / -O3 ), bereits den Aufwand, der notwendig ist den Code zu verstehen, erheblich.
Hinweis
Einen ambitionierten und entsprechend ausgestatteten Angreifer wird Code Obfuscation bremsen, aber sicher nicht vollständig ausbremsen und das Vorhaben verteilen.
Obfuscation - Techniken (Auszug)
Obfuscation auf Source Code Ebene:
International Obfuscated C Code Contest
Umstellen von Instruktionen
Das Umstellen von Instruktionen erschwert die Analyse, da viele Werkzeuge zum Dekompilieren auf die Erkennung von bestimmten Mustern im Code angewiesen sind und ansonsten nur sehr generischen (Spagetti Code) oder gar unsinnigen Code zurückgeben.
Verschleierung von Strings
Das Verschleiern von Strings kann insbesondere das Reversen von Binärcode erschweren, da ein Angreifer häufig nur an einer ganz bestimmten Funktionalität interessiert ist und dann Strings ggf. einen sehr guten Einstiegspunkt für die weitergehende Analyse bieten.
Stellen Sie sich eine komplexe Java Anwendung vor, in der alle Namen von Klassen, Methoden und Attributen durch einzelne oder kurze Sequenzen von Buchstaben ersetzt wurden und sie suchen danach wie von der Anwendung Passworte verarbeitet werden. Handelt es sich um eine GUI Anwendung, dann wäre zum Beispiel die Suche nach Text, der in den Dialogen vorkommt (z. B. "Password" ) z. B. ein sehr guter Einstiegspunkt.
Verschlüsselung von Bytecode und Java Class Loader
ClassLoader
ClassLoader dienen dazu Klassen dynamisch zu laden. D. h. eine Klasse wird erst dann von der JVM geladen, wenn sie benötigt bzw. angefordert wird.
Jeder ClassLoader spannt seinen eigenen Namensraum auf.
Zwei Instanzen der gleichen Klasse (d. h. mit dem selben Bytecode) sind nicht gleich (Referenzgleichheit), wenn zwei verschiedene ClassLoader genutzt wurden.
ClassLoader stehen in einer Hierarchie.
ClassLoader können genutzt werden, um:
ein Programm dynamisch zu erweitern (Plug-ins
um Klassen zu laden, die zur Laufzeit generiert wurden
um den Bytecode zu manipulieren, bevor er von der JVM ausgeführt wird.
Ein eigener ClassLoader
static class MyClassLoader extends ClassLoader {
public MyClassLoader ( ClassLoader parent ) { super ( parent ); }
@Override
protected Class <?> findClass ( final String name ) throws ClassNotFoundException {
try ( final var in = super . getResourceAsStream ( name )) {
final var classBytes = new byte [ in . available () ] ;
final var readBytes = in . read ( classBytes );
if ( readBytes != classBytes . length ) {
throw new IOException ( "failed reading class file: " + name );
}
return defineClass ( name , classBytes , 0 , classBytes . length );
} catch ( IOException ioe ) {
throw new ClassNotFoundException ( "failed loading " + name , ioe );
}
}
}
Eine sehr kurz Einführung in Java Bytecode
Die Java Virtual Machine
Java Bytecode ist die Sprache, in der Java (oder Scala, Kotlin, ...) Programme auf der Java Virtual Machine (JVM) ausgeführt werden.
In den meisten Fällen arbeiten Java Decompiler so gut, dass ein tiefgehendes Verständnis von Java Bytecode selten notwendig ist.
Java Bytecode kann — muss aber nicht — interpretiert werden. (Z. B. können virtuelle Methodenaufrufe in Java schneller sein als in C++.)
Java Bytecode - stackbasierte virtuelle Maschine
Die JVM ist eine stackbasierte virtuelle Maschine.
Die getypten Operanden eines Befehls werden auf einem Stack abgelegt und die Operationen arbeiten auf den obersten Elementen des Stacks. Jeder Thread hat seinen eigenen Stack.
Eine Methode muss einen Stack begrenzter Höhe aufweisen. Code, für den die Stackhöhe nicht berechenbar ist, wird vom Compiler abgelehnt. (Zum Beispiel ein bipush in einer Endlosschleife.)
Die benötigte Höhe des Stacks wird vom Compiler berechnet und von der JVM überprüft.
Java Bytecode - Methodenaufrufe und lokale Variablen
Die Java Virtual Machine verwendet lokale Variablen zur Übergabe von Parametern beim Methodenaufruf.
Beim Aufruf von Klassenmethoden (static ) werden alle Parameter in aufeinanderfolgenden lokalen Variablen übergeben, beginnend mit der lokalen Variable 0.
D. h. in der aufrufenden Methode werden die Parameter vom Stack geholt und in lokalen Variablen gespeichert.
Beim Aufruf von Instanzmethoden wird die lokale Variable 0 dazu verwendet, um die Referenz (this ) auf das Objekt zu übergeben, auf dem die Instanzmethode aufgerufen wird.
Anschließend werden alle Parameter in aufeinanderfolgenden lokalen Variablen übergeben, beginnend mit der lokalen Variable 1.
Die Anzahl der benötigten lokalen Variablen wird vom Compiler berechnet und von der JVM überprüft.
Beispiel: Default Constructor In Java Bytecode
Ein Constructor welcher keine expliziten Parameter hat und nur den super Konstruktor aufruft.
public Main ();
0 aload_0 [ this ]
1 invokespecial java . lang . Object ()
4 return
Die Zeilennummern und die Informationen über die lokalen Variablen sind optional und werden nur für Debugging Zwecke benötigt.
Line numbers : [ pc : 0 , line : 9 ]
Local variable table : [ pc : 0 , pc : 5 ] local : this
index : 0
type : de . dhbw . simplesecurepp . Main
Es gibt weitere Metainformationen, die nur für Debugging-Zwecke benötigt werden, z. B. Informationen über die ursprünglich Quelle des Codes oder die sogenannte "Local Variable Type Table" in Hinblick auf generische Typinformationen. Solche Informationen werden häufig vor Auslieferung entfernt bzw. nicht hineinkompiliert.
Beispiel: Aufruf einer komplexeren Methode
public static void main ( java . lang . String [] args ) throws ...;
0 aload_0 [ args ]
1 arraylength
2 iconst_2
3 if_icmpeq 74
6 getstatic java . lang . System . err : java . io . PrintStream
9 ldc < String "SimpleSecure++" >
11 invokevirtual java . io . PrintStream . println ( java . lang . String ) : void
...
Verschlüsselung von Daten
Alternativen zur Speicherung von Passwörtern
In einigen Anwendungsgebieten ist es möglich auf das explizite Speichern von Passwörtern ganz zu verzichten.
Stattdessen wird z. B. einfach versucht das Ziel zu entschlüsseln und danach evaluiert ob das Passwort (vermutlich) das Richtige war.
Kann darauf verzichtet werden zu überprüfen ob das Passwort korrekt war, dann sind keine Metainformationen notwendig und die verschlüsselte Datei kann genau so groß sein wie die unverschlüsselte Datei.
Schematische Darstellung der Verschlüsselung von Containern (z. B. Veracrypt)
Generische Dateiverschlüsselung ohne explizite Speicherung des Passworts
Live Exercise
Gegeben
Programm:
Simplesecure++
Datei:
42.enc
Hinweise:
Hints.pdf
Reversing SimpleSecure++
MTAwMDAw:cNaZm8oAwArnzAP1D+jchwAG9Y/Nwin7dlRdSTMbTC4=:P4DxczKSsiHBqV16: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
Reverse Engineering Übung
Gegeben
Programm:
Secure++
Exemplarische Verwendung zum Verschlüsseln
java -jar securepp-0.0.1.jar de.dhbw.securepp.Main \
-p 'VielleichtIstEsRichtig-vielleichtAuchNICHT...' \
-in Poem.txt -out Poem.enc
Datei:
Poem.enc
Hinweise:
Hints.pdf
Reversing Secure++
Entschlüsseln Sie die Datei Poem.enc, die mit Secure++ verschlüsselt wurde.
MTAwMDAw:K0KuWK4kx9RA8f6aEDCoggrIbz37N5egoR3AXh2q2Hc=:iXFLTMXWjSEEPx84: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