SOC Prime Bias: Critique

26 Mar 2026 15:16

GlassWorm Cache un RAT dans une Extension Chrome Malveillante

Author Photo
Ruslan Mikhalov Chef de la Recherche sur les Menaces chez SOC Prime linkedin icon Suivre
GlassWorm Cache un RAT dans une Extension Chrome Malveillante
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Résumé

GlassWorm abuse des paquets compromis npm, PyPI, GitHub et OpenVSX pour distribuer une plateforme de malware en plusieurs étapes. Sa première étape lance un chargeur qui interroge un mémo de blockchain Solana pour obtenir des adresses de commande-et-contrôle, puis télécharge une charge utile chiffrée. La deuxième étape vole des identifiants, des fichiers de portefeuille de cryptomonnaies et des détails de l’hôte, tandis que la troisième étape déploie un RAT persistant basé sur WebSocket ainsi qu’une extension Chrome malveillante conçue pour capturer les données du navigateur. L’opération vise principalement les développeurs et les détenteurs de cryptomonnaies.

Enquête

Les analystes ont lié la compromission initiale à des scripts de pré-installation malveillants et à des chargeurs basés sur l’Unicode intégrés dans des paquets autrement légitimes. Ils ont découvert deux adresses de portefeuille Solana agissant comme des emplacements de dépôt pour les URL C2 et ont vu le chargeur interroger plusieurs points de terminaison RPC Solana. Le RAT de la troisième étape repose sur des nœuds de démarrage DHT et revient à la récupération basée sur Solana si la résolution DHT échoue. Les chercheurs ont également identifié l’infrastructure d’exfiltration et cartographié l’extension Chrome malveillante utilisée dans la campagne.

Atténuation

Les organisations devraient appliquer la numérisation de la chaîne d’approvisionnement pour npm et d’autres écosystèmes de paquets, vérifier l’intégrité des paquets et la confiance des éditeurs, et bloquer les IP et domaines malveillants connus. Les défenses des points de terminaison devraient surveiller les runtimes Node.js malveillants, les tâches planifiées inattendues et les clés de registre Run suspectes. Les stockages de crédences des navigateurs devraient être renforcés, et les utilisateurs de cryptomonnaies devraient adopter la vérification des portefeuilles matériels lorsque cela est possible.

Réponse

Si GlassWorm est détecté, isolez l’endpoint affecté, arrêtez les processus malveillants et supprimez tous les fichiers déposés et mécanismes de persistance tels que les tâches planifiées. Révoquez les jetons npm compromis, remplacez les crédences de portefeuilles de cryptomonnaies et réinitialisez les mots de passe stockés dans le navigateur. Effectuez une revue médico-légale complète des journaux des hôtes pour retracer l’exécution du chargeur et mettez à jour les contrôles de sécurité pour réduire le risque de compromissions futures de la chaîne d’approvisionnement.

"graph TB %% Class Definitions classDef technique fill:#ffcc99 classDef persistence fill:#99ffcc classDef exfil fill:#ff9999 classDef credential fill:#ccccff classDef execution fill:#ffdb4d classDef collection fill:#c2f0c2 classDef command fill:#ffd699 %% Nodes – Attack Steps step1_initial_access["<b>Technique</b> – <b>T1195.001 Compromission de la chaîne d’approvisionnement</b><br/>Les paquets npm/pyPI malveillants et les dépôts GitHub compromis livrent un chargeur."] class step1_initial_access technique step2_obfuscation["<b>Technique</b> – <b>T1027 Fichiers ou informations obfusqués</b><br/>Le code du chargeur est obfusqué et compilé après livraison (T1027.004)."] class step2_obfuscation execution step3_guardrails["<b>Technique</b> – <b>T1480 Gardes d’exécution</b><br/>Le chargeur vérifie la locale, la langue et le fuseau horaire et arrête l’exécution en dehors des régions russes ciblées."] class step3_guardrails execution step4_dead_drop["<b>Technique</b> – <b>T1102.001 Résolveur de dépôt à distance</b><br/>Le chargeur interroge les mémos de transactions blockchain Solana pour obtenir l’URL C2."] class step4_dead_drop command step5_cred_files["<b>Technique</b> – <b>T1552.001 Crédences dans les fichiers</b><br/>Récupère .npmrc, NPM_TOKEN, configurations des fournisseurs cloud et clés privées SSH."] class step5_cred_files credential step6_browser_creds["<b>Technique</b> – <b>T1555.003 Crédences des navigateurs Web</b><br/>Extrait les mots de passe, cookies, données de saisie automatique et cartes de paiement de Chrome, Edge, Firefox ; contourne le chiffrement lié à l’application."] class step6_browser_creds credential step7_private_keys["<b>Technique</b> – <b>T1552.004 Clefs privées</b><br/>Copie les fichiers de portefeuilles de cryptomonnaies et les captures d’écran des phrases de récupération."] class step7_private_keys credential step8_exfil_webhook["<b>Technique</b> – <b>T1567.004 Exfiltration via Webhook</b><br/>Compresse les données préparées et les envoie via HTTP contrôlées par l’attaquant."] class step8_exfil_webhook exfil step9_persistence_rc["<b>Technique</b> – <b>T1037.004 Scripts RC</b><br/>Crée une entrée HKCUSoftwareMicrosoftWindowsCurrentVersionRun et une tâche planifiée pour lancer PowerShell au démarrage."] class step9_persistence_rc persistence step10_wmi_event["<b>Technique</b> – <b>T1546.003 Inscription à l’événement WMI</b><br/>Enregistre l’événement WMI pour détecter les portefeuilles matériels USB et lancer une interface de hameçonnage."] class step10_wmi_event persistence step11_ps_profile["<b>Technique</b> – <b>T1546.013 Profil PowerShell</b><br/>Ajoute la persistance via un script de profil PowerShell."] class step11_ps_profile persistence step12_vnc["<b>Technique</b> – <b>T1021.005 VNC</b><br/>Charge le module natif VNC caché (HVNC) pour un bureau à distance invisible."] class step12_vnc command step13_multi_stage["<b>Technique</b> – <b>T1104 Canaux multi‑étapes</b><br/>Établit un canal Socket.IO WebSocket bidirectionnel pour les commandes C2."] class step13_multi_stage command step14_input_injection["<b>Technique</b> – <b>T1674 Injection d’entrée</b><br/>Exécute un JavaScript fourni par l’attaquant via eval() dans le RAT."] class step14_input_injection execution step15_keylog_clip["<b>Technique</b> – <b>T1056.001 Keylogging</b> & <b>T1115 Données du presse-papier</b><br/>L’extension Chrome malveillante enregistre les frappes, capture le texte du presse-papier et prend des captures d’écran."] class step15_keylog_clip collection step16_browser_hijack["<b>Technique</b> – <b>T1185 Détournement de session de navigateur</b><br/>L’extension récolte les cookies et les jetons de session et peut rediriger les onglets actifs vers des URL contrôlées par l’attaquant."] class step16_browser_hijack collection %% Connections u2013 Attack Flow step1_initial_access –>|leads to| step2_obfuscation step2_obfuscation –>|leads to| step3_guardrails step3_guardrails –>|leads to| step4_dead_drop step4_dead_drop –>|leads to| step5_cred_files step5_cred_files –>|leads to| step6_browser_creds step6_browser_creds –>|leads to| step7_private_keys step7_private_keys –>|leads to| step8_exfil_webhook step8_exfil_webhook –>|leads to| step9_persistence_rc step9_persistence_rc –>|leads to| step10_wmi_event step10_wmi_event –>|leads to| step11_ps_profile step11_ps_profile –>|leads to| step12_vnc step12_vnc –>|leads to| step13_multi_stage step13_multi_stage –>|leads to| step14_input_injection step14_input_injection –>|leads to| step15_keylog_clip step15_keylog_clip –>|leads to| step16_browser_hijack "

Flux d’attaque

Détections

Exécution de binaire NodeJS depuis un emplacement inhabituel (via cmdline)

Équipe SOC Prime
26 mars 2026

Tentative de communication de domaine d’IP Lookup possible (via dns)

Équipe SOC Prime
26 mars 2026

Points de persistance possibles [ASEPs – Hive logiciel/NTUSER] (via registry_event)

Équipe SOC Prime
26 mars 2026

Tentative d’abus possible d’Ethereum Publicnode comme canal C2 (via dns_query)

Équipe SOC Prime
26 mars 2026

IOC (DestinationIP) à détecter : GlassWorm cache un RAT dans une extension Chrome malveillante

Règles AI SOC Prime
26 mars 2026

IOC (HashMd5) à détecter : GlassWorm cache un RAT dans une extension Chrome malveillante

Règles AI SOC Prime
26 mars 2026

IOC (HashSha256) à détecter : GlassWorm cache un RAT dans une extension Chrome malveillante

Règles AI SOC Prime
26 mars 2026

IOC (HashSha1) à détecter : GlassWorm cache un RAT dans une extension Chrome malveillante

Règles AI SOC Prime
26 mars 2026

IOC (SourceIP) à détecter : GlassWorm cache un RAT dans une extension Chrome malveillante

Règles AI SOC Prime
26 mars 2026

IOC (Emails) à détecter : GlassWorm cache un RAT dans une extension Chrome malveillante

Règles AI SOC Prime
26 mars 2026

Détection de GlassWorm RAT et d’exfiltration de données [Connexion réseau Windows]

Règles AI SOC Prime
26 mars 2026

Détection d’exécution de binaire de phishing Ledger/Trezor [Création de processus Windows]

Règles AI SOC Prime
26 mars 2026

Exécution de simulation

Condition préalable : le contrôle pré-vol de télémétrie et 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 refléter directement les TTP identifiés et viser à générer la télémétrie exacte attendue par la logique de détection.

  • Narratif & Commandes de l’attaque :
    Un attaquant a obtenu un binaire malveillant qui prétend être le client de portefeuille Ledger Live/Trezor. Le binaire est nommé Assaac.exe pour imiter un exécutable légitime. Il est déposé dans le répertoire %APPDATA% de l’utilisateur, et un fichier JavaScript compagnon (index.js) est placé dans un sous-dossier caché QtCvyfVWKH. L’attaquant exécute ensuite le binaire, provoquant l’enregistrement par Windows d’un événement de création de processus avec le nom et le chemin exacts de l’image que la règle Sigma surveille.

    Étape par étape :

    1. Créer le dossier caché et déposer le script malveillant.
    2. Copier l’exécutable malveillant (Assaac.exe) dans le AppData de l’utilisateur.
    3. Lancer l’exécutable, qui lit index.js et commence les routines de vol d’identifiants.
  • Script de test de régression :

    # ------------------------------------------------------------
    # Configurer les fichiers malveillants
    # ------------------------------------------------------------
    $appData = $env:APPDATA
    $folder  = Join-Path $appData "QtCvyfVWKH"
    $exePath = Join-Path $appData "Assaac.exe"
    $jsPath  = Join-Path $folder "index.js"
    
    # Assurer que le dossier caché existe
    New-Item -ItemType Directory -Path $folder -Force | Out-Null
    # Cacher le dossier (optionnel)
    (Get-Item $folder).Attributes += 'Hidden'
    
    # Déployer un exécutable malveillant factice (pour la démo nous utilisons une copie de calc.exe)
    Copy-Item -Path "$env:SystemRootSystem32calc.exe" -Destination $exePath -Force
    
    # Déployer une charge utile JavaScript factice (le contenu est sans importance pour la détection)
    @"
    // espace réservé pour la charge utile malveillante
    console.log('Vol de portefeuille crypto exécuté');
    "@ | Set-Content -Path $jsPath -Encoding UTF8
    
    # ------------------------------------------------------------
    # Exécuter le binaire malveillant (cela devrait déclencher la règle Sigma)
    # ------------------------------------------------------------
    & $exePath "$jsPath"
    
    # ------------------------------------------------------------
    # Fin du script – laisser les artefacts pour un nettoyage manuel
    # ------------------------------------------------------------
  • Commandes de nettoyage :

    # Terminer le processus malveillant s'il est toujours en cours d'exécution
    Get-Process -Name "Assaac" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Supprimer les fichiers et le dossier créés
    Remove-Item -Path $exePath -Force -ErrorAction SilentlyContinue
    Remove-Item -Path $jsPath -Force -ErrorAction SilentlyContinue
    Remove-Item -Path $folder -Recurse -Force -ErrorAction SilentlyContinue