Rétro-ingénierie de Rusty Stealer : un RAT basé sur Rust doté d'un keylogging avancé, d'une diffusion d'écran en direct et d'une évasion de défense agressive (neutralisation de Windows Defender et détournement de services) pour maintenir sa persistance.
La rétro-ingénierie initiale de l'échantillon Rusty Stealer dans Ghidra révèle un module keylogger dédié compilé en Rust. La vue décompilée montre clairement que le malware s'accroche aux entrées utilisateur en résolvant les codes de touches et en les associant à des actions spécifiques. Cela confirme que le stealer enregistre activement les frappes clavier pour récolter des identifiants, des conversations et des données utilisateur sensibles.
Logique du keylogger (vue pseudo-C) : FUN_140020ffe(&Var29, pHVar44, "key_press", 9) – résout dynamiquement la chaîne d'événement "key_press". Vérifications de conditions pour des touches spécifiques : "Enter", "Escape", "Esc", "Tab", "Backspace", "Back". *HKEY__ pHVar37 = ... – résolution du handle de registre (potentiellement lecture de la disposition du clavier ou de la persistance) Vue assembleur (désassemblage) : LEA R8, [local_4a8] / MOV qword ptr [R8], RAX – charge la structure d'événement de touche en mémoire. CALL FUN_140020ffe – fonction principale de traitement des touches. JZ LAB_14000f309 – sauts conditionnels basés sur les codes de touches (vérification de touches spécifiques).
Capture active des frappes : Les vérifications explicites de "Enter", "Tab", "Backspace", etc., prouvent que le malware enregistre chaque frappe, y compris les touches spéciales, afin de reconstituer les mots de passe et les messages. Interaction avec le registre : Le handle HKEY__ suggère que le keylogger pourrait lire des configurations système ou stocker ses journaux dans le registre. Récolte d'identifiants : L'enregistrement des événements "key_press" avec les titres de fenêtres (observé dans les étapes ultérieures) permet à l'attaquant d'associer les frappes à des applications spécifiques (par exemple, navigateurs, applications bancaires).

La deuxième vue de décompilation Ghidra de Rusty Stealer révèle une capacité qui le fait passer du statut de simple info-stealer à celui de RAT (Remote Access Trojan). Le malware inclut des routines de capture d'écran et de diffusion en direct, permettant à l'attaquant de surveiller visuellement le bureau de la victime en temps réel, en plus de voler des fichiers et des frappes clavier.
Logique de capture d'écran : FUN_140020ffe(..., "screen_stream", 0xd) – initialise explicitement le module de diffusion d'écran. FUN_14000d9eb7("fps", 3, ...) – définit une fréquence d'images (FPS) pour le flux en direct, probablement pour équilibrer l'utilisation du CPU et la qualité vidéo. FUN_14000c87a(..., "done", 4) / FUN_14000c87a(..., "streaming", 9) – marqueurs d'état pour les opérations de démarrage/arrêt de la diffusion. Gestion de la mémoire et des tampons : if (uVar69 < 5) { uVar47 = uVar69; } – logique de mise en tampon interne pour les images d'écran. Références assembleur (références croisées) : LEA R8, [s_screen_stream_14001592a] – charge la chaîne "screen_stream" en mémoire pour comparaison. CALL FUN_140020ffe – gestionnaire principal de la logique de diffusion.
Surveillance en direct : Les chaînes "screen_stream" et "fps" prouvent que le malware peut diffuser en direct l'écran de la victime. C'est une caractéristique des RAT complets (comme njRAT ou Quasar), et non de simples stealers. Exfiltration de données (visuelle) : Alors que les keyloggers capturent du texte, la diffusion d'écran capture visuellement les sessions bancaires, les portefeuilles crypto et les messages privés — contournant entièrement le chiffrement. Optimisation des ressources : Le réglage d'un FPS spécifique (par exemple 3 FPS) signifie que le malware est conçu pour s'exécuter silencieusement en arrière-plan sans alerter l'utilisateur par une utilisation élevée du CPU.

La troisième vue décompilée de Rusty Stealer expose des routines très agressives d'évasion des défenses et de détournement de session. Le malware inclut des fonctions spécifiques pour tuer Windows Defender et détourner des sessions réseau/diffusion actives (probablement pour intercepter le trafic ou perturber la surveillance de sécurité). Cela confirme que Rusty Stealer est conçu non seulement pour voler des données, mais aussi pour aveugler activement les outils de sécurité.
Windows Defender tué : FUN_140020ffe(..., "kill_defender", 0xd) – résout dynamiquement la chaîne pour terminer les processus de Defender. FUN_14001add55() – probablement la routine d'exécution qui arrête de force les services ou processus de Defender. Détournement de flux : FUN_140020ffe(..., "hijack_stream", 0xc) – résout la logique pour détourner les flux actifs (trafic réseau ou partage d'écran). Manipulation et exécution de la mémoire : MOVUPS xmmword ptr [R12] / MOVUPS xmmword ptr [RDX + local_550] – instructions SIMD utilisées pour la copie rapide de mémoire (probablement pour préparer du shellcode ou des tampons de flux). CALL FUN_14000d55() – exécute la routine de détournement ou de suppression.
Aveugler le Defender : kill_defender prouve que le stealer cible activement la sécurité intégrée de Windows. En cas de succès, il désactive la protection en temps réel, permettant au reste du malware (keylogger, diffuseur d'écran) de fonctionner sans interférence. Détournement de session : hijack_stream suggère que le malware peut intercepter ou prendre le contrôle des flux réseau actifs. Cela pourrait servir à voler des cookies de session en direct, intercepter des transactions bancaires ou perturber des outils d'administration à distance. Évasion par conception : la présence de error_pinned montre que le malware anticipe les défenses où les processus critiques ne peuvent pas être terminés. Il réessaie probablement ou change de technique.

La quatrième vue décompilée de Rusty Stealer expose son module de reconnaissance du système. Avant de voler des données ou d'exfiltrer des fichiers, le malware collecte des informations détaillées sur la machine de la victime, notamment le nom d'hôte, le nom d'utilisateur, la version du système d'exploitation et les adresses IP locales/externes. Ces données de profilage sont probablement envoyées au serveur C2 pour catégoriser la victime et adapter la prochaine étape de l'attaque.
Chaînes de profilage du système :
"hostname" – récupère le nom de l'ordinateur de la victime. "username" – récupère le compte utilisateur connecté. "os_ver" – capture la version et le build exacts de Windows. "local_ip" – identifie l'adresse IP du réseau interne de la victime. "external_ip" – résout l'adresse IP publique (probablement via une API externe). "stream_id" – génère un identifiant unique pour la session de diffusion d'écran.
Logique décompilée :