Selon Socket (équipe de recherche sur les menaces), un acteur nommé “nhattuanbl” a publié sur Packagist des packages Laravel malveillants qui installent un RAT PHP chiffré via les dépendances Composer, permettant un accès à distance et un canal C2.
- Packages concernés: nhattuanbl/lara-helper et nhattuanbl/simple-queue embarquent la charge utile dans
src/helper.php(identiques byte‑à‑byte). nhattuanbl/lara-swagger est propre mais dépend delara-helper, entraînant l’installation silencieuse du RAT. - Activation: dans
lara-helper, inclusion via un service provider Laravel (auto-discovery) à chaque boot; danssimple-queue, inclusion au chargement de la classe (autoload), déclenchée même parclass_exists(). - Obfuscation: contrôle par
gotoen spaghetti, chaînes en hex/octal, identifiants aléatoires. Auto‑persistance: au premier include, le script se relance en arrière-plan (CLI arghelper) et utilise un lock file temp (wvIjjnDMRaomchPprDBzzVSpzh61RCar.lock, expiration 15 min).
🕸️ C2 et capacités
- Connexion à helper[.]leuleu[.]net:2096 (TCP brut via
stream_socket_client), retries indéfinis toutes les 15 s. - Chiffrement AES-128-CTR avec clé codée en dur
esCAmxUoJkIjTV0n; IV aléatoire 16 octets par message; format: [longueur 4o][IV 16o][JSON chiffré]. - Reconnaissance initiale: type/nom/version OS, hostname, ID machine (Windows registry GUID / Mac Hardware UUID / Linux machine-id), utilisateur/UID/GID, chemin du fichier, version RAT 1.2.
- Commandes supportées:
ping,info,cmd,powershell,run(asynchrone),screenshot(viaimagegrabscreen()),download/upload(chmod 0777),stop. Exécution de commandes via la première API disponible parmipopen,proc_open,exec,shell_exec,system,passthru.
🔗 Vecteur chaîne de dépendances et impact
lara-swaggerrequiertnhattuanbl/lara-helperendev-master, permettant de mettre à jour la charge utile sans modifier le package propre.- Impact: toute appli Laravel ayant installé
lara-helperousimple-queueexécute un RAT persistant dans le même processus et avec les mêmes permissions que l’app (accès à fichiers, variables d’environnement, credentials DB/API, .env). Le C2 ne répond pas au moment de la publication, mais le RAT reste présent et retente la connexion indéfiniment; l’opérateur peut rediriger vers un nouvel hôte.
📦 Contexte des publications
- Le compte Packagist “nhattuanbl” (depuis 2015) a publié six packages entre juin et décembre 2024; trois seraient propres (p. ex.
lara-syslog,lara-media) mais présentent des références mortes àlara-helper, suggérant un développement local avec la charge utile présente. Des demandes de retrait ont été soumises; les packages étaient encore en ligne à la publication. Socket signalenhattuanbl/lara-helpercomme malware (backdoor complète avec C2 chiffré, exécution distante, transfert de fichiers, capture d’écran).
🧩 IOCs
- Packages malveillants:
nhattuanbl/lara-helper,nhattuanbl/simple-queue(payloadsrc/helper.php). - Package vecteur:
nhattuanbl/lara-swagger(dépendance verslara-helper). - Fichier/Hash:
src/helper.php— SHA-256a493ce9509c5180e997a04cab2006a48202afbb8edfa15149a4521067191ead7. - C2:
helper[.]leuleu[.]net:2096. - Acteur:
nhattuanbl— emailnhattuanbl@gmail[.]com, profils GitLab/GitHub listés.
🛠️ TTPs (MITRE ATT&CK)
- T1195.001 — Compromise Software Dependencies and Development Tools (chaîne d’approvisionnement)
- T1027 — Obfuscated Files or Information
- T1571 — Non-Standard Port
- T1041 — Exfiltration Over C2 Channel
- T1105 — Ingress Tool Transfer
- T1059.004 — Unix Shell; T1059.001 — PowerShell
Cet article est une publication de recherche détaillant la découverte, l’attribution au compte “nhattuanbl” et l’analyse technique d’une campagne d’empoisonnement de dépendances Packagist ciblant l’écosystème Laravel.
🧠 TTPs et IOCs détectés
TTP
[‘T1195.001 — Compromise Software Dependencies and Development Tools’, ‘T1027 — Obfuscated Files or Information’, ‘T1571 — Non-Standard Port’, ‘T1041 — Exfiltration Over C2 Channel’, ‘T1105 — Ingress Tool Transfer’, ‘T1059.004 — Unix Shell’, ‘T1059.001 — PowerShell’]
IOC
{‘hash’: ‘a493ce9509c5180e997a04cab2006a48202afbb8edfa15149a4521067191ead7’, ‘domain’: ‘helper.leuleu.net’, ‘port’: ‘2096’}
🔗 Source originale : https://socket.dev/blog/malicious-packagist-packages-disguised-as-laravel-utilities