ClickFix à MaaS : À l’intérieur d’un RAT Windows modulaire et de son panneau de contrôle
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Netskope Threat Labs a observé une campagne ClickFix délivrant un RAT Windows personnalisé construit sur Node.js via des installateurs MSI malveillants. Le payload conserve les modules clés en mémoire et utilise le streaming gRPC sur Tor pour le C2. Une erreur d’OPSEC a exposé le protocole du panneau d’administration, pointant vers un modèle de malware-as-a-service avec suivi des portefeuilles. La persistance est définie via une valeur Run au niveau de l’utilisateur HKCU.
Investigation
Les chercheurs ont capturé le MSI, décodé le bootstrap PowerShell et suivi le chargement dynamique des modules Node.js. Ils ont extrait et déchiffré le blob de configuration pour récupérer une adresse .onion C2. Un fichier admin.proto divulgué a révélé des fonctions de MaaS telles que la gestion multi-opérateurs et la surveillance des portefeuilles, et les analystes ont noté un watchdog auto-réparateur ainsi que l’utilisation de Tor pour un trafic anonymisé.
Atténuation
Bloquer l’exécution de MSI non signés provenant de sources non fiables et surveiller HKCU…Run pour de nouvelles entrées suspectes. Détecter PowerShell qui télécharge des payloads MSI à partir de domaines comme cloud-verificate.com. Alerter sur conhost.exe ou node.exe lancés avec des arguments cachés et sur tor.exe apparaissant sur des points de terminaison qui n’en ont pas besoin.
Réponse
Isoler les hôtes affectés, collecter la mémoire pour l’analyse des modules en mémoire, et supprimer la persistance Run HKCU. Examiner %LOCALAPPDATA%LogicOptimizer pour les artefacts de mise en scène et toute activité planifiée de tor.exe, puis bloquer le point de terminaison onion et les domaines/IPs associés. Chasser dans toute l’entreprise les mêmes artefacts d’installateur et chaînes de processus.
Flux du Attaque
Détections
Binaire NodeJS Exécuté Depuis un Emplacement Inhabituel (via cmdline)
Voir
Points de Persistance Possibles [ASEPs – Logiciel/NTUSER Hive] (via registry_event)
Voir
Téléchargement ou Téléversement via Powershell (via cmdline)
Voir
LOLBAS Conhost (via cmdline)
Voir
MsiExec Lancé par le Processus Shell (via cmdline)
Voir
Tentatives de Communication de Domaines de Recherche IP Possibles (via dns)
Voir
Outils Réseaux Tor Possibles (via cmdline)
Voir
Détection de l’Exécution de Conhost pour Lancer Node pour le Script Bootstrap [Création de Processus Windows]
Voir
Exécution d’une Commande PowerShell Malveillante pour Télécharger et Installer MSI [PowerShell Windows]
Voir
Exécution de Simulation
Prérequis : Le Contrôle Pré-Vol de Télémétrie & Baseline 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 TTPs identifiés et viser à générer la télémétrie exacte attendue par la logique de détection.
-
Narration & Commandes d’Attaque :
- Objectif : L’attaquant veut amorcer un payload Node.js malveillant (
bootstrap.js) sans éveiller les soupçons. - Méthode : Utiliser un binaire Windows signé (
conhost.exe) comme proxy pour lancernode.exeen mode tête basse, passant le script bootstrap comme argument. - Étapes :
- Déposer un
bootstrap.jsmalveillant dans un répertoire accessible en écriture (par exemple,%TEMP%). - Invoquer
conhost.exeavec la chaîne d’arguments exacte que la règle surveille. - La commande s’exécute dans le contexte de l’utilisateur actuel, imitant le lancement d’un processus légitime.
- Déposer un
# 1. Déposer bootstrap.js malveillant (contenu inoffensif simulé pour le test) $bootstrapPath = "$env:TEMPbootstrap.js" Set-Content -Path $bootstrapPath -Value "// espace réservé de bootstrap malveillant" # 2. Exécuter conhost.exe pour lancer node.exe avec les drapeaux requis $conhost = "$env:windirsystem32conhost.exe" $args = '--headless "node.exe" "bootstrap.js"' Start-Process -FilePath $conhost -ArgumentList $args -WorkingDirectory $env:TEMP - Objectif : L’attaquant veut amorcer un payload Node.js malveillant (
-
Script de Test de Régression :
# ------------------------------------------------- # Test de Régression : Déclencher Conhost → Node Bootstrap # ------------------------------------------------- # Assurez-vous que Sysmon est en cours d'exécution et journalise les événements ProcessCreate. # Déposer un script bootstrap factice $bootstrap = "$env:TEMPbootstrap.js" Set-Content -Path $bootstrap -Value "// contenu de test bootstrap" # Définir la ligne de commande exacte que la règle de détection recherche $conhostPath = "$env:windirsystem32conhost.exe" $cmdLine = '--headless "node.exe" "bootstrap.js"' # Lancer conhost avec les arguments à apparence malveillante Start-Process -FilePath $conhostPath -ArgumentList $cmdLine -WorkingDirectory $env:TEMP Write-Host "Simulation terminée – vérifiez SIEM pour l'alerte." -
Commandes de Nettoyage :
# Arrêter tous les processus node ou conhost restants lancés par le test Get-Process -Name node, conhost -ErrorAction SilentlyContinue | Stop-Process -Force # Retirer le script bootstrap temporaire Remove-Item -Path "$env:TEMPbootstrap.js" -Force -ErrorAction SilentlyContinue Write-Host "Nettoyage terminé."