
RustyWater représente la charge utile principale et l'épine dorsale de l'ensemble de l'opération adverse lors des attaques du groupe Static Kitten.
RustyWater représente la charge utile principale et la colonne vertébrale de l'ensemble de l'opération adverse dans les attaques du groupe Static Kitten.
RustyWater est un exécutable compilé en Rust (déguisé en reddit.exe avec une fausse icône Cloudflare) connu sous le nom de RustyWater (ou lié à Archer RAT/RUSTRIC) disposant de fortes capacités d'évasion AV/EDR via l'injection de processus et la persistance basée sur le registre.
1-ANTI-ANALYSE Reddit.exe implémente un système anti-analyse complet à 8 couches qui sonde activement l'environnement d'exécution à la recherche de signes de surveillance, de virtualisation ou de débogage. Chaque couche agit comme un filtre garantissant que la charge utile ne se déclenche que sur une cible authentique.
Couche 1 : Vérification du nombre de cœurs CPU
Initialement, le soldat RustyWater regarde autour de lui pour évaluer la puissance de la machine sur laquelle il se trouve. Il se demande : combien de cœurs ce processeur possède-t-il ? Les environnements d'analyse, comme les sandbox, sont généralement limités en ressources et ont souvent deux cœurs ou moins. Si le soldat constate que la machine est aussi faible, il décide immédiatement que l'environnement n'est pas sûr et disparaît sans laisser de trace, gaspillant tous les efforts des analystes.
Dans l'image fournie, une section du code du programme Reddit.exe illustre ce mécanisme. La flèche pointe vers la ligne vérifiant le « nombre de cœurs » où le programme examine le nombre de cœurs du processeur. Si le nombre est de deux ou moins, cela signifie que l'environnement environnant est suspect et l'exécution est immédiatement interrompue.

Couche 2 : Détection des artefacts de machine virtuelle
Pas convaincu par la simple vérification du CPU, le soldat creuse plus profondément. Il sait que les machines virtuelles laissent derrière elles des empreintes numériques spécifiques, comme une traînée de miettes de pain. Il analyse la liste des processus en cours d'exécution à la recherche de noms familiers associés aux logiciels de virtualisation : vmtoolsd.exe (VMware), vboxtray.exe (VirtualBox) et xenservice.exe (Xen). Il vérifie également l'existence de fichiers pilotes spécifiques sur le disque, tels que vmmouse.sys ou VBoxGuest.sys.
La logique est simple : si une machine exécute les outils VMware, il s'agit probablement d'une VM. Si c'est une VM, il s'agit probablement d'un environnement d'analyse. Si c'est un environnement d'analyse, le soldat abandonne la mission.

Couche 3 : Analyse du registre des outils d'analyse
Le soldat s'aventure ensuite dans le registre Windows, une vaste base de données des paramètres système. Il sait que les analystes de sécurité laissent souvent leurs outils derrière eux et que ces outils laissent des artefacts. Il recherche des clés de registre associées aux logiciels de débogage et de surveillance comme Wireshark, Process Hacker, OllyDbg et IDA Pro. La présence de l'une de ces clés confirme que l'environnement est hostile, déclenchant un arrêt immédiat.

Couche 4 : Analyse de la taille de la RAM
si le système signale moins de 4 Go, le soldat soupçonne un sandbox à faible ressources et interrompt l'exécution. Cette vérification est un moyen fiable de filtrer de nombreux systèmes d'analyse automatisés.

Couche 5 : Détection du débogueur
Le soldat vérifie maintenant son environnement immédiat. Il utilise un appel API Windows simple mais efficace—IsDebuggerPresent—pour déterminer s'il est exécuté sous le contrôle d'un débogueur. Un débogueur est comme un microscope ; s'il est présent, cela signifie que quelqu'un observe chaque instruction du soldat. Le soldat n'agira pas sous une telle surveillance.

Couche 6 : Vérification de la durée de fonctionnement du système
Le temps lui-même devient un facteur. Le soldat vérifie depuis combien de temps le système fonctionne depuis le dernier démarrage. Les sandbox et environnements d'analyse sont souvent fraîchement démarrés, juste avant l'exécution d'un échantillon. Si la durée de fonctionnement est inférieure à 15 minutes, le soldat la signale comme un environnement suspect de courte durée et se retire.

Couche 7 : Analyse du nom d'utilisateur
Le soldat vérifie ensuite l'identité de l'utilisateur. Il compare le nom d'utilisateur actuel à une liste noire de comptes d'analyse courants : « sandbox », « virus », « malware », « analysis », « vmware » et « test ». Ces noms d'utilisateur sont fréquemment utilisés dans les environnements d'analyse isolés. Si le nom d'utilisateur correspond à une entrée de la liste, la mission est immédiatement abandonnée.

Couche 8 : Vérification de l'adresse MAC et du profil matériel
Enfin, le soldat examine la carte réseau de la machine. Il vérifie l'adresse MAC par rapport aux préfixes de fournisseurs connus utilisés par les logiciels de virtualisation. Une adresse MAC commençant par 00:0C:29 appartient à VMware, tandis que 08:00:27 appartient à VirtualBox. Il analyse également les profils matériels à la recherche de chaînes comme « VMware » ou « VirtualBox » dans la description du système. Si l'une d'elles est trouvée, le soldat sait qu'il se trouve à l'intérieur d'une machine virtuelle et il coupe le courant.

L'implant se déguise astucieusement en composant légitime de Windows Update, le rendant moins suspect aux yeux des observateurs occasionnels. Le mécanisme de persistance comprend :
Gestion des erreurs pour les problèmes de permissions (repli vers HKCU si l'accès à HKLM échoue)
Validation du chemin pour s'assurer que l'exécutable existe à l'emplacement spécifié
Vérification au démarrage pour confirmer que l'entrée de registre a été créée avec succès
Cela garantit qu'à chaque connexion de l'utilisateur, Reddit.exe s'exécute automatiquement avec ses privilèges.

La capacité finale et la plus sophistiquée est l'injection de processus dans explorer.exe, permettant à l'implant d'exécuter du shellcode dans un processus système de confiance.
Reddit.exe implémente une technique d'injection de thread distant classique mais efficace :
Découverte de processus : Analyse les processus en cours pour localiser explorer.exe et obtenir son ID de processus (PID).
Acquisition de handle : Ouvre le processus cible avec les privilèges PROCESS_ALL_ACCESS.
Allocation mémoire : Utilise VirtualAllocEx pour allouer de la mémoire RWX (Read, Write, Execute) dans l'espace d'adressage d'explorer.exe.
Transfert du shellcode : Écrit la charge utile malveillante à l'aide de WriteProcessMemory.
Exécution : Crée un thread distant via CreateRemoteThread qui pointe vers le shellcode injecté.
Cette technique permet aux attaquants de cacher leur code malveillant à l'intérieur d'un processus système de confiance, rendant la détection considérablement plus difficile pour les solutions de sécurité.

Pourquoi les attaquants utilisent-ils explorer.exe pour l'injection de processus ?
les attaquants ont délibérément choisi de cibler explorer.exe pour injecter leur shellcode malveillant. Ce choix n'était pas aléatoire—il était basé sur des avantages stratégiques :
Processus système légitime - Sa présence est normale et ne déclenche pas d'alarmes.
Toujours en cours d'exécution - Disponibilité garantie sur tous les systèmes Windows.
Contexte utilisateur - Hérite des privilèges de l'utilisateur actuel.
Persistance - Survit même si le processus malveillant principal est terminé.

Mettez une charge utile HTTP : Chiffrez-la à l'aide du chiffrement XOR pour éviter la détection sur le réseau.
Modification des métadonnées du fichier pour échapper à la détection
Après avoir construit la charge utile reddit.exe, nous devons modifier ses métadonnées pour la faire apparaître comme un programme légitime et non suspect. Les solutions de sécurité et les outils EDR examinent ces champs de métadonnées, donc les modifier est essentiel pour l'évasion.
Quelles métadonnées cibler ?
Version du fichier : Le numéro de version du fichier Version du produit : Le numéro de version du produit Description du fichier : Ce que le fichier décrit lui-même (apparaît dans le Gestionnaire des tâches) Nom du produit : Le nom du produit Nom de l'entreprise : Le nom de l'entreprise développant le produit Copyright légal : Informations de copyright Nom d'origine : Le nom original du fichier
L'outil utilisé : rcedit
Pour effectuer ces modifications, nous utilisons un outil léger et gratuit appelé rcedit, officiellement disponible sur GitHub. lien : https://github.com/electron/rcedit/releases/download/v2.0.0/rcedit-x64.exe

J'ai observé que les attaquants n'exécutent pas reddit.exe directement sur le système cible. Au lieu de cela, ils s'appuient sur un programme intermédiaire connu sous le nom de CertificationKit.ini (Dropper) qui porte la charge utile chiffrée, la déchiffre au moment de l'exécution et l'exécute sur la machine de la victime.
et que le dropper était écrit en Rust. Bien qu'il se déguise en fichier de configuration apparemment inoffensif (CertificationKit.ini), il s'agit en réalité d'un binaire compilé chargé de déployer et d'exécuter la charge utile principale sur le système cible.
Cette technique offre plusieurs avantages :
Évasion : La charge utile réelle reste chiffrée, rendant sa détection plus difficile pour les antivirus et les outils de sécurité.
Contournement d'analyse : Même si le dropper est découvert ou analysé, la charge utile principale reste chiffrée et protégée.
Exécution en plusieurs étapes : L'attaque fonctionne en plusieurs étapes, ce qui complique le processus d'analyse et ralentit la réponse aux incidents pour les équipes de sécurité.

Chiffrement de la charge utile : La charge utile principale (reddit.exe) est stockée dans la section ENCRYPTED_PAYLOAD et chiffrée à l'aide de la clé XOR définie dans le dropper (XOR_KEY). Cela garantit que la charge utile reste protégée jusqu'à l'exécution.
Chemin cible : Le dropper écrit la charge utile déchiffrée à l'emplacement spécifié dans la configuration du dropper (TARGET_PATH). Ce chemin doit être correctement défini sur le répertoire prévu sur le système de la victime.
Déchiffrement à l'exécution : Lors de l'exécution, le dropper déchiffre la charge utile à l'aide de la clé XOR et la déploie sous le nom de CertificationKit.ini à l'emplacement cible.
Cette configuration permet aux attaquants de rester furtifs, d'éviter la détection et de s'assurer que la charge utile n'est accessible que lorsqu'elle est exécutée sur le système de la victime.
