
Analisi di reverse engineering di una variante fileless di Remcos RAT che si inietta in svchost.exe tramite chiamate API native. Copre l'estrazione di payload offuscati, la persistenza nel registro, il monitoraggio degli appunti, l'hooking delle API e le tecniche di bypass dell'UAC.
Il seguente frammento di Binary Ninja rivela il meccanismo di iniezione principale utilizzato da Remcos per iniettare il suo payload in svchost.exe.
CreateProcessW con il flag CREATE_SUSPENDED avvia un nuovo processo svchost in stato sospeso.VirtualAlloc alloca memoria all'interno del processo target usando i flag MEM_COMMIT e PAGE_READWRITE, permettendo di scrivere il payload direttamente nella memoria del processo.WriteProcessMemory scrive il payload nella regione di memoria allocata del processo svchost sospeso.ReadProcessMemory legge la memoria del processo target, probabilmente per recuperare il punto di ingresso originale o per validare l'iniezione.TerminateProcess viene usato per terminare il processo svchost sospeso se l'iniezione fallisce, impedendo che rimanga in uno stato instabile.
Vista in Binary Ninja della routine di iniezione di Remcos che utilizza API Native, mostrando MEM_COMMIT, PAGE_READWRITE, ReadProcessMemory e TerminateProcess.
Remcos aggiunge una chiave al registro di Windows per stabilire una presenza permanente sul sistema. Questa chiave garantisce che il malware si riavvii ogni volta che il sistema si avvia.
HKEY_USERS\S-1-5-21-3807688912-2840792520-522192237-1001\Software\kamolprf-CFKPWC
exepath è memorizzato come REG_BINARY, non può essere letto direttamente. Ciò rende più difficile il rilevamento.UID e licence permettono all'attaccante di identificare la vittima ed eseguire un controllo della licenza.time fornisce informazioni su quando il malware è stato installato o eseguito l'ultima volta.
Chiavi di registro e valori exepath, licence, time e UID al loro interno.
Il seguente frammento di WinDbg mostra una funzione trampolino trovata all'interno del processo svchost.exe iniettato. Questo codice sembra far parte del meccanismo di API hooking o di esecuzione del payload di Remcos.
jmp qword ptr [svchost+0x9758] – Probabilmente un hook o trampolino che salta a un'API o funzione.mov / movdqa – Salvano e ripristinano i registri (xmm0-xmm3, rcx, rdx, r8, r9) per preservare il contesto di chiamata.call svchost+0x3e50 – Chiama una funzione principale, possibilmente parte del payload o del gestore di hook.jmp rax – Salto finale alla funzione originale o allo stadio successivo.INT3 – Istruzioni anti-debug per interrompere l'esecuzione se è presente un debugger.Questa struttura è tipica dell'API hooking o delle funzioni detour, in cui Remcos intercetta le chiamate alle API critiche di Windows. L'uso di registri xmm (per operazioni floating-point o SIMD) suggerisce che questo hook potrebbe essere posizionato su funzioni che utilizzano istruzioni SSE.
Vista in WinDbg della funzione trampolino all'interno di svchost.exe, mostrando istruzioni jmp e call con trappole INT3.
Il seguente dump hex è stato estratto da una regione di memoria PAGE_READWRITE all'interno del processo svchost.exe iniettato. Questa regione non contiene istruzioni dirette call o jmp, confermando che i dati non sono codice eseguibile ma piuttosto un payload offuscato o crittografato.
RPC Control e PC-.ctk, m e mafasakaaam sembrano far parte di una configurazione strutturata, possibilmente contenente chiavi di crittografia, nomi di API o percorsi di registro.
Vista in Binary Ninja del dump hex offuscato dalla regione PAGE_READWRITE di svchost.exe, che mostra stringhe incorporate come RPC Control e PC-.
Il payload hex offuscato estratto dalla regione PAGE_READWRITE è stato ulteriormente analizzato utilizzando la vista stringhe di Binary Ninja. Nonostante il forte offuscamento, sono emerse diverse stringhe e modelli leggibili.
PC- (es. PC-475ce3d749612b, PC-4a757962f31b84) – Probabilmente MachineGuid o identificatori univoci di sistema usati per il tracciamento delle vittime.svchost.exe – Il nome del processo target, che conferma il vettore di iniezione..dll – Indicano che Remcos carica o cerca specifiche DLL, possibilmente per API hooking o persistenza.ontroll\ – Probabilmente un frammento di un percorso di registro (Control\), che indica persistenza o memorizzazione della configurazione.EEF931 e 1AA81C6FD0CF04A816B – Sembrano essere GUID o chiavi di crittografia, possibilmente usati per la decrittografia XOR/AES del payload.TEMP – Suggerisce la creazione di file temporanei o l'esecuzione dalla directory temp.
Vista stringhe di Binary Ninja del payload hex offuscato, che mostra frammenti leggibili come PC-, svchost.exe, .dll e EEF931.
Questa analisi ha rivelato una variante altamente sofisticata e senza file di Remcos RAT che opera con un'impronta su disco minima e tecniche di evasione avanzate. Il malware inietta il suo payload principale in svchost.exe utilizzando chiamate API Native come ZwCreateSection e ZwMapViewOfSection, garantendo persistenza e furtività.
PC-, svchost.exe, .dll e EEF931.HKEY_USERS\...\Software\kamolprf-CFKPWC, memorizzando valori crittografati di exepath, licence, time e UID.svchost.exe per regioni di memoria anomale (PAGE_READWRITE).Software\kamolprf-CFKPWC.ZwCreateSection e ZwMapViewOfSection provenienti da processi non di sistema.PC- e EEF931.Questa variante di Remcos dimostra un alto livello di professionalità ed è chiaramente progettata per eludere le soluzioni di sicurezza tradizionali. La sua combinazione di esecuzione senza file, iniezione di processo e persistenza basata su registro la rende una minaccia significativa che richiede strategie di rilevamento avanzate.
Strumenti utilizzati: Ghidra, Binary Ninja, WinDbg, Process Hacker
Il campione di Remcos RAT analizzato è disponibile su MalwareBazaar per chi volesse condurre la propria analisi:
| API | Scopo in Remcos |
|---|
| CreateProcessW | Avvia svchost in stato sospeso per l'iniezione. |
| VirtualAlloc | Alloca memoria con MEM_COMMIT e PAGE_READWRITE per il payload. |
| WriteProcessMemory | Scrive il payload nella memoria allocata. |
| ReadProcessMemory | Legge la memoria del processo target (usato per validazione o recupero punto di ingresso). |
| TerminateProcess | Termina il processo sospeso se l'iniezione fallisce. |
| Nome valore | Tipo | Valore | Descrizione |
|---|
| exepath | REG_BINARY | Dati binari crittografati | Il percorso file crittografato di Remcos o del suo payload iniettato. Probabilmente protetto tramite XOR o AES. |
| licence | REG_SZ | DA8E22D4CD8D349953DF1FAD364CAB05 | Chiave di licenza di Remcos. Potrebbe essere un valore fisso in versioni piratate o demo. |
| time | REG_DWORD | 0x6a53ac27 (1783868455) | Timestamp Unix dell'installazione o dell'ultima esecuzione. |
| UID | REG_DWORD | 0xfeb60bd4 (4273343444) | ID utente univoco. Usato per identificare la vittima. |