PulseRAT livré via un appât de partenariat EAU-Inde
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Une archive ISO malveillante déguisée en fichier de partenariat stratégique Émirats arabes unis-Inde est utilisée pour diffuser un cheval de Troie d’accès à distance basé sur .NET, nommé PulseRAT. Le malware est installé via un dropper intégré dans l’ISO et utilise un tableau Google comme canal de commande et de contrôle. Pour maintenir l’accès, il crée une tâche planifiée nommée WindowsVaultSyncService, crée un répertoire de coffre-fort sous %LOCALAPPDATA%, et utilise un mutex pour éviter plusieurs exécutions sur le même hôte. La campagne repose sur un leurre lié à une relation de défense de haut niveau entre les Émirats arabes unis et l’Inde.
Enquête
L’analyste a décompressé le fichier ISO, identifié le raccourci LNK responsable du lancement de l’exécutable et a rétro-conçu le dropper pour découvrir sa charge utile et sa logique de persistance. Une analyse plus approfondie de PulseRAT a révélé comment il utilise Google Sheets pour le commandement et le contrôle, génère son mutex, exécute PowerShell dans la mémoire du processus et crée sa tâche planifiée pour la persistance. Les noms de fichiers, chemins de fichiers, motifs de mutex et l’identifiant du tableau ont tous été documentés pour soutenir l’ingénierie de détection.
Atténuation
Les organisations devraient bloquer l’exécution de binaires inconnus lancés depuis des supports amovibles ou montés et surveiller la création de tâches planifiées nommées WindowsVaultSyncService. Le contrôle d’application devrait être appliqué pour les binaires s’exécutant depuis %LOCALAPPDATA%MicrosoftVault, et les défenseurs devraient inspecter le trafic de l’API Google Sheets pour détecter l’accès à des comptes non autorisés ou une activité inhabituelle sur les tableaux. Toute tâche planifiée malveillante devrait être supprimée, et le vaultsvc.exe fichier devrait être supprimé des systèmes affectés.
Réponse
Si une activité de PulseRAT est détectée, isolez immédiatement le point d’extrémité affecté, collectez la mémoire volatile et les images disque, et recherchez les indicateurs de compromission documentés. Désactivez et supprimez la tâche planifiée malveillante, supprimez le répertoire du coffre et réinitialisez tout compte de service Google compromis. Un examen judiciaire complet devrait également être effectué pour identifier un éventuel mouvement latéral, et les parties prenantes pertinentes aux Émirats arabes unis et en Inde devraient être informées.
"graph TB %% Class definitions classDef action fill:#99ccff,stroke:#333,stroke-width:2px classDef tool fill:#dddddd,stroke:#333,stroke-width:2px classDef process fill:#ffeb99,stroke:#333,stroke-width:2px %% Nodes step_user_open["<b>Action</b> – <b>T1204.002 Exécution par l’utilisateur : Fichier malveillant</b><br/><b>Description</b>: La victime ouvre un raccourci (LNK) malveillant.<br/><b>Subu2011technique</b> T1547.009 Modification de raccourci<br/><b>Description</b>: Raccourci placé pour assurer la persistance."] class step_user_open action step_dropper["<b>Action</b> – <b>T1027.009 Fichiers obfusqués/stockés : Charges utiles intégrées</b><br/><b>Description</b>: Le dropper extrait une charge utile cachée.<br/><b>Technique</b> T1105 Transfert d’outil de pénétration<br/><b>Description</b>: Transfère la charge utile vers le système de la victime."] class step_dropper action step_persistence["<b>Action</b> – <b>T1053 Tâche planifiée/Travail</b><br/><b>Description</b>: Crée une tâche planifiée pour la persistance.<br/><b>Technique</b> T1070.004 Suppression de fichier<br/><b>Description</b>: Le dropper se supprime après l’installation."] class step_persistence action step_execution["<b>Action</b> – <b>T1055.013 Injection de processus : Creusage de processus</b><br/><b>Description</b>: Exécute PowerShell au sein du processus pour lancer du code malveillant.<br/><b>Technique</b> T1602 Collecte d’informations sur l’identité de la victime<br/><b>Description</b>: Collecte des informations système (infos système)."] class step_execution action step_uid["<b>Action</b> – <b>T1589 Collecte d’informations sur l’identité de la victime</b><br/><b>Description</b>: Génère un identifiant unique de la victime (UID)."] class step_uid action step_c2["<b>Action</b> – <b>T1102.001 Services Web : Dead Drop Resolver</b><br/><b>Description</b>: Utilise les feuilles de calcul Google comme canal de commandu2011andu2011control.<br/><b>Technique</b> T1102.002 Services Web : Exfiltration via des services web<br/><b>Description</b>: Communique avec l’API Google Sheets à distance."] class step_c2 action step_rat["<b>Action</b> – <b>T1219 Outils d’accès à distance</b><br/><b>Description</b>: Fournit un accès interactif à distance à l’hôte compromis."] class step_rat action step_cleanup["<b>Action</b> – <b>T1070.009 Effacement des journaux d’événements Windows</b><br/><b>Description</b>: Supprime les artefacts et nettoie les mécanismes de persistance."] class step_cleanup action %% Connections step_user_open –>|mène à| step_dropper step_dropper –>|crée| step_persistence step_persistence –>|active| step_execution step_execution –>|produit| step_uid step_uid –>|utilisé par| step_c2 step_c2 –>|active| step_rat step_rat –>|déclenche| step_cleanup "
Flux d’attaque
Détections
Utilisation possible de choix pour retarder l’exécution (via la ligne de commande)
Voir
Image de disque optique VHDMP a été montée (via VHDMP)
Voir
Tâche planifiée suspecte (via audit)
Voir
Activité possible d’utilitaire de commande et contrôle Google (via proxy)
Voir
IOCs (HashSha256) pour détecter : PulseRAT – RAT basé sur Google Sheets utilisant le leurre de partenariat EAU-Inde
Voir
Détection de l’exécution PowerShell de PulseRAT [Windows Powershell]
Voir
Exécution d’un exécutable suspect via un fichier LNK et une charge utile RAT [Création de processus Windows]
Voir
Exécution de la simulation
Prérequis : La vérification pré-vol de télémétrie et de baselining doit avoir été validée.
-
Narrative d’attaque & Commandes :
L’adversaire a compromis un compte utilisateur et placé une DLL malveillante “PulseRAT” sur l’hôte. PulseRAT se charge dans un processus légitime (par exemple,explorer.exe) et crée un espace d’exécution PowerShell (exécution en-process) pour éviter de lancer unpowershell.exevisible. Il récupère ensuite une charge utile PowerShell encodée en base 64 à partir d’une feuille Google contrôlée par l’attaquant, la décode et l’exécute dans l’espace d’exécution. Cela génère une seule entrée EventID 4104 contenant à la fois la chaîne marqueur “System.Management.Automation.Runspaces” (de la création de l’espace d’exécution) et le mot “base64” (de la charge utile décodée), satisfaisant la règle Sigma. -
Script de test de régression :
# Exécution PowerShell en-process de style PulseRAT (simulation) # --------------------------------------------------------- # 1. Créer un espace d'exécution PowerShell (en-process) $runspace = [runspacefactory]::CreateRunspace() $runspace.Open() # 2. Construire une charge utile encodée en base64 (simulation de données contrôlées par l'attaquant) $payload = 'Write-Host "Compromise par PulseRAT"' # charge utile simple $bytes = [System.Text.Encoding]::Unicode.GetBytes($payload) $b64 = [Convert]::ToBase64String($bytes) # 3. Construire un bloc de script qui décode et exécute la charge utile $script = @" `$b64 = '$b64' `$decoded = [System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(`$b64)) Invoke-Expression `$decoded "@ # 4. Créer un pipeline PowerShell à l'intérieur de l'espace d'exécution et l'invoker $powershell = [powershell]::Create() $powershell.Runspace = $runspace $null = $powershell.AddScript($script).Invoke() $powershell.Dispose() $runspace.Close() -
Commandes de nettoyage :
# Retirer l'espace d'exécution et libérer les ressources (si des éléments restent) if ($runspace -and $runspace.RunspaceStateInfo.State -ne 'Closed') { $runspace.Close() } Remove-Variable -Name runspace -ErrorAction SilentlyContinue Remove-Variable -Name powershell -ErrorAction SilentlyContinue