
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.
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
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.
Vue chaînes Binary Ninja de la charge utile hexadécimale obfusquée, montrant des fragments lisibles comme PC-, svchost.exe, .dll et EEF931.
Cette analyse a mis en évidence une variante très sophistiquée et sans fichier de Remcos RAT qui fonctionne avec une empreinte disque minimale et des techniques d'évasion avancées. Le malware injecte sa charge utile principale dans svchost.exe en utilisant des appels d'API natifs tels que ZwCreateSection et ZwMapViewOfSection, assurant persistance et discrétion.
PC-, svchost.exe, .dll et EEF931.HKEY_USERS\...\Software\kamolprf-CFKPWC, stockant les valeurs exepath, licence, time et UID chiffrées.svchost.exe pour les régions mémoire anormales (PAGE_READWRITE).Software\kamolprf-CFKPWC.ZwCreateSection et ZwMapViewOfSection provenant de processus non système.PC- et EEF931.Cette variante de Remcos démontre un haut niveau de professionnalisme et est clairement conçue pour contourner les solutions de sécurité traditionnelles. Sa combinaison d'exécution sans fichier, d'injection de processus et de persistance basée sur le registre en fait une menace importante qui nécessite des stratégies de détection avancées.
Outils utilisés : Ghidra, Binary Ninja, WinDbg, Process Hacker
L'échantillon de Remcos RAT analysé est disponible sur MalwareBazaar pour ceux qui souhaitent effectuer leur propre analyse :
| 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. |
| 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. |