🔍 Contexte

Publié le 1er juillet 2026 par Sekoia TDR et YesWeHack, cet article détaille une campagne de supply chain ciblant les chercheurs en vulnérabilités et pentesters via de faux dépôts GitHub de preuves de concept (PoC) pour des CVE critiques.

🎯 Vecteur d’infection

La chaîne d’infection repose sur une confusion de dépendances : les dépôts malveillants incluent dans leur requirements.txt des packages PyPI malveillants (frint, skytext, slogsec, logcrypt.cryptography). L’installation via pip install déclenche le chargement d’une extension native compilée et obfusquée (gradient.so / gradient.pyd) qui exécute un dropper.

⚙️ Mécanismes techniques

  • PEB walking et export hashing pour résoudre dynamiquement les API Windows sans import table
  • Anti-debugging via CheckRemoteDebuggerPresent et inspection des registres Dr0-Dr3
  • Environmental key gating : exécution conditionnée à la présence d’un fichier PoC spécifique (hash 0xF4835C9C correspondant à EXPLOIT_POC.PY)
  • Persistance via injection dans le répertoire site-packages Python (package _distutils_hack trojanisé, fichiers .pth)
  • Timestomping des fichiers déposés pour contrer la forensique
  • Dead-drop resolver via l’API Mapbox (api.mapbox.com) pour récupérer le RAT final
  • DNS-over-HTTPS (AliDNS / Cloudflare) et domain fronting pour masquer les communications C2

🐍 ChocoPoC RAT — Capacités

  • Exfiltration de fichiers (.txt, .md, .db)
  • Vol de credentials navigateurs : Chrome, Brave, Edge, Firefox (mots de passe, cookies, autofill, historique)
  • Collecte d’informations système (historiques shell, ipconfig, tasklist, netstat)
  • Exécution de commandes arbitraires (cmd, python via exec())
  • Ajustement du beacon interval (dormir)
  • Exfiltration vers un serveur HTTP dédié (91.132.163.78:8001) et via datasets Mapbox
  • Nommage en espagnol des variables/fonctions (hola, dormir, pozos.py, etc.)

📦 Campagnes identifiées

Au moins 7 dépôts GitHub malveillants ciblant des CVE critiques ont été identifiés (FortiWeb, React2Shell, MongoBleed, PAN-OS, Ivanti Sentry, Checkpoint VPN, Joomla) depuis novembre 2025. Deux campagnes distinctes (2025 et 2026) utilisent des comptes GitHub, PyPI et Mapbox différents mais partagent la même infrastructure logique (même feature ID Mapbox, même algorithme de gate, mêmes variables d’environnement anti-récursion).

🔑 Attribution et comptes compromis

Les emails de commit appartiennent à des étudiants indonésiens et turcs dont les credentials sont apparus dans des bases de leaks (probablement infostealer). Les comptes PyPI ont été créés avec des adresses Gmail non vérifiées. Le package skytext totalise environ 2 400 téléchargements.

📄 Type d’article

Analyse technique approfondie et publication de recherche CTI, visant à documenter une campagne active de supply chain et à fournir des IoCs exploitables à la communauté de sécurité.

🧠 TTPs et IOCs détectés

TTP

  • T1195.001 — Supply Chain Compromise: Compromise Software Dependencies and Development Tools (Initial Access)
  • T1059.006 — Command and Scripting Interpreter: Python (Execution)
  • T1027 — Obfuscated Files or Information (Defense Evasion)
  • T1140 — Deobfuscate/Decode Files or Information (Defense Evasion)
  • T1070.006 — Indicator Removal: Timestomp (Defense Evasion)
  • T1497.001 — Virtualization/Sandbox Evasion: System Checks (Defense Evasion)
  • T1546.004 — Event Triggered Execution: Unix Shell Configuration Modification (Persistence)
  • T1543 — Create or Modify System Process (Persistence)
  • T1071.001 — Application Layer Protocol: Web Protocols (Command and Control)
  • T1102.001 — Web Service: Dead Drop Resolver (Command and Control)
  • T1090.004 — Proxy: Domain Fronting (Command and Control)
  • T1041 — Exfiltration Over C2 Channel (Exfiltration)
  • T1555.003 — Credentials from Password Stores: Credentials from Web Browsers (Credential Access)
  • T1082 — System Information Discovery (Discovery)
  • T1057 — Process Discovery (Discovery)
  • T1005 — Data from Local System (Collection)
  • T1078.004 — Valid Accounts: Cloud Accounts (Defense Evasion)
  • T1608.001 — Stage Capabilities: Upload Malware (Resource Development)

IOC

  • IPv4 : 91.132.163.78AbuseIPDB · VT · ThreatFox
  • Domaines : api.mapbox.comVT · URLhaus · ThreatFox
  • URLs : https://api.mapbox.com/datasets/v1/frankley/cmor0tcxf008i1mmpd7apt903/features/dm370543acmdopk296nahbtuaURLhaus
  • URLs : https://api.mapbox.com/datasets/v1/mattallahsaed/cmismaye7000s1mp2v8fkn4lp/features/dm370543acmdopk296nahbtuaURLhaus
  • URLs : http://91.132.163.78:8001/assets/static/bundle.ext.min.de5b2bc9.jsURLhaus
  • SHA256 : 93739477cd379adef95126b22758c0e644282d2028dd297328ce856fa111dd06VT · MalwareBazaar
  • SHA256 : 17997e9e0256d0f5d5d21a4852c37f16b338e4bb9c2bec09bdfd822b24aa76b4VT · MalwareBazaar
  • SHA256 : 5abd45d6f4a1705dca55d882f017d4768888dce9ad99cea40b3da35c23de5caeVT · MalwareBazaar
  • SHA256 : 40569318e89db751ff3886b2617d990d8a343f0d1d8727b7f978a28129ca36bcVT · MalwareBazaar
  • SHA256 : 320b29844892e3c59bc6fcb07e701b2b3230a37cb4a13176174e9e294ec6d43eVT · MalwareBazaar
  • Emails : 21104040041@student.uin-suka.ac.id
  • Emails : 200111085@ogrenci.ibu.edu.tr
  • Emails : leechuun@gmail.com
  • Emails : faberhun@gmail.com
  • CVEs : CVE-2025-64446NVD · CIRCL
  • CVEs : CVE-2025-55182NVD · CIRCL
  • CVEs : CVE-2025-14847NVD · CIRCL
  • CVEs : CVE-2026-0257NVD · CIRCL
  • CVEs : CVE-2026-10520NVD · CIRCL
  • CVEs : CVE-2026-50751NVD · CIRCL
  • CVEs : CVE-2026-48908NVD · CIRCL
  • Fichiers : gradient.pyd
  • Fichiers : gradient.so
  • Fichiers : choco.py
  • Fichiers : pozos.py
  • Fichiers : distutils-precedence.pth
  • Fichiers : frint-0.1.2
  • Fichiers : skytext-1.1.0
  • Chemins : _distutils_hack/__init__.py
  • Chemins : _distutils_hack/override.py

Malware / Outils

  • ChocoPoC (rat)
  • frint (loader)
  • skytext (loader)
  • slogsec (loader)
  • logcrypt.cryptography (loader)
  • gradient.pyd (loader)
  • gradient.so (loader)
  • choco.py (loader)

🟡 Indice de vérification factuelle : 55/100 (moyenne)

  • ⬜ sekoia.com — source non référencée (0pts)
  • ✅ 35176 chars — texte complet (fulltext extrait) (15pts)
  • ✅ 30 IOCs dont des hashes (15pts)
  • ⬜ 0/8 IOCs confirmés externellement (0pts)
  • ✅ 18 TTPs MITRE identifiées (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ⬜ aucun acteur de menace nommé (0pts)
  • ⬜ 0/5 CVE(s) confirmée(s) (0pts)

🔗 Source originale : https://www.sekoia.com/blog/dont-eat-the-chocopocs-how-vulnerability-researchers-were-repeatedly-targeted-by-trojanised-exploits