Programming lesson
Malware-Analyse unter Windows, Linux und Android: Ein umfassender Leitfaden für CS6262
Lerne die Grundlagen der Malware-Analyse mit Fokus auf Windows, Linux und Android. Dieser Leitfaden behandelt statische und dynamische Analyse, Symbolic Execution und Emulator-Erkennung – perfekt für Studierende des Kurses CS6262.
Einleitung: Warum Malware-Analyse heute wichtiger ist denn je
Im Jahr 2026 sind Cyberangriffe allgegenwärtig – von Ransomware-Attacken auf Krankenhäuser bis hin zu Spyware auf Smartphones. Der Kurs CS6262 an der Georgia Tech vermittelt die Fähigkeiten, solche Bedrohungen zu verstehen und zu bekämpfen. In diesem Leitfaden tauchen wir in die Malware-Analyse ein, wie sie im Project 3 – Malware Analysis Fall 2025 behandelt wird. Wir zeigen dir, wie du mit Tools wie Wireshark, Cuckoo Sandbox, angr und Jadx Schadsoftware untersuchst. Dabei gehen wir auf Windows-, Linux- und Android-Malware ein. Egal, ob du ein Anfänger in der Malware-Analyse bist oder deine Kenntnisse vertiefen möchtest – dieser Artikel bietet dir eine Schritt-für-Schritt-Anleitung.
Windows Malware: Stage 1 und Stage 2 analysieren
Statische Analyse von stage1.exe
Die statische Analyse ist der erste Schritt. Hier untersuchst du die Binärdatei, ohne sie auszuführen. Tools wie radare2 oder IDA Pro helfen dir, den Code zu disassemblieren. Bei stage1.exe aus dem Projekt findest du möglicherweise verschlüsselte Strings oder API-Aufrufe, die auf Netzwerkaktivität hindeuten. Achte auf Funktionen wie InternetOpenUrl oder CreateFile. Diese können Hinweise auf Command-and-Control-Server (C2) geben.
Dynamische Analyse mit Cuckoo Sandbox
Nach der statischen Analyse folgt die dynamische Analyse. Mit Cuckoo Sandbox kannst du die Malware in einer isolierten Umgebung ausführen und ihr Verhalten beobachten. Du siehst, welche Dateien erstellt, welche Prozesse gestartet und welche Netzwerkverbindungen aufgebaut werden. Für stage1.exe könnte das Herunterladen einer zweiten Stufe (stage2.exe) beobachtet werden. Notiere dir die IP-Adressen und Ports – sie sind entscheidend für die Rekonstruktion des C2-Servers.
Netzwerkverkehr mit Wireshark analysieren
Wireshark ist dein bester Freund, wenn es um Netzwerkverkehr geht. Starte einen Mitschmitt, während die Malware läuft. Suche nach ungewöhnlichen Paketen, z. B. HTTP-POST-Anfragen an eine bestimmte Domain. Im Project 3 findest du oft verschlüsselte Kommunikation, aber manchmal sind die Befehle im Klartext sichtbar. Ein typisches Beispiel: GET /cmd?action=download. Diese Informationen helfen dir, die gültigen Befehle der Malware zu identifizieren.
Symbolic Execution mit angr
Eine fortgeschrittene Technik ist die symbolische Ausführung. Mit dem Tool angr kannst du Pfade im Code automatisch erkunden. Für stage1.exe führst du einen Befehl wie python ./sym_exec.py ~/shared/stage1.exe 0x4050c0 0x40518a aus. angr findet dann Bedingungen, die zu bestimmten Verzweigungen führen. So kannst du versteckte Funktionalitäten aufdecken, z. B. einen speziellen Command, der nur bei einer bestimmten Eingabe aktiviert wird.
Linux Malware: payload.exe unter der Lupe
Analyse von Instruction Traces
Linux-Malware wie payload.exe (eigentlich eine ELF-Datei) erfordert andere Techniken. Du erhältst oft Instruction Traces, also Aufzeichnungen der ausgeführten Befehle. Mit radare2 oder Python-Skripten kannst du diese Traces analysieren. Suche nach Schleifen (loops) und Kommunikationspunkten. Eine häufige Taktik ist das periodische Senden von Heartbeat-Paketen an einen C2-Server. Erkenne das Muster und extrahiere die Zieladresse.
Loop Detection und Angriffslogik
Schleifen in Malware deuten oft auf Warte- oder Wiederholungsmechanismen hin. Ein Skript, das die Trace-Länge überwacht, kann helfen: Wenn eine Sequenz sich wiederholt, hast du eine Schleife gefunden. Die Angriffslogik kann dann durch symbolische Ausführung oder manuelle Analyse nachvollzogen werden. Im Project 3 geht es darum, die Kommunikationspunkte zu identifizieren und zu verstehen, wie die Malware mit dem C2 interagiert.
Android Malware: sms.apk reverse engineeren
Manifestanalyse und Broadcast Receiver
Android-Malware wie sms.apk nutzt oft Broadcast Receiver, um SMS-Nachrichten abzufangen. Öffne die APK mit jadx oder apktool und sieh dir die AndroidManifest.xml an. Suche nach Berechtigungen wie RECEIVE_SMS und READ_SMS. Die CoinPirate-Malware-Familie verwendet einen Receiver, der auf das Intent android.provider.Telephony.SMS_RECEIVED lauscht. Das ist der erste Hinweis auf SMS-basiertes C2.
Statische Analyse des Java-Codes
Mit jadx kannst du den Java-Code der App dekompilieren. Suche nach Methoden, die SMS-Nachrichten verarbeiten. Typischerweise gibt es eine Bedingung, die die Absender-Nummer (country code) prüft. Im Project 3 findest du Fragen wie: „Welcher Country Code wird erwartet?“ (5 Punkte) oder „Welche Befehle werden unterstützt?“ (10 Punkte). Achte auf Methoden wie getMessageBody() und getOriginatingAddress(). Die Antworten findest du durch Lesen des Codes – oft sind die Werte als Konstanten definiert.
Emulator-Erkennung umgehen (Stage 2)
Viele Android-Malware prüft, ob sie auf einem Emulator läuft, um Analyse zu vermeiden. Ein klassischer Check ist TelephonyManager.getDeviceId() – gibt es 000000000000000 zurück, handelt es sich um einen Emulator. Im Project 3 musst du diese Erkennung entfernen. Dazu dekompilierst du die APK, suchst die entsprechende Bedingung und änderst sie. Ein einfacher Weg: Ersetze den Rückgabewert der Methode durch eine gültige IMEI. Danach packst du die APK neu und signierst sie. Mit apktool geht das so: apktool d sms.apk, dann Änderungen vornehmen, und apktool b. Zum Signieren verwendest du jarsigner.
Testen auf dem Emulator
Starte den Emulator mit ~/bin/run-emulator. Installiere die modifizierte APK. Sende dann die in Stage 1 gefundenen SMS-Befehle an den Emulator. Verwende dazu adb shell am start -a android.intent.action.INSERT -t vnd.android.cursor.dir/contact -e name 'GatechID', um einen Kontakt anzulegen (wie im Tutorial). Beobachte die Logs mit adb logcat oder dem pidcat-Skript. Wenn die Malware aktiv wird, siehst du ausgehende Verbindungen oder Dateioperationen. Der C2-Server generiert dann die finalen Antworten für die Abgabe.
Wichtige Tools und Befehle im Überblick
- Cuckoo Sandbox:
cuckoo submit stage1.exe - Wireshark: Filter
http.requestoderip.addr == 192.168.1.100 - angr:
python ./sym_exec.py [program] [start] [end] - radare2:
r2 -A payload.exe, dannaflfür Funktionen - jadx:
jadx-gui sms.apk - apktool:
apktool d sms.apkundapktool b sms
Häufige Fehler und Tipps
Ein häufiger Fehler ist das Übersehen von Emulator-Checks. Selbst wenn du die richtigen SMS-Befehle sendest, reagiert die App nicht, wenn sie den Emulator erkennt. Überprüfe daher immer die onCreate-Methode und suche nach Aufrufen wie Build.FINGERPRINT oder Build.MODEL. Ein weiterer Tipp: Verwende pidcat für gefilterte Logs – es zeigt nur die Ausgaben deiner App an. Das spart Zeit beim Debuggen.
Fazit: Malware-Analyse als Schlüsselkompetenz
Die Fähigkeit, Malware zu analysieren, ist 2026 gefragter denn je. Ob Windows-Ransomware, Linux-Botnets oder Android-Spyware – die Techniken aus CS6262 Project 3 sind universell einsetzbar. Mit Tools wie Wireshark, Cuckoo, angr und jadx kannst du Schadsoftware entschlüsseln und ihre Geheimnisse lüften. Denke daran: Übung macht den Meister. Starte mit den Tutorials, experimentiere auf der VM und scheue dich nicht, Fehler zu machen. Viel Erfolg bei deiner Analyse!