RUSTGate : Un Leurre de Nuée de Drones Indique un Potentiel de Ciblage du Secteur de la Défense
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Un cheval de Troie d’accès à distance (RAT) basé sur Rust, récemment identifié et nommé RUSTGate, utilise un thème de recherche sur l’essaim de drones comme appât d’ingénierie sociale. Le logiciel malveillant suit une chaîne d’infection en plusieurs étapes impliquant des fichiers LNK malveillants, des téléchargeurs batch et des tâches programmées pour déployer l’implant final. Une fois actif, RUSTGate se concentre sur le vol de fichiers à grande échelle et l’exfiltration via des communications C2 HTTP chiffrées.
Enquête
L’enquête s’est concentrée sur un serveur de transit découvert via Hunt.io qui exposait la chaîne d’infection complète. Les chercheurs ont interagi avec le protocole C2 en utilisant des requêtes synthétiques et ont identifié AES-256-GCM pour l’obfuscation des messages ainsi qu’un backend basé sur Python Flask. L’analyse a également révélé la logique de vol axée sur les fichiers de RUSTGate et les routines de collecte de données automatisées.
Atténuation
Les défenseurs devraient donner la priorité à la surveillance des fichiers LNK suspects qui utilisent rundll32.exe pour lancer des shells de commande. Des contrôles stricts sur les téléchargements vers les répertoires Temp et la surveillance de la création non autorisée de tâches planifiées sont également importants. La segmentation du réseau et la détection du trafic HTTP sortant vers des adresses IP inhabituelles sur des ports non standard peuvent également perturber l’activité C2.
Réponse
Si une activité RUSTGate est détectée, les intervenants doivent immédiatement isoler l’hôte affecté et préserver le fichier upload_state.json pour déterminer quelles données pourraient avoir été compromises. Des captures complètes des paquets du trafic vers les IP C2 identifiées doivent être collectées pour un déchiffrement rétroactif. Les systèmes doivent également être vérifiés pour la tâche planifiée NetworkDiagnostics et les fichiers résiduels dans C:WindowsTemp.
Flux d’attaque
Nous mettons encore à jour cette partie.
Détections
Fichier LNK potentiellement malveillant avec double extension (via cmdline)
Utilisation suspecte de CURL (via cmdline)
Téléchargement de fichier suspect via IP directe (via proxy)
IOCs (HashSha256) pour détecter : RUSTGate : Un leurre d’essaim de drones pointe vers une cible potentielle du secteur de la défense
IOCs (SourceIP) pour détecter : RUSTGate : Un leurre d’essaim de drones pointe vers une cible potentielle du secteur de la défense
IOCs (DestinationIP) pour détecter : RUSTGate : Un leurre d’essaim de drones pointe vers une cible potentielle du secteur de la défense
Détection de la communication Command-and-Control de RUSTGate [Connexion réseau Windows]
Détection des activités d’implantation de RUSTGate [Événement de fichier Windows]
Détection de l’exécution de commandes RUSTGate via Rundll32, Cmd, Curl et PowerShell [Création de processus Windows]
Exécution de Simulation
-
Narration de l’attaque et commandes : L’adversaire a réussi à établir un point d’ancrage sur la station de travail Windows. Pour maintenir le contrôle et recevoir d’autres instructions, le logiciel malveillant RUSTGate doit effectuer un « heartbeat » ou « check-in » avec son serveur Command-and-Control (C2). Le logiciel malveillant est programmé pour se connecter à l’IP codée en dur
5.252.177.210sur le port8090. Pour différencier son trafic de la navigation Web standard, il ajoute un chemin URI spécifique, tel que/register, à la requête. Cette simulation utilise PowerShell pour imiter cette poignée de main réseau exacte afin de valider si la logique de détection du SOC se déclenche sur ce schéma C2 spécifique. -
Script de Test de Régression :
# Script de simulation RUSTGate Check-in C2 # Ce script imite la signature réseau de RUSTGate pour valider la détection. $TargetIP = "5.252.177.210" $TargetPort = "8090" $TargetURI = "/register" $Url = "http://$($TargetIP):$($TargetPort)$($TargetURI)" Write-Host "[*] Simulation de la communication C2 de RUSTGate vers $Url" -ForegroundColor Cyan try { # Utilisation d'Invoke-WebRequest pour générer la télémétrie URI et Port spécifique $Response = Invoke-WebRequest -Uri $Url -Method Get -ErrorAction SilentlyContinue Write-Host "[+] Requête envoyée avec succès (erreur de connexion attendue si l'IP est inactive)." -ForegroundColor Green } catch { Write-Host "[!] Requête terminée (comme prévu pour un point C2 inexistant)." -ForegroundColor Yellow } -
Commandes de Nettoyage :
# Aucun artefact persistant n'est créé par cette simulation. # Simplement confirmer la terminaison du processus. Write-Host "[*] Simulation complète. Aucun nettoyage requis." -ForegroundColor White