🗓️ Contexte

Source : HivePro Threat Advisory, publié le 25 mai 2026. Cet article documente l’escalade majeure de la campagne de supply chain du groupe TeamPCP (alias PCPcat, ShellForce, DeadCatx3, CipherForce, Persy_PCP, UNC6780) au cours du mois de mai 2026.

🎯 Acteur de menace

TeamPCP est un groupe à motivation financière, actif depuis fin 2025, initialement documenté comme un crew d’exploitation cloud-native ciblant des APIs Docker et clusters Kubernetes exposés. En mars 2026, il a pivoté vers une campagne de supply chain en cascade ciblant Trivy, Checkmarx KICS, LiteLLM, Telnyx et des dizaines de packages npm.

🔗 Chronologie des événements (mai 2026)

  • Début mai : Poursuite des compromissions d’outils de sécurité et de développement largement déployés.
  • Mi-mai : Déploiement du ver Mini Shai-Hulud sur les écosystèmes npm et PyPI, exploitant des mauvaises configurations de GitHub Actions et produisant des packages malveillants signés avec une provenance SLSA Build Level 3 valide.
  • 19 mai : Deuxième vague via un compte mainteneur hijacké dans l’écosystème @antv, portant le bilan cumulé à plus de 1 000 versions malveillantes sur 500+ packages uniques.
  • Post-19 mai : Publication du code source du ver Shai-Hulud avec une prime underground de 1 000 $ pour la plus grande attaque supply chain réalisée avec ce code. Des variantes copycats émergent en quelques jours, dont une convertissant les victimes en botnet DDoS.
  • 20 mai : GitHub divulgue une compromission directe de son environnement interne. TeamPCP exfiltre ~3 800 dépôts internes via une extension VS Code malveillante (nrwl.angular-console@18.95.0) installée par un employé, publiée le 18 mai 2026 et retirée après ~11 minutes.

🛠️ Techniques et malwares

  • Ver Mini Shai-Hulud : propagation auto-réplicante sur npm/PyPI via abus de GitHub Actions, packages signés SLSA BL3.
  • Extensions VS Code malveillantes : accès au code source, keychain, clés SSH, clés cloud, tokens GitHub, historique shell.
  • Framework modulaire Shai-Hulud : loaders, secrets harvesters, dispatcher, exfiltrators, mutators.
  • Partenariat avec le groupe ransomware Vect pour monétiser les credentials volés.
  • Émergence d’un ver rival PCPJack ciblant les hôtes déjà compromis par TeamPCP.

💰 Modèle opérationnel

Tout au long de mai 2026, les canaux d’extorsion affiliés de TeamPCP sont restés dormants, confirmant un pivot vers la monétisation directe par vol de credentials supply chain plutôt que par ransomware affilié.

📋 Type d’article

Rapport d’incident / analyse de menace détaillée produit par HivePro, visant à documenter la campagne TeamPCP de mai 2026, fournir des IoCs exploitables et des TTPs MITRE ATT&CK pour les équipes CTI et SOC.

🧠 TTPs et IOCs détectés

Acteurs de menace

  • TeamPCP (cybercriminal) — orkl.eu · Malpedia
  • Vect (cybercriminal) —
  • PCPJack (cybercriminal) —

TTP

  • T1195 — Supply Chain Compromise (Initial Access)
  • T1195.002 — Compromise Software Supply Chain (Initial Access)
  • T1195.001 — Compromise Software Dependencies and Development Tools (Initial Access)
  • T1078 — Valid Accounts (Initial Access)
  • T1204 — User Execution (Execution)
  • T1204.002 — User Execution: Malicious File (Execution)
  • T1059 — Command and Scripting Interpreter (Execution)
  • T1059.007 — Command and Scripting Interpreter: JavaScript (Execution)
  • T1106 — Native API (Execution)
  • T1176 — Browser Extensions (Persistence)
  • T1543 — Create or Modify System Process (Persistence)
  • T1543.001 — Create or Modify System Process: Launch Agent (Persistence)
  • T1543.002 — Create or Modify System Process: Systemd Service (Persistence)
  • T1546 — Event Triggered Execution (Persistence)
  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1036 — Masquerading (Defense Evasion)
  • T1036.005 — Masquerading: Match Legitimate Name or Location (Defense Evasion)
  • T1070 — Indicator Removal (Defense Evasion)
  • T1070.006 — Indicator Removal: Timestomp (Defense Evasion)
  • T1656 — Impersonation (Defense Evasion)
  • T1552 — Unsecured Credentials (Credential Access)
  • T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
  • T1552.004 — Unsecured Credentials: Private Keys (Credential Access)
  • T1555 — Credentials from Password Stores (Credential Access)
  • T1555.005 — Credentials from Password Stores: Password Managers (Credential Access)
  • T1528 — Steal Application Access Token (Credential Access)
  • T1539 — Steal Web Session Cookie (Credential Access)
  • T1526 — Cloud Service Discovery (Discovery)
  • T1083 — File and Directory Discovery (Discovery)
  • T1005 — Data from Local System (Collection)
  • T1213 — Data from Information Repositories (Collection)
  • T1213.003 — Data from Information Repositories: Code Repositories (Collection)
  • T1072 — Software Deployment Tools (Lateral Movement)
  • T1071 — Application Layer Protocol (Command and Control)
  • T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
  • T1102 — Web Service (Command and Control)
  • T1102.002 — Web Service: Bidirectional Communication (Command and Control)
  • T1132 — Data Encoding (Command and Control)
  • T1567 — Exfiltration Over Web Service (Exfiltration)
  • T1567.001 — Exfiltration Over Web Service: Exfiltration to Code Repository (Exfiltration)
  • T1041 — Exfiltration Over C2 Channel (Exfiltration)
  • T1657 — Financial Theft (Impact)
  • T1485 — Data Destruction (Impact)

IOC

  • Domaines : check.git-service.comVT · URLhaus · ThreatFox
  • Domaines : t.m-kosche.comVT · URLhaus · ThreatFox
  • URLs : https://check.git-service.com/rope.pyzURLhaus
  • URLs : https://t.m-kosche.com:443/api/public/otel/v1/tracesURLhaus
  • URLs : https://api.github.com/search/commits?q=firedalazerURLhaus
  • Fichiers : nrwl.angular-console@18.95.0
  • Fichiers : rope.pyz
  • Fichiers : managed.pyz
  • Fichiers : cat.py
  • Fichiers : com.user.kitty-monitor.plist
  • Fichiers : codeql.yml
  • Fichiers : setup.mjs
  • Fichiers : tasks.json
  • Chemins : ~/.local/share/kitty/cat.py
  • Chemins : ~/Library/LaunchAgents/com.user.kitty-monitor.plist
  • Chemins : /tmp/kitty-
  • Chemins : /var/tmp/.gh_update_state
  • Chemins : /tmp/managed.pyz
  • Chemins : /tmp/rope-.pyz
  • Chemins : ~/.cache/.sys-update-check
  • Chemins : ~/.cache/.sys-update-check-k8s
  • Chemins : .claude/settings.json
  • Chemins : .claude/setup.mjs
  • Chemins : .vscode/tasks.json
  • Chemins : .vscode/setup.mjs
  • Chemins : .github/workflows/codeql.yml

Malware / Outils

  • Mini Shai-Hulud (other)
  • Shai-Hulud Worm Framework (framework)
  • PCPJack (other)
  • Vect Ransomware (ransomware)
  • nrwl.angular-console@18.95.0 (other)

🟢 Indice de vérification factuelle : 67/100 (haute)

  • ⬜ hivepro.com — source non référencée (0pts)
  • ✅ 13945 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 26 IOCs (IPs/domaines/CVEs) (10pts)
  • ✅ 2/5 IOCs confirmés (ThreatFox, URLhaus, VirusTotal) (12pts)
  • ✅ 43 TTPs MITRE identifiées (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ✅ acteur(s) identifié(s) : TeamPCP, Vect, PCPJack (5pts)
  • ⬜ pas de CVE à vérifier (0pts)

IOCs confirmés externellement :

  • check.git-service.com (domain) → VT (20/91 détections)
  • t.m-kosche.com (domain) → VT (17/92 détections)

🔗 Source originale : https://hivepro.com/threat-advisory/rom-npm-to-github-teampcps-may-2026-escalation-reaches-the-source-code-platform/?utm_sr=(direct)&utm_cmd=(none)&utm_ccn=(not%20set)