Des logiciels factices sur GitHub et SourceForge distribuent Deno RAT par Gabriele Orini
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Les acteurs de la menace distribuent de faux installateurs et plug-ins pour des logiciels largement utilisés via GitHub et SourceForge pour diffuser une porte dérobée basée sur Deno connue sous le nom de DinDoor. Le malware installe l’environnement d’exécution Deno via Scoop ou WinGet, puis lance un RAT JavaScript capable de voler des données, d’exécuter des commandes à distance et d’activer le streaming vidéo peer-to-peer. Des packages MSI malveillants et des scripts PowerShell sont utilisés pour démarrer la chaîne d’infection, tandis que le trafic de commande et de contrôle est transmis sur HTTP ou WebSocket. La campagne abuse également de chaînes YouTube compromises pour orienter les victimes vers les dépôts malveillants.
Enquête
Les chercheurs ont reconstitué la séquence complète de l’infection, en commençant par curl des commandes qui ont téléchargé un fichier MSI, suivies de scripts d’installation qui ont déployé Scoop, WinGet et Deno avant d’exécuter le chargeur JavaScript DinDoor. Leur analyse a documenté les capacités du RAT, y compris la reconnaissance du système, le vol de navigateurs et de portefeuilles crypto, VNC via WebSocket, et le streaming peer-to-peer basé sur Edge. L’équipe a également extrait des indicateurs tels que des domaines, des URLs, des adresses IP, et des artefacts en ligne de commande pour soutenir la détection et la chasse aux menaces.
Atténuation
Les organisations devraient télécharger des logiciels uniquement à partir des sites Web officiels des fournisseurs et vérifier les signatures numériques avant de lancer tout installateur. Les équipes de sécurité devraient surveiller l’utilisation inhabituelle de Scoop et WinGet pour installer Deno, ainsi que le déploiement inattendu de logiciels basés sur MSI. Le trafic sortant vers les domaines et adresses IP malveillants identifiés devrait être bloqué, et les activités PowerShell ou curl téléchargeant et exécutant des fichiers à partir de sources non fiables devraient être étroitement inspectées.
Réponse
Les défenseurs devraient alerter sur msiexec lançant des fichiers provenant d’URL GitHub ou SourceForge suspectes, sur les clés de registre Run qui démarrent deno.exe, et sur la communication réseau avec l’infrastructure de commande et de contrôle connue. Les hôtes affectés devraient subir un examen médico-légal pour localiser les scripts déposés, l’environnement d’exécution Deno, et tout mécanisme de persistance. Les systèmes compromis devraient être isolés immédiatement, et toutes les installations Deno non autorisées devraient être supprimées.
"graph TB %% Class definitions classDef technique fill:#99ccff classDef tool fill:#ffcc99 classDef operator fill:#ff9900 %% Attack steps as technique nodes step1_malicious_link["<b>Technique</b> – <b>T1204.001 Exécution par l’utilisateur : Lien malveillant</b><br/>La victime clique sur un lien YouTube malveillant qui redirige vers un projet GitHub ou SourceForge contrefait"] class step1_malicious_link technique step1_content_injection["<b>Technique</b> – <b>T1659 Injection de contenu</b><br/>Les chaînes YouTube compromises injectent des URLs malveillantes dans les descriptions de vidéo ou les commentaires"] class step1_content_injection technique step2_msiexec["<b>Technique</b> – <b>T1218.007 Exécution de proxy binaire système : Msiexec</b><br/>Commande télécharge un fichier MSI et l’exécute via msiexec"] class step2_msiexec technique step3_installer_pkg["<b>Technique</b> – <b>T1546.016 Exécution déclenchée par événement : Packages d’installation</b><br/>Script PowerShell utilise Scoop ou WinGet pour installer l’environnement d’exécution Deno"] class step3_installer_pkg technique step4_logon_script["<b>Technique</b> – <b>T1037.001 Scripts d’initialisation de démarrage ou de connexion : Script de connexion</b><br/>Crée une clé de registre Run qui lance la porte dérobée Deno à la connexion"] class step4_logon_script technique step5_reflective_load["<b>Technique</b> – <b>T1620 Chargement de code réfléchi</b><br/>La porte dérobée exécute un evalu2011loop qui récupère et exécute du code JavaScript entièrement en mémoire"] class step5_reflective_load technique step6_c2["<b>Technique</b> – <b>T1102 Service Web</b> et <b>T1102.002 Communication bidirectionnelle</b><br/>Utilise des points de terminaison HTTP et un canal VNC WebSocket personnalisé pour la commande et le contrôle"] class step6_c2 technique step7_browser_creds["<b>Technique</b> – <b>T1555.003 Informations d’identification provenant des magasins de mots de passe : Navigateurs Web</b><br/>Le voleur extrait les mots de passe sauvegardés du navigateur"] class step7_browser_creds technique step7_input_capture["<b>Technique</b> – <b>T1056 Capture d’entrée</b><br/>Keylogging et capture de formulaire pour obtenir des informations d’identification"] class step7_input_capture technique step7_clipboard["<b>Technique</b> – <b>T1115 Données du presse-papiers</b><br/>Collecte le contenu du presse-papiers qui peut contenir des données sensibles"] class step7_clipboard technique step8_browser_discovery["<b>Technique</b> – <b>T1217 Découverte des informations du navigateur</b><br/>Collecte des fichiers de portefeuilles de crypto-monnaies, des données de navigateur et des captures d’écran"] class step8_browser_discovery technique step9_exfil["<b>Technique</b> – <b>T1011 Exfiltration via un autre moyen réseau</b><br/>Transmet les données collectées via les mêmes canaux HTTP/WebSocket"] class step9_exfil technique step10_process_injection["<b>Technique</b> – <b>T1055.005 Injection de processus : Stockage local de fil</b><br/>Injecte du code malveillant dans des processus légitimes à l’aide de TLS"] class step10_process_injection technique step11_indirect_exec["<b>Technique</b> – <b>T1202 Exécution indirecte de commande</b><br/>Profite de msiexec pour exécuter en proxy des charges utiles supplémentaires"] class step11_indirect_exec technique %% Optional tool nodes tool_msiexec["<b>Outil</b> – <b>Nom</b> : msiexec<br/><b>Description</b> : Exécutable de Windows Installer utilisé pour l’exécution proxy"] class tool_msiexec tool tool_powershell["<b>Outil</b> – <b>Nom</b> : PowerShell<br/><b>Description</b> : Environnement de script utilisé pour piloter les packages d’installation"] class tool_powershell tool tool_deno["<b>Outil</b> – <b>Nom</b> : Deno<br/><b>Description</b> : Environnement d’exécution hébergeant la porte dérobée JavaScript"] class tool_deno tool %% Connections showing the attack flow step1_malicious_link –>|conduit à| step2_msiexec step1_content_injection –>|soutient| step2_msiexec step2_msiexec –>|utilise| tool_msiexec step2_msiexec –>|déclenche| step3_installer_pkg step3_installer_pkg –>|utilise| tool_powershell step3_installer_pkg –>|installe| tool_deno step3_installer_pkg –>|active| step4_logon_script step4_logon_script –>|établit| step5_reflective_load step5_reflective_load –>|fournit| step6_c2 step6_c2 –>|facilite| step7_browser_creds step6_c2 –>|facilite| step7_input_capture step6_c2 –>|facilite| step7_clipboard step7_browser_creds –>|alimente| step8_browser_discovery step7_input_capture –>|alimente| step8_browser_discovery step7_clipboard –>|alimente| step8_browser_discovery step8_browser_discovery –>|transmis via| step9_exfil step9_exfil –>|utilise canal de| step6_c2 step5_reflective_load –>|active| step10_process_injection step10_process_injection –>|escalade les privilèges pour| step11_indirect_exec step11_indirect_exec –>|exécute| step2_msiexec class step1_malicious_link,step1_content_injection,step2_msiexec,step3_installer_pkg,step4_logon_script,step5_reflective_load,step6_c2,step7_browser_creds,step7_input_capture,step7_clipboard,step8_browser_discovery,step9_exfil,step10_process_injection,step11_indirect_exec technique class tool_msiexec,tool_powershell,tool_deno tool "
Flux d’attaque
Détections
LOLBAS Conhost (via cmdline)
Voir
Commandement et contrôle suspect par requête DNS de domaine de premier niveau inhabituel (TLD) (via DNS)
Voir
IOC (SourceIP) pour détecter : Faux logiciels sur GitHub et SourceForge distribuent Deno RAT par Gabriele Orini
Voir
IOC (DestinationIP) pour détecter : Faux logiciels sur GitHub et SourceForge distribuent Deno RAT par Gabriele Orini
Voir
Détection de la communication C2 du RAT DinDoor [Connexion réseau Windows]
Voir
Détection de la distribution du RAT Deno via de faux installateurs [Création de processus Windows]
Voir
Exécution de PowerShell avec fenêtre cachée et stratégie d’exécution contournée [PowerShell Windows]
Voir
Exécution de simulation
Prérequis : La vérification préalable de la télémétrie et de la ligne de base doit avoir réussi.
Raisonnement : 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 directement refléter les TTPs identifiés et viser à générer la télémétrie exacte attendue par la logique de détection.
-
Narratif de l’attaque et commandes :
Un attaquant a réussi à obtenir un point d’appui initial via un script CMD malveillant livré dans une pièce jointe de phishing. Pour maintenir la discrétion, le script lance PowerShell avec une fenêtre cachée, désactive la stratégie d’exécution, et exécute une charge utile encodée en base64 qui télécharge et exécute une charge utile de seconde étape. La ligne de commande exacte correspond aux trois sous-chaînes signalées par la règle, garantissant la détection.-
Étape 1 – Lanceur CMD (simulé par le testeur) :
@echo off start "" powershell.exe -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -EncodedCommand %payload% -
Étape 2 – Charge utile PowerShell (encodé en base64, bénin pour le test) :
$cmd = 'Write-Output "Simulation malveillante exécutée"' $bytes = [System.Text.Encoding]::Unicode.GetBytes($cmd) $b64 = [Convert]::ToBase64String($bytes) echo $b64 # Insérez cette valeur en tant que %payload% dans le fichier batch
-
-
Script de test de régression : Le script ci-dessous automatise l’ensemble du flux, générant la commande encodée, lançant PowerShell avec les drapeaux requis, puis s’arrêtant brièvement pour permettre à la SIEM d’ingérer l’événement.
# ------------------------------------------------- # Test de régression – PowerShell caché + Bypass EP # ------------------------------------------------- # 1) Construire une charge utile inoffensive (Write-Output) $payload = 'Write-Output "Simulation malveillante exécutée"' # 2) Encoder la charge utile en base64 (encodage Unicode, tel que PowerShell l'attend) $bytes = [System.Text.Encoding]::Unicode.GetBytes($payload) $b64 = [Convert]::ToBase64String($bytes) # 3) Lancer PowerShell avec le jeu de drapeaux exact requis par la règle Sigma $psCmd = @( 'powershell.exe', '-NoProfile', '-ExecutionPolicy', 'Bypass', '-WindowStyle', 'Hidden', '-EncodedCommand', $b64 ) -join ' ' Write-Host "Exécution :`n$psCmd" Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-EncodedCommand",$b64 -WindowStyle Hidden # 4) Attendre la propagation des logs (ajuster si nécessaire) Start-Sleep -Seconds 10 Write-Host "Simulation complète – vérifier détection SIEM." -
Commandes de nettoyage : Supprimer tous les fichiers temporaires (aucun créé ici) et s’assurer qu’aucun processus PowerShell persistant ne reste.
# Terminer tout processus PowerShell errant lancé par le test (hors session actuelle) Get-Process -Name powershell | Where-Object { $_.Id -ne $PID } | Stop-Process -Force Write-Host "Nettoyage terminé."