
Vue d’ensemble
Remcos est un cheval de Troie d’accès à distance (RAT) qui a été présenté pour la première fois en juillet 2016 par la société allemande Breaking Security. Bien qu’initialement commercialisé comme un outil légitime d’administration à distance des systèmes Windows, il a depuis été largement adopté par les cybercriminels à des fins malveillantes. Le logiciel malveillant est généralement distribué par le biais de courriels de phishing contenant des pièces jointes malveillantes, telles que des documents Microsoft Office avec des macros intégrées ou des fichiers ZIP se faisant passer pour du contenu légitime. Une fois exécutées, ces pièces jointes déploient Remcos sur le système de la victime. Dans certains cas, les attaquants exploitent des vulnérabilités connues pour faciliter le processus d’infection.
Remcos offre aux attaquants des capacités étendues, notamment l’enregistrement des touches, la capture d’écran, l’enregistrement audio et vidéo et l’exécution de commandes à distance. Il peut également collecter des informations sur le système, voler des informations d’identification et télécharger des charges utiles malveillantes supplémentaires. L’architecture modulaire du logiciel malveillant permet d’ajouter de nouvelles fonctionnalités, ce qui le rend adaptable à diverses campagnes malveillantes.
Des échantillons récents de Remcos (version 6.1.1 pro) ont été observés dans des courriels de spam contenant en pièce jointe une archive 7Z malveillante. Cette archive contient un fichier batch fortement obscurci conçu pour échapper à la détection. Le fichier batch contient deux flux de données cryptées et compressées – en particulier, cryptées AES et compressées GZIP – qui sont décryptées et décompressées au cours de l’exécution. Ce processus aboutit finalement au déploiement de la charge utile Remcos sur l’ordinateur de la victime.
Détails techniques
Le fichier batch malveillant est fortement obscurci et contient du code PowerShell codé en Base64. Pour échapper à la détection, les attaquants ont inséré du code indésirable tout au long du script. Par exemple, dans la première ligne, le remplacement de la chaîne « ywg » révèle une commande echo, ce qui indique la présence d’une fonctionnalité cachée.

Figure 1 – Fichier batch obscurci
Lors de son exécution, le fichier batch exécute un script PowerShell intégré qui vérifie la présence du fichier « dwm.bat » dans le répertoire du profil de l’utilisateur. Si le fichier existe, il lit son contenu ligne par ligne, recherche une ligne contenant le marqueur :: : et extrait le contenu qui la suit. Ce contenu est du code PowerShell encodé en Base64, qui est ensuite décodé et exécuté. Si le fichier « dwn.bat » n’est pas présent, le script se termine simplement.

Figure 2 – Script PowerShell intégré
Contournement de l’AMSI et de l’ETW
Le script PowerShell décodé définit une fonction appelée Invoke-SysRoutine, qui met en œuvre une technique permettant de contourner à la fois l’interface AMSI (Antimalware Scan Interface) et l’ETW (Event Tracing for Windows). Elle y parvient en résolvant dynamiquement les adresses API du système au moment de l’exécution et en modifiant la mémoire des fonctions cibles à l’aide de l’interopérabilité .NET et des appels API natifs de Windows, désactivant ainsi la télémétrie de sécurité et échappant à la détection.
Il résout dynamiquement les fonctions système critiques telles que GetProcAddress et GetModuleHandle en décodant leurs noms au moment de l’exécution, ce qui complique l’analyse statique. Le script crée des délégués personnalisés pour appeler du code non géré et modifie la protection de la mémoire à l’aide de VirtualProtect pour corriger la fonction AmsiInitialize d’AMSI.

Figure 3 – Dérivation AMSI
En outre, il analyse et corrige plusieurs fournisseurs AMSI en mémoire afin de garantir une désactivation complète. Si l’option -DisableSvc est utilisée, il cible également la fonction EtwEventWrite dans ntdll.dll, supprimant ainsi l’enregistrement des événements de sécurité. Les protections de la mémoire sont rétablies après l’application des correctifs afin de maintenir la stabilité du système.

Figure 4 Patching de l’ETW
Décryptage et décompression
Après avoir contourné AMSI et ETW, le script PowerShell intégré au fichier batch localise le marqueur : :, extrait le contenu qui le suit, puis divise ces données en utilisant la barre oblique inverse (\) comme délimiteur. Les valeurs encodées en base64 qui en résultent sont stockées dans un tableau en vue d’un traitement ultérieur.

Figure 5 : Script PowerShell lisant les éléments cryptés
Les éléments extraits du tableau sont ensuite transmis à une fonction de décryptage qui utilise AES en mode CBC (Cipher Block Chaining). Cette fonction déchiffre le contenu à l’aide d’une clé codée en dur et d’un vecteur d’initialisation (IV), comme le montre l’extrait de code suivant. La sortie décryptée est ensuite transmise à une autre fonction qui gère la décompression GZIP.

Figure 6 – Décryptage AES
Une fois les deux éléments du tableau décompressés, le script extrait deux fichiers exécutables. Le premier exécutable contient une fonction main() vide, qui ne sert à rien, tandis que le second est responsable du chargement de la charge utile Remcos.

Figure 7 – Décryptage AES et décompression GZIP avec CyberChef
Le script transmet ensuite les exécutables extraits à une fonction qui utilise le chargement par réflexion pour exécuter le binaire malveillant directement à partir de la mémoire du processus PowerShell, sans stocker les binaires sur le disque. Cette technique permet l’exécution en mémoire de la charge utile, ce qui complique la détection et l’analyse.

Figure 8 – Chargement par réflexion
L’exécutable extrait du premier élément du tableau contient une fonction principale vide, ce qui indique que l’attaquant peut l’utiliser comme un leurre ou une tactique d « évasion pour éviter d » être détecté.
Remcos Loader
L’exécutable extrait du deuxième élément du tableau agit comme un chargeur qui charge la charge utile de Remcos sur la machine de la victime. Lors de l’exécution, le chargeur charge « ntdll.dll », récupère l’adresse de la fonction « EtwEventWrite » et modifie la protection de la mémoire de cette fonction en PAGE_EXECUTE_READWRITE.
Sur les systèmes 32 bits, il ajoute des instructions (0xC2 0x14) qui renvoient la fonction immédiatement, désactivant ainsi l’enregistrement ETW. Sur les systèmes 64 bits, le script remplace le début de la fonction EtwEventWrite par l’instruction 0xC3, qui renvoie immédiatement la fonction sans rien faire. Cette modification désactive l’enregistrement des événements. Une fois modifié, le script rétablit la protection de la mémoire d’origine afin d’éviter d’autres modifications, ce qui a pour effet de rendre EtwEventWrite inopérant et d’aider le logiciel malveillant à échapper à la détection par les outils de sécurité.

Figure 9 – Patching ETWEventWrite
Lors de la dernière étape, le chargeur recherche dans les ressources intégrées de l’assemblage une entrée spécifique nommée « xxxxxxxxxxxxxxxxxxxxxxxx.exe ». Si la ressource est présente, il extrait son contenu à l’aide de la fonction GetManifestResourceStream().
Les données extraites sont à la fois compressées au format GZIP et cryptées au format AES. Elles sont déchiffrées à l’aide d’une clé prédéfinie et d’un vecteur d’initialisation. Une fois décryptée, la charge utile – identifiée comme Remcos – est exécutée, ce qui permet à l’attaquant de contrôler à distance le système compromis.
Détails de la connexion au réseau et au C&C
Après une exécution réussie, le RAT Remcos envoie une requête GET à geoplugin.net/json.gp pour récupérer la géolocalisation de la victime sur la base de son adresse IP publique. Cette réponse de l’API comprend des détails tels que le pays, la ville, la région, la latitude, la longitude, le fuseau horaire, etc. Les données recueillies aident les attaquants à établir le profil des victimes et à adapter leurs opérations en fonction de la situation géographique.

Figure 10 – Collecte des données de géolocalisation
Avant de prendre le contrôle total de la machine de la victime, le RAT Remcos commence par collecter des informations sur le système et les envoie au serveur de commande et de contrôle (C&C) afin d’enregistrer l’appareil infecté. Il établit une connexion sécurisée avec le serveur C&C en utilisant TLS pour faciliter la communication cryptée. Chaque paquet contient une séquence d’octets d’identification unique, suivie de la taille des données transférées et d’un identifiant de commande qui spécifie l’opération envisagée, comme indiqué ci-dessous.

Figure 11 – Paquet initial pour l’enregistrement de l’appareil des victimes
Remcos utilise l’ID de commande 0x4B pour exfiltrer des informations détaillées sur le système et l’utilisateur de la machine de la victime vers le serveur de commande et de contrôle (C2) de l’attaquant. Ces données sont utilisées pour enregistrer l’appareil compromis et prendre le contrôle de l’hôte infecté. Les informations suivantes sont généralement collectées au cours de ce processus :
- Nom de l’appareil et nom de l’utilisateur
- Localisation de l’appareil de la victime
- Informations sur le système d’exploitation
- État de la mémoire
- Version Remcos
- Chemin d’accès au fichier local de Remcos Keylogger
- Remcos Full Path
- Titre du programme actif
- Niveau de privilège de l’utilisateur
- Temps de disponibilité du système
- Temps d’inactivité
- Nom attribué à Remcos
- IP du serveur C&C
- Type de fichier Remcos
- Informations sur le processeur
Après l’enregistrement initial, le serveur de commande et de contrôle (C2) envoie une commande avec l’ID 0x01 au client Remcos. Cette commande fonctionne comme un battement de cœur ou une balise d’information, incitant la machine infectée à envoyer des mises à jour d’état périodiques à l’attaquant.
![]()
Figure 12 – Paquet de balises
En réponse, le Remcos envoie des informations qui comprennent des données télémétriques sur le système en cours d’exécution, telles que le titre de la fenêtre active, le temps de fonctionnement du système, etc. ainsi que la commande 0x4C. Cela permet à l’attaquant de surveiller l’activité de la machine infectée en temps réel et de maintenir un contrôle permanent sur l’appareil.
![]()
Figure 13 – Réponse à une demande de balise
Ensuite, le serveur C&C envoie une requête à la machine infectée en utilisant l’ID de commande 0x11 pour récupérer les informations de géolocalisation qui ont été recueillies au cours de la phase initiale de l’infection. En réponse, Remcos renvoie les informations de géolocalisation en utilisant la même commande ID 0x11, comme indiqué ci-dessous.

Figure 14 – Détails de la géolocalisation de l’exfiltration
Il a également été observé que la commande ID 0x44 est utilisée chaque fois qu’un fichier est téléchargé à partir du serveur C&C. Plus précisément, lorsqu’un fichier avec un en-tête MZ est récupéré, la communication comprend la commande 0x44 suivie du contenu du fichier, comme indiqué ci-dessous.

Figure 15 – Téléchargement d’une charge utile supplémentaire (Source : malware-traffic-analysis.net))
Comment Unified SASE as a Service contribue-t-il à réduire les infections Remcos ?
Un cadre SASE unifié intègre la sécurité du réseau et les contrôles d’accès de confiance zéro pour se défendre contre les menaces telles que Remcos RAT, qui utilise des canaux de commande et de contrôle (C2) pour l’exfiltration de données et les opérations à distance. SASE offre une visibilité centralisée du trafic réseau et applique des politiques de sécurité cohérentes sur tous les sites. Nos fonctions de sécurité intégrées, telles que l’IDPS avancé, le SWG et l’intelligence des menaces en temps réel, peuvent détecter des indicateurs d’activité Remcos, y compris des identifiants de commande spécifiques et des modèles HTTP suspects. En inspectant les communications HTTP sortantes, SASE peut identifier les tentatives d’exfiltration de données de géolocalisation ou de livraison de commandes à distance, bloquant automatiquement les transmissions non autorisées et minimisant le risque de compromission.
MITRE ATT&CK Mapping : TTPs
- T1566.001 – Hameçonnage : pièce jointe d’hameçonnage (Spearphishing)
- T1059.001 – Interprète de commandes et de scripts : PowerShell
- T1204.002 – Exécution par l’utilisateur : Fichier malveillant
- T1027 – Fichiers ou informations obfusqués
- T1055.002 – Injection de processus : Injection d’exécutable portable
- T1562.001 – Affaiblir les défenses : Désactiver ou modifier des outils
- T1003 – Extraction d’informations d’identification du système d’exploitation
- T1082 – Découverte d’informations sur le système
- T1016 – Découverte de la configuration du réseau du système
- T1071.001 – Protocole de la couche application : Protocoles Web
- T1056.001 – Saisie des données : Enregistrement du clavier
- T1113 – Capture d’écran
- T1123 – Capture audio
- T1125 – Capture vidéo
- T1041 – Exfiltration sur le canal C2
- T1020 – Exfiltration automatisée
Référence
https://www.fortinet.com/blog/threat-research/new-campaign-uses-remcos-rat-to-exploit-victims