StepSecurity Details TeamPCP Credential Stealer in Malicious Telnyx PyPI Releases

· Original article ↗

Summary

StepSecurity found import-triggered malicious code in telnyx 4.87.1 and 4.87.2 that used WAV files to deliver credential theft and persistence payloads. Tests observed C2 connections but no payload download or exfiltration; it advises downgrading and rotating secrets.

Key points

  • StepSecurity reports that telnyx 4.87.1 and 4.87.2 contained malicious code in the SDK's client module, triggered when applications imported telnyx.
  • Static analysis found Linux/macOS code that fetched a WAV file, decoded a credential harvester, and was designed to encrypt and exfiltrate collected data.
  • On Windows, the payload in 4.87.2 was designed to retrieve a binary and place it in the Startup folder as msbuild.exe; a capitalization error prevented this function from running in 4.87.1.
  • StepSecurity attributes the campaign to TeamPCP based on a shared RSA-4096 key, the tpcp.tar.gz exfiltration signature, and matching encryption commands also found in the litellm compromise.
  • Controlled Ubuntu and Windows runs observed connections to the C2 during SDK import, but the server did not provide valid WAV payloads; no payload file writes or exfiltration were observed in those tests.
  • The report advises affected users to downgrade to telnyx 4.87.0, rotate accessible credentials, check for the Windows persistence artifacts, and review outbound traffic to the C2 IP on port 8080.

Article Details

Attack Vectors
  • Compromised telnyx Python SDK releases 4.87.1 and 4.87.2 were published to PyPI; injected code in telnyx/_client.py executes when the module is imported.
  • On Linux and macOS, the package fetches ringtone.wav and decodes a credential harvester hidden in WAV audio frames using base64 and XOR.
  • On Windows, version 4.87.2 fetches hangup.wav, decodes a PE binary, saves it as msbuild.exe in the Startup folder, and executes it.
  • The Linux/macOS payload encrypts collected credentials and sends them to the C2 server in a tpcp.tar.gz archive.
Defensive Notes
  • If either compromised release was installed, downgrade to telnyx 4.87.0 and rotate credentials accessible to affected systems, including SSH keys, cloud credentials, tokens, and API keys.
  • On Windows, check the Startup folder for msbuild.exe and msbuild.exe.lock; treat a found binary as evidence the machine was compromised.
  • Audit outbound network logs for connections to 83.142.209.203 on port 8080.
  • The article states that Harden Runner allowed-endpoint policies could block the connection to the C2 endpoint.

Indicators of compromise

TypeIndicatorContext
IPV483[.]142[.]209[.]203C2 server used to deliver WAV payloads and receive credential exfiltration.
SHA256a9235c0eb74a8e92e5a0150e055ee9dcdc6252a07785b6677a9ca831157833a5SHA-256 hash of the malicious telnyx-4.87.2.tar.gz package.
SHA256f66c1ea3b25ec95d0c6a07be92c761551e543a7b256f9c78a2ff781c77df7093SHA-256 hash of the malicious telnyx-4.87.1.tar.gz package.
URLhxxp[:]//83[.]142[.]209[.]203:8080/C2 exfiltration endpoint receiving the tpcp.tar.gz archive.
URLhxxp[:]//83[.]142[.]209[.]203:8080/hangup.wavC2 URL serving the WAV-encoded Windows binary.
URLhxxp[:]//83[.]142[.]209[.]203:8080/ringtone.wavC2 URL serving the WAV-steganography payload for Linux and macOS.

MITRE ATT&CK

T1005 · Data from Local SystemThe credential harvester gathers credentials and other sensitive data from the affected system.T1027 · Obfuscated Files or InformationPayloads and Windows string literals are concealed using base64 encoding and XOR-based WAV steganography.T1036.005 · Match Legitimate Resource Name or LocationThe dropped malicious Windows binary is named msbuild.exe to resemble a trusted system binary.T1041 · Exfiltration Over C2 ChannelThe malware POSTs the encrypted tpcp.tar.gz archive to the C2 server.T1059.006 · PythonInjected Python code runs on import, decodes the Linux/macOS payload, and executes the resulting credential harvester.T1071.001 · Web ProtocolsThe malware communicates with its C2 over HTTP to fetch WAV payloads and send exfiltrated data.T1105 · Ingress Tool TransferThe malware downloads ringtone.wav or hangup.wav from the C2 server at runtime.T1140 · Deobfuscate/Decode Files or InformationThe package decodes base64 data and XOR-decodes WAV frames to recover executable payloads.T1195.002 · Compromise Software Supply ChainThe attacker injected malicious code into the telnyx Python SDK releases distributed through PyPI.T1547.001 · Registry Run Keys / Startup FolderOn Windows, the malware places msbuild.exe in the Startup folder to run it at user logon.T1552 · Unsecured CredentialsThe Linux/macOS harvester collects credentials and secrets available on the affected system, including environment variables and SSH or cloud credentials.T1560.001 · Archive via UtilityThe Linux/macOS payload uses tar to package encrypted stolen data and the encrypted session key as tpcp.tar.gz.

Threat Actors

Vendors

Products

Tools

Related Articles