Selon Socket (Socket.dev), l’équipe Threat Research a découvert 10 paquets npm typosquattés publiés le 4 juillet 2025, restés en ligne plus de quatre mois et cumulant plus de 9 900 téléchargements. L’acteur andrew_r1 (parvlhonor@gmx[.]com) exploite le hook postinstall pour exécuter automatiquement un malware obfusqué, affichant un faux CAPTCHA et imitant des installations légitimes, avant de télécharger un binaire voleur d’informations. 🚨

• Mécanisme d’exécution et tromperie: utilisation du script postinstall pour lancer un nouveau terminal et exécuter un payload JavaScript fortement obfusqué (wrapper eval auto‑décodant, XOR à clé dynamique dérivée du code, encodage URL, obfuscation du flux de contrôle). Le malware présente un faux CAPTCHA et des messages d’installation factices (ex. ethers, discord.js) pour masquer son activité. 🕵️‍♂️

• Fingerprinting et chaîne d’infection: après saisie dans le faux CAPTCHA, l’IP de la victime est envoyée à 195[.]133[.]79[.]43/get_current_ip, puis le binaire data_extracter est téléchargé depuis 195[.]133[.]79[.]43/data_extracter en variant selon la plateforme (Windows, Linux, macOS). ⛓️

• Payload principal: data_extracter est un exécutable PyInstaller de 24 Mo (ELF Linux mentionné), multi‑plateforme, visant les trousseaux systèmes (Windows Credential Manager, macOS Keychain, Linux SecretService/KWallet), navigateurs (mots de passe, cookies de session), clés SSH, fichiers de configuration sensibles (.aws/credentials, kubeconfig, Docker config) et jetons modernes (OAuth, JWT). Les données collectées sont compressées et exfiltrées vers 195[.]133[.]79[.]43. 🔐

• IOCs (Indicateurs de compromission) 🧩:

  • Paquets npm malveillants: deezcord.js, dezcord.js, dizcordjs, etherdjs, ethesjs, ethetsjs, nodemonjs, react-router-dom.js, typescriptjs, zustand.js
  • C2: 195[.]133[.]79[.]43
  • Binaire: data_extracter
  • Empreinte (SHA256): 80552ce00e5d271da870e96207541a4f82a782e7b7f4690baeca5d411ed71edb
  • Identifiants acteur: npm alias andrew_r1, email parvlhonor@gmx[.]com

• TTPs (MITRE ATT&CK) 🧪:

  • T1195.002 (Supply Chain Compromise), T1027 / T1027.002 / T1027.009, T1204.002, T1059.007 / .004 / .006, T1555 / .003 / .001, T1539, T1552.001 / .004, T1071.001, T1041, T1560.001, T1140, T1082, T1083.

Cet article est une analyse de menace visant à documenter une campagne de compromission de la chaîne d’approvisionnement npm et à partager des IOCs/TTPs pour la détection et la sensibilisation.

🧠 TTPs et IOCs détectés

TTP

T1195.002, T1027, T1027.002, T1027.009, T1204.002, T1059.007, T1059.004, T1059.006, T1555, T1555.003, T1555.001, T1539, T1552.001, T1552.004, T1071.001, T1041, T1560.001, T1140, T1082, T1083

IOC

{‘hash’: ‘80552ce00e5d271da870e96207541a4f82a782e7b7f4690baeca5d411ed71edb’, ‘ip’: ‘195.133.79.43’, ‘domain’: None, ‘malicious_packages’: [‘deezcord.js’, ‘dezcord.js’, ‘dizcordjs’, ’etherdjs’, ’ethesjs’, ’ethetsjs’, ’nodemonjs’, ‘react-router-dom.js’, ’typescriptjs’, ‘zustand.js’], ‘c2’: ‘195.133.79.43’, ‘binary’: ‘data_extracter’, ‘actor_identifiers’: {’npm_alias’: ‘andrew_r1’, ’email’: ‘parvlhonor@gmx.com’}}


🔗 Source originale : https://socket.dev/blog/10-npm-typosquatted-packages-deploy-credential-harvester