Selon une publication de recherche de Mario Candela, une campagne baptisée « PCPcat » cible des déploiements Next.js/React en exploitant les vulnérabilités CVE-2025-29927 et CVE-2025-66478 pour obtenir une exécution de code à distance, voler des identifiants et installer une infrastructure C2 persistante.

Résumé opérationnel ️: la campagne combine scans massifs, exploitation RCE Next.js, exfiltration d’identifiants (.env, clés SSH, AWS, Docker, Git, historiques bash, etc.) et déploiement de proxies/tunnels (GOST, FRP) via un installeur (proxy.sh). Un accès non authentifié à l’API C2 a exposé des métriques en temps réel : 59 128 serveurs compromis sur 91 505 IPs scannées (succès 64,6 %) et des lots de 2 000 cibles par requête.

Détails techniques 🔧: l’exploit abuse d’une pollution de prototype JSON pour atteindre child_process.execSync() dans Next.js (RCE) et valide la vulnérabilité avec des commandes de test (id), avant de lancer une collecte prioritaire des fichiers .env, variables d’environnement, clés SSH, AWS credentials, Docker config, Git tokens, /etc/shadow et /etc/passwd. Les résultats sont envoyés en POST JSON vers l’endpoint C2 /result (toujours 200 OK, sans authentification) où les données sont stockées. En phase de persistance, le script proxy.sh installe GOST (SOCKS5 :1080), FRP (reverse tunnel vers 67.217.57.240:888) et des services systemd pour la survie au redémarrage.

Infrastructure C2 et exposition 📡: l’API C2 (fingerprint « BaseHTTP/0.6 Python/3.12.3 ») propose des endpoints publics et non authentifiés, dont /domains (assignation de 2 000 IPs), /result (exfiltration), /stats (métriques opérationnelles, critique) et /health. La réponse réelle de /stats (14 déc. 2025) montre le mode « random_ips », 59128 résultats collectés, 91505 scannés, batch_size 2000. Un vecteur parallèle exploite des APIs Docker exposées (2375) pour créer des conteneurs « pcpcat » exécutant le même installeur.

IoCs et artefacts 🔎:

  • C2/Infra: 67.217.57.240:666 (payloads), 67.217.57.240:888 (FRP), 67.217.57.240:5656 (API C2)
  • Endpoints: http://67.217.57.240:5656/domains, /result, /health, /stats; payloads: http://67.217.57.240:666/files/proxy.sh, /files/react.py
  • Fichiers/chemins: /opt/pcpcat/, /opt/pcpcat/frpc, /opt/pcpcat/gost, /opt/pcpcat/react.py, $HOME/.local/pcpcat/, ~/.pcpcat_installed
  • Services systemd: pcpcat-gost.service, pcpcat-frp.service, pcpcat-scanner.service, pcpcat-react.service
  • Signatures de processus: “./gost -L socks5://:1080”, “./frpc -c frpc.toml”, “python3 react.py”, “curl -s 67.217.57.240:666/files/*”
  • Logs/identifiants: “UwU PCP Cat was here~”, “https://t.me/Persy_PCP was here”, “https://t.me/teampcp", “react_scan_*.log”
  • Réseau: UA Windows/Chrome spoofé, client “pcpcat-HOSTNAME-TIMESTAMP”, connexions sortantes vers :5656 (JSON), :888 (FRP), :666 (téléchargements)

TTPs (MITRE ATT&CK) 🧭: T1595 Active Scanning, T1190 Exploit Public-Facing Application, T1189 Drive-by Compromise, T1552 Unsecured Credentials, T1041 Exfiltration Over C2, T1571 Non-Standard Port, T1543.002 Systemd Service Creation, T1036 Masquerading, T1087 Account Discovery. Conclusion: il s’agit d’une publication de recherche détaillant une analyse de menace avec métriques C2, preuves honeypot, IoCs et TTPs, exposant le fonctionnement industriel de la campagne PCPcat.

🧠 TTPs et IOCs détectés

TTP

T1595 Active Scanning, T1190 Exploit Public-Facing Application, T1189 Drive-by Compromise, T1552 Unsecured Credentials, T1041 Exfiltration Over C2, T1571 Non-Standard Port, T1543.002 Systemd Service Creation, T1036 Masquerading, T1087 Account Discovery

IOC

67.217.57.240:666, 67.217.57.240:888, 67.217.57.240:5656, http://67.217.57.240:5656/domains, http://67.217.57.240:5656/result, http://67.217.57.240:5656/health, http://67.217.57.240:5656/stats, http://67.217.57.240:666/files/proxy.sh, http://67.217.57.240:666/files/react.py


🔗 Source originale : https://beelzebub.ai/blog/threat-huntinga-analysis-of-a-nextjs-exploit-campaign/