Programming lesson
Netzwerküberwachung mit Snort: Praktische Analyse von Angriffsszenarien (CS6262 Projekt 4)
Lerne, wie du mit Snort und Wireshark legitimen von bösartigem Netzwerkverkehr unterscheidest. Dieses Tutorial führt dich durch vier Angriffsszenarien: DDoS, Brute-Force, Web-Angriffe und Botnets – perfekt für das CS6262-Projekt 4.
Einführung in die Netzwerküberwachung und Snort
Netzwerksicherheit ist heute wichtiger denn je. Mit der zunehmenden Zahl vernetzter Geräte und der wachsenden Bedrohung durch Cyberangriffe müssen Netzwerkadministratoren in der Lage sein, legitimen von bösartigem Verkehr zu unterscheiden. In diesem Tutorial lernst du, wie du mit Snort und Wireshark Netzwerkverkehr analysierst und eigene Regeln zur Erkennung von Angriffen erstellst. Dieses Wissen ist direkt anwendbar im CS6262 Projekt 4 zur Netzwerküberwachung, das im Herbst 2025 an der Georgia Tech stattfand. Die aktuellen Bedrohungen durch DDoS-Angriffe auf Online-Spiele oder Botnetze in KI-gesteuerten Apps zeigen, wie relevant diese Fähigkeiten sind.
Was ist Snort und wie funktioniert es?
Snort ist ein Open-Source-Intrusion-Detection-System (IDS), das Netzwerkverkehr in Echtzeit analysiert und verdächtige Muster erkennt. Es verwendet Regeln, die bestimmte Bedingungen definieren – zum Beispiel eine bestimmte Anzahl von Verbindungen von einer IP-Adresse innerhalb einer Sekunde. Snort kann auf verschiedenen Betriebssystemen wie Ubuntu 24.04 laufen, wie es in der Projekt-VM der Fall ist. Im Projekt 4 wird Snort 3 verwendet, das eine verbesserte Leistung und neue Funktionen bietet.
Die vier Angriffsszenarien im Projekt
Im CS6262-Projekt 4 analysierst du eine PCAP-Datei mit vier verschiedenen Angriffstypen: DDoS, Brute-Force (FTP/SSH), Web-Angriffe und Botnet-Kommunikation. Jeder Angriff hinterlässt charakteristische Spuren im Netzwerkverkehr. Deine Aufgabe ist es, diese mit Snort-Regeln zu erkennen.
1. DDoS-Erkennung
Ein Distributed-Denial-of-Service-Angriff (DDoS) zielt darauf ab, einen Server durch eine Flut von Verbindungen zu überlasten. Im Projekt wird eine Variante verwendet, bei der Angreifer gültige HTTP-Anfragen senden, aber die Verbindungen offen halten, um alle Sockets zu belegen. Du kannst dies erkennen, indem du die Anzahl der Verbindungen pro Sekunde von einer IP-Adresse zählst. Ein Schwellenwert von z.B. 100 Verbindungen pro Sekunde könnte auf einen DDoS hinweisen. Beispiel-Snort-Regel:
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"DDoS: Hohe Verbindungsrate"; flow:to_server; detection_filter:track by_src, count 100, seconds 1; sid:1000001;)
2. Brute-Force-Angriffe (FTP/SSH)
Brute-Force-Angriffe versuchen, Passwörter durch wiederholtes Anmelden zu erraten. Im Projekt wird entweder FTP oder SSH angegriffen. FTP verwendet oft Port 21, SSH Port 22. Du kannst eine hohe Anzahl von fehlgeschlagenen Anmeldeversuchen innerhalb kurzer Zeit erkennen. Snort kann die Anzahl der Verbindungen zu diesen Ports zählen. Beispiel für SSH-Brute-Force:
alert tcp $EXTERNAL_NET any -> $HOME_NET 22 (msg:"SSH Brute-Force"; flow:to_server; detection_filter:track by_src, count 30, seconds 10; sid:1000002;)
3. Web-Angriffe
Web-Angriffe nutzen Schwachstellen in Webanwendungen aus, z.B. SQL-Injection oder Cross-Site-Scripting (XSS). Du kannst spezifische Muster in HTTP-Anfragen suchen, wie bestimmte HTTP-Methoden (z.B. POST mit bösartigem Content) oder verdächtige URI-Parameter. Snort-Regeln können auf HTTP-Header oder -Body prüfen:
alert tcp $EXTERNAL_NET any -> $HOME_NET 80 (msg:"Web-Angriff: SQL-Injection"; content:"SELECT"; http_uri; sid:1000003;)
4. Botnet-Erkennung
Botnets bestehen aus infizierten Maschinen, die mit einem Command-and-Control-Server (C2) kommunizieren. Diese Kommunikation erfolgt oft über regelmäßige HTTP- oder DNS-Anfragen. Du kannst nach bekannten C2-Domains oder ungewöhnlichen Traffic-Mustern suchen. Snort-Regeln können auf spezifische IPs oder Domain-Namen in DNS-Anfragen prüfen:
alert udp $HOME_NET any -> any 53 (msg:"Botnet: Bekannte C2-Domain"; content:"|03|evil|03|com"; nocase; sid:1000004;)
Praktische Schritte zur Analyse
- PCAP-Datei öffnen: Verwende Wireshark, um die Datei evaluation.pcap zu laden. Filtere nach verschiedenen Protokollen (HTTP, FTP, SSH, DNS).
- Verkehrsmuster erkennen: Suche nach auffälligen Häufungen von Verbindungen zu einem Ziel-Port oder -IP. Nutze die Statistikfunktion von Wireshark (z.B. „Endpunkte“ oder „Konversationen“).
- Snort-Regeln schreiben: Basierend auf den Mustern erstellst du Regeln, die die Angriffe erkennen. Achte auf die richtige Syntax und die Verwendung von
msg,sidunddetection_filter. - Snort ausführen: Starte Snort mit deiner Regeldatei gegen die PCAP-Datei:
snort -c snort.rules -r evaluation.pcap -A alert_json. - Ergebnisse prüfen: Analysiere die generierte JSON-Datei mit dem Skript
cal_unique_connection_2022.py, um die Anzahl der eindeutigen Verbindungen pro Angriffstyp zu ermitteln.
Tipps für erfolgreiche Snort-Regeln
- Verwende
detection_filterfür ratenbasierte Erkennung (z.B. bei DDoS und Brute-Force). - Nutze
contentundhttp_urifür Web-Angriffe. Achte auf Groß-/Kleinschreibung und verwendenocasewenn nötig. - Für Botnets: Suche nach bekannten C2-Domains oder IPs. Du kannst auch die TTL (Time-to-Live) oder andere Header-Felder analysieren.
- Teste jede Regel einzeln, um Fehler zu isolieren. Beginne mit einfachen Regeln und füge Komplexität hinzu.
- Die Projektanforderungen empfehlen 4-8 Regeln. Stelle sicher, dass jede Regel einen eindeutigen Angriffstyp abdeckt.
Häufige Fehler vermeiden
- Falsche Ports: Stelle sicher, dass du die richtigen Ports für den Dienst verwendest (FTP: 21, SSH: 22, HTTP: 80, DNS: 53).
- Zu aggressive Regeln: Ein zu niedriger Schwellenwert kann zu vielen False Positives führen. Experimentiere mit den Werten.
- Vergessene Regel-IDs: Jede Regel benötigt eine eindeutige
sid(z.B. 1000001, 1000002, ...). - Kein Flow-Keyword: Verwende
flow:to_serveroderflow:from_server, um die Richtung des Verkehrs zu bestimmen.
Zusammenfassung
Mit diesem Tutorial hast du die Grundlagen der Netzwerküberwachung mit Snort erlernt. Du kannst nun die vier Angriffsszenarien im CS6262-Projekt 4 identifizieren und eigene Regeln schreiben. Die Fähigkeit, legitimen von bösartigem Verkehr zu unterscheiden, ist entscheidend für die Netzwerksicherheit – ob in der Schule, im Beruf oder beim Schutz deines Heimnetzwerks. Übe mit verschiedenen PCAP-Dateien und bleibe über aktuelle Bedrohungen informiert, z.B. durch Sicherheitsblogs oder Konferenzen.
„Netzwerksicherheit ist kein Produkt, sondern ein Prozess.“ – Bruce Schneier