
Reverse-Engineering-Analyse einer dateilosen Remcos-RAT-Variante, die sich über Native-API-Aufrufe in svchost.exe einschleust. Umfasst extrahierte obfuskierte Payloads, Registry-Persistenz, Clipboard-Überwachung, API-Hooking und UAC-Bypass-Techniken.
Der folgende Binary Ninja-Ausschnitt zeigt den zentralen Injektionsmechanismus, den Remcos nutzt, um seine Nutzlast in svchost.exe zu injizieren.
CreateProcessW mit dem Flag CREATE_SUSPENDED startet einen neuen svchost-Prozess in einem angehaltenen Zustand.VirtualAlloc reserviert Speicher im Zielprozess unter Verwendung der Flags MEM_COMMIT und PAGE_READWRITE, sodass die Nutzlast direkt in den Prozessspeicher geschrieben werden kann.WriteProcessMemory schreibt die Nutzlast in den reservierten Speicherbereich des angehaltenen svchost-Prozesses.ReadProcessMemory liest den Speicher des Zielprozesses, vermutlich um den ursprünglichen Einstiegspunkt abzurufen oder die Injektion zu validieren.TerminateProcess wird verwendet, um den angehaltenen svchost-Prozess zu beenden, falls die Injektion fehlschlägt, um zu verhindern, dass er in einem instabilen Zustand zurückbleibt.| API | Zweck in Remcos |
|---|---|
| CreateProcessW | Startet svchost in einem angehaltenen Zustand für die Injektion. |
| VirtualAlloc | Reserviert Speicher mit MEM_COMMIT und PAGE_READWRITE für die Nutzlast. |
| WriteProcessMemory | Schreibt die Nutzlast in den reservierten Speicher. |
| ReadProcessMemory | Liest den Speicher des Zielprozesses (zur Validierung oder zum Abrufen des Einstiegspunkts). |
| TerminateProcess | Beendet den angehaltenen Prozess, falls die Injektion fehlschlägt. |
Binary Ninja-Ansicht der Remcos-Injektionsroutine unter Verwendung nativer APIs, mit MEM_COMMIT, PAGE_READWRITE, ReadProcessMemory und TerminateProcess.
Remcos fügt einen Schlüssel zur Windows-Registrierung hinzu, um eine dauerhafte Präsenz auf dem System aufzubauen. Dieser Schlüssel stellt sicher, dass die Schadsoftware bei jedem Systemstart erneut ausgeführt wird.
HKEY_USERS\S-1-5-21-3807688912-2840792520-522192237-1001\Software\kamolprf-CFKPWC
| Wertname | Typ | Wert | Beschreibung |
|---|---|---|---|
| exepath | REG_BINARY | Verschlüsselte Binärdaten | Der verschlüsselte Dateipfad von Remcos oder dessen injizierter Nutzlast. Wahrscheinlich durch XOR oder AES geschützt. |
| licence | REG_SZ | DA8E22D4CD8D349953DF1FAD364CAB05 | Remcos-Lizenzschlüssel. Kann ein fester Wert in Raubkopien oder Demoversionen sein. |
| time | REG_DWORD | 0x6a53ac27 (1783868455) | Installations- oder letzte Ausführungszeit im Unix-Zeitstempelformat. |
| UID | REG_DWORD | 0xfeb60bd4 (4273343444) | Eindeutige Benutzer-ID. Wird zur Identifizierung des Opfers verwendet. |
exepath-Wert als REG_BINARY gespeichert ist, kann er nicht direkt gelesen werden. Dies erschwert die Erkennung.UID- und licence-Werte erlauben es dem Angreifer, das Opfer zu identifizieren und eine Lizenzprüfung durchzuführen.time-Wert gibt Aufschluss darüber, wann die Schadsoftware installiert oder zuletzt ausgeführt wurde.
Registrierungsschlüssel und die darin enthaltenen Werte exepath, licence, time und UID.
Der folgende WinDbg-Ausschnitt zeigt eine Trampolin-Funktion innerhalb des injizierten svchost.exe-Prozesses. Dieser Code scheint Teil des API-Hooking- oder Nutzlast-Ausführungsmechanismus von Remcos zu sein.
jmp qword ptr [svchost+0x9758] – Wahrscheinlich ein Hook oder Trampolin, das zu einer API oder Funktion springt.mov / movdqa-Anweisungen – Sichern und Wiederherstellen von Registern (xmm0-xmm3, rcx, rdx, r8, r9), um den Aufrufkontext zu bewahren.call svchost+0x3e50 – Ruft eine Kernfunktion auf, möglicherweise Teil der Nutzlast oder des Hook-Handlers.jmp rax – Endgültiger Sprung zur ursprünglichen Funktion oder zur nächsten Stufe.INT3-Fallen – Anti-Debugging-Anweisungen, um die Ausführung zu unterbrechen, falls ein Debugger angehängt ist.Diese Struktur ist typisch für API-Hooking oder Detour-Funktionen, bei denen Remcos Aufrufe kritischer Windows-APIs abfängt. Die Verwendung von xmm-Registern (für Gleitkomma- oder SIMD-Operationen) deutet darauf hin, dass dieser Hook möglicherweise auf Funktionen platziert ist, die SSE-Anweisungen verwenden.
WinDbg-Ansicht der Trampolin-Funktion innerhalb von svchost.exe mit jmp- und call-Anweisungen sowie INT3-Fallen.
Der folgende Hex-Dump wurde aus einem PAGE_READWRITE-Speicherbereich innerhalb des injizierten svchost.exe-Prozesses extrahiert. Dieser Bereich enthält keine direkten call- oder jmp-Anweisungen, was bestätigt, dass es sich nicht um ausführbaren Code handelt, sondern um eine verschleierte oder verschlüsselte Nutzlast.
RPC Control und PC- in den Daten eingebettet.ctk, m und mafasakaaam scheinen Teil einer strukturierten Konfiguration zu sein, die möglicherweise Verschlüsselungsschlüssel, API-Namen oder Registrierungspfade enthält.
Binary Ninja-Ansicht des verschleierten Hex-Dumps aus dem PAGE_READWRITE-Bereich von svchost.exe mit eingebetteten Zeichenfolgen wie RPC Control und PC-.
Die verschleierte Hex-Nutzlast, die aus dem PAGE_READWRITE-Bereich extrahiert wurde, wurde weiter mit der Zeichenfolgenansicht von Binary Ninja analysiert. Trotz der starken Verschleierung tauchten mehrere lesbare Zeichenfolgen und Muster auf.
PC--präfixierte Zeichenfolgen (z. B. PC-475ce3d749612b, PC-4a757962f31b84) – Wahrscheinlich MachineGuid oder eindeutige Systemkennungen zur Opferverfolgung.svchost.exe – Der Name des Zielprozesses, der den Injektionsvektor bestätigt..dll-Erweiterungen – Deuten darauf hin, dass Remcos entweder bestimmte DLLs lädt oder danach sucht, möglicherweise für API-Hooking oder Persistenz.ontroll\ – Wahrscheinlich ein Fragment eines Registrierungspfads (Control\), was auf Persistenz oder Konfigurationsspeicherung hinweist.EEF931 und 1AA81C6FD0CF04A816B – Diese scheinen GUIDs oder Verschlüsselungsschlüssel zu sein, die möglicherweise zur XOR/AES-Entschlüsselung der Nutzlast verwendet werden.TEMP – Deutet auf die Erstellung temporärer Dateien oder die Ausführung aus dem Temp-Verzeichnis hin.