Zum Inhalt springen

Services, Wiki-Artikel, Blog-Beiträge und Glossar-Einträ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 für Security-Teams

Netzwerkverkehr auf Angriffe analysieren: Wireshark für Paket-Analyse (Protokoll-Dissection, Capture Filter, Display Filter), Zeek (früher Bro) für Logging und Scripting, Suricata für IDS/IPS-Detection mit Rules, NetworkMiner für forensische Analyse. Typische Angriffsmuster im Traffic: Beaconing, DNS-Exfiltration, NTLM-Relay, Port-Scanning, Lateral Movement erkennen.

Vincent Heinen 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. 52).

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

Wireshark Grundlagen:

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)

Folgen einer TCP-Session:
  → Rechtsklick auf Paket → "Follow" → "TCP Stream"
  → Zeigt 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: 192.168.1.100, Port: 443, Protocol: http, Key File: server.key
  # ACHTUNG: Nur möglich wenn kein Perfect Forward Secrecy!
  # PFS (ECDHE): kein nachträgliches Entschlüsseln möglich!

  # Alternative: Pre-Master-Secret-Logfile:
  export SSLKEYLOGFILE=/tmp/ssl.log  # Browser-Umgebungsvariable
  # 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

Angriffs-Signaturen im Netzwerk:

1. Port-Scanning (nmap):
  Erkennungsmerkmale:
  → Viele TCP-SYN-Pakete von einer IP zu vielen Ports
  → SYN ohne ACK-Antwort (SYN-Scan)
  → Zeitintervalle: reguläres Muster (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: unbekannte externe IP oder Domain

  Wireshark-Analyse:
  → Statistics → IO Graph mit "ip.dst == C2_IP" → regelmäßige Spikes!
  → Time-Delta zwischen Paketen: konstant = Beaconing

  Zeek-Detection:
  # Beaconing mit Zeek Connection-Log:
  # /opt/zeek/logs/current/conn.log analysieren:
  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-DNS-Exfiltration:
  # 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:
  # DNS-Log analysieren:
  cat dns.log | zeek-cut query | awk '{print length, $0}' |
    sort -rn | head -20  # Längste DNS-Queries

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 → 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)

Zeek für kontinuierliche Netzwerkanalyse:

Installation und Grundkonfiguration:
  # Ubuntu:
  apt install zeek
  # Konfiguration:
  # /opt/zeek/etc/node.cfg
  [zeek]
  type=standalone
  host=localhost
  interface=eth0

  # Starten:
  zeekctl deploy
  zeekctl status

Log-Dateien (in /opt/zeek/logs/current/):
  conn.log     → alle Verbindungen (Source, Dest, Duration, Bytes)
  dns.log      → DNS-Anfragen und -Antworten
  http.log     → HTTP-Requests (URL, Method, User-Agent, Response)
  ssl.log      → TLS-Verbindungen (JA3-Fingerprint, Zertifikat-Info)
  files.log    → Übertragene Dateien (MD5-Hash!)
  weird.log    → Protokoll-Anomalien
  notice.log   → Zeek-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

Suricata für regelbasierte Erkennung:

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

  Beispiele:
  # 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):
  # Download und Update:
  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:
  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):

Wozu NetworkMiner:
  → Analysiert PCAP-Dateien (kein Live-Capture nötig)
  → Extrahiert automatisch: Dateien, E-Mails, Credentials
  → GUI: einfacher als Wireshark für Anfänger
  → Hosts-Tab: alle Hosts mit Betriebssystem-Fingerprint

Credentials aus PCAP extrahieren:
  # Cleartext-Protokolle: HTTP, FTP, Telnet, SMTP, POP3, IMAP
  # NetworkMiner → Credentials-Tab:
  → Username, Passwort, Protokoll, Zeitstempel

Datei-Extraktion:
  # NetworkMiner → Files-Tab:
  → Alle übertragenen Dateien (HTTP-Downloads, SMB-Transfers)
  → Hash (MD5) → VirusTotal-Lookup

  # Oder: Tshark (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

Pcap-Automatisierung (RITA - Real Intelligence Threat Analytics):
  # RITA: Analysiert Zeek-Logs auf Beaconing, Scanning, Long Connections
  # GitHub: activecountermeasures/rita

  # Installation:
  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

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 9001AZAVBSI

Cookielose Analyse via Matomo (selbst gehostet, kein Tracking-Cookie). Datenschutzerklärung