~/ramimac.me $
2026-03-19
Chronic

TeamPCP Supply Chain Campaign

A multi-week, multi-ecosystem attack chain spanning GitHub Actions, Docker Hub, npm, PyPI, OpenVSX, VS Code Marketplace, and Jenkins. Impacted so far: Aqua's Trivy, Checkmarx KICS, LiteLLM, Bitwarden, TanStack, Mistral AI, AntV (323 packages), Microsoft DurableTask, GitHub (~3,800 internal repos), Red Hat Cloud Services (32 packages), +more.

Last updated: Reach me (tip? feedback?)
Loading timeline...
Download JSON
Loading indicators...

Payload Repositories

TeamPCP

aka Altered Spider (CrowdStrike), SHADOW-WATER-058, UNC6780 (GTIG), PCPcat, Persy_PCP, ShellForce, CipherForce, DeadCatx3

Hybrid threat actor functioning as botnet, access broker, data-leak crew, and cloud exploitation group. Emerged late 2025. Brokers access to LAPSUS$, UNC6240/ShinyHunters, and Vect Ransomware.

Known Members

  • Ruben Thomson (21, Perth) — aliases Ellis, @pcpcats, Deadcatx3. Arrested Aug 2026.
  • Louis Gaebler (23, Perth) — alias @pcpcasper. Arrested Aug 2026.

External Analysis

  • Flare.io — Dec 2025 worm campaign targeting cloud infrastructure
  • Beelzebub — Next.js exploit campaign, 59K compromises in 33 hours
  • Ransomware Interviews — "T" interview with TeamPCP member

xpl0itrs

Self-described TeamPCP affiliate

Data breach marketplace operator claiming responsibility for breaches of automotive manufacturers, payment processors, and cybersecurity firms. Self-describes as "close friend" of TeamPCP. Connected to Vect collective. Ideology: "no like government, like money, like freedom."

Contact IOCs

  • qtox_xpl0itrs — qTox handle
  • 05c8ae06e40a63cfd94d3307a3461ca668aa88bb18686083d6927e969249501075 — Session ID

Vect Ransomware

Ransomware collective

Ransomware operation described as "collective of operators operating separate to TeamPCP & xpl0itrs." TeamPCP announced partnership in March 2026.

Supply chain campaigns that share TTPs with TeamPCP but lack clean attribution. These may represent: copycat actors, shared tooling ecosystems, or unconfirmed TeamPCP operations.

Loading campaigns...

Post-Compromise Analysis

Deep-dive research into TeamPCP's post-compromise activity—what happens after credentials are stolen from supply chain attacks.

Wiz Research May 2026

Tracking TeamPCP: Investigating Post-Compromise Attacks Seen in the Wild

Analysis of how TeamPCP operationalizes stolen credentials from supply chain compromises (Trivy, KICS, LiteLLM, Telnyx) to compromise cloud environments.

Attack Stages

  1. Secret Validation — TruffleHog validates stolen AWS keys, Azure secrets, and SaaS tokens via live API calls
  2. Internal Discovery — Within 24 hours: IAM enumeration (users, roles, policies), compute (EC2, Lambda), storage (S3, RDS), and container infrastructure (ECS task definitions, cluster mapping)
  3. Code Execution — GitHub workflow abuse via stolen PATs; Nord Stream tool for malicious workflow creation; ECS Exec with SSM Agent for container access; workflow log deletion
  4. Data Exfiltration — Bulk repository cloning via git.clone; mass extraction from S3, Secrets Manager, and databases

Tools & Infrastructure

  • TruffleHog — Credential validation
  • Nord Stream — GitHub automation
  • Boto3 — AWS API interactions
  • Mullvad VPN & InterServer hosting for obfuscation

Detection Signals

Unusual enumeration (ListUsers, DescribeInstances), unexpected secret access patterns, mass clone operations, workflow log deletion, API calls from VPN providers.

Kudelski Security April 2026

Investigating Two Variants of the Trivy Supply Chain Compromise

Incident response analysis documenting attacker activity after stolen AWS credentials were used—from validation through enumeration to potential exfiltration.

Attack Stages

  1. Credential Validation — Stolen AWS keys validated via TruffleHog; first attacker IP appears directly in CloudTrail with TruffleHog user agent
  2. Cloud Enumeration — Second IP (Kali Linux) performed systematic Boto3 enumeration across all 29 AWS regions: IAM users/roles, Lambda functions, DynamoDB tables, CloudFormation stacks, S3 buckets
  3. S3 Reconnaissance — Scanned 24 S3 buckets including 9 Terraform state buckets; victim lacked S3 data event logging (critical blindspot). Analysis revealed 5 RSA private keys in cleartext used for JWT signing
  4. No Persistence Established — Despite iam:* permissions, no backdoor users, roles, or keys created; no policies modified; no trust relationships changed

Tools & Infrastructure

  • TruffleHog — Credential validation
  • Boto3 — AWS API enumeration
  • Operational server hosted MinIO object storage and nginx auth panels
  • Domain targeting lists for BeyondTrust remote access endpoints

Detection Signals

TruffleHog user agent in CloudTrail, API calls from multiple IPs with different OS fingerprints (Kali, Windows 11, macOS ARM), systematic enumeration across all AWS regions, S3 ACL and public access configuration queries.

Attacker IPs (from CloudTrail)

  • 209.159.147.239 — TruffleHog validation (NYC VPS)
  • 170.62.100.245 — Cloud enumeration, S3 scanning (Kali)
  • 154.47.29.12 — Org recon (Windows 11)
  • 103.75.11.59 — Credential re-validation (macOS ARM)

The Official Soundtrack of the Trivy Supply Chain Attack

Every threat actor leaves fingerprints. TeamPCP left a playlist. Songs embedded in payloads, C2 infrastructure, and attack tooling.

FALSE
"hackerbot-claw compromised Trivy"
Spread:
Widely circulated
+

hackerbot-claw is an automated penetration testing bot that scans GitHub for vulnerable projects—its user agent and behavioral patterns differ from the main attacker. MegaGame10418 is the actor who exploited the February 27 PwnRequest, exfiltrating the aqua-bot PAT. Aqua's official post-mortem confirms: "The user agent and behavioral patterns of hackerbot-claw are different than the other events inspected."

FALSE
"Malicious commits landed in Trivy's main branch"
Spread:
Widely circulated
+

The imposter commits (1885610c, 70379aad) never merged into main. They exist in GitHub's object store due to cross-fork object sharing. The attack worked because a malicious tag (v0.69.4) was pushed that referenced these orphan commits—triggering CI/CD builds without any merge or review.

FALSE
"GhostClaw is related to TeamPCP"
Spread:
Limited spread
+

GhostClaw is a separate campaign with different TTPs and IOCs. TeamPCP uses tag hijacking and CI/CD exploitation; GhostClaw uses npm typosquatting and AI workflow hooks. Different infrastructure (registrars, C2 patterns), more social engineering-focused payloads (fake CLI installers with progress bars), and different persistence mechanisms (shell hooks, cron jobs vs. GitHub Actions). No shared IOCs or attribution overlap identified.

MISLEADING
"TeamPCP was behind the original Shai-Hulud worm"
Spread:
Widely circulated
+

TeamPCP's campaigns were inspired by and named after the Dune-themed Shai-Hulud malware, but they are distinct operations. The original Shai-Hulud worm preceded TeamPCP's activity. TeamPCP adopted the branding ("Mini Shai-Hulud") for their own campaigns, creating attribution confusion.

FALSE
"TeamPCP leaked Claude Code source code"
Spread:
Limited spread
+

The "Claude Code source leak" was not a TeamPCP operation. It resulted from a bundling mistake where JavaScript source was inadvertently included in a release. This was a build/packaging error, not a supply chain attack or breach.

MISLEADING
"TeamPCP forged SLSA Level 3 provenance attestations"
Spread:
Moderate spread
+

TeamPCP did not forge or cryptographically bypass SLSA attestations. They achieved RCE within the release pipeline itself (via cache poisoning and pull_request_target exploitation), meaning the attestations were legitimately generated for malicious code. The build system was compromised, not the attestation cryptography. Additionally, this attack vector was already documented—see slsa-framework/slsa#1235 (Nov 2024).

FALSE
"Megalodon was TeamPCP"
Spread:
Moderate spread
+

No shared infrastructure or hard evidence links Megalodon to TeamPCP. Some theorized Megalodon could have been the source of stolen credentials used in TeamPCP attacks, but infostealer logs as a credential source is a competing—and more plausible—explanation.

FALSE
"TeamPCP pivoted to using PureHVNC RAT"
Spread:
Limited spread
+

A PureHVNC campaign was briefly misattributed to TeamPCP based on superficial similarities. OpenSourceMalware's analysis found the overlap limited to generic malware behaviors shared by thousands of campaigns. Strong negative indicators—no shared cryptographic keys, no infrastructure overlap, no supply chain delivery, no shared tooling, no TeamPCP branding—make attribution untenable. Most likely a commodity cybercrime operator who purchased PureHVNC and customized delivery with a bespoke PowerShell loader.

MISLEADING
"Russian locale checks prove TeamPCP is Russian"
Spread:
Moderate spread
+

The ru_* locale exit condition is a common malware trope, not a reliable attribution indicator. Antiy Labs analysis offers a good breakdown of how TeamPCP deliberately mixes contradictory geopolitical markers: Russian folklore vocabulary with English anomalies ("RICHARD", "FIREBIRD"), Iranian/Israeli targeting in the same function, and destructive "roulette" logic that contradicts their profit motive. This is deliberate false-flag pollution, not authentic origin markers.

MISLEADING
"TeamPCP is behind ShadowRay 2.0 / traces back to 2020"
Spread:
Limited spread
+

Oligo Security's analysis links TeamPCP to their earlier "ShadowRay" research via shared infrastructure. However, the article explicitly hedges: "cannot be determined with 100% certainty whether this represents direct rebrand, shared operator set, or close collaboration." The evidence shows shared capabilities and infrastructure—not confirmed actor identity. Given that TeamPCP is already understood to be a constellation of related actors (access brokers, botnet operators, extortion crews) rather than a single group, infrastructure overlap is particularly weak evidence for unified attribution.

This site was created by Rami McCarthy (@ramimacisabird), Principal Security Researcher @ Wiz.