Reverse Engineering von Rusty Stealer: Ein Rust-basierter RAT mit fortschrittlichem Keylogging, Live-Bildschirm-Streaming und aggressiver Verteidigungsumgehung (Beenden von Windows Defender und Hijacking von Diensten), um Persistenz aufrechtzuerhalten.
Die erste Reverse-Engineering-Analyse der Rusty-Stealer-Probe in Ghidra zeigt ein dediziertes Keylogger-Modul, das in Rust kompiliert wurde. Die dekompilierte Ansicht zeigt deutlich, wie die Malware sich in die Benutzereingabe einklinkt, indem sie Tastencodes auflöst und sie bestimmten Aktionen zuordnet. Dies bestätigt, dass der Stealer aktiv Tastatureingaben protokolliert, um Anmeldedaten, Chats und sensible Benutzerdaten zu sammeln.
Keylogger-Logik (Pseudo-C-Ansicht): FUN_140020ffe(&Var29, pHVar44, "key_press", 9) – löst den Ereignisstring "key_press" dynamisch auf. Bedingungsprüfungen für bestimmte Tasten: "Enter", "Escape", "Esc", "Tab", "Backspace", "Back". *HKEY__ pHVar37 = ... – Auflösung des Registry-Handles (möglicherweise Lesen des Tastaturlayouts oder Persistenz) Assembly-Ansicht (Disassembly): LEA R8, [local_4a8] / MOV qword ptr [R8], RAX – lädt die Tastenereignisstruktur in den Speicher. CALL FUN_140020ffe – Hauptfunktion zur Tastenverarbeitung. JZ LAB_14000f309 – bedingte Sprünge basierend auf Tastencodes (Prüfung auf bestimmte Tasten).
Aktive Tastatureingabeerfassung: Die expliziten Prüfungen auf "Enter", "Tab", "Backspace" usw. belegen, dass die Malware jeden Tastendruck protokolliert, einschließlich Sondertasten, um Passwörter und Nachrichten zu rekonstruieren. Registry-Interaktion: Das HKEY__-Handle deutet darauf hin, dass der Keylogger möglicherweise Systemkonfigurationen liest oder seine Protokolle in der Registry speichert. Sammeln von Anmeldedaten: Das Protokollieren von "key_press"-Ereignissen zusammen mit Fenstertiteln (in späteren Phasen zu sehen) ermöglicht es dem Angreifer, Tastatureingaben bestimmten Anwendungen zuzuordnen (z. B. Browsern, Banking-Apps).

Die zweite Ghidra-Dekompilierungsansicht von Rusty Stealer zeigt eine Fähigkeit, die ihn über einen Standard-Info-Stealer hinaus in die Kategorie RAT (Remote Access Trojan) erhebt. Die Malware enthält Routinen zur Bildschirmaufnahme und zum Live-Streaming, die es dem Angreifer ermöglichen, den Desktop des Opfers in Echtzeit visuell zu überwachen, zusätzlich zum Diebstahl von Dateien und Tastatureingaben.
Bildschirmaufnahme-Logik: FUN_140020ffe(..., "screen_stream", 0xd) – initialisiert explizit das Bildschirm-Streaming-Modul. FUN_14000d9eb7("fps", 3, ...) – legt eine Bildrate (FPS) für den Live-Stream fest, wahrscheinlich um CPU-Auslastung und Videoqualität auszugleichen. FUN_14000c87a(..., "done", 4) / FUN_14000c87a(..., "streaming", 9) – Statusmarker für Start-/Stopp-Streaming-Vorgänge. Speicher- & Pufferverwaltung: if (uVar69 < 5) { uVar47 = uVar69; } – interne Pufferlogik für Bildschirmframes. Assembly-Referenzen (Querverweise): LEA R8, [s_screen_stream_14001592a] – lädt den String "screen_stream" zum Vergleich in den Speicher. CALL FUN_140020ffe – Haupt-Handler für die Streaming-Logik.
Live-Überwachung: Die Strings "screen_stream" und "fps" belegen, dass die Malware den Bildschirm des Opfers live streamen kann. Dies ist ein Kennzeichen vollwertiger RATs (wie njRAT oder Quasar), nicht nur einfacher Stealer. Datenexfiltration (visuell): Während Keylogger Text erfassen, zeichnen Bildschirm-Streams Banking-Sitzungen, Krypto-Wallets und private Nachrichten visuell auf – und umgehen dabei die Verschlüsselung vollständig. Ressourcenoptimierung: Das Festlegen einer bestimmten FPS (z. B. 3 FPS) bedeutet, dass die Malware darauf ausgelegt ist, im Hintergrund unbemerkt zu laufen, ohne den Benutzer durch hohe CPU-Auslastung zu alarmieren.

Die dritte dekompilierte Ansicht von Rusty Stealer legt hochaggressive Routinen zur Verteidigungsumgehung und Session-Übernahme offen. Die Malware enthält spezifische Funktionen, um Windows Defender zu beenden und aktive Netzwerk-/Streaming-Sitzungen zu übernehmen (wahrscheinlich um Datenverkehr abzufangen oder die Sicherheitsüberwachung zu stören). Dies bestätigt, dass Rusty Stealer nicht nur zum Stehlen von Daten entwickelt wurde, sondern auch dazu, Sicherheitstools aktiv zu blenden.
Windows Defender beendet: FUN_140020ffe(..., "kill_defender", 0xd) – löst den String dynamisch auf, um Defender-Prozesse zu beenden. FUN_14001add55() – wahrscheinlich die Ausführungsroutine, die Defender-Dienste oder -Prozesse gewaltsam stoppt. Stream-Hijacking: FUN_140020ffe(..., "hijack_stream", 0xc) – löst die Logik auf, um aktive Streams (Netzwerkverkehr oder Bildschirmfreigabe) zu kapern. Speichermanipulation & Ausführung: MOVUPS xmmword ptr [R12] / MOVUPS xmmword ptr [RDX + local_550] – SIMD-Instruktionen für schnelles Speicherkopieren (wahrscheinlich zur Vorbereitung von Shellcode oder Stream-Puffern). CALL FUN_14000d55() – führt die Hijack- oder Kill-Routine aus.
Den Defender blind machen: kill_defender belegt, dass der Stealer gezielt die integrierte Sicherheit von Windows angreift. Bei Erfolg deaktiviert er den Echtzeitschutz, sodass der Rest der Malware (Keylogger, Screen-Streamer) ohne Störung operieren kann. Session-Hijacking: hijack_stream deutet darauf hin, dass die Malware aktive Netzwerk-Streams abfangen oder übernehmen kann. Dies könnte genutzt werden, um Live-Session-Cookies zu stehlen, Banktransaktionen abzufangen oder Remote-Administrationstools zu stören. Evasion by Design: Das Vorhandensein von error_pinned zeigt, dass die Malware Abwehrmechanismen einplant, bei denen kritische Prozesse nicht beendet werden können. Wahrscheinlich wiederholt sie Versuche oder wechselt die Technik.

Die vierte dekompilierte Ansicht von Rusty Stealer legt sein Systemaufklärungsmodul offen. Bevor Daten gestohlen oder Dateien exfiltriert werden, sammelt die Malware detaillierte Informationen über den Rechner des Opfers, darunter Hostname, Benutzername, Betriebssystemversion sowie lokale/externe IP-Adressen. Diese Profiling-Daten werden wahrscheinlich an den C2-Server gesendet, um das Opfer zu kategorisieren und die nächste Angriffsphase anzupassen.
System-Profiling-Strings:
"hostname" – ruft den Computernamen des Opfers ab. "username" – ruft das angemeldete Benutzerkonto ab. "os_ver" – erfasst die exakte Windows-Version und Build-Nummer. "local_ip" – ermittelt die interne Netzwerk-IP-Adresse des Opfers. "external_ip" – löst die öffentliche IP-Adresse auf (wahrscheinlich über eine externe API). "stream_id" – erzeugt eine eindeutige Kennung für die Screen-Streaming-Sitzung.
Dekompilierte Logik:
FUN_1400084d2(uStack_570, "hostname", 8, ...) – speichert den Hostnamen in einer Struktur.
FUN_1400084d2(uStack_570, "username", 8, ...) – speichert den Benutzernamen.
FUN_1400084d2(uStack_570, "os_ver", 6, ...) – speichert die OS-Version.