Was sind Snort und Snort-Regeln?

Oktober 16, 2023

Was ist Snort?

Snort ist ein Open-Source-System zur Erkennung und Prävention von Netzwerkintrusion (IDS/IPS), das den Netzwerkdatenverkehr überwacht und potenziell bösartige Aktivitäten in IP-Netzwerken erkennt. Unternehmen können Snort mithilfe einer regelbasierten Sprache implementieren, die protokoll-, signatur- und anomaliebasierte Untersuchungsmethoden kombiniert, um bösartige Pakete im Netzwerkverkehr zu erkennen und potenzielle Angriffsvektoren zu blockieren.

Auf die Mischung kommt es an. Gängige signaturbasierte Methoden sind bei der Erkennung bekannter Bedrohungen wirksam, bei unbekannten Bedrohungen sind sie jedoch nicht so gut geeignet. Snort nutzt auch verhaltensbasierte Ansätze, um tatsächliche Schwachstellen zu entdecken, indem es die Netzwerkaktivität mit einem vordefinierten Satz von Snort-Regeln vergleicht. Dadurch ist es in der Lage, komplexe zukünftige Bedrohungen zu erkennen, die durch signaturbasierte Methoden allein bisher möglicherweise nicht zu identifizieren waren.

Anwendungsszenarien für Snort

Snort wird hauptsächlich von Unternehmen verwendet, die ein plattformunabhängiges IDS/IPS suchen, um ihre Netzwerke vor zukünftigen Bedrohungen zu schützen. Folgende Aspekte geben den Ausschlag für Snort:

  • Überwachung des Netzwerkverkehrs in Echtzeit
  • Protokollanalyse
  • Inhaltsabgleich; gleicht Regeln nach Protokoll, Ports und dem Vorhandensein von Inhalt ab
  • Fingerabdruck des Betriebssystems (BS)
  • Kompatibilität mit beliebigem BS

Aber Snort hat noch mehr zu bieten.

Paket-Sniffing und Protokollierung

Snort kann als Paket-Sniffer dienen, der den Netzwerkverkehr auf einer lokalen Netzwerkschnittstelle erfasst. Sie können Snort auch als Paketlogger nutzen, der erfasste Pakete auf die Festplatte schreibt, um den Netzwerkverkehr zu debuggen. Oder nutzen Sie die Netzwerk-IDS/IPS-Funktionen, um den Netzwerkverkehr in Echtzeit zu überwachen und jedes Paket auf verdächtige Aktivitäten oder potenziell bösartige Nutzlasten zu untersuchen.

Warnungen und Regeln

Snort kann basierend auf den konfigurierten Regeln Warnungen für alle ungewöhnlichen Pakete generieren, die im Netzwerkdatenverkehr entdeckt werden. Das kann helfen, Netzwerkbedrohungen oder andere Risiken zu identifizieren, die zur Ausnutzung von Schwachstellen führen könnten.

Die Snort-Regelsprache ist sehr flexibel und ermöglicht Ihnen die Erstellung eigener Snort-Regeln, um regelmäßige Netzwerkaktivitäten von anormalen Aktivitäten zu unterscheiden. Dadurch können Sie neue Verfahren hinzufügen, die Snort anweisen, das Netzwerk auf bestimmtes Verhalten zu überwachen und potenzielle Angriffe auf das Netzwerk des Unternehmens zu verhindern.

Angriffserkennung

Aufgrund der Flexibilität der Snort-Regelsprache und der Kompatibilität mit allen Betriebssystemen ist Snort in der Lage, jeden netzwerkbasierten Angriff zu erkennen, sofern dem Angriffsverhalten eine Regel zugeordnet ist. Im Folgenden sind einige Arten von Kompromittierungen aufgelistet, bei deren Erkennung Snort die Unternehmen unterstützen kann.

DoS (Denial-of-Service)/DDoS (Distributed-Denial-of-Service)

Bei DoS-/DDoS-Angriffen wird ein Netzwerk mit unzulässigen Serviceanfragen überflutet, um den Geschäftsbetrieb zu stören. Während ein DoS-Angriff von einem einzelnen System aus gestartet wird, handelt es sich bei einem DDoS-Angriff um einen orchestrierten Angriff, der von mehreren Systemen an mehreren Standorten ausgeht.

Pufferüberlauf

Ein Pufferüberlauf tritt auf, wenn der Angreifer mehr eingehenden Datenverkehr an eine Netzwerkadresse weiterleitet, sodass das Netzwerkdatenvolumen die gesamte verfügbare Bandbreite im System übersteigt.

Spoofing

Manchmal imitiert ein Hacker einen autorisierten Benutzer oder ein autorisiertes System, um auf ein Zielnetzwerk zuzugreifen und Informationen zu stehlen oder böswillige Aktivitäten auszuführen. Das wird als Spoofing-Angriff bezeichnet.

Common Gateway Interface (CGI)

CGI stellt eine Schnittstelle zwischen Web und Endbenutzer zum Rendern dynamischer Webseiten bereit. Allerdings ist auch bekannt, dass es Sicherheitslücken enthält, die von Hackern ausgenutzt werden können. Webbasierte CGI-Skripte können häufig Opfer von Eingabevalidierungsangriffen werden, da bösartige Eingaben nicht gefiltert werden.

Stealth-Port-Scans

Hacker verwenden häufig Stealth-Port-Scans, auch bekannt als halboffene Scans, um über offene Ports im Netzwerk anzugreifen, ohne eine vollständige Verbindung herzustellen. Dabei wird ein einzelnes Paket über den Drei-Wege-Handshake des Transmission Control Protocol (TCP) gesendet, und der Vorgang wird beendet, sobald ein Port im Zielnetzwerk erkannt wird. Dadurch werden Firewalls umgangen, und der Scan erscheint als normaler Netzwerkverkehr.

Funktionsweise von Snort

Snort basiert auf der Paketerfassungsbibliothek (libpcap), einer systemunabhängigen Schnittstelle zur Erfassung des Datenverkehrs, die in Netzwerkanalyseprogrammen weit verbreitet ist. Snort überwacht den Netzwerkverkehr und vergleicht ihn mit einem Snort-Regelsatz, der von Benutzern in einer Konfigurationsdatei definiert wird. Diese Regeln werden auf Pakete im Netzwerkverkehr angewendet, und Warnungen werden ausgegeben, wenn ungewöhnliche Aktivitäten erkannt werden.

Wir möchten etwas genauer auf die Funktionsweise und Regeln von Snort eingehen.

Snort-Modi

Snort kann mit einem von drei Flags konfiguriert werden, die den Betriebsmodus bestimmen:

  • Sniffer-Modus (Flag -v): Snort liest die TCP/IP-Pakete und gibt in der Konsole Paketinformationen aus.
  • Paketprotokollierungsmodus (Flag -l): Snort protokolliert eingehende TCP/IP-Pakete zur weiteren Analyse in einem Protokollierungsverzeichnis auf der Festplatte.
  • NIDS-Modus (Flag -c): Snort bestimmt anhand des in der Konfigurationsdatei angegebenen Regeltyps, ob eine Aktion für den Netzwerkverkehr ausgeführt werden soll.

Snort-Regeltypen

Snort wertet Regeln nicht in der Reihenfolge aus, in der sie in der Konfigurationsdatei aufgeführt sind. Stattdessen werden sie anhand des Regeltyps überprüft, der die Aktion angibt, die ausgeführt werden soll, wenn Snort ein Paket erkennt, das den Regelkriterien entspricht.

Die fünf Grundregeltypen in Snort lauten:

  • Warnregeln: Wenn ein verdächtiges Paket erkannt wird, generiert Snort eine Warnung.
  • Blockierungsregeln: Snort blockiert das verdächtige Paket und alle nachfolgenden Pakete im Netzwerkfluss.
  • Drop-Regeln: Snort verwirft das Paket, sobald die Warnung generiert wird.
  • Protokollierungsregeln: Snort protokolliert das Paket, sobald die Warnung generiert wird.
  • Bestanden-Regeln: Snort ignoriert das verdächtige Paket und markiert es als bestanden.

Verständnis von Snort-Regeln

Es ist wichtig, die Snort-Regeln richtig zu schreiben, damit sie wie vorgesehen funktionieren. Das heißt, dass sie zukünftige Bedrohungen in Ihrem Netzwerk erfolgreich identifizieren können. Dazu benötigen Sie ein klares Verständnis der Snort-Syntax und der Bildung der Regeln.

Snort-Regeln werden zwar normalerweise in einer einzigen Zeile geschrieben, doch neuere Versionen von Snort ermöglichen auch mehrzeilige Regeln. Das ist besonders nützlich für komplexere Regeln, die sich nur schwer auf eine Zeile beschränken lassen.

Snort-Regeln bestehen aus zwei logischen Teilen: Regelheader und Regeloptionen. Sehen wir uns das genauer an.

Regelheader

Diese definieren die Aktion, die ausgeführt werden soll, wenn Datenverkehr identifiziert wird, der der Regel entspricht. Ein Regelheader besteht aus fünf Hauptkomponenten:

  • Auszuführende Aktion: Die erste in einer Snort-Regel deklarierte Komponente
  • IP-Adressen: Quelle und Ziel
  • Portnummern: Quelle und Ziel
  • Verkehrsrichtung: -> für unidirektional von der Quelle zum Ziel; <> für bidirektional
  • Prüfprotokoll: Protokolle "Layer 3" (IP und ICMP) und "Layer 4" (TCP und UDP)

Hinweis: Snort unterstützt derzeit zwar Layer 3 und 4, in Snort 3 können Sie Snort aber auch anweisen, Regeln nur mit dem Datenverkehr für den jeweiligen Anwendungsschicht-Service (z. B. SSL/TLS und HTTP) abzugleichen.

Regeloptionen

Diese definieren die Kriterien für den Netzwerkverkehr, die erfüllt sein müssen, damit eine Regel übereinstimmt, sowie die Ausgabe, wenn eine Übereinstimmung vorliegt. Hier sind einige der verfügbaren Regeloptionen:

  • Meldung, die angezeigt wird, wenn die Regel übereinstimmt: Erläutert den Zweck der Regel
  • Flussstatus: Gibt die Sitzungseigenschaften an, die für ein bestimmtes Paket überprüft werden sollen
  • Inhalt oder Muster: Gibt den Inhalt oder das Muster an, nach dem in den Payload- oder Nicht-Payload-Daten eines Pakets gesucht werden soll
  • Dienst- oder Anwendungsprotokoll: Weist Snort an, den Inhalt oder das Muster entweder im Datenverkehr des angegebenen Anwendungsschicht-Service oder an den im Regelheader angegebenen Quell- und Zielports zu identifizieren
  • Snort-ID (Sid) und Revisionsnummer (Rev): Identifiziert eindeutig eine Snort-Regel (Sid) oder die Revisionsnummer einer Snort-Regel (Rev)

Snort-Beispielregeln

Sehen wir uns an, wie Sie Snort-Regeln für einen DoS-Angriff mithilfe von Docker-Honeypots schreiben würden.

Um diesen Angriffsmodus aufzudecken, müssen wir eine Regel schreiben, um HTTP-Anfragen zu erkennen, die von einem kompromittierten Docker-Image über eine TCP/IP-Verbindung gesendet werden:

alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS

DoS-Angriffe werden gestartet, indem der Server über eine bestehende Verbindung mit HTTP-GET-Anfragen überschwemmt wird. Daher müssen wir Snort anweisen, im Abschnitt für Regeloptionen nach diesem Muster zu suchen:

# only detect established TCP connections from client requests
flow:to_server, established;
# match on HTTP GET requests
http_header; content:"Mozilla/5.0 (Windows NT 10.0|3B| Win64|3B| x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36";
http_method; content:"GET";

Da der Angriffsmodus über Honeypots gestartet wird, wird die Regel als Netzwerktrojaner-Aktivität klassifiziert:

alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (
    msg: "Detects DoS HTTP request sent by compromised Docker image";
    flow:to_server, established;
    http_header; content:"Mozilla/5.0 (Windows NT 10.0|3B| Win64|3B| x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36";
    http_method; content:"GET";
    classtype:trojan-activity;
    sid:8001951;
    rev:20220420;
)

Einsatz von Snort-Regeln, die von Experten verfasst wurden

Die Implementierung von Snort in Ihren Cybersicherheits-Stack bietet einen flexiblen und plattformunabhängigen Ansatz zum Schutz Ihres Netzwerks vor bekannten und zukünftigen Bedrohungen der Netzwerksicherheit. Allerdings müssen die Regeln konfiguriert werden, damit sie ordnungsgemäß funktionieren.

Für relativ einfache Anwendungsfälle könnten Sie Ihre eigenen Snort-Regeln schreiben, es ist jedoch eine anspruchsvolle Aufgabe, die Regeln im Hinblick auf zukünftige Bedrohungen auf dem neuesten Stand zu halten. Erwägen Sie stattdessen die Verwendung von Snort- und YARA-Regeln, die von Experten erstellt wurden, wie dem frei verfügbaren Community-Regelsatz oder CrowdStrike Falcon Intelligence.