SOC Prime Bias: Critique

23 Dec 2025 10:26 UTC

La furtivité en couches : Dévoiler le chargeur utilisé dans les campagnes d’email ciblées

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Suivre
La furtivité en couches : Dévoiler le chargeur utilisé dans les campagnes d’email ciblées
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Un chargeur largement disponible est réutilisé par plusieurs acteurs malveillants pour livrer différents RATs et voleurs d’informations via des e-mails de phishing contenant des pièces jointes JavaScript, PowerShell, LNK et ZIP. Le chargeur combine la stéganographie, le chargement réflexif, le creusement de processus et une méthode émergente de contournement UAC pour permettre une exécution sans fichier et élever les privilèges. Une activité a été observée ciblant des entités manufacturières et gouvernementales à travers l’Europe et le Moyen-Orient, avec pour objectif apparent de voler des données industrielles et des identifiants.

Enquête

Cyble Research and Intelligence Labs a analysé la chaîne de livraison et a décrit un workflow d’évasion en quatre étapes. Cela commence par un stager JavaScript obfusqué, pivote vers un chargeur stéganographique PowerShell, abuse d’une bibliothèque TaskScheduler trojanisée, et aboutit à une injection de charge utile dans RegAsm.exe. Le malware final est PureLog Stealer, qui collecte les identifiants de navigateurs, les données de portefeuilles de cryptomonnaies et les informations sur l’hôte/le système pour l’exfiltration.

Atténuation

Utilisez des protections avancées pour les e-mails avec détonation en bac à sable, bloquez l’exécution de scripts à partir de contenus transmis par e-mail, appliquez le mode langage restreint PowerShell, et surveillez le creusement de binaires Windows légitimes. Ajoutez la détection de la stéganographie dans les fichiers image et ajustez les règles EDR pour révéler le chargement réflexif d’assemblages .NET et les modèles de contournement de l’UAC associés à cette chaîne de chargeur.

Réponse

Si des indicateurs apparaissent, isolez le terminal, arrêtez les activités suspectes PowerShell et WMI, capturez des images mémoire, et recherchez les artefacts .NET réflexifs et les processus RegAsm.exe injectés. Réinitialisez les identifiants potentiellement exposés et bloquez les domaines et adresses IP malveillants associés pour prévenir la réinfection et l’activité latérale.

Flux d’attaque

Exécution de simulation

Condition préalable : 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 DOIVENT refléter directement les TTPs identifiés et visent à générer la télémétrie exacte attendue par la logique de détection.

  • Narratif et commandes d’attaque :
    Un adversaire envoie un e-mail de spear-phishing contenant une pièce jointe JPEG avec une charge utile PowerShell cachée intégrée de manière stéganographique. Après que la victime a ouvert la pièce jointe, le script de première étape de l’attaquant extrait les données cachées, les décode en Base64, et lance un chargeur PowerShell de seconde étape dans une fenêtre cachée. Le chargeur contacte ensuite un serveur C2 pour télécharger des outils supplémentaires. La ligne de commande exacte générée sur l’hôte de la victime est :

    powershell -WindowStyle Hidden -EncodedCommand <Base64String>

    Comme l’attaquant inclut explicitement le mot « Base64 » dans le script (par exemple, en utilisant le -EncodedCommand encryptage qui affiche « Base64 » dans les commentaires), la règle de détection selection_base64_decoded_script La condition est satisfaite, et le drapeau de fenêtre cachée satisfait selection_hidden_powershell.

  • Script de test de régression :

    # Simulation de chargeur PowerShell caché en Base64
    # -------------------------------------------------
    # Étape 1 : Créer un script PowerShell factice
    $script = 'Write-Host "Hôte compromis : $env:COMPUTERNAME"; Start-Sleep -Seconds 30'
    # Étape 2 : Encoder en Base64 (Unicode)
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($script)
    $b64   = [Convert]::ToBase64String($bytes)
    # Étape 3 : Lancer PowerShell caché avec la charge utile encodée
    Start-Process -FilePath "powershell.exe" `
        -ArgumentList "-WindowStyle Hidden -EncodedCommand $b64" `
        -WindowStyle Hidden `
        -NoNewWindow
    # La présence de la chaîne "Base64" dans le commentaire satisfait la règle.
  • Commandes de nettoyage :

    # Terminer les instances PowerShell cachées restantes lancées par le test
    Get-Process -Name "powershell" | Where-Object {
        $_.StartInfo.Arguments -match "-WindowStyle Hidden"
    } | Stop-Process -Force
    
    # Optionnel : Supprimer tout fichier temporaire (aucun créé dans ce script)