🔍 Contexte
Publié le 30 mars 2026 par OpenSourceMalware.com, cet article constitue une rétrospective complète de la campagne supply chain orchestrée par TeamPCP en mars 2026. L’attaque a débuté par un incident de moindre ampleur en février 2026 et s’est transformée en la compromission en cascade de cinq écosystèmes majeurs en l’espace de cinq jours.
🎭 Acteur de la menace
TeamPCP (alias DeadCatx3, PCPcat, ShellForce) est un groupe à motivation financière, spécialisé dans les environnements cloud-native. Il est lié à l’opération de ransomware CipherForce et entretient des liens de coordination confirmés avec LAPSUS$, selon le CTO de Mandiant Charles Carmakal lors de la RSA Conference. Le groupe est suivi par Aikido Security, Socket, Wiz, Flare et d’autres.
🗓️ Chronologie des phases
- Phase 0 (27 fév.) : Un bot autonome (
hackerbot-claw) exploite une misconfigurationpull_request_targetdans le dépôt Trivy (Aqua Security) via la PR #10252, exfiltrant un PAT versrecv.hackmoltrepeat[.]com. 178 releases Trivy supprimées, dépôt brièvement rendu privé. - Phase 1 (19 mars) : Réutilisation du credential non révoqué 20 jours plus tard. Tag malveillant
v0.69.4poussé sur Trivy, 76 tags force-pushés surtrivy-action, 7 tags sursetup-trivy. Payload collectant secrets CI/CD, clés SSH, credentials cloud, wallets crypto, exfiltré versscan.aquasecurtiy[.]org. - Phase 2 (22 mars) : Via le compte
Argon-DevOps-Mgt, défacement de 44 dépôts internes d’Aqua Security (aquasec-com) en moins de 2 minutes. - Phase 3 (20-22 mars) : CanisterWorm déployé sur npm via des tokens publish volés. 141 artefacts malveillants publiés sur 66+ packages. C2 via nœud ICP Canister
tdtqy-oyaaa-aaaae-af2dq-cai. - Phase 4 (23-24 mars) : Hijack de LiteLLM sur PyPI. Versions
1.82.7et1.82.8publiées avec le token PYPI de Krrish Dholakia (CEO BerriAI). Technique.pthpour exécution au démarrage de tout interpréteur Python. - Phase 5 (23-24 mars) : Compromission des GitHub Actions Checkmarx (
ast-github-action,kics-github-action) et publication d’extensions OpenVSX malveillantes (ast-results v2.53.0,cx-dev-assist v1.7.0). - Phase 6 (27 mars) : Hijack du package Telnyx sur PyPI (
4.87.1,4.87.2). Payload livré via stéganographie audio (fichiers WAVhangup.wav/ringtone.wav).
💣 Payload destructeur géociblé
Le script kamikaze.sh a évolué en 6 versions le 22 mars via le dead-drop ICP Canister. Sur les systèmes détectant le fuseau Asia/Tehran, la locale Iran ou fa_IR, il déployait un DaemonSet Kubernetes privilégié nommé host-provisioner-iran pour effacer le système de fichiers sur tous les nœuds, ou exécutait rm -rf / --no-preserve-root en dehors de Kubernetes.
🔗 Techniques notables
- Exploitation de
pull_request_targetpour exfiltration mémoire via/proc/pid/mem - Force-push de tags Git (invisible à l’API events GitHub)
- Usurpation d’identité de mainteneurs avec commits backdatés
- Stéganographie audio (WAV) pour livraison de payload
- Fichier
.pthPython pour exécution persistante sans import - C2 décentralisé via nœuds ICP (Internet Computer Protocol)
- Exfiltration de secours via création de dépôts publics dans les orgs victimes
- Chiffrement AES-256-CBC sous clé RSA-4096 hardcodée (lien d’attribution inter-phases)
📋 Type d’article
Rétrospective technique détaillée publiée par OpenSourceMalware.com, visant à documenter exhaustivement la campagne TeamPCP de mars 2026 pour les équipes CTI et défenseurs.
🧠 TTPs et IOCs détectés
Acteurs de menace
- TeamPCP (cybercriminal)
- LAPSUS$ (cybercriminal)
- CipherForce (cybercriminal)
TTP
- T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
- T1059.006 — Command and Scripting Interpreter: Python (Execution)
- T1059.004 — Command and Scripting Interpreter: Unix Shell (Execution)
- T1552.001 — Unsecured Credentials: Credentials In Files (Credential Access)
- T1552.004 — Unsecured Credentials: Private Keys (Credential Access)
- T1003 — OS Credential Dumping (Credential Access)
- T1041 — Exfiltration Over C2 Channel (Exfiltration)
- T1027.003 — Obfuscated Files or Information: Steganography (Defense Evasion)
- T1543.002 — Create or Modify System Process: Systemd Service (Persistence)
- T1485 — Data Destruction (Impact)
- T1496 — Resource Hijacking (Impact)
- T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
- T1102 — Web Service (Command and Control)
- T1036.005 — Masquerading: Match Legitimate Name or Location (Defense Evasion)
- T1134 — Access Token Manipulation (Privilege Escalation)
- T1611 — Escape to Host (Privilege Escalation)
- T1562.001 — Impair Defenses: Disable or Modify Tools (Defense Evasion)
- T1078 — Valid Accounts (Defense Evasion)
IOC
- IPv4 :
45.148.10.212 - IPv4 :
83.142.209.203 - Domaines :
recv.hackmoltrepeat.com - Domaines :
scan.aquasecurtiy.org - Domaines :
checkmarx.zone - Domaines :
models.litellm.cloud - URLs :
https://tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0.io - URLs :
https://plug-tab-protective-relay.trycloudflare.com - SHA256 :
ceNa7wMJnNHy1kRnNCcwJaFjWX3pORLfMh7xGL8TUjg - CVEs :
CVE-2026-33634 - Fichiers :
tpcp.tar.gz - Fichiers :
kamikaze.sh - Fichiers :
litellm_init.pth - Fichiers :
hangup.wav - Fichiers :
ringtone.wav - Fichiers :
bg_kube.wav - Fichiers :
bg_prop.wav - Fichiers :
msbuild.exe - Fichiers :
service.py - Fichiers :
sysmon.py - Chemins :
/tmp/pglog - Chemins :
/tmp/.pg_state - Chemins :
~/.config/sysmon/sysmon.py - Chemins :
~/.local/share/pgmon/service.py - Chemins :
%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\msbuild.exe
Malware / Outils
- CanisterWorm (botnet)
- kamikaze.sh (other)
- hackerbot-claw (tool)
- pgmon.service (backdoor)
🔗 Source originale : https://opensourcemalware.com/blog/teampcp-supply-chain-campaign