Nouvelle variante de PureRAT découverte dans un lecteur vidéo IA
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Une campagne de logiciels malveillants utilise un faux téléchargeur vidéo à thème Google Drive pour lancer une chaîne d’exécution en plusieurs étapes. L’infection passe d’un chargeur basé sur Python au shellcode, puis à un assemblage .NET protégé identifié comme PureRAT. Le malware s’appuie sur une obfuscation lourde, un chiffrement personnalisé et des communications WebSocket authentifiées pour gérer le trafic de commande et de contrôle.
Enquête
L’enquête a analysé un flux d’exécution par étapes qui a commencé par un chargeur de bytecode Python. Les chercheurs ont observé un décodage Base85, zlib décompression, et une injection de shellcode via VirtualAlloc. Une analyse plus poussée a révélé un chargeur .NET fortement protégé, Ykzrh/smveo-csharp-agent.exe, qui utilisait la virtualisation et la reconstruction à l’exécution pour entraver l’analyse.
Atténuation
Les utilisateurs doivent être avertis contre le téléchargement de fichiers à partir de leurres vidéo non officiels ou suspects. Les organisations devraient surveiller les exécutions non autorisées de Python et le comportement inhabituel des assemblages .NET dans les répertoires locaux de données d’application. Une liste blanche stricte des applications et une surveillance des changements suspects de clés de registre peuvent également réduire le risque de compromission.
Réponse
Si cette activité est détectée, isolez immédiatement les points d’extrémité affectés pour perturber le trafic de commande et de contrôle basé sur WebSocket. Les enquêteurs doivent effectuer une analyse judiciaire de la mémoire pour capturer la charge utile .NET déchiffrée et déterminer l’étendue de l’infection. Les journaux réseau doivent également être revus pour les connexions à l’infrastructure smveo.com , et tout identifiant potentiellement exposé doit être changé.
graph TB %% Class Definitions Section classDef action fill:#99ccff classDef malware fill:#ff9999 classDef persistence fill:#99ff99 classDef obfuscation fill:#ffff99 classDef tool fill:#cccccc %% Node definitions act_user_exec[« <b>Action</b> – <b>T1204 Exécution Utilisateur</b><br/>La victime interagit avec un leurre<br/>déguisé en un faux téléchargement vidéo Google Drive<br/>ou SMVEO. »] class act_user_exec action act_drive_by[« <b>Action</b> – <b>T1189 Compromission au Vol</b><br/>L’utilisateur télécharge un fichier malveillant :<br/>DriveVideoSetup-x64-0.1.0.exe. »] class act_drive_by action mal_setup[« <b>Malware</b> – <b>Exécutable Initial</b><br/>Fichier : DriveVideoSetup-x64-0.1.0.exe<br/>Établit la persistance et<br/>démarre la chaîne de desobfuscation. »] class mal_setup malware per_registry[« <b>Action</b> – <b>T1547.014 Persistance</b><br/>Modifie la clé de registre :<br/>HKCUSoftwareMicrosoftWindowsCurrentVersionRun »] class per_registry persistence act_deobf[« <b>Action</b> – <b>T1140 Désobfuscation/Décodage de Fichiers</b><br/>Étapes Python complexes impliquant<br/>le décodage Base85, la décompression zlib,<br/>et marshal.loads. »] class act_deobf obfuscation tool_donut[« <b>Outil</b> – <b>DonutLoader</b><br/>Mécanisme utilisé pour exécuter<br/>le shellcode en mémoire. »] class tool_donut tool mal_ykzrh[« <b>Malware</b> – <b>Ykzrh.exe</b><br/>Chargeur .NET fortement protégé<br/>utilisant la virtualisation. »] class mal_ykzrh malware act_packing[« <b>Action</b> – <b>T1027.002 Emballage Logiciel</b><br/>Utilise des interprètes de bytecode personnalisés<br/>et la virtualisation pour masquer la logique centrale. »] class act_packing obfuscation mal_purerat[« <b>Malware</b> – <b>PureRAT</b><br/>Fonctionnalité centrale de l’attaque<br/>cachée via l’obfuscation. »] class mal_purerat malware act_cert_steal[« <b>Action</b> – <b>T1649 Voler ou Forger des Certificats d’Authentification</b><br/>Génère client.crt et client.key<br/>sous %LOCALAPPDATA%SMVEO. »] class act_cert_steal action comm_c2[« <b>Action</b> – <b>Communication C2</b><br/>Communication par WebSocket authentifié<br/>vers agent.sm-veo.com. »] class comm_c2 action %% Connections act_user_exec –>|leads_to| act_drive_by act_drive_by –>|executes| mal_setup mal_setup –>|performs| per_registry mal_setup –>|initiates| act_deobf act_deobf –>|leads_to| tool_donut tool_donut –>|deploys| mal_ykzrh mal_ykzrh –>|utilizes| act_packing act_packing –>|hides| mal_purerat mal_purerat –>|performs| act_cert_steal act_cert_steal –>|facilitates| comm_c2
Flux d’Attaque
Détections
Points de Persistance Possibles [ASEPs – Software/NTUSER Hive] (via événement de registre)
Voir
Communication C2 Variante PureRAT via WebSocket Authentifié [Connexion Réseau Windows]
Voir
Persistance via la Clé de Registre Run de Windows [Événement de Registre Windows]
Voir
Exécution de Simulation
Prérequis : Le contrôle préalable de télémétrie et de ligne de base doit avoir réussi.
Raison : Cette section détaille l’exécution précise de la technique de l’adversaire (TTP) conçue pour déclencher la règle de détection. Les commandes et les récits DOIVENT refléter directement les TTP identifiés et viser à générer exactement la télémétrie attendue par la logique de détection. Les exemples abstraits ou non liés entraîneront des erreurs de diagnostic.
-
Récit & Commandes d’Attaque : L’adversaire a déployé avec succès une variante de PureRAT. Pour maintenir le contrôle, le malware établit un canal de Commande et Contrôle (C2) persistant. Au lieu de l’interrogation HTTP standard, il utilise une connexion WebSocket authentifiée pour contourner les proxys web traditionnels qui pourraient ne pas inspecter les flux WebSocket de longue durée. L’objectif de l’attaquant est d’établir un tunnel stable et à faible latence vers
agent.sm-veo.comsur le port8443. Cette simulation utilisera un script PowerShell pour imiter ce comportement réseau en initiant une connexion à l’URI malveillant. -
Script de Test de Régression :
# Simulation de C2 Variante PureRAT via WebSocket # Objectif : Déclencher la règle de détection via le domaine ou l'URL de destination. $targetUrl = "wss://agent.sm-veo.com:8443/v1/ws" $targetDomain = "agent.sm-veo.com" Write-Host "[+] Début de la Simulation C2 PureRAT..." -ForegroundColor Cyan try { Write-Host "[+] Tentative d'établissement de connexion WebSocket à $targetUrl" # Utilisation d'un client WebSocket .NET pour simuler le comportement du protocole spécifique $ws = New-Object System.Net.WebSockets.ClientWebSocket $uri = New-Object System.Uri($targetUrl) $ct = New-Object System.Threading.CancellationTokenSource # Nous n'avons pas besoin d'une négociation réussie pour que la télémétrie réseau se déclenche, # juste la tentative de connexion à la destination spécifiée. $task = $ws.ConnectAsync($uri, $ct.Token) # Attendre brièvement pour que la tentative de connexion génère de la télémétrie Start-Sleep -Seconds 5 Write-Host "[!] Tentative de connexion terminée. Vérifiez SIEM pour la télémétrie." -ForegroundColor Green } catch { Write-Host "[!] Connexion échouée (Attendu si le domaine est sinkhole/non réel), mais la télémétrie devrait avoir été générée." -ForegroundColor Yellow } finally { if ($ws) { $ws.Dispose() } } -
Commandes de Nettoyage :
# Aucun fichier persistant ou clé de registre n'a été modifié par ce script de simulation spécifique. # Si la persistance (T1547.001) a été simulée, utilisez ce qui suit : # Remove-ItemProperty -Path 'HKCU:SoftwareMicrosoftWindowsCurrentVersionRun' -Name 'PureRAT_Update' Write-Host "[+] Nettoyage terminé. Aucun artefact laissé par la simulation réseau." -ForegroundColor Cyan