SOC Prime Bias: Moyen

27 May 2026 15:51 UTC

BlackToad utilise la manipulation de réseau dans une charge utile AutoIt

Author Photo
SOC Prime Team linkedin icon Suivre
BlackToad utilise la manipulation de réseau dans une charge utile AutoIt
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

JUMPSEC a découvert une campagne de phishing qui délivre une charge utile Remcos RAT dissimulée à l’intérieur d’un crypteur AutoIt personnalisé. La chaîne d’infection utilise un script VBS pour exécuter ipconfig /release suivi de ipconfig /renew, perturbant brièvement la connectivité réseau comme moyen de se soustraire à la détection. Les chercheurs ont lié la campagne à l’écosystème de la cybercriminalité nigériane, avec une infrastructure reposant sur des domaines DNS dynamiques hébergés derrière des connexions de fournisseurs d’accès mobile.

Enquête

L’enquête a suivi l’email malveillant, décompressé l’archive auto-extractible WinRAR intégrée, et identifié un chargeur VBS qui lançait un interpréteur AutoIt déguisé. Le script AutoIt a ensuite décrypté et exécuté l’implant Remcos, tandis que la configuration récupérée a exposé les domaines de commande et de contrôle, la valeur mutuelle et une clé de persistance Run. Les chercheurs ont cartographié l’infrastructure de support à trois domaines DNS dynamiques et un ensemble rotatif d’adresses IP nigérianes.

Atténuation

Les organisations doivent bloquer les domaines DNS dynamiques identifiés et les plages d’IP associées, surveiller la ipconfig /release and ipconfig /renew séquence suspecte et détecter les scripts AutoIt ou VBS générant cmd.exe. Des contrôles d’exécution rigoureux devraient également être appliqués aux fichiers utilisant des extensions doubles trompeuses, tandis que les entrées Run de registre telles que WindowsUpdate doivent être surveillées pour détecter les abus.

Réponse

Si cette activité est détectée, isolez immédiatement le point de terminaison affecté, terminez le processus Remcos, retirez la clé Run malveillante utilisée pour la persistance, et effectuez un examen médico-légal complet pour un vol d’identifiants ou une activité de suivi. Le contenu de détection doit également être mis à jour pour identifier la technique de coupure réseau et les motifs de nom de fichier spécifiques liés à la campagne.

graph TB %% Définitions des classes classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef data fill:#ccffcc %% Nœuds email_phishing[« <b>Action</b> – <b>T1204.001 Exécution utilisateur : lien malveillant</b><br/>La victime reçoit un e-mail contenant une image avec un lien MediaFire malveillant. »] class email_phishing action download_payload[« <b>Action</b> – <b>T1566.001 Phishing : pièce jointe de spearphishing</b><br/>La victime télécharge un exécutable WinRAR SFX déguisé en .pdf.scr. »] class download_payload action file_double_ext[« <b>Action</b> – <b>T1036.007 Masquage : double extension de fichier</b><br/>Le fichier nommé <i>invoice.pdf.scr</i> masque un exécutable .scr. »] class file_double_ext action script_vbs[« <b>Action</b> – <b>T1059.005 Interpréteur de commandes et scripts : Visual Basic</b><br/>Le script VBS (flvs.vbe) construit une chaîne cmd.exe et exécute des commandes. »] class script_vbs action tool_autoi[« <b>Outil</b> – <b>Nom</b> : Interpréteur AutoIt (renommé en .xls)<br/><b>Objectif</b> : Exécute un script AutoIt malveillant. »] class tool_autoi tool script_autoi_obf[« <b>Action</b> – <b>T1059.010 Interpréteur de commandes et scripts : AutoIt/AutoHotKey</b><br/>Un script AutoIt fortement obfusqué est exécuté. »] class script_autoi_obf action obfusc_junk[« <b>Action</b> – <b>T1027.016 Fichiers ou informations obfusqués : insertion de code inutile</b><br/>Le script contient 88 MB de blocs de commentaires sans signification. »] class obfusc_junk action obfusc_stripped[« <b>Action</b> – <b>T1027.008 Fichiers ou informations obfusqués : payloads allégés</b><br/>Payload empaqueté dans de grandes données de remplissage avec encodage hexadécimal personnalisé. »] class obfusc_stripped action malware_remcos[« <b>Malware</b> – <b>Nom</b> : Remcos RAT<br/><b>Fonction</b> : Accès et contrôle à distance. »] class malware_remcos malware c2_dns[« <b>Action</b> – <b>T1071.004 Protocole de couche application : DNS</b><br/>Communique avec des serveurs C2 via des noms d’hôtes Dynamic DNS sur TLS chiffré. »] class c2_dns action persistence_autostart[« <b>Action</b> – <b>T1547.014 Exécution automatique au démarrage ou à l’ouverture de session : Active Setup</b><br/>Crée la clé de registre HKCU\Software\Microsoft\Windows\CurrentVersion\Run\WindowsUpdate. »] class persistence_autostart action trusted_util[« <b>Action</b> – <b>T1127 Exécution proxy via utilitaires de développement approuvés</b><br/>Utilise l’interpréteur AutoIt légitime comme utilitaire approuvé pour exécuter du code malveillant. »] class trusted_util action deobfuscation[« <b>Action</b> – <b>T1140 Désobfusquer/décoder des fichiers ou informations</b><br/>Les chercheurs décodent des PE encodés en hexadécimal personnalisé et des configurations Remcos chiffrées avec RC4. »] class deobfuscation action %% Connexions email_phishing –>|mène à| download_payload download_payload –>|contient| file_double_ext file_double_ext –>|déclenche| script_vbs script_vbs –>|charge| tool_autoi tool_autoi –>|exécute| script_autoi_obf script_autoi_obf –>|inclut| obfusc_junk script_autoi_obf –>|inclut| obfusc_stripped script_autoi_obf –>|lance| malware_remcos malware_remcos –>|utilise| c2_dns malware_remcos –>|établit| persistence_autostart tool_autoi –>|utilisé_comme| trusted_util obfusc_junk –>|facilite| deobfuscation obfusc_stripped –>|facilite| deobfuscation

Flux d’attaque

Exécution de simulation

Prérequis : Le contrôle de prévol de télémétrie & amp; Baseline 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 viser à générer la télémétrie exacte attendue par la logique de détection. Les exemples abstraits ou non liés mèneront à une mauvaise interprétation.

  • Narration de l’attaque & amp; Commandes :

    1. Objectif : Établir un canal C2 avec l’implant Remcos BlackToad en utilisant l’un des domaines DDNS malveillants connus sur le port codé en dur 50240.
    2. Établir étape par étape :
      • Résoudre le domaine DDNS malveillant choisi (pmitm.ddns.net).
      • Ouvrez une socket TCP vers l’IP résolue sur le port 50240.
      • Envoyez une charge utile minimale de « battement de cœur » pour émuler la poignée de main initiale de l’implant.
      • Gardez la socket ouverte pendant 30 secondes pour assurer que le pare-feu consigne la connexion sortante.
    3. La connexion sortante correspond exactement à la règle Sigma destination.ip liste et destination.port critères, produisant un événement détectable par le pare-feu.
  • Script de test de régression :

     # Simulation de communication C2 BlackToad (PowerShell)
      $c2Domain = "pmitm.ddns.net"      # un des domaines listés dans la règle
      $c2Port   = 50240
    
      try {
          # Résoudre le domaine en IP (ajoute la télémétrie de la requête DNS)
          $ip = [System.Net.Dns]::GetHostAddresses($c2Domain) |
                Where-Object { $_.AddressFamily -eq 'InterNetwork' } |
                Select-Object -First 1
    
          if (-not $ip) { throw "Impossible de résoudre $c2Domain" }
    
          Write-Host "Résolu $c2Domain à $($ip.IPAddressToString). Connexion..."
    
          # Ouvrir une connexion TCP (génère un journal de pare-feu sortant)
          $client = New-Object System.Net.Sockets.TcpClient
          $client.Connect($ip, $c2Port)
    
          # Envoyer un simple battement de cœur (hex 0x01)
          $stream = $client.GetStream()
          $payload = [byte[]](0x01)
          $stream.Write($payload, 0, $payload.Length)
    
          Write-Host "Battement de cœur envoyé. Garder la connexion ouverte pendant 30 secondes..."
          Start-Sleep -Seconds 30
    
          $stream.Close()
          $client.Close()
          Write-Host "Connexion fermée proprement."
      }
      catch {
          Write-Error "Échec de la simulation : $_"
      }
  • Commandes de nettoyage :

     # Assurez-vous que toutes les sockets restantes sont fermées
      Get-NetTCPConnection -RemotePort 50240 -State Established |
          ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }
      # Optionnel : Videz le cache DNS pour retirer l'entrée DDNS résolue
      ipconfig /flushdns
      Write-Host "Nettoyage terminé."