Programming lesson
Suricata-Regeln für die IDS-Signatur-Erstellung: Ein praxisnahes Tutorial (Projekt 4, Fall 25)
Lernen Sie, wie Sie effektive Suricata-Regeln schreiben – von einfachen IP-basierten Alerts bis zu komplexen Pattern-Matches. Dieses Tutorial führt Sie Schritt für Schritt durch typische Szenarien aus dem Hochschulprojekt Cs/pubp-6261/8803.
Einleitung: Warum Suricata-Regeln heute wichtiger sind denn je
In Zeiten von KI-gestützten Angriffen und datengetriebenen Phishing-Kampagnen ist die Fähigkeit, eigene Suricata-Regeln zu schreiben, eine unverzichtbare Kompetenz für jeden angehenden Sicherheitsexperten. Ob Sie gerade Ihr Projekt 4: IDS Signature Project im Kurs Cs/pubp-6261/8803 bearbeiten oder sich auf eine Karriere im Bereich Netzwerksicherheit vorbereiten – dieses Tutorial vermittelt Ihnen die Grundlagen und fortgeschrittene Techniken.
Grundlagen: Aufbau einer Suricata-Regel
Bevor wir in die konkreten Szenarien eintauchen, wiederholen wir kurz den Aufbau einer Suricata-Regel. Eine Regel besteht aus drei Teilen: Action, Header und Rule Options. Ein einfaches Beispiel:
alert tcp $HOME_NET any -> $EXTERNAL_NET any (msg:"Beispielregel"; sid:1000001; rev:1;)Die Action (alert), das Protokoll (tcp), Quell- und Zieladresse sowie die Optionen in Klammern. Jetzt wenden wir dieses Wissen auf typische Aufgaben aus dem IDS Signature Project an.
Szenario 1: Alert auf eine bekannte Bedrohungs-IP
Stellen Sie sich vor, Sie erhalten einen Threat-Intelligence-Feed, der die IP 27.43.100.29 als Angreifer auf Webdienste identifiziert. Ihre Aufgabe: Schreiben Sie eine Regel, die bei jedem Zugriff von dieser IP auf einen lokalen Webserver warnt.
Die Lösung nutzt die ip.src-Option und filtert auf Port 80/443 (HTTP/HTTPS). Da HTTP_PORTS bereits definiert ist, können wir diesen Macro verwenden:
alert tcp 27.43.100.29 any -> $HOME_NET $HTTP_PORTS (msg:"Bedrohungs-IP 27.43.100.29 greift Webdienst an"; sid:1; rev:1;)Diese Regel erzeugt einen Alert, sobald die IP 27.43.100.29 eine Verbindung zu einem HTTP-Port im Heimnetz aufbaut. Der sid:1 entspricht der Aufgabenstellung.
Szenario 2: Erkennung von phpMyAdmin-Scans ohne User-Agent
Ihr Unternehmen beobachtet Scans nach der Datei /phpMyAdmin/scripts/setup.php. Auffällig: Die Scans enthalten keinen User-Agent-Header. So schreiben Sie eine Regel, die genau diesen Traffic erkennt:
alert tcp $EXTERNAL_NET any -> $HOME_NET $HTTP_PORTS (msg:"phpMyAdmin Scan ohne User-Agent"; flow:to_server,established; content:"/phpMyAdmin/scripts/setup.php"; http_uri; content:!"User-Agent"; http_raw_header; nocase; sid:2; rev:1;)Erklärung: content:"/phpMyAdmin/scripts/setup.php"; http_uri; sucht nach dem Pfad in der URI. content:!"User-Agent"; http_raw_header; prüft, ob der Header nicht vorhanden ist. Das Ausrufezeichen negiert den Inhalt. Testen Sie diese Regel mit der bereitgestellten http.pcap-Datei.
Szenario 3: Phishing-Links in E-Mails erkennen
Ein bekannter Phishing-Angriff nutzte einen manipulierten OAuth-Link: https://accounts.google.com/o/oauth2/auth. Ihre Regel soll jede E-Mail (SMTP) mit diesem Link identifizieren. Da Suricata SMTP-Daten analysieren kann, nutzen wir file.data oder content im SMTP-Stream:
alert tcp $EXTERNAL_NET any -> $HOME_NET 25 (msg:"Phishing-Link zu Google OAuth in E-Mail"; flow:to_server; content:"accounts.google.com/o/oauth2/auth"; nocase; sid:3; rev:1;)Hinweis: In der Praxis müssten Sie möglicherweise auch ssl oder tls für verschlüsselte Verbindungen berücksichtigen. Für die Aufgabe reicht diese einfache Regel, die mit smtp.pcap getestet werden kann.
Szenario 4 (Extra Credit): Yahoo! Messenger Protokollanalyse
Hier wird es fortgeschritten: Sie sollen Yahoo! Messenger Pakete mit dem Service-Wert 00 f1 identifizieren. Das Protokoll verwendet einen binären Header. Wir nutzen content mit Hex-Notation:
alert tcp any any -> any any (msg:"Yahoo Messenger mit Service 0x00F1"; content:"|00 f1|"; depth:2; offset:?; sid:4; rev:1;)Wichtig: Der genaue Offset hängt vom Protokollaufbau ab. In der Praxis müssen Sie die Paketstruktur aus der Dokumentation entnehmen. Testen Sie mit ymsg2.pcap.
Best Practices und häufige Fehler
- Reihenfolge der Regeln: Da frühere SIDs spätere beeinflussen können, platzieren Sie spezifische Regeln vor allgemeinen.
- Verwendung von Macros: Nutzen Sie vordefinierte Variablen wie
$HOME_NET,$EXTERNAL_NET,$HTTP_PORTS, um die Lesbarkeit zu erhöhen. - Testen: Verwenden Sie die angegebene Test-URL, um Ihre Regeln zu validieren.
- Performance: Vermeiden Sie zu viele
content-Matches ohnefast_pattern, da dies die Geschwindigkeit beeinträchtigt.
Trends und aktuelle Bezüge
Aktuelle Bedrohungen wie KI-generierte Phishing-Mails oder Supply-Chain-Angriffe machen deutlich, warum maßgeschneiderte IDS-Regeln unverzichtbar sind. Mit Suricata können Sie auf neue Angriffsmuster reagieren, ohne auf Updates von Drittanbietern warten zu müssen. Dieses Wissen ist nicht nur für das Projekt 4 relevant, sondern auch für die Zertifizierung zum Cybersecurity Analyst oder für den Einsatz in SOCs.
Fazit
Sie haben gelernt, wie Sie Suricata-Regeln für verschiedene Szenarien schreiben: von einfachen IP-basierten Alerts über URI-Matching bis zu binären Protokollen. Üben Sie mit den bereitgestellten PCAP-Dateien und passen Sie die Regeln an Ihre Umgebung an. Viel Erfolg bei Ihrem Cs/pubp-6261/8803 Projekt 4!