-= Per source details. Do not edit below this line.=-
The PyPI package captcha-solve-api contains no captcha functionality and is instead a binary dropper disguised as an analytics SDK. A custom setuptools install class copies telemetry.pth into site-packages, and site.py auto-executes its import _telemetry_init line at every Python interpreter start. _telemetry_init._bootstrap() spawns a daemon thread that runs _telemetry_transport.Client.initialize(), which selects a per-OS/arch asset path (/pkg/package, /pkg/package-arm64, /pkg/loader_mac, /pkg/package.exe) from rotating Cloudflare Worker hosts (package-proxy.cf5oobworker.workers.dev, package-proxy.cf8oobworker.workers.dev, package-proxy.cf12oobworker.workers.dev, package-proxy.cf17-ddb.workers.dev, package-proxy.cf25-6eb.workers.dev), downloads the payload, chmods it 0o755 on Unix or invokes CreateProcess via ctypes on Windows, and executes it with the installer's privileges. When HTTP mirrors are unreachable, a DNS-TXT covert channel queries hardcoded subdomains under *.dl.well1.site (tin/tina/ldr/win.dl.well1.site) via public resolvers 8.8.8.8 and 1.1.1.1, reassembles multi-segment TXT records, and base64-decodes them to reconstruct config or payload. The _telemetry_init / _telemetry_transport module naming, Sentry-style framing, and DISABLE_TELEMETRY opt-out language are cover for the dropper. Installing this package results in remote code execution on every subsequent Python interpreter start on the host.
Package presents little functionality, but excessive fake 'telemetry' module. This fake telemetry is used to download and run malicious executables. Code is designed to survive different blocks: first, there is an attempt to download the executable from one of five Cloudflare Workers. If it's not successful, the code falls back to download using DNS: first, it gets a TXT record from one of c..dl.well1[.]site domains, depending on the system. This record returns a number, which is then used to iterate over domains in the form <0...n>..dl.well1[.]site and reconstruct the encoded executable from their TXT records. The downloaded binary is then executed and removed afterward. Using a PTH file ensures persistence and runs on every Python start. In this campaign, versions 0.0.1 hold disarmed code (without the necessary configuration), which is completed in further updates.
This is a continuation of the 2026-07-haproxy-config-client campaign.
Category: MALICIOUS - The campaign has clearly malicious intent, like infostealers.
Campaign: 2026-07-andreiiiiiii_i
Reasons (based on the campaign):
The package contains code to exfiltrate basic data from the system, like IP or username. It has a limited risk.
The package overrides the install command in setup.py to execute malicious code during installation.
Downloads and executes a remote executable.
covering-tracks
persistence
abuses-pth
data-stored-in-dns
{
"iocs": {
"domains": [
"package-proxy.cf8oobworker.workers.dev",
"package-proxy.cf5oobworker.workers.dev",
"package-proxy.cf25-6eb.workers.dev",
"package-proxy.cf17-ddb.workers.dev",
"win.dl.well1.site",
"tina.dl.well1.site",
"tin.dl.well1.site",
"ldr.dl.well1.site"
]
},
"malicious-packages-origins": [
{
"versions": [
"0.0.1"
],
"source": "amazon-inspector",
"sha256": "ee854f4888e58f81b9e22e7addd740d28a717be453133c10267dd91fc5e50cee",
"modified_time": "2026-07-16T18:42:07Z",
"id": "IN-MAL-2026-010751",
"import_time": "2026-07-16T18:54:02.771178464Z"
},
{
"versions": [
"0.0.1",
"8.5.3",
"8.5.4"
],
"source": "kam193",
"sha256": "429dcc1b806027e55c9761344777e12e795b2d7302197287a85593acf1da2094",
"modified_time": "2026-07-20T14:11:28.873462Z",
"id": "pypi/2026-07-andreiiiiiii_i/captcha-solve-api",
"import_time": "2026-07-20T16:06:06.874609633Z"
},
{
"versions": [
"0.0.1",
"8.5.3",
"8.5.4"
],
"source": "kam193",
"sha256": "6745bff1a72b44a9e53129210993aa7a3d0b95e8d9a0a2b2cdfe91324a8e8477",
"modified_time": "2026-07-20T14:11:28.873462Z",
"id": "pypi/2026-07-andreiiiiiii_i/captcha-solve-api",
"import_time": "2026-07-20T17:01:49.031661827Z"
},
{
"versions": [
"8.5.3"
],
"source": "amazon-inspector",
"sha256": "0897a483150112638e6bc110f0f560bc59bb02dbc8425df79b18261f7021b4d3",
"modified_time": "2026-07-28T13:37:45Z",
"id": "IN-MAL-2026-010928",
"import_time": "2026-07-28T14:19:59.455669212Z"
},
{
"versions": [
"8.5.4"
],
"source": "amazon-inspector",
"import_time": "2026-07-28T14:19:59.802728791Z",
"modified_time": "2026-07-28T13:38:29Z",
"id": "IN-MAL-2026-010933",
"sha256": "99621af0900df34246c87811ea5c2a643f2b3805601136dcc0a6768e48af925f"
}
]
}{
"evidence_files": [
{
"tlsh": "7b21872b8c69282059f9c5288963c899f9651357b920d48b7afc43082f793e2c74f557",
"sha256": "e3f28d6e4ff0dfe7fef740657c04b781a36c0cb4630d344cf51cd83c1ba22140",
"path": "setup.py"
},
{
"tlsh": "04b33cb6ed1bac228177c91e9c86e047f72a4753222c614779bc826c2f74715c2e4eed",
"sha256": "3b2e157d9383b96d3591c354bd80acb2ac525529f18fb1522fe49f22520ea650",
"path": "_telemetry_transport.py"
}
],
"package_integrity": [
{
"filename": "captcha_solve_api-0.0.1.tar.gz",
"hashes": {
"md5": "94c94dc3bcc166153a013b0e1c1e6e99",
"sha256": "59f76cf5bcdfe73d7316f91fd296548893f3066af26086f6d6e55c40406b3c7a",
"blake2b_256": "79bf76e921e613f4bc6abed174da0b22839f70cc417e3392833a4890b87c7535"
}
}
]
}
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/pypi/captcha-solve-api/MAL-2026-10755.json"
[
{
"name": "Embedded Malicious Code",
"description": "The product contains code that appears to be malicious in nature.",
"cweId": "CWE-506"
},
{
"name": "Embedded Malicious Code",
"description": "The product contains code that appears to be malicious in nature.",
"cweId": "CWE-506"
},
{
"name": "Embedded Malicious Code",
"description": "The product contains code that appears to be malicious in nature.",
"cweId": "CWE-506"
}
]