L’entreprise médiatique CloudZ RAT pourrait voler des messages OTP à l’aide du plugin Pheno
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Cisco Talos a identifié une intrusion dans laquelle les attaquants ont déployé le cheval de Troie d’accès distant CloudZ avec un plugin personnalisé appelé Pheno. L’activité cible les systèmes Windows 10 et 11 qui s’appuient sur Microsoft Phone Link pour synchroniser avec les appareils mobiles. En abusant du pont Phone Link sur le poste de travail, les attaquants peuvent accéder au contenu SMS et aux messages de mots de passe à usage unique sans installer de logiciel malveillant directement sur le téléphone lui-même. La chaîne d’infection utilise un programme d’installation basé sur Rust, un chargeur .NET, la persistance via des tâches planifiées et plusieurs méthodes de livraison de payloads.
Investigation
Talos a retracé l’intrusion à une fausse mise à jour de ScreenConnect qui a livré un chargeur compilé avec Rust nommé systemupdates.exe or Windows-interactive-update.exe. Ce chargeur a déchiffré et déposé un composant .NET, qui a ensuite installé CloudZ RAT à travers une tâche planifiée qui lançait regasm.exe. Après l’installation, CloudZ a récupéré le plugin Pheno depuis un serveur de mise en scène et l’a utilisé pour accéder aux données stockées dans la base de données SQLite Phone Link. Les enquêteurs ont également identifié une infrastructure de commande et de contrôle, y compris l’adresse IP 185.196.10.136 et plusieurs domaines malveillants liés à la campagne.
Atténuation
Cisco Talos a noté que les détections ClamAV comme Win.Packed.Msilheracles and Win.Trojan.CloudZRAT, ainsi que les règles Snort 66408–66410 and 301492, peuvent aider à identifier la menace. Bloquer les domaines et adresses IP malveillants connus, tout en limitant l’exécution de binaires non signés depuis des emplacements tels que ProgramData, peut aider à stopper la chaîne de chargeurs. Les organisations peuvent également réduire l’exposition en désactivant ou en surveillant de près Microsoft Phone Link et en appliquant le principe du moindre privilège sur la création et l’exécution de tâches planifiées.
Réponse
Si cette activité est détectée, isolez immédiatement l’hôte affecté et collectez les images mémoire et disque pour l’analyse médico-légale. Les enquêteurs doivent confirmer la présence de la tâche planifiée SystemWindowsApis et de tout binaire lié à CloudZ, puis les retirer du système. L’infrastructure de commande et de contrôle identifiée doit être bloquée, et les informations d’identification potentiellement exposées doivent être réinitialisées, notamment là où l’authentification basée sur OTP a pu être interceptée. Un examen plus large du système doit également étudier d’autres méthodes de persistance et auditer l'activité PowerShell and regasm.exe pour détecter les abus liés.
"graph TB %% Class definitions classDef technique fill:#ffe699 %% Node definitions step1_user_exec["<b>Technique</b> – <b>T1204.002 Exécution d’utilisateur : Fichier malveillant</b><br/><b>Description</b> : L’utilisateur est trompé pour exécuter un exécutable malveillant se faisant passer pour une fausse mise à jour de ScreenConnect."] class step1_user_exec technique step2_persistence["<b>Technique</b> – <b>T1218.009 Exécution de proxy binaire système : Regsvcs/Regasm</b><br/><b>Description</b> : Le code malveillant est exécuté via regsvcs ou regasm à travers une tâche planifiée, en utilisant des binaires .NET de confiance."] class step2_persistence technique step3_obfuscation["<b>Technique</b> – <b>T1027 Fichiers ou informations obfusquées</b><br/><b>Description</b> : La charge utile est packée avec ConfuserEx et chiffrée par XOR‑ pour cacher sa véritable fonctionnalité."] class step3_obfuscation technique step4_dynamic_api["<b>Technique</b> – <b>T1027.007 Résolution dynamique des API</b><br/><b>Description</b> : Au moment de l’exécution, le malware résout les API requises, vérifiant les outils d’analyse pour éviter la détection statique."] class step4_dynamic_api technique step5_indicator_removal["<b>Technique</b> – <b>T1027.005 Suppression d’indicateurs des outils</b><br/><b>Description</b> : Le code arrête l’exécution si des utilitaires de sécurité sont détectés, supprimant tout indicateur observable."] class step5_indicator_removal technique step6_reflective_load["<b>Technique</b> – <b>T1620 Chargement de code réflexif</b><br/><b>Description</b> : La charge utile .NET est chargée directement en mémoire de manière réflexive, sans laisser de fichier sur le disque."] class step6_reflective_load technique step7_process_discovery["<b>Technique</b> – <b>T1057 Découverte de processus</b><br/><b>Description</b> : Le malware énumère les processus en cours d’exécution pour localiser et potentiellement désactiver les outils de sécurité."] class step7_process_discovery technique step8_browser_creds["<b>Technique</b> – <b>T1555.003 Informations d’identification des navigateurs web</b><br/><b>Description</b> : Les mots de passe des navigateurs stockés sont extraits et préparés pour l’exfiltration."] class step8_browser_creds technique step9_steal_cookie["<b>Technique</b> – <b>T1539 Vol de cookie de session web</b><br/><b>Description</b> : Les cookies de session web actifs sont capturés depuis le navigateur."] class step9_steal_cookie technique step10_use_cookie["<b>Technique</b> – <b>T1550.004 Utilisation de matériel d’authentification alternatif : Cookie de session web</b><br/><b>Description</b> : Les cookies volés sont réutilisés pour s’authentifier aux services web cibles."] class step10_use_cookie technique step11_browser_info["<b>Technique</b> – <b>T1217 Découverte d’informations sur le navigateur</b><br/><b>Description</b> : Des données supplémentaires du navigateur et des messages OTP sont collectés pour un abus ultérieur."] class step11_browser_info technique step12_bits_jobs["<b>Technique</b> – <b>T1197 BITS Jobs</b><br/><b>Description</b> : Les BITS jobs téléchargent des plugins malveillants supplémentaires en utilisant bitsadmin, curl ou PowerShell."] class step12_bits_jobs technique step13_exfil_encrypted["<b>Technique</b> – <b>T1048.002 Exfiltration sur un protocole non-C2 chiffré asymétrique</b><br/><b>Description</b> : Les données collectées sont envoyées via une socket TCP chiffrée qui ne fait pas partie d’un canal C2 standard."] class step13_exfil_encrypted technique step14_c2_web["<b>Technique</b> – <b>T1071.001 Protocole de couche applicative : Protocoles Web</b><br/><b>Description</b> : Le trafic de commande et de contrôle utilise HTTP/S avec des user‑agents rotatifs et des en-têtes anti‑caching."] class step14_c2_web technique %% Connections step1_user_exec –>|leads_to| step2_persistence step2_persistence –>|leads_to| step3_obfuscation step3_obfuscation –>|leads_to| step4_dynamic_api step4_dynamic_api –>|leads_to| step5_indicator_removal step5_indicator_removal –>|leads_to| step6_reflective_load step6_reflective_load –>|leads_to| step7_process_discovery step7_process_discovery –>|leads_to| step8_browser_creds step8_browser_creds –>|leads_to| step9_steal_cookie step9_steal_cookie –>|leads_to| step10_use_cookie step10_use_cookie –>|leads_to| step11_browser_info step11_browser_info –>|leads_to| step12_bits_jobs step12_bits_jobs –>|leads_to| step13_exfil_encrypted step13_exfil_encrypted –>|leads_to| step14_c2_web "
Flux de l’attaque
Détections
Télécharger ou télécharger via Powershell (via cmdline)
Voir
LOLBAS Schtasks (via cmdline)
Voir
LOLBAS Bitsadmin (via cmdline)
Voir
Utilisation suspecte de CURL (via cmdline)
Voir
Possible abus de domaine de développement Cloudflare (via dns)
Voir
Détection de l’exécution de tâche planifiée et de la requête de processus dans l’infection CloudZ RAT [Windows Powershell]
Voir
Détection du chargeur .NET utilisant regasm.exe pour la persistance [Création de processus Windows]
Voir
Exécution de simulation
Prérequis : Le contrôle préalable de télémétrie et de référence 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 le récit DOIVENT refléter directement les TTPs identifiés et viser à générer exactement la télémétrie attendue par la logique de détection.
-
Narratif & Commandes de l’Attaque :
L’attaquant a compromis un compte utilisateur à faible privilège et souhaite établir une persistance tout en confirmant que le chargeur .NET CloudZ est actif. Ils :- Créent une tâche planifiée qui lance un script PowerShell (
C:Tempcloudz.ps1). - Exécutent immédiatement la tâche avec
schtasks /runpour s’assurer que le script s’exécute. - À l’intérieur du script, énumèrent tous les processus en utilisant
Get‑CimInstance Win32_Processpour tester la présence du chargeur .NET. - Le processus PowerShell et la commande
schtasksproduisent tous deux des enregistrements Sysmon EventID 1 dont leschamps CommandLinecontiennent les chaînes exactes que la règle surveille, provoquant une alerte.
- Créent une tâche planifiée qui lance un script PowerShell (
-
Script de Test de Régression :
#------------------------------------------------- # Script de persistance & vérification de type CloudZ #------------------------------------------------- $taskName = "CloudZ_Persistence" $scriptPath = "C:Tempcloudz.ps1" # 1️⃣ Écrire la charge utile PowerShell qui interroge les processus @" # CloudZ payload – énumération de processus Get-CimInstance Win32_Process | Out-Null "@ | Set-Content -Path $scriptPath -Encoding ASCII # 2️⃣ Enregistrer une tâche planifiée qui exécute la charge utile $action = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-NoProfile -ExecutionPolicy Bypass -File `"$scriptPath`"" $trigger = New-ScheduledTaskTrigger -AtLogOn Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -Force # 3️⃣ Exécuter immédiatement la tâche (génère schtasks /run) schtasks /run /tn "$taskName" # 4️⃣ Courte pause pour permettre la journalisation Start-Sleep -Seconds 5 -
Commandes de Nettoyage :
# Supprimer la tâche planifiée Unregister-ScheduledTask -TaskName "CloudZ_Persistence" -Confirm:$false # Supprimer le script de charge utile Remove-Item -Path "C:Tempcloudz.ps1" -Force # Arrêter éventuellement Sysmon (restaurer la config d'origine) si nécessaire # & "$env:ProgramFilesSysinternalsSysmon.exe" -u