SOC Prime Bias: Moyen

22 May 2026 12:42 UTC

À l’intérieur du Banana RAT de SHADOW-WATER-063 : Du serveur de compilation à la fraude bancaire

Author Photo
SOC Prime Team linkedin icon Suivre
À l’intérieur du Banana RAT de SHADOW-WATER-063 : Du serveur de compilation à la fraude bancaire
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Banana RAT est un cheval de Troie bancaire utilisé par l’acteur malveillant à motivations financières SHADOW-WATER-063 pour voler des identifiants et effectuer des transactions frauduleuses ciblant les banques brésiliennes. Le malware est diffusé via un fichier batch malveillant et repose sur une obfuscation en couches avec PowerShell, une exécution en mémoire et un chiffrement AES-256 pour éviter la détection. Il maintient sa persistance grâce à une tâche planifiée cachée et communique avec son serveur de commande et de contrôle via HTTP et TLS. La campagne propose également une capacité d’interception de code QR Pix visant l’écosystème de paiement instantané du Brésil.

Investigation

Les analystes MDR de Trend Micro ont obtenu à la fois des outils côté serveur et des charges utiles côté client, leur permettant de reconstituer la chaîne complète d’attaque d’un crypteur polymorphique basé sur FastAPI au stager PowerShell et à l’étape finale de compilation C# en mémoire. Leur analyse a révélé l’infrastructure de l’attaquant, le flux de travail d’obfuscation et un ensemble de capacités incluant le streaming d’écran, la manipulation d’entrées et l’altération de code QR. L’opération a été liée à l’écosystème plus large des chevaux de Troie bancaires Tetrade, bien que les chercheurs aient noté plusieurs différences architecturales.

Atténuation

Les défenseurs devraient bloquer la requête HTTP GET initiale vers le point de livraison du logiciel malveillant au niveau de la périphérie du réseau, surveiller le comportement spécifique de la tâche planifiée cachée et appliquer des contrôles stricts sur PowerShell et csc.exe l’exécution. Les défenses des terminaux devraient également détecter l’activité sans fichier de PowerShell, le chargement de DLL en mémoire, et la création de fichiers dans des chemins trompeurs tels que ProgramDataMicrosoftDiagnosisETW. La formation à la sensibilisation des utilisateurs devrait également aborder les fichiers batch malveillants et les liens de phishing diffusés via des canaux tels que WhatsApp.

Réponse

Si une activité de Banana RAT est détectée, isolez immédiatement le point de terminaison affecté, terminez le processus PowerShell malveillant, supprimez la tâche planifiée cachée et supprimez tous les fichiers déposés des répertoires publics et masqués. Les enquêteurs devraient collecter la ligne de commande PowerShell complète, préserver tout artefact de compilation C#, et examiner le trafic réseau connecté aux domaines de commande et contrôle. Les identifiants exposés doivent être réinitialisés et les équipes financières doivent être alertées pour surveiller les signes d’activité bancaire frauduleuse.

"graph TB %% Class definitions classDef technique fill:#99ccff %% Node definitions step_A["<b>Technique</b> – <b>T1204.001 Exécution Utilisateur</b> : Lien malveillant délivré via WhatsApp ou email pour télécharger fichier batch."] class step_A technique step_B["<b>Technique</b> – <b>T1027.014 Fichiers Obfusqués</b> : Le fichier batch exécute le code PowerShell obfusqué."] class step_B technique step_C["<b>Technique</b> – <b>T1027.016 Insertion de Code Inutile</b> : Neuf couches d’obfuscation personnalisées, renommage de variables, XOR, AES."] class step_C technique step_D["<b>Technique</b> – <b>T1036.008 Mascarade</b> : Dépose msedge.txt dans Documents Publics imitant le chemin ETW de Microsoft."] class step_D technique step_E["<b>Technique</b> – <b>T1564.005 Cacher les Artéfacts</b> : Écrit un fichier malveillant dans ProgramData Microsoft Diagnosis ETW pour se fondre avec les fichiers légitimes."] class step_E technique step_F["<b>Technique</b> – <b>T1620 Chargement de Code Réfléchi</b> : Utilise csc.exe pour compiler des DLLs C# en mémoire."] class step_F technique step_G["<b>Technique</b> – <b>T1134.001 Imitation de Jeton</b> : Duplique le jeton SYSTEM et lance PowerShell en session interactive."] class step_G technique step_H["<b>Technique</b> – <b>T1134.002 Création de Processus avec Jeton</b> : Lance un processus avec le jeton dupliqué."] class step_H technique step_I["<b>Technique</b> – <b>T1571 Port Non-Standard</b> : Communication C2 sur le port HTTPS 443 utilisant le protocole personnalisé AES-256-CBC."] class step_I technique step_J["<b>Technique</b> – <b>T1048.002 Exfiltration via Protocole Alternatif</b> : Exfiltration de données chiffrées utilisant un protocole non-C2 asymétrique chiffré."] class step_J technique step_K["<b>Technique</b> – <b>T1140 Déobfuscation Décodage</b> : PowerShell décrypte la charge utile enveloppée dans AES en mémoire."] class step_K technique step_L["<b>Technique</b> – <b>T1659 Injection de Contenu</b> : PowerShell utilise Net.WebClient ou Start-BitsTransfer pour récupérer la charge utile du serveur web de l’attaquant."] class step_L technique step_M["<b>Technique</b> – <b>T1566 Phishing</b> : Lien malveillant délivré via WhatsApp/email pour télécharger fichier batch."] class step_M technique %% Connections step_A –>|conduit à| step_B step_B –>|conduit à| step_C step_C –>|conduit à| step_D step_D –>|conduit à| step_E step_E –>|conduit à| step_F step_F –>|conduit à| step_G step_G –>|conduit à| step_H step_H –>|conduit à| step_I step_I –>|conduit à| step_J step_J –>|conduit à| step_K step_K –>|conduit à| step_L step_L –>|conduit à| step_M "

Flux d’Attaque

Exécution de Simulation

Prérequis : La Vérification Préalable de Télémetrie & de Base doit avoir réussi.

Justification : Cette section détaille l’exécution précise de la technique de l’adversaire (communication C2) conçue pour déclencher la règle de détection. Les commandes et le récit reflètent directement les TTPs identifiés et visent à générer la télémétrie exacte attendue par la logique de détection.

  • Narratif & Commandes d’Attaque :
    L’acteur malveillant a déployé le Banana RAT sur le point de terminaison de la victime. Pour maintenir la persistance et recevoir des commandes, le RAT initie une communication sortante vers son infrastructure C2 codée en dur :

    1. Balise HTTP (IP 24.199.90.58:80) : Ouvre une socket TCP brute et envoie une requête minimale HTTP GET.
    2. Balise HTTPS (IP 162.141.111.227:443) : Utilise Invoke-WebRequest avec TLS au serveur C2.
    3. Balise Basée sur le Domaine : Effectue une recherche DNS pour c.windowsk-cdn.com, que le C2 surveille pour le volume de requêtes.

    Ces trois actions sont exécutées de manière séquentielle pour maximiser les chances de taper au moins une sélection dans la règle Sigma.

  • Script de Test de Régression :

    # -------------------------------------------------
    # Simulation de Communication C2 Banana RAT (TC-20260522-A1B2C)
    # -------------------------------------------------
    # 1. Balise HTTP vers 24.199.90.58:80
    try {
        $httpClient = New-Object System.Net.Sockets.TcpClient("24.199.90.58",80)
        $stream = $httpClient.GetStream()
        $writer = New-Object System.IO.StreamWriter($stream)
        $writer.WriteLine("GET / HTTP/1.1")
        $writer.WriteLine("Host: 24.199.90.58")
        $writer.WriteLine("Connection: Close")
        $writer.WriteLine()
        $writer.Flush()
        $reader = New-Object System.IO.StreamReader($stream)
        $response = $reader.ReadToEnd()
        $writer.Dispose()
        $reader.Dispose()
        $httpClient.Close()
    } catch { Write-Error "Échec de la balise HTTP : $_" }
    
    # 2. Balise HTTPS vers 162.141.111.227:443
    try {
        Invoke-WebRequest -Uri "https://162.141.111.227" -UseBasicParsing -TimeoutSec 10
    } catch { Write-Error "Échec de la balise HTTPS : $_" }
    
    # 3. Requête DNS pour domaine malveillant
    try {
        Resolve-DnsName -Name "c.windowsk-cdn.com" -Type A -ErrorAction Stop
    } catch { Write-Error "Échec de la requête DNS : $_" }
    
    # Fin de la simulation
  • Commandes de Nettoyage :

    # -------------------------------------------------
    # Nettoyage - supprimer les sockets en attente ou les fichiers temporaires
    # -------------------------------------------------
    # Aucun artéfact persistant n'est créé par la simulation.
    # Assurez-vous qu'aucune connexion réseau résiduelle ne reste :
    Get-NetTCPConnection -RemotePort 80,443 `
        | Where-Object {$_.RemoteAddress -in @("24.199.90.58","162.141.111.227")} `
        | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }
    # Vider le cache DNS pour éviter d'affecter les tests suivants
    Clear-DnsClientCache