SOC Prime Bias: Moyen

22 May 2026 06:34 UTC

Secrets de la Stéganographie : Logiciel malveillant caché en pleine vue

Author Photo
SOC Prime Team linkedin icon Suivre
Secrets de la Stéganographie : Logiciel malveillant caché en pleine vue
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Les acteurs de menaces exploitent de plus en plus les services d’hébergement d’images et de partage de fichiers pour livrer des charges utiles malveillantes dissimulées à l’intérieur de fichiers PNG et JPEG apparemment inoffensifs. Ces images contiennent des DLL encodées en Base64 qui sont extraites par un dépôt JavaScript et chargées directement en mémoire pour lancer des logiciels malveillants d’accès à distance tels que Remcos RAT. En évitant les artefacts évidents sur le disque et en s’appuyant sur l’exécution sans fichier, la technique peut passer inaperçue de nombreuses défenses traditionnelles des points de terminaison. Les campagnes utilisent souvent des thèmes liés à la finance et ciblent les victimes via des courriels de phishing personnalisés.

Investigation

Cofense a analysé un groupe de courriels de phishing construits autour de faux documents de bon de commande qui ont livré un dépôt basé sur JavaScript. Ce dépôt a récupéré une image stéganographique de domaines abusés, décodé un DLL chargeur .NET encodé en Base64, et injecté Remcos RAT dans un processus légitime. Les statistiques de la campagne ont montré que 27 % des attaques observées livraient Remcos RAT, tandis que 21 % livraient Agent Tesla et 18 % livraient XWorm RAT. Le rapport a également identifié des plateformes d’hébergement fortement abusées, y compris uploaddeimagens.com.br and archive.org.

Mitigation

Les organisations devraient renforcer le scan des pièces jointes de courriels et bloquer l’exécution des fichiers JavaScript non approuvés. Surveiller le trafic sortant vers les plateformes connues d’hébergement d’images peut aider à révéler l’étape de livraison de la charge utile. Des analyses comportementales devraient également être utilisées pour détecter l’injection de processus et le chargement en mémoire uniquement de DLL non signées. Les défenseurs devraient également surveiller les emplacements d’autorun de registre et les tâches planifiées pour identifier les tentatives de persistance sans fichier.

Réponse

Si une image stéganographique malveillante est suspectée, isolez immédiatement le point de terminaison affecté et collectez la mémoire pour une analyse médico-légale. Les enquêteurs devraient rechercher le DLL chargeur .NET et tous les processus légitimes qui pourraient héberger des composants injectés de Remcos. Les entrées de registre autorun non autorisées et les tâches planifiées créées par le chargeur devraient être supprimées. Tous les comptes potentiellement exposés pendant l’intrusion devraient subir une réinitialisation complète des informations d’identification.

"graph TB %% Class Definitions classDef action fill:#99ccff classDef malware fill:#ff9999 classDef persistence fill:#ffcc99 classDef privilege fill:#ffb3b3 %% Node definitions action_phishing["<b>Action</b> – <b>T1566.001 Phishing</b><br/>Spearphishing Attachment: l’attaquant envoie un courriel à thème financier avec une pièce jointe JavaScript malveillante."] class action_phishing action action_user_execution["<b>Action</b> – <b>T1204.003 Exécution Utilisateur</b><br/>Image Malveillante: la victime ouvre le dépôt JavaScript qui initie le téléchargement d’une image malveillante depuis un site d’hébergement public."] class action_user_execution action action_steganography["<b>Action</b> – <b>T1027.003 Fichiers ou Informations Obfusqués</b><br/>Stéganographie: l’image téléchargée contient un DLL chargeur .NET encodé en Base64 et caché via la stéganographie."] class action_steganography action action_process_injection["<b>Action</b> – <b>T1055 Injection de Processus</b><br/>Le chargeur injecte le Remcos RAT dans la mémoire d’un processus légitime tel qu’explorer.exe."] class action_process_injection action action_privilege_escalation["<b>Action</b> – <b>T1548 Abus du Mécanisme de Contrôle de l’Élévation</b><br/>Le chargeur élève ses privilèges pour obtenir les droits administratifs avant d’exécuter la charge utile."] class action_privilege_escalation privilege persistence_appcert["<b>Persistance</b> – <b>T1546.009 Exécution Déclenchée par un Événement</b><br/>AppCert DLLs: entrées de registre écrites pour charger le DLL malveillant au démarrage (persistance sans fichier)."] class persistence_appcert persistence persistence_activesetup["<b>Persistance</b> – <b>T1547.014 Exécution à l’Autostart du Boot ou de la Connexion</b><br/>Active Setup: clés de registre supplémentaires d’autostart ajoutées pour la persistance."] class persistence_activesetup persistence malware_remcos_rat["<b>Logiciel Malveillant</b> – <b>T1219 Outil d’Accès à Distance</b><br/>Remcos RAT offre des capacités de commandement et de contrôle pour l’attaquant."] class malware_remcos_rat malware action_lateral_movement["<b>Action</b> – <b>T1021 Services à Distance</b><br/>Le RAT utilise des services à distance pour se déplacer latéralement à travers le réseau."] class action_lateral_movement action %% Connections action_phishing –>|livre| action_user_execution action_user_execution –>|exécute| action_steganography action_steganography –>|contient| action_process_injection action_process_injection –>|injecte| malware_remcos_rat malware_remcos_rat –>|active| action_privilege_escalation action_privilege_escalation –>|crée| persistence_appcert persistence_appcert –>|ajoute| persistence_activesetup malware_remcos_rat –>|facilite| action_lateral_movement "

Flux d’Attaque

Exécution de Simulation

Prérequis: Le contrôle préalable de la télémétrie et des bases de référence doit avoir été passé.

Raisonnement: 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 TTP identifiés et viser à générer exactement la télémétrie attendue par la logique de détection.

  • Narration et Commandes d’Attaque:

    1. Préparation – Charge Utile Stéganographique:
      L’attaquant intègre un DLL Remcos RAT compilé à l’intérieur d’un JPEG bénin en utilisant un outil personnalisé (StegoEmbed.exe). Le fichier résultant (malicious.jpg) transporte la charge utile malveillante dans ses données de pixel.

    2. Livraison – Exécution du Chargeur DotNET:
      L’attaquant exécute un chargeur basé sur .NET (dotnet.exe) qui se réfère à l’image stego et inclut l’argument Loader. Le chargeur lit l’image, extrait le DLL intégré, et le charge directement en mémoire (exécution en mémoire) sans écrire sur le disque, réalisant ainsi une élévation de privilège via une faille (T1068).

    3. Résultat – Balise RAT:
      Une fois en mémoire, le Remcos RAT établit une connexion réseau au serveur C2.

    La télémétrie critique générée est un événement de création de processus où :

    • Image (Nom du Processus) contient DotNET (dotnet.exe).
    • Ligne de Commande contient le mot littéral Loader.

    Cela satisfait la règle Sigma selection_dotnet_loader.

  • Script de Test de Régression:

    # ---------------------------------------------------------
    # Script de Simulation – Chargeur DotNET avec Stéganographie (T1027.003)
    # ---------------------------------------------------------
    # 1. Créer une image stego factice (espace réservé – pas besoin d'intégration réelle)
    $stegoPath = "$env:TEMPmalicious.jpg"
    Copy-Item "$env:SystemRootWebWallpaperWindowsimg0.jpg" $stegoPath -Force
    
    # 2. Exécuter le chargeur .NET avec le drapeau requis
    #    Utiliser le dotnet.exe légitime pour imiter le nom d'image “DotNET”.
    #    L'argument “Loader” déclenche la règle Sigma.
    $loaderArgs = "`"$stegoPath`" Loader"
    Write-Host "[*] Lancement du chargeur dotnet avec l'argument: $loaderArgs"
    
    Start-Process -FilePath "dotnet.exe" -ArgumentList $loaderArgs -NoNewWindow
    
    # 3. Attendre une courte période pour s'assurer que le processus est capturé par Sysmon
    Start-Sleep -Seconds 5
    
    # 4. OPTIONNEL : Simuler une balise RAT (trafic réseau) – pas requis pour le test de la règle
    # ---------------------------------------------------------
    Write-Host "[*] Simulation terminée. Vérifiez l'alerte dans le SIEM."
  • Commandes de Nettoyage:

    # ---------------------------------------------------------
    # Nettoyage – supprimer l'image stego temporaire et arrêter les processus de chargeur restant
    # ---------------------------------------------------------
    $stegoPath = "$env:TEMPmalicious.jpg"
    
    # Supprimer l'image temporaire
    if (Test-Path $stegoPath) {
        Remove-Item $stegoPath -Force
        Write-Host "[*] Supprimé $stegoPath"
    }
    
    # Arrêter les processus dotnet démarrés par ce script (identifiés par l'argument "Loader")
    Get-Process -Name dotnet -ErrorAction SilentlyContinue |
        Where-Object { $_.Path -like "*dotnet.exe*" -and $_.StartInfo.Arguments -match "Loader" } |
        ForEach-Object {
            $_.Kill()
            Write-Host "[*] Processus ID $($_.Id) terminée"
        }
    # ---------------------------------------------------------