À l’intérieur de SHADOW-WATER-084 : Un chargeur stéganographique en tant que service distribuant Remcos, LXBASE et plus encore
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
SHADOW-WATER-084 est une opération sophistiquée de loader-as-a-service qui utilise la stéganographie pour dissimuler du code malveillant à l’intérieur de ressources bitmap intégrées dans des applications .NET leurres bénignes. Sa chaîne de livraison repose sur plusieurs étapes de chargement réflexif et de déchiffrement en mémoire pour échapper aux scanners basés sur les fichiers. L’outil est hautement configurable et peut déployer plusieurs charges utiles, y compris Remcos RAT et le LXBASE RAT personnalisé.
Enquête
TrendAI Research a analysé trois campagnes distinctes, suivies sous le nom d’Operation LoremDrop, qui ont utilisé différentes applications leurres mais ont partagé le même trousseau sous-jacent. L’enquête a révélé une chaîne d’exécution en quatre étapes, un format de configuration GraftLoader commun à 43 champs, et des techniques stéganographiques distinctives où chaque canal de pixel porte des données de charge utile. Les chercheurs ont réussi à déchiffrer chaque étape et à récupérer les routines de cryptage de la charge utile.
Atténuation
Les organisations devraient surveiller les lignes de commande PowerShell suspectes stockées dans les clés Run du registre et détecter .inf des fichiers créés dans des répertoires temporaires pour une exécution par cmstp.exe. La protection des endpoints devrait également identifier les objets COM élévateurs de navigateurs instanciés par des processus non-navigateurs pour aider à prévenir le vol d’informations d’identification. La surveillance des ressources bitmap à haute entropie à l’intérieur des assemblages gérés peut également améliorer la détection des chargeurs stéganographiques.
Réponse
Si une activité SHADOW-WATER-084 est détectée, les hôtes affectés devraient être isolés et les clés Run du registre passées en revue pour des exécutions PowerShell suspectes. Les enquêteurs devraient rechercher dans les répertoires temporaires des .inf fichiers non autorisés et inspecter AppDataRoaming pour des exécutables cachés avec des attributs système. La forensique de la mémoire devrait également être effectuée pour identifier les assemblages chargés de manière réflexive et extraire les charges utiles finales en utilisant les clés de décryptage récupérées.
Flux d’attaque
Nous mettons toujours à jour cette partie.
Détections
Exécution suspecte de Taskkill (via cmdline)
Processus PowerShell possible exécuté dans un répertoire suspect (via cmdline)
LOLBAS CMSTP (via cmdline)
Modification suspecte des exclusions de Defender (via cmdline)
IOCs (HashSha256) à détecter : À l’intérieur de SHADOW-WATER-084 : Un loader-as-a-service stéganographique délivrant Remcos, LXBASE, et plus
IOCs (HashMd5) à détecter : À l’intérieur de SHADOW-WATER-084 : Un loader-as-a-service stéganographique délivrant Remcos, LXBASE, et plus
IOCs (SourceIP) à détecter : À l’intérieur de SHADOW-WATER-084 : Un loader-as-a-service stéganographique délivrant Remcos, LXBASE, et plus
IOCs (DestinationIP) à détecter : À l’intérieur de SHADOW-WATER-084 : Un loader-as-a-service stéganographique délivrant Remcos, LXBASE, et plus
Thread de surveillance répertoriant les processus – SHADOW-WATER-084 GraftLoader [Windows Sysmon]
Détecter le Process Hollowing de SHADOW-WATER-84 et l’utilisation de RegSvcs.exe dans la Campagne 1 [Création de processus Windows]
Script PowerShell utilisé pour la persistance avec exclusion de Defender [PowerShell Windows]
Exécution de la simulation
Prérequis : Le contrôle préalable de télémétrie et de référence doit avoir été validé.
Rationnel : 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 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 de l’attaque et commandes : L’adversaire a déployé un chargeur spécialisé connu sous le nom de GraftLoader. Pour assurer la survie contre l’intervention de l’utilisateur ou le redémarrage du système, le
graftloader.exebinaire initie un thread de surveillance. Ce thread énumère continuellement les processus en cours ; s’il détecte que le composant principal du malware a été terminé, il réexécute immédiatement le binaire. Cette simulation crée un dummygraftloader.exepour déclencher la règle de détection basée sur le nom de fichier. -
Script de test de régression :
# Script de simulation : Déclencheur de surveillance GraftLoader # Ce script crée un exécutable dummy nommé 'graftloader.exe' et l'exécute # pour déclencher la détection de la règle Sigma. $workDir = "$env:TEMPGraftLoaderSim" if (!(Test-Path $workDir)) { New-Item -ItemType Directory -Path $workDir } Set-Location $workDir # Créez un script PowerShell simple qui agit comme le 'malware' $scriptContent = @" `$processName = "`$MyInvocation.MyCommand.Name" Write-Host "Surveillance GraftLoader active..." while(`$true) { # Simulez l'énumération des processus et la boucle de surveillance Start-Sleep -Seconds 5 } "@ $scriptContent | Out-File -FilePath "graftloader.ps1" -Encoding utf8 # Créez un fichier batch d'encapsulation pour imiter le comportement de .exe pour la correspondance de nom de fichier $batchContent = "@echo off`npowershell.exe -ExecutionPolicy Bypass -File `"$workDirgraftloader.ps1`"" $batchContent | Out-File -FilePath "graftloader.exe" -Encoding ascii # Exécutez le 'malware' Write-Host "Démarrage de la simulation : graftloader.exe" Start-Process -FilePath ".graftloader.exe" -WindowStyle Hidden Write-Host "Simulation en cours d'exécution. Surveillez SIEM pour la création de processus de graftloader.exe" Write-Host "Appuyez sur une touche pour nettoyer..." $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") -
Commandes de nettoyage :
# Script de nettoyage Stop-Process -Name "graftloader" -ErrorAction SilentlyContinue Stop-Process -Name "powershell" -ErrorAction SilentlyContinue # Remarque : Utiliser avec prudence dans les environnements réels Remove-Item -Recurse -Force "$env:TEMPGraftLoaderSim" Write-Host "Nettoyage terminé."