Présentation

Ce travail, mené dans la posture d'un analyste SOC, repose entièrement sur de véritables captures de paquets : une ligne de base de mon propre trafic « normal » et cinq échantillons de malwares réels issus de malware-traffic-analysis.net, chacun investigué de bout en bout avec les quatre outils qu'un SOC utilise réellement.

Une corrélation réelle, non mise en scène

Deux cas indépendants de ce laboratoire (un beacon C2 et une installation du RAT NetSupport) se sont révélés partager un protocole de beacon C2 identique à l'octet près, malgré des dates, des adresses IP et des environnements victimes différents — une véritable corrélation inter-cas découverte au cours de l'investigation, et non prévue dans le plan initial.

Démarche pas à pas

Étape 1 — Établir une ligne de base du trafic normal

Avant de traquer les malwares, 25 secondes de mon propre trafic réel ont été capturées (dumpcap -i 1 -a duration:25) pendant la navigation sur GitHub/Python.org/Cloudflare et l'exécution de requêtes DNS — soit 11 430 paquets. Cela fournit à chaque cas de malware un point de comparaison.

Hiérarchie des protocoles Wireshark sur la capture de référence
Dominance TLS/HTTPS, DNS réel, QUIC, NTP, ARP, 3 requêtes HTTP en clair bénignes. Aucun domaine suspect, aucun trafic ayant la forme d'un C2 — la « normale » par rapport à laquelle chacun des cas ci-dessous se démarque.

Étape 2 — Charger la capture pcap du malware (cas Lumma Stealer, 2026-01-31)

Hiérarchie des protocoles de la capture pcap du malware
51 181 paquets, trafic HTTP/TLS/Kerberos/LDAP/SMB réel — un environnement AD complet de petite entreprise capturé en pleine infection.

Étapes 3-4 — Conversations, puis filtrage sur la conversation suspecte

Conversations IPv4
Une conversation se démarque : 10.1.21.58 ↔ 153.92.1.49, en HTTP clair, vers une adresse IP n'appartenant ni à Microsoft ni à un fournisseur cloud — la première véritable piste.
Filtre HTTP du C2
ip.addr==153.92.1.49 && http isole 12 paquets : un schéma d'enregistrement du bot suivi d'exfiltration, répété une fois par navigateur.

Étape 5 — Follow HTTP Stream

Follow HTTP Stream
La requête est adressée à Host: whitepepper.su. La réponse réalise une empreinte du navigateur (navigator.platform, hardwareConcurrency, deviceMemory) avant le POST de collecte — c'est la lecture du flux complet, plutôt que de supposer qu'il s'agissait d'un « simple accusé de réception », qui a permis de le détecter.

Étapes 6-7 — Vérification croisée avec NetworkMiner, tcpdump et Zeek

Quatre autres cas réels et indépendants

La même méthodologie, appliquée à quatre autres échantillons réels couvrant des techniques différentes.

Beacon C2 (2026-02-28) — le cas qui a révélé la corrélation

C2 multi-domaines via détournement de Cloudflare Tunnel (2025-06-13)

Filtre du C2 multi-domaines
Filtre portant sur trois domaines C2 en rotation — 64 paquets correspondants. Un User-Agent PowerShell contacte l'hôte typosquatté eventtime-microsoft.org. *.trycloudflare.com sert de façade à une partie de l'infrastructure, précisément parce que l'espace d'adressage IP partagé de Cloudflare met en échec un blocage naïf par adresse IP.

RAT livré par PowerShell via détournement de TeamViewer (2025-01-22)

Séquence de staging du RAT
594 paquets correspondants : un loader PowerShell est d'abord récupéré, puis les composants du RAT TeamViewer sont mis en place via la même API générique de récupération de fichiers — TeamViewer, un outil d'accès à distance légitime, déployé pour donner le contrôle à l'attaquant.

Installation du RAT NetSupport (2024-11-26) — l'autre moitié de la corrélation

Check-in NetSupport et C2
Véritable check-in NetSupport Manager, suivi de la même boucle de beacon fakeurl.htm CMD=POLL/CMD=ENCD observée dans le cas du 2026-02-28 ci-dessus — la corrélation inter-cas confirmée dans les deux sens.

Chaque constat transformé en règle Sigma réutilisable

7 règles Sigma au total sur les 5 cas, testées avec un véritable moteur Sigma (Zircolite), y compris une vérification d'absence totale de faux positifs sur la ligne de base — toute la différence entre « je sais quoi chercher » et « voici une règle qu'un SIEM pourrait exécuter dès aujourd'hui ».

Synthèse des constats

CasTechniqueIOC clé
Infostealer Lumma StealerEmpreinte du navigateur + exfiltration d'identifiantswhitepepper.su
Beacon C2 périodiqueProtocole CMD=POLL de type NetSupport45.131.214.85
C2 multi-domainesDétournement de Cloudflare Tunnel, typosquattingeventtime-microsoft.org, *.trycloudflare.com
Déploiement d'un RAT via PowerShellDétournement de composants TeamViewer5.252.153.241
Installation du RAT NetSupportMême protocole de beacon que le cas 2194.180.191.64

Les rapports complets par cas, les exports d'IOC (CSV/JSON) et les règles Sigma sont disponibles dans le dépôt. Chaque export distingue délibérément les véritables indicateurs de menace (à intégrer dans une liste de blocage), les observables de l'incident (faits relatifs à l'environnement victime, destinés à la corrélation interne) et l'infrastructure contextuelle (endpoints légitimes d'éditeurs qui apparaissent parce qu'un outil légitime a été détourné) — rien de tout cela ne constitue un flux de production maintenu, et c'est clairement indiqué.