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 de lara-helper, entraînant l’installation silencieuse du RAT.
  • Activation: dans lara-helper, inclusion via un service provider Laravel (auto-discovery) à chaque boot; dans simple-queue, inclusion au chargement de la classe (autoload), déclenchée même par class_exists().
  • Obfuscation: contrôle par goto en spaghetti, chaînes en hex/octal, identifiants aléatoires. Auto‑persistance: au premier include, le script se relance en arrière-plan (CLI arg helper) 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 (via imagegrabscreen()), download/upload (chmod 0777), stop. Exécution de commandes via la première API disponible parmi popen, proc_open, exec, shell_exec, system, passthru.

🔗 Vecteur chaîne de dépendances et impact

  • lara-swagger requiert nhattuanbl/lara-helper en dev-master, permettant de mettre à jour la charge utile sans modifier le package propre.
  • Impact: toute appli Laravel ayant installé lara-helper ou simple-queue exé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 signale nhattuanbl/lara-helper comme 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 (payload src/helper.php).
  • Package vecteur: nhattuanbl/lara-swagger (dépendance vers lara-helper).
  • Fichier/Hash: src/helper.php — SHA-256 a493ce9509c5180e997a04cab2006a48202afbb8edfa15149a4521067191ead7.
  • C2: helper[.]leuleu[.]net:2096.
  • Acteur: nhattuanbl — email nhattuanbl@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