SOC Prime Bias: Élevé

17 Jun 2026 12:58 UTC

Comment un fichier VHDX livre Remcos RAT

Author Photo
SOC Prime Team linkedin icon Suivre
Comment un fichier VHDX livre Remcos RAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Une campagne de malware en plusieurs étapes utilise une archive ZIP armée contenant une image disque VHDX pour échapper aux contrôles de sécurité courants. Après le montage du VHDX, un fichier JavaScript obfusqué s’exécute et lance une série d’étapes PowerShell via WMI. La charge finale est Remcos RAT, qui est injecté dans un processus Windows légitime pour dissimuler son exécution.

Enquête

Le chercheur a examiné une archive ZIP malveillante et le conteneur VHDX intégré pour reconstituer le flux d’attaque complet. L’analyse a révélé une chaîne d’exécution complexe utilisant la création de processus basée sur WMI pour déguiser les relations parent-enfant, ainsi que l’obfuscation de chaînes XOR et Base64 et un chargeur .NET réflexif. Le chemin d’infection a été retracé avec succès depuis l’exécution initiale de JavaScript jusqu’au déploiement de la charge finale Remcos.

Atténuation

Les organisations devraient appliquer des contrôles stricts pour empêcher le montage d’images disque VHDX à partir de sources non fiables. Les outils de sécurité devraient également surveiller les Win32_Process.Create activités suspectes déclenchées par des moteurs de script comme JavaScript ou PowerShell. Bloquer les domaines malveillants connus et surveiller les persistances inhabituelles de clés Run dans le registre peuvent encore réduire les risques.

Réponse

Si cette activité est détectée, isolez immédiatement le point d’extrémité affecté pour stopper la communication de commande et de contrôle. Acquérez un vidage de mémoire pour capturer la charge injectée Remcos et le chargeur .NET réflexif. Un examen médico-légal complet devrait ensuite chercher des entrées de clé Run malveillantes, des fichiers VHDX supplémentaires et des activités PowerShell suspectes ailleurs dans l’environnement.

graph TB %% Définition des classes classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef connection fill:#f9f9f9 %% Accès initial et exécution action_phishing[« <b>Action</b> – <b>T1566.001 Hameçonnage : Pièce jointe de spearphishing</b><br/>Description : Archive ZIP malveillante<br/>envoyée par e-mail. »] class action_phishing action action_user_exec[« <b>Action</b> – <b>T1204.002 Exécution par l’utilisateur : Fichier malveillant</b><br/>Description : L’utilisateur exécute<br/>le fichier ZIP malveillant. »] class action_user_exec action tool_vhdx[« <b>Outil</b> – <b>Nom</b> : Fichier VHDX<br/>Description : Conteneur de malware utilisé pour cacher<br/>la charge utile via Escape to Host T1611. »] class tool_vhdx tool %% Obfuscation et scripts file_js[« <b>Fichier</b> : Partnerschaft_fur_neue_Angebotsanfrage.js<br/><b>Description</b> : Fichier JavaScript malveillant utilisant<br/>l’obfuscation des commandes T1027.010 via<br/>pollution de chaînes et déchiffrement XOR. »] class file_js tool action_wmi[« <b>Action</b> : PowerShell via WMI<br/><b>Description</b> : Lance un script PowerShell à l’aide de WMI<br/>pour contourner la surveillance des relations entre processus. »] class action_wmi action %% Transfert entrant et étapes du malware action_ingress_1[« <b>Action</b> – <b>T1105 Transfert d’outils entrant</b><br/><b>Description</b> : Le script PowerShell télécharge<br/>le fichier de deuxième étape. »] class action_ingress_1 action file_dsp[« <b>Fichier</b> : Exoticisms121.dsp<br/><b>Description</b> : Fichier de deuxième étape<br/>stocké dans %APPDATA%. »] class file_dsp tool tool_loader[« <b>Outil</b> : Chargeur .NET réflexif<br/><b>Description</b> : Exécute le shellcode<br/>depuis le fichier de deuxième étape. »] class tool_loader tool action_ingress_2[« <b>Action</b> – <b>T1105 Transfert d’outils entrant</b><br/><b>Description</b> : Le shellcode récupère<br/>la charge utile finale Remcos RAT. »] class action_ingress_2 action malware_remcos[« <b>Malware</b> : Remcos RAT<br/>Description : Charge utile finale configurée<br/>pour la communication Command and Control TA0011. »] class malware_remcos malware %% Processus et C2 process_bg_task[« <b>Processus</b> : backgroundTaskHost.exe<br/><b>Description</b> : Processus cible<br/>pour l’injection du malware. »] class process_bg_task process c2_server[« <b>Serveur C2</b> : animal342.duckdns.org:53562<br/><b>Description</b> : Serveur distant utilisé<br/>pour les communications Command and Control. »] class c2_server tool %% Persistance action_persistence[« <b>Action</b> – <b>T1547.001 Exécution automatique au démarrage ou à la connexion : Clés Run du registre / Dossier Startup</b><br/><b>Description</b> : Utilise cmd.exe pour créer des clés<br/>de démarrage automatique du registre pour le chargeur PowerShell. »] class action_persistence action %% Connexions action_phishing –>|mène_à| action_user_exec action_user_exec –>|révèle| tool_vhdx tool_vhdx –>|contient| file_js file_js –>|exécute_via_WMI| action_wmi action_wmi –>|effectue| action_ingress_1 action_ingress_1 –>|télécharge| file_dsp file_dsp –>|traité_par| tool_loader tool_loader –>|effectue| action_ingress_2 action_ingress_2 –>|récupère| malware_remcos malware_remcos –>|injecte_dans| process_bg_task malware_remcos –>|communique_avec| c2_server malware_remcos –>|assure| action_persistence

Flux d’attaque

## Exécution de simulation

Prérequis : Le contrôle pré-vol de télémétrie et de ligne de base doit avoir passé.

Rationale : 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 directement refléter les TTP identifiés et viser à générer exactement la télémétrie attendue par la logique de détection. Les exemples abstraits ou non liés conduiront à un mauvais diagnostic.

  • Récit d’attaque et commandes : L’adversaire vise à exécuter une charge utile malveillante en mémoire pour éviter la détection par l’AV traditionnel. Ils utilisent un script PowerShell qui exploite [System.Reflection.Assembly]::Load() pour extraire une DLL .NET compilée directement à partir d’un tableau d’octets dans le processus actuel. Pour maintenir la persistance et échapper à un examen minutieux, ils tentent de générer ou d’interagir avec backgroundTaskHost.exe, un processus Windows légitime, pour masquer leur fil d’exécution dans une tâche de fond système standard.

  • Script de test de régression :

    # Script de simulation : Charge reflexive .NET & Interaction de processus
    # Ce script imite la logique capturée par la règle de détection.
    
    # 1. Crée un tableau d'octets fictif représentant un assemblage .NET (très simplifié pour la simulation)
    $assemblyBytes = [byte[]](0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00) # mime l'en-tête MZ
    
    Write-Host "[+] Tentative de chargement d'assemblage réflexif .NET..." -ForegroundColor Cyan
    try {
        # Cette chaîne spécifique est une cible pour la règle de détection
        $assembly = [System.Reflection.Assembly]::Load($assemblyBytes)
        Write-Host "[!] Succès : Assemblage chargé en mémoire (Simulation uniquement)." -ForegroundColor Green
    } catch {
        Write-Host "[-] Échec du chargement de l'assemblage (attendu en raison d'octets de test invalides), mais la commande a été envoyée." -ForegroundColor Yellow
    }
    
    Write-Host "[+] Tentative d'invocation de backgroundTaskHost.exe pour déclencher la détection..." -ForegroundColor Cyan
    # Cette chaîne spécifique est une cible pour la règle de détection
    Start-Process "C:WindowsSystem32backgroundTaskHost.exe" -ArgumentList "/test-detection"
  • Commandes de nettoyage :

    # Nettoyage : Terminer le processus backgroundTaskHost généré
    Stop-Process -Name "backgroundTaskHost" -ErrorAction SilentlyContinue
    Write-Host "[+] Nettoyage terminé. BackgroundTaskHost terminé." -ForegroundColor Green