Was macht Analysieren von Netzwerkverkehr mit Wireshark?
Wann verwenden
- Untersuchung von vermuteten Netzwerkeinbrüchen durch Analyse von Paketdaten auf Command-and-Control-Traffic, Datenexfiltration oder laterale Bewegung
- Diagnose von Netzwerkleistungsproblemen wie Wiederholungen, Fragmentierung oder DNS-Auflösungsfehlern
- Analyse von Malware-Kommunikationsmustern durch Erfassung von Traffic aus Sandbox- oder isolierten Hosts
- Validierung von Firewall- und IDS-Regeln durch Überprüfung des tatsächlich fließenden Verkehrs auf Netzwerksegmenten
- Extrahieren von Dateien, Anmeldeinformationen oder Indikatoren für Kompromittierung aus erfassten Netzwerksitzungen
Nicht verwenden, um Traffic ohne Autorisierung zu erfassen, private Kommunikation ohne rechtliche Grundlage abzufangen oder als Ersatz für vollwertige SIEM-Plattformen in der Produktionsüberwachung.
Voraussetzungen
- Wireshark 4.0+ und das Kommandozeilen-Tool tshark installiert
- Root-/sudo-Rechte oder Mitgliedschaft in der Gruppe
wiresharkfür Live-Paketerfassung - Netzwerkschnittstellenzugriff (physische NIC, SPAN-Port oder Netzwerk-Tap) auf das zu überwachende Segment
- Ausreichend Festplattenspeicher für Paketerfassungsdateien (ca. 1 GB pro Minute auf geschäftigen Gigabit-Links)
- Vertrautheit mit TCP/IP-Protokollen, HTTP, DNS, TLS und SMB auf Paketebene
Arbeitsablauf
Schritt 1: Erfassungsumgebung konfigurieren
Richten Sie die Erfassungsschnittstelle und Filter ein, um relevanten Verkehr zu erfassen:
# Verfügbare Schnittstellen auflisten
tshark -D
# Erfassung auf eth0 mit einem Erfassungsfilter zur Begrenzung des Umfangs starten
tshark -i eth0 -f "host 10.10.5.23 and (port 80 or port 443 or port 445)" -w /tmp/capture.pcapng
# Erfassung mit Ringpuffer zur Verwaltung der Festplattennutzung (10 Dateien, je 100 MB)
tshark -i eth0 -b filesize:102400 -b files:10 -w /tmp/rolling_capture.pcapng
# Gleichzeitige Erfassung auf mehreren Schnittstellen
tshark -i eth0 -i eth1 -w /tmp/multi_interface.pcapng
Legen Sie für die Wireshark-GUI den Erfassungsfilter im Dialog „Capture Options“ fest, bevor Sie starten.
Schritt 2: Display-Filter für gezielte Analyse anwenden
# HTTP-Verkehr mit verdächtigen User-Agents filtern
tshark -r capture.pcapng -Y "http.user_agent contains \"curl\" or http.user_agent contains \"Wget\""
# DNS-Abfragen an verdächtige TLDs finden
tshark -r capture.pcapng -Y "dns.qry.name contains \".xyz\" or dns.qry.name contains \".top\" or dns.qry.name contains \".tk\""
# TCP-Wiederholungen identifizieren, die auf Netzwerkprobleme hinweisen
tshark -r capture.pcapng -Y "tcp.analysis.retransmission"
# SMB-Verkehr zur Erkennung lateraler Bewegung filtern
tshark -r capture.pcapng -Y "smb2.cmd == 5 or smb2.cmd == 3" -T fields -e ip.src -e ip.dst -e smb2.filename
# Übertragung von Klartext-Anmeldeinformationen finden
tshark -r capture.pcapng -Y "ftp.request.command == \"PASS\" or http.authbasic"
# Beaconing-Muster erkennen (regelmäßige Intervalle von Verbindungen)
tshark -r capture.pcapng -Y "ip.dst == 203.0.113.50" -T fields -e frame.time_relative -e ip.src -e tcp.dstport
Schritt 3: Protokollspezifische Tiefenanalyse
# Einen TCP-Stream verfolgen, um eine Konversation zu rekonstruieren
tshark -r capture.pcapng -q -z follow,tcp,ascii,0
# HTTP-Anfrage-/Antwortpaare analysieren
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
# DNS-Abfrage-/Antwortstatistiken extrahieren
tshark -r capture.pcapng -q -z dns,tree
# TLS-Handshakes auf schwache Cipher-Suiten analysieren
tshark -r capture.pcapng -Y "tls.handshake.type == 2" -T fields -e ip.src -e ip.dst -e tls.handshake.ciphersuite
# SMB-Dateizugriffsaufzählung
tshark -r capture.pcapng -Y "smb2" -T fields -e frame.time -e ip.src -e ip.dst -e smb2.filename -e smb2.cmd
Schritt 4: Artefakte und IOCs extrahieren
# HTTP-Objekte exportieren (über HTTP übertragene Dateien)
tshark -r capture.pcapng --export-objects http,/tmp/http_objects/
# SMB-Objekte exportieren (über SMB übertragene Dateien)
tshark -r capture.pcapng --export-objects smb,/tmp/smb_objects/
# Alle eindeutigen Ziel-IPs für Bedrohungsinformationsabfragen extrahieren
tshark -r capture.pcapng -T fields -e ip.dst | sort -u > unique_dest_ips.txt
# SSL/TLS-Zertifikatsinformationen extrahieren
tshark -r capture.pcapng -Y "tls.handshake.type == 11" -T fields -e x509sat.uTF8String -e x509ce.dNSName
# Alle aufgerufenen URLs extrahieren
tshark -r capture.pcapng -Y "http.request" -T fields -e http.host -e http.request.uri | sort -u > urls.txt
# Extrahierte Dateien für IOC-Abgleich hashen
find /tmp/http_objects/ -type f -exec sha256sum {} \; > extracted_file_hashes.txt
Schritt 5: Statistische Analyse und Anomalieerkennung
# Protokollhierarchiestatistiken
tshark -r capture.pcapng -q -z io,phs
# Konversationsstatistiken sortiert nach Bytes
tshark -r capture.pcapng -q -z conv,tcp -z conv,udp
# Top-Talker identifizieren
tshark -r capture.pcapng -q -z endpoints,ip
# IO-Graph-Daten (Pakete pro Sekunde)
tshark -r capture.pcapng -q -z io,stat,1,"COUNT(frame) frame"
# Portscan-Muster erkennen
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
Schritt 6: Berichte erstellen und Beweise exportieren
# Gefilterte Pakete zur Beweissicherung in eine neue PCAP exportieren
tshark -r capture.pcapng -Y "ip.addr == 10.10.5.23 and tcp.port == 4444" -w evidence_c2_traffic.pcapng
# Paketzusammenfassung im CSV-Format generieren
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
# PDML (XML)-Ausgabe für programmatische Analyse erstellen
tshark -r capture.pcapng -T pdml > capture_analysis.xml
# Capture-Datei-Hash für die Beweiskette berechnen
sha256sum capture.pcapng > capture_hash.txt
Schlüsselkonzepte
| Begriff | Definition |
|---|---|
| Erfassungsfilter (BPF) | Berkeley-Paketfilter-Syntax, die zum Erfassungszeitpunkt angewendet wird, um zu begrenzen, welche Pakete aufgezeichnet werden, wodurch Dateigröße reduziert und Leistung verbessert wird |
| Display-Filter | Wireshark-spezifische Filtersyntax, die auf bereits erfasste Pakete angewendet wird, um eine gezielte Analyse ohne Änderung der Erfassungsdatei zu ermöglichen |
| PCAPNG | Nächste Generation des Paketerfassungsformats, das mehrere Schnittstellen, Namensauflösung, Anmerkungen und Metadaten in einer einzigen Datei unterstützt |
| TCP-Stream | Neu zusammengesetzte Sequenz von TCP-Segmenten, die eine vollständige bidirektionale Konversation zwischen zwei Endpunkten darstellt |
| Protokoll-Dissector | Wireshark-Modul, das die Felder und Struktur eines bestimmten Protokolls dekodiert und so eine tiefgehende Inspektion des Paketinhalts ermöglicht |
| IO-Graph | Zeitreihenvisualisierung von Paket- oder Bytedaten über die Erfassungsdauer, nützlich zur Identifizierung von Verkehrsspitzen oder Beaconing |
Werkzeuge und Systeme
- Wireshark 4.0+: GUI-basierter Paketanalysator mit Protokoll-Dissectoren für über 3.000 Protokolle, Stream-Wiederzusammenführung und Exportfunktionen
- tshark: Befehlszeilenversion von Wireshark für Headless-Erfassung, Stapelverarbeitung und scriptgesteuerte Analyse-Pipelines
- tcpdump: Leichtgewichtiges Paketerfassungstool für schnelle Erfassungen auf entfernten Systemen ohne GUI-Abhängigkeiten
- mergecap: Wireshark-Dienstprogramm zum Zusammenführen mehrerer Erfassungsdateien in eine einzige PCAP für eine einheitliche Analyse
- editcap: Wireshark-Dienstprogramm zum Aufteilen, Filtern und Konvertieren zwischen Erfassungsdateiformaten
Häufige Szenarien
Szenario: Untersuchung von vermuteter Datenexfiltration durch DNS-Tunneling
Kontext: Das SOC-Team hat ungewöhnlich hohe DNS-Abfragevolumen von einer Workstation (10.10.3.45) an eine externe Domain festgestellt. Der SIEM-Alarm markierte DNS-Abfragen mit durchschnittlich 200 pro Minute im Vergleich zur Baseline von 15. Eine Paketerfassung wurde vom Netzwerk-Tap im VLAN der Workstation aus gestartet.
Vorgehen:
- Erfassen Sie Traffic aus dem Subnetz der Workstation mit
tshark -i eth2 -f "host 10.10.3.45 and port 53" -w dns_exfil_investigation.pcapng - Analysieren Sie DNS-Abfragemuster:
tshark -r dns_exfil_investigation.pcapng -Y "dns.qry.name contains \"suspect-domain.xyz\"" -T fields -e frame.time -e dns.qry.name - Untersuchen Sie Subdomain-Labels auf codierte Daten (lange Base64-ähnliche Subdomains deuten auf Tunneling hin):
tshark -r dns_exfil_investigation.pcapng -Y "dns.qry.type == 16" -T fields -e dns.qry.name -e dns.txt - Berechnen Sie das Datenvolumen durch Summieren der Abfragenamenlängen, um die Exfiltrationsbandbreite zu schätzen
- Extrahieren Sie eindeutige Abfragenamen und decodieren Sie Base64-Subdomains, um exfiltrierte Inhalte wiederherzustellen
- Exportieren Sie Beweispakete in eine separate PCAP und generieren Sie einen SHA-256-Hash für die Beweiskette
Stolperfallen:
- Erfassen von ungefiltertem Verkehr in einem geschäftigen Netzwerk und Verbrauch des Festplattenspeichers vor dem Sammeln relevanter Daten
- Verwenden von Display-Filtern anstelle von Erfassungsfiltern, was zu sehr großen Dateien führt, die langsam zu verarbeiten sind
- Übersehen von verschlüsseltem DNS-Verkehr (DoH/DoT), der die herkömmliche DNS-Erfassung auf Port 53 umgeht
- Versäumnis, den Paketerfassungshash und die Dokumentation der Beweiskette für forensische Beweise zu erstellen
Ausgabeformat
## Traffic-Analysebericht
**Fall-ID**: IR-2024-0847
**Erfassungsdatei**: dns_exfil_investigation.pcapng
**SHA-256**: a3f2b8c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
**Dauer**: 2024-03-15 14:00:00 bis 14:45:00 UTC
**Quellschnittstelle**: eth2 (VLAN 30 SPAN-Port)
### Ergebnisse
**1. DNS-Tunneling bestätigt**
- Quelle: 10.10.3.45
- Ziel-DNS: 8.8.8.8 (weitergeleitet an ns1.suspect-domain.xyz)
- Abfragevolumen: 9.247 Abfragen in 45 Minuten (205/min vs. Baseline 15/min)
- Durchschnittliche Subdomain-Label-Länge: 63 Zeichen (Base64-codierte Daten)
- Geschätzte exfiltrierte Datenmenge: ~2,3 MB über TXT-Eintrag-Antworten
**2. Indikatoren für Kompromittierung**
- Domain: suspect-domain.xyz (vor 3 Tagen registriert)
- Nameserver: ns1.suspect-domain.xyz (203.0.113.50)
- Abfragemuster: TXT-Eintrag-Anfragen mit Base64-codierten Subdomains
- Antwortmuster: TXT-Einträge mit Base64-codierten Payloads