
Analyse de rétro-ingénierie d’une variante sans fichier du Remcos RAT qui s’injecte dans svchost.exe via des appels d’API native. Couvre l’extraction de charge utile obfusquée, la persistance via le registre, la surveillance du presse-papiers, le hooking d’API et les techniques de contournement UAC.
L'extrait suivant de Binary Ninja révèle le mécanisme d'injection principal utilisé par Remcos pour injecter sa charge utile dans svchost.exe.
CreateProcessW avec le flag CREATE_SUSPENDED démarre un nouveau processus svchost en état suspendu.VirtualAlloc alloue de la mémoire dans le processus cible en utilisant les flags MEM_COMMIT et PAGE_READWRITE, permettant d'écrire la charge utile directement dans la mémoire du processus.WriteProcessMemory écrit la charge utile dans la région mémoire allouée du processus svchost suspendu.ReadProcessMemory lit la mémoire du processus cible, probablement pour récupérer le point d'entrée d'origine ou pour valider l'injection.TerminateProcess est utilisé pour terminer le processus svchost suspendu si l'injection échoue, évitant ainsi de le laisser dans un état instable.| API | Objectif dans Remcos |
|---|---|
| CreateProcessW | Démarre svchost en état suspendu pour l'injection. |
| VirtualAlloc | Alloue de la mémoire avec MEM_COMMIT et PAGE_READWRITE pour la charge utile. |
| WriteProcessMemory | Écrit la charge utile dans la mémoire allouée. |
| ReadProcessMemory | Lit la mémoire du processus cible (utilisé pour la validation ou la récupération du point d'entrée). |
| TerminateProcess | Termine le processus suspendu si l'injection échoue. |
Vue Binary Ninja de la routine d'injection de Remcos utilisant des API natives, montrant MEM_COMMIT, PAGE_READWRITE, ReadProcessMemory et TerminateProcess.
Remcos ajoute une clé dans le registre Windows pour établir une présence permanente sur le système. Cette clé garantit que le malware se réexécute à chaque démarrage du système.
HKEY_USERS\S-1-5-21-3807688912-2840792520-522192237-1001\Software\kamolprf-CFKPWC
| Nom de la valeur | Type | Valeur | Description |
|---|---|---|---|
| exepath | REG_BINARY | Données binaires chiffrées | Le chemin de fichier chiffré de Remcos ou de sa charge utile injectée. Probablement protégé par XOR ou AES. |
| licence | REG_SZ | DA8E22D4CD8D349953DF1FAD364CAB05 | Clé de licence Remcos. Peut être une valeur fixe dans les versions piratées ou de démonstration. |
| time | REG_DWORD | 0x6a53ac27 (1783868455) | Horodatage d'installation ou de dernière exécution au format Unix timestamp. |
| UID | REG_DWORD | 0xfeb60bd4 (4273343444) | Identifiant utilisateur unique. Utilisé pour identifier la victime. |
exepath est stockée en REG_BINARY, elle ne peut pas être lue directement. Cela rend la détection plus difficile.UID et licence permettent à l'attaquant d'identifier la victime et d'effectuer une vérification de licence.time fournit des informations sur le moment où le malware a été installé ou exécuté pour la dernière fois.
Clés de registre et les valeurs exepath, licence, time et UID qu'elles contiennent.
L'extrait WinDbg suivant montre une fonction trampoline trouvée dans le processus svchost.exe injecté. Ce code semble faire partie du mécanisme de hook d'API ou d'exécution de charge utile de Remcos.
jmp qword ptr [svchost+0x9758] – Probablement un hook ou un trampoline sautant vers une API ou une fonction.mov / movdqa – Sauvegardent et restaurent les registres (xmm0-xmm3, rcx, rdx, r8, r9) pour préserver le contexte d'appel.call svchost+0x3e50 – Appelle une fonction centrale, faisant peut-être partie de la charge utile ou du gestionnaire de hook.jmp rax – Saut final vers la fonction d'origine ou l'étape suivante.INT3 – Instructions anti-débogage pour interrompre l'exécution si un débogueur est attaché.Cette structure est typique du hook d'API ou des fonctions de détour, où Remcos intercepte les appels aux API Windows critiques. L'utilisation de registres xmm (pour les opérations flottantes ou SIMD) suggère que ce hook pourrait être placé sur des fonctions utilisant des instructions SSE.
Vue WinDbg de la fonction trampoline dans svchost.exe, montrant les instructions jmp et call avec des pièges INT3.
Le dump hexadécimal suivant a été extrait d'une région mémoire PAGE_READWRITE dans le processus svchost.exe injecté. Cette région ne contient aucune instruction directe call ou jmp, confirmant que les données ne sont pas du code exécutable mais plutôt une charge utile obfusquée ou chiffrée.
RPC Control et PC- sont intégrées dans les données.ctk, m et mafasakaaam semblent faire partie d'une configuration structurée, contenant peut-être des clés de chiffrement, des noms d'API ou des chemins de registre.
Vue Binary Ninja du dump hexadécimal obfusqué de la région PAGE_READWRITE de svchost.exe, montrant des chaînes intégrées comme RPC Control et PC-.
La charge utile hexadécimale obfusquée extraite de la région PAGE_READWRITE a été analysée plus en détail à l'aide de la vue chaînes de Binary Ninja. Malgré la forte obfuscation, plusieurs chaînes et motifs lisibles ont émergé.
PC- (par exemple, PC-475ce3d749612b, PC-4a757962f31b84) – Probablement des MachineGuid ou des identifiants système uniques utilisés pour le suivi des victimes.svchost.exe – Le nom du processus cible, confirmant le vecteur d'injection..dll – Indiquent que Remcos charge ou recherche des DLL spécifiques, peut-être pour le hook d'API ou la persistance.ontroll\ – Probablement un fragment d'un chemin de registre (Control\), indiquant une persistance ou un stockage de configuration.EEF931 et 1AA81C6FD0CF04A816B – Ceux-ci semblent être des GUID ou clés de chiffrement, possibly used for XOR/AES decryption of the payload.TEMP – Suggère la création de fichiers temporaires ou une exécution à partir du répertoire temporaire.