Analyse du Trafic Réseau avec Wireshark
Quand l'utiliser
- Enquêter sur des intrusions réseau suspectées en examinant les preuves au niveau paquet du trafic de commande et contrôle, de l'exfiltration de données ou des déplacements latéraux
- Diagnostiquer les problèmes de performance réseau tels que les retransmissions, la fragmentation ou les échecs de résolution DNS
- Analyser les schémas de communication des malwares en capturant le trafic depuis des hôtes isolés ou en bac à sable
- Valider les règles de pare-feu et IDS en confirmant le trafic qui traverse réellement les segments réseau
- Extraire des fichiers, des identifiants ou des indicateurs de compromission à partir de sessions réseau capturées
Ne pas utiliser pour capturer du trafic sur des réseaux sans autorisation, intercepter des communications privées sans autorité légale, ou comme substitut à des plateformes SIEM complètes dans la surveillance de production.
Prérequis
- Wireshark 4.0+ et l'utilitaire en ligne de commande tshark installés
- Privilèges root/sudo ou appartenance au groupe
wiresharkpour la capture de paquets en direct - Accès à l'interface réseau (NIC physique, port mirror/span, ou tap réseau) sur le segment surveillé
- Espace disque suffisant pour les fichiers de capture (estimer 1 Go par minute sur des liaisons gigabit chargées)
- Connaissance des protocoles TCP/IP, HTTP, DNS, TLS et SMB au niveau paquet
Workflow
Étape 1 : Configurer l'environnement de capture
Configurez l'interface de capture et les filtres pour cibler le trafic pertinent :
# Lister les interfaces disponibles
tshark -D
# Lancer la capture sur eth0 avec un filtre de capture pour limiter le périmètre
tshark -i eth0 -f "host 10.10.5.23 and (port 80 or port 443 or port 445)" -w /tmp/capture.pcapng
# Capture avec buffer circulaire pour gérer l'utilisation disque (10 fichiers, 100 Mo chacun)
tshark -i eth0 -b filesize:102400 -b files:10 -w /tmp/rolling_capture.pcapng
# Capture sur plusieurs interfaces simultanément
tshark -i eth0 -i eth1 -w /tmp/multi_interface.pcapng
Pour l'interface graphique Wireshark, définissez le filtre de capture dans la boîte de dialogue Capture Options avant de démarrer.
Étape 2 : Appliquer des filtres d'affichage pour une analyse ciblée
# Filtrer le trafic HTTP contenant des user agents suspects
tshark -r capture.pcapng -Y "http.user_agent contains \"curl\" or http.user_agent contains \"Wget\""
# Trouver les requêtes DNS vers des TLD suspects
tshark -r capture.pcapng -Y "dns.qry.name contains \".xyz\" or dns.qry.name contains \".top\" or dns.qry.name contains \".tk\""
# Identifier les retransmissions TCP signalant des problèmes réseau
tshark -r capture.pcapng -Y "tcp.analysis.retransmission"
# Filtrer le trafic SMB pour la détection de déplacement latéral
tshark -r capture.pcapng -Y "smb2.cmd == 5 or smb2.cmd == 3" -T fields -e ip.src -e ip.dst -e smb2.filename
# Trouver la transmission d'identifiants en clair
tshark -r capture.pcapng -Y "ftp.request.command == \"PASS\" or http.authbasic"
# Détecter les schémas de beaconing (connexions à intervalles réguliers)
tshark -r capture.pcapng -Y "ip.dst == 203.0.113.50" -T fields -e frame.time_relative -e ip.src -e tcp.dstport
Étape 3 : Analyse approfondie par protocole
# Suivre un flux TCP pour reconstruire une conversation
tshark -r capture.pcapng -q -z follow,tcp,ascii,0
# Analyser les paires requête/réponse HTTP
tshark -r capture.pcapng -Y "http" -T fields -e frame.time -e ip.src -e ip.dst -e http.request.method -e http.request.uri -e http.response.code
# Extraire les statistiques de requêtes/réponses DNS
tshark -r capture.pcapng -q -z dns,tree
# Analyser les handshakes TLS pour les suites de chiffrement faibles
tshark -r capture.pcapng -Y "tls.handshake.type == 2" -T fields -e ip.src -e ip.dst -e tls.handshake.ciphersuite
# Énumération des accès aux fichiers SMB
tshark -r capture.pcapng -Y "smb2" -T fields -e frame.time -e ip.src -e ip.dst -e smb2.filename -e smb2.cmd
Étape 4 : Extraire les artefacts et IOC
# Exporter les objets HTTP (fichiers transférés via HTTP)
tshark -r capture.pcapng --export-objects http,/tmp/http_objects/
# Exporter les objets SMB (fichiers transférés via SMB)
tshark -r capture.pcapng --export-objects smb,/tmp/smb_objects/
# Extraire toutes les adresses IP de destination uniques pour le renseignement sur les menaces
tshark -r capture.pcapng -T fields -e ip.dst | sort -u > unique_dest_ips.txt
# Extraire les informations des certificats SSL/TLS
tshark -r capture.pcapng -Y "tls.handshake.type == 11" -T fields -e x509sat.uTF8String -e x509ce.dNSName
# Extraire toutes les URL consultées
tshark -r capture.pcapng -Y "http.request" -T fields -e http.host -e http.request.uri | sort -u > urls.txt
# Hacher les fichiers extraits pour la correspondance IOC
find /tmp/http_objects/ -type f -exec sha256sum {} \; > extracted_file_hashes.txt
Étape 5 : Analyse statistique et détection d'anomalies
# Statistiques de hiérarchie de protocoles
tshark -r capture.pcapng -q -z io,phs
# Statistiques de conversation triées par octets
tshark -r capture.pcapng -q -z conv,tcp -z conv,udp
# Identifier les principaux émetteurs
tshark -r capture.pcapng -q -z endpoints,ip
# Données du graphique IO (paquets par seconde)
tshark -r capture.pcapng -q -z io,stat,1,"COUNT(frame) frame"
# Détecter les schémas de scan de ports
tshark -r capture.pcapng -Y "tcp.flags.syn == 1 and tcp.flags.ack == 0" -T fields -e ip.src -e tcp.dstport | sort | uniq -c | sort -rn | head -20
Étape 6 : Générer des rapports et exporter les preuves
# Exporter les paquets filtrés vers un nouveau PCAP pour la préservation des preuves
tshark -r capture.pcapng -Y "ip.addr == 10.10.5.23 and tcp.port == 4444" -w evidence_c2_traffic.pcapng
# Générer un résumé des paquets au format CSV
tshark -r capture.pcapng -T fields -E header=y -E separator=, -e frame.number -e frame.time -e ip.src -e ip.dst -e ip.proto -e tcp.srcport -e tcp.dstport -e frame.len > traffic_summary.csv
# Créer une sortie PDML (XML) pour une analyse programmatique
tshark -r capture.pcapng -T pdml > capture_analysis.xml
# Calculer le hachage du fichier de capture pour la chaîne de traçabilité
sha256sum capture.pcapng > capture_hash.txt
Concepts clés
| Terme | Définition |
|---|---|
| Filtre de capture (BPF) | Syntaxe de filtre Berkeley Packet appliquée au moment de la capture pour limiter les paquets enregistrés, réduisant la taille du fichier et améliorant les performances |
| Filtre d'affichage | Syntaxe de filtre spécifique à Wireshark appliquée aux paquets déjà capturés pour une analyse ciblée sans modifier le fichier de capture |
| PCAPNG | Format de capture de paquets de nouvelle génération prenant en charge plusieurs interfaces, la résolution de noms, les annotations et les métadonnées dans un seul fichier |
| Flux TCP | Séquence réassemblée de segments TCP représentant une conversation bidirectionnelle complète entre deux points de terminaison |
| Dissecteur de protocole | Module Wireshark qui décode les champs et la structure d'un protocole spécifique, permettant une inspection approfondie du contenu des paquets |
| Graphique IO | Visualisation en série temporelle des taux de paquets ou d'octets sur la durée de la capture, utile pour identifier les pics de trafic ou le beaconing |
Outils et systèmes
- Wireshark 4.0+ : Analyseur de paquets basé sur une interface graphique avec des dissecteurs de protocole pour plus de 3 000 protocoles, réassemblage de flux et capacités d'export
- tshark : Version en ligne de commande de Wireshark pour la capture sans interface graphique, le traitement par lots et les pipelines d'analyse scriptés
- tcpdump : Outil de capture de paquets léger pour les captures rapides sur des systèmes distants sans dépendance graphique
- mergecap : Utilitaire Wireshark pour combiner plusieurs fichiers de capture en un seul PCAP pour une analyse unifiée
- editcap : Utilitaire Wireshark pour diviser, filtrer et convertir entre les formats de fichiers de capture
Scénarios courants
Scénario : Enquête sur une exfiltration de données suspectée via tunneling DNS
Contexte : L'équipe SOC a détecté des volumes de requêtes DNS anormalement élevés depuis un poste de travail (10.10.3.45) vers un domaine externe. Le SIEM a signalé des requêtes DNS atteignant en moyenne 200 par minute contre une ligne de base de 15. Une capture de paquets a été initiée depuis la prise réseau sur le VLAN du poste de travail.
Approche :
- Capturer le trafic depuis le sous-réseau du poste de travail en utilisant
tshark -i eth2 -f "host 10.10.3.45 and port 53" -w dns_exfil_investigation.pcapng - Analyser les schémas de requêtes DNS :
tshark -r dns_exfil_investigation.pcapng -Y "dns.qry.name contains \"suspect-domain.xyz\"" -T fields -e frame.time -e dns.qry.name - Examiner les étiquettes de sous-domaine pour les données encodées (les longs sous-domaines de type base64 indiquent du tunneling) :
tshark -r dns_exfil_investigation.pcapng -Y "dns.qry.type == 16" -T fields -e dns.qry.name -e dns.txt - Calculer le volume de données en additionnant les longueurs des noms de requête pour estimer la bande passante d'exfiltration
- Extraire les noms de requête uniques et décoder les sous-domaines base64 pour récupérer le contenu exfiltré
- Exporter les paquets de preuves vers un PCAP séparé et générer un hachage SHA-256 pour la chaîne de traçabilité
Pièges :
- Capturer du trafic non filtré sur un réseau chargé et manquer d'espace disque avant de collecter les données pertinentes
- Utiliser des filtres d'affichage au lieu de filtres de capture, ce qui entraîne des fichiers volumineux et lents à traiter
- Négliger le trafic DNS chiffré (DoH/DoT) qui contourne la capture DNS traditionnelle sur le port 53
- Omettre le hachage de la capture de paquets et la documentation de la chaîne de traçabilité pour les preuves forensiques
Format de sortie
## Rapport d'analyse du trafic
**ID de cas** : IR-2024-0847
**Fichier de capture** : dns_exfil_investigation.pcapng
**SHA-256** : a3f2b8c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
**Durée** : 2024-03-15 14:00:00 à 14:45:00 UTC
**Interface source** : eth2 (port span VLAN 30)
### Résultats
**1. Tunneling DNS confirmé**
- Source : 10.10.3.45
- DNS de destination : 8.8.8.8 (transféré à ns1.suspect-domain.xyz)
- Volume de requêtes : 9 247 requêtes en 45 minutes (205/min contre une ligne de base de 15/min)
- Longueur moyenne des étiquettes de sous-domaine : 63 caractères (données encodées en base64)
- Données exfiltrées estimées : ~2,3 Mo via les réponses d'enregistrement TXT
**2. Indicateurs de compromission**
- Domaine : suspect-domain.xyz (enregistré 3 jours auparavant)
- Serveur de noms : ns1.suspect-domain.xyz (203.0.113.50)
- Schéma de requêtes : demandes d'enregistrement TXT avec sous-domaines encodés en base64
- Schéma de réponse : enregistrements TXT contenant des charges utiles encodées en base64