Programming lesson
Malware-Analyse mit Ghidra und angr: Ein praktischer Leitfaden für CS6264
Lernen Sie, wie Sie mit Ghidra, angr und DynamoRIO echte Malware-Proben analysieren, versteckte Verhaltensweisen aufdecken und C2-Befehle entschlüsseln – basierend auf dem CS6264-Projekt 2.
Einleitung: Warum Malware-Analyse heute wichtiger denn je ist
Im Mai 2026 sind Cyberangriffe so raffiniert wie nie zuvor. Aktuelle Bedrohungen wie KI-gestützte Ransomware oder Supply-Chain-Angriffe auf beliebte Apps zeigen, wie wichtig es ist, die Taktiken von Angreifern zu verstehen. In diesem Tutorial tauchen wir in die Welt der Malware-Analyse ein – genau wie im CS6264-Projekt 2. Sie lernen, wie Sie mit Ghidra, angr und DynamoRIO echte Schadsoftware untersuchen und versteckte, bösartige Verhaltensweisen aufdecken. Keine Sorge, wir bleiben in der sicheren Windows-VM.
Grundlagen der statischen Analyse mit Ghidra
Die statische Analyse ist der erste Schritt, um einen Malware-Binärcode zu verstehen, ohne ihn auszuführen. Ghidra, entwickelt von der NSA, ist dabei Ihr bester Freund. Nach dem Import der Malware in Ghidra und der Analyse erhalten Sie eine Liste von Kandidatenfunktionen – eine Art „Verdächtigenliste“. Ihre Aufgabe: Finden Sie die CMD-Dispatching-Logik, die entscheidet, welche schädliche Aktion als Nächstes ausgeführt wird.
Stellen Sie sich vor, Sie analysieren einen Botnet-Client, der auf Befehle von einem C2-Server wartet. Die Dispatching-Funktion ähnelt einer Switch-Case-Struktur in C: Je nach empfangenen Befehl (z. B. „Download“, „Löschen“, „Spionage“) wird eine andere Routine aufgerufen. In Ghidra suchen Sie nach Funktionen, die viele if-else- oder switch-Anweisungen enthalten, insbesondere solche, die mit Netzwerkdaten oder Konfigurationsstrings arbeiten.
Reverse Engineering: Den Code verstehen
Beim Reverse Engineering mit Ghidra sehen Sie den dekompilierten C-Code. Achten Sie auf folgende Muster:
- String-Vergleiche: Oft werden Befehle wie „cmd1“, „cmd2“ mit
strcmpverglichen. - Funktionszeiger: Moderne Malware nutzt Arrays von Funktionszeigern, um die Dispatching-Logik zu verschleiern.
- Verschlüsselung: Die Befehle könnten XOR-verschlüsselt sein – ein häufiger Trick in aktuellen Ransomware-Familien.
Ein aktuelles Beispiel: Im Jahr 2026 nutzen viele Banking-Trojaner ausgefeilte Verschleierungstechniken, um die Analyse zu erschweren. Mit Ghidra können Sie diese jedoch Stück für Stück entschlüsseln.
Symbolische Ausführung mit angr: Die versteckten Befehle finden
Haben Sie die Dispatching-Logik gefunden, geht es an die symbolische Ausführung mit angr. angr ist ein Framework, das symbolische Variablen verwendet, um alle möglichen Pfade durch ein Programm zu erkunden. Ihr Ziel: Finden Sie die genauen Eingaben (Befehle), die die versteckten bösartigen Verhaltensweisen auslösen.
Angenommen, die Malware erwartet einen 4-Byte-Befehl. Mit angr können Sie diese Bytes symbolisch machen und den Solver nach allen erreichbaren Zuständen fragen, die zu bestimmten Adressen führen. Das Ergebnis ist eine Liste von Befehlen wie 0x01, 0x02, 0x03 – die „Zauberwörter“, die die Malware aktivieren.
import angr
proj = angr.Project('malware.exe', auto_load_libs=False)
state = proj.factory.entry_state()
simgr = proj.factory.simulation_manager(state)
simgr.explore(find=0x401234) # Zieladresse des versteckten Verhaltens
if simgr.found:
found = simgr.found[0]
print(found.posix.dumps(0)) # Ausgabe der EingabeDieses Skript ist nur ein Ausgangspunkt. In der Praxis müssen Sie die Stack- und Registerzustände anpassen. Aber es zeigt das Prinzip: Symbolische Analyse macht das Unsichtbare sichtbar.
Dynamische Analyse mit DynamoRIO: Verhalten in Aktion sehen
Die dynamische Analyse ist der dritte Schritt. Mit DynamoRIO können Sie die Ausführung der Malware manipulieren und gezielt in die gewünschten Pfade zwingen. Das Tool erlaubt es, Basic-Block-Traces aufzuzeichnen und API-Aufrufe zu überwachen – ähnlich wie ein Debugger auf Steroiden.
Konkret: Sie schreiben einen DynamoRIO-Client, der die Eingabe der Malware durch die zuvor gefundenen Befehle ersetzt. Dann lassen Sie die Malware in der Windows-VM laufen und beobachten die Auswirkungen: Werden Dateien erstellt? Werden Netzwerkverbindungen aufgebaut? Ein API-Trace zeigt Ihnen jeden CreateFile- oder send-Aufruf.
Ein aktueller Trend: Im Jahr 2026 nutzen viele Infostealer ausgeklügelte Process Hollowing-Techniken. Mit DynamoRIO können Sie genau sehen, wie der schädliche Code in legitime Prozesse injiziert wird.
Praktische Übung: malware1.exe (MyDoom-Variante)
Beginnen wir mit malware1.exe, einer MyDoom-ähnlichen Malware. Dank des Berichts Ihres Kollegen wissen Sie bereits, dass die CMD-Dispatching-Logik in Funktion 0x401000 liegt. Ihre Aufgabe:
- Reverse Engineering: Analysieren Sie die Funktion in Ghidra und identifizieren Sie die Switch-Case-Struktur.
- Symbolische Ausführung: Schreiben Sie ein angr-Skript, das die Befehle für „E-Mail-Versand“ und „DDoS-Angriff“ extrahiert.
- Dynamische Instrumentierung: Setzen Sie die Befehle mit DynamoRIO ein und zeichnen Sie die Netzwerkaktivität auf.
Hinweis: Führen Sie die Malware nur in der bereitgestellten Windows-VM aus. Die VM ist so konfiguriert, dass der Netzwerkverkehr blockiert wird – Sie sind sicher.
Fortgeschrittene Techniken für malware2.exe und unknown.exe
Für malware2.exe (win33.exe) benötigen Sie zusätzlich dynamische Trace-Analyse. Hier geht es darum, die Ausführungspfade zu manipulieren, um versteckte Funktionen zu triggern. Nutzen Sie DynamoRIO, um bestimmte Basic-Blocks zu überspringen oder zu wiederholen.
Die dritte Probe, unknown.exe, ist eine echte Herausforderung. Hier müssen Sie ohne Vorwissen die CMD-Dispatching-Logik in 10 Funktionen finden. Ein Tipp: Achten Sie auf kryptografische Konstanten – viele moderne Malware-Proben verwenden AES oder RC4 zur Verschleierung.
Ein Beispiel aus der Praxis: Im Jahr 2026 analysierten Forscher eine neue Ransomware-Gruppe, die ihre Befehle mit einem benutzerdefinierten Algorithmus verschlüsselte. Durch statische Analyse und symbolische Ausführung konnten die Entschlüsselungsroutinen identifiziert werden – genau wie in diesem Projekt.
Häufige Fehler und wie Sie sie vermeiden
- VM-Konfiguration: Stellen Sie sicher, dass die Windows-VM keine echte Netzwerkverbindung hat. Nutzen Sie die Host-Only-Adapter.
- Ghidra-Analyse: Führen Sie die Analyse immer mit den Standardeinstellungen durch. Manchmal übersehen Anfänger wichtige Funktionen, weil sie die Analyse vorzeitig abbrechen.
- angr-Skripte: Wenn angr keine Lösung findet, überprüfen Sie die Basisadresse des Binärs. Oft hilft es, den
entry_statedurch einencall_statezu ersetzen. - DynamoRIO: Denken Sie daran, den Client als
dynamorio.exezu starten, nicht direkt die Malware.
Fazit: Der Weg zum Malware-Analysten
Dieses Tutorial hat Ihnen die drei Säulen der Malware-Analyse nähergebracht: statische Analyse mit Ghidra, symbolische Ausführung mit angr und dynamische Instrumentierung mit DynamoRIO. Im CS6264-Projekt 2 wenden Sie diese Fähigkeiten auf echte Schadsoftware an. Denken Sie daran: Jede Analyse beginnt mit Neugier und systematischem Vorgehen. Mit den richtigen Werkzeugen können Sie selbst die raffinierteste Malware enttarnen – und so zur Cybersicherheit beitragen.
Viel Erfolg bei Ihrem Projekt! Und vergessen Sie nicht: Führen Sie Malware niemals außerhalb der VM aus.