Analyse von Snort-Alarmen

CybersicherheitBeginner
Jetzt üben

Einführung

Snort ist ein leistungsstarkes Open-Source-Intrusion-Detection-System (IDS), das den Netzwerkverkehr in Echtzeit überwacht und mit einer Reihe vordefinierter Regeln abgleicht. Wenn verdächtige Aktivitäten mit einer Regel übereinstimmen, generiert Snort einen Alarm. Das Verständnis, wie diese Alarme gelesen und interpretiert werden, ist eine grundlegende Fähigkeit für jeden Cybersicherheitsexperten.

Das Generieren eines Alarms ist nur der Anfang des defensiven Workflows. Analysten müssen entscheiden, ob das Ereignis von Bedeutung ist, was im Netzwerk passiert ist und ob Folgemaßnahmen erforderlich sind. Deshalb ist die Interpretation von Alarmen genauso wichtig wie die Erstellung von Regeln. Ein starker Erkennungs-Stack ist nutzlos, wenn Menschen die Ergebnisse nicht präzise lesen und triagieren können.

In diesem Lab lernen Sie, wie Sie mit Snort-Alarmen arbeiten. Sie starten Snort mit einer benutzerdefinierten Konfiguration, erzeugen Netzwerkverkehr, um spezifische Erkennungsregeln auszulösen, und analysieren anschließend die resultierenden Logdateien. Snort kann Protokolle in verschiedenen Formaten ausgeben; wir konzentrieren uns auf das fast-Log (das eine schnelle, einzeilige Zusammenfassung des Ereignisses bietet) und das full-Log (das detaillierte Informationen zum Paket-Header enthält).

Mehrere Regeln auslösen

In diesem Schritt starten Sie das Snort Intrusion Detection System und erzeugen Netzwerkverkehr, um die für Sie vorkonfigurierten benutzerdefinierten Regeln auszulösen.

Das Erzeugen von bekanntem, gutartigem Testverkehr ist eine Standardpraxis in der Detection Engineering. Wenn Sie genau wissen, welche Pakete welche Regeln auslösen sollten, haben Sie eine klare Basis, um zu validieren, dass die Überwachungspipeline durchgängig funktioniert.

Die Umgebung wurde mit zwei einfachen Snort-Regeln eingerichtet: eine, die ICMP-Verkehr (Ping) erkennt, und eine weitere, die HTTP-Verkehr (Web) auf Port 80 erkennt. Wir haben außerdem eine benutzerdefinierte Konfigurationsdatei unter /etc/snort/custom.conf erstellt, die Snort anweist, Alarme in zwei verschiedenen Formaten zu speichern: als "fast"-Log und als "full"-Log.

Starten Sie zunächst Snort im Daemon-Modus (Hintergrund) unter Verwendung der benutzerdefinierten Konfigurationsdatei. Das Flag -D weist Snort an, im Hintergrund zu laufen, -c gibt die Konfigurationsdatei an, -l legt das Log-Verzeichnis fest und -i eth0 weist Snort an, auf der Standard-Netzwerkschnittstelle zu lauschen.

sudo snort -c /etc/snort/custom.conf -l /var/log/snort -i eth0 -D

Sie sollten eine Meldung sehen, die bestätigt, dass Snort erfolgreich initialisiert und als Daemon gestartet wurde.

Erzeugen Sie als Nächstes etwas Netzwerkverkehr, um die Regeln auszulösen. Wir senden drei ICMP-Ping-Pakete an einen öffentlichen DNS-Server (8.8.8.8), um die ICMP-Regel auszulösen.

ping -c 3 8.8.8.8

Erzeugen Sie nun etwas HTTP-Verkehr, indem Sie den curl-Befehl verwenden, um eine Webseite abzurufen. Dies löst die HTTP-Regel aus. Wir verwenden > /dev/null, um die HTML-Ausgabe nicht in Ihrem Terminal anzuzeigen.

curl -s http://example.com > /dev/null

Warten Sie schließlich einen Moment, bis Snort die Pakete verarbeitet und in die Logdateien geschrieben hat. Sie können überprüfen, ob die Logdateien erstellt wurden, indem Sie den Inhalt des Snort-Log-Verzeichnisses auflisten.

sleep 2
ls -l /var/log/snort

Sie sollten fast_alert.log und full_alert.log in der Ausgabe sehen, was darauf hinweist, dass Snort den Verkehr erfolgreich erkannt und die Alarme generiert hat.

total 8
-rw-r--r-- 1 root root  345 Sep 15 10:00 fast_alert.log
-rw-r--r-- 1 root root 1250 Sep 15 10:00 full_alert.log

Das Fast-Log analysieren

In diesem Schritt untersuchen Sie die Datei fast_alert.log. Das "fast"-Alarmformat ist so konzipiert, dass es leicht lesbar und prägnant ist. Es zeichnet die kritischsten Informationen eines Alarms in einer einzigen Zeile auf, was es ideal für schnelle Überprüfungen oder die Verarbeitung durch automatisierte Skripte macht.

Dies ist das Format, mit dem viele Analysten zuerst arbeiten, da die Triage normalerweise breit angelegt beginnt. Sie möchten wissen, was ausgelöst wurde, wann es ausgelöst wurde und welche Endpunkte beteiligt waren, bevor Sie entscheiden, ob detailliertere Paketdetails erforderlich sind.

Verwenden Sie den cat-Befehl, um den Inhalt der Fast-Log-Datei anzuzeigen.

cat /var/log/snort/fast_alert.log

Ihre Ausgabe wird in etwa so aussehen:

09/15-10:00:01.123456  [**] [1:1000001:1] ICMP Ping Detected [**] {ICMP} 192.168.1.10 -> 8.8.8.8
09/15-10:00:01.123456  [**] [1:1000001:1] ICMP Ping Detected [**] {ICMP} 8.8.8.8 -> 192.168.1.10
09/15-10:00:05.654321  [**] [1:1000002:1] HTTP Traffic Detected [**] {TCP} 192.168.1.10:45678 -> 93.184.216.34:80

Lassen Sie uns die Komponenten einer Fast-Alarm-Zeile aufschlüsseln:

  • Zeitstempel: 09/15-10:00:01.123456 zeigt das genaue Datum und die Uhrzeit, zu der das Paket erfasst wurde.
  • Generator, SID und Revision: [1:1000001:1] repräsentiert die Generator-ID (1 bedeutet, es ist eine Standard-Snort-Regel), die Snort-ID (SID), die die Regel eindeutig identifiziert (1000001), und die Revisionsnummer der Regel (1).
  • Nachricht: ICMP Ping Detected ist die für Menschen lesbare Nachricht, die in der Regel definiert ist.
  • Protokoll: {ICMP} oder {TCP} gibt das verwendete Netzwerkprotokoll an.
  • Quelle und Ziel: 192.168.1.10:45678 -> 93.184.216.34:80 zeigt die Quell-IP und den Port, einen Pfeil, der die Richtung des Verkehrs angibt, sowie die Ziel-IP und den Port.

Durch das Lesen dieses Logs kann ein Sicherheitsanalyst schnell feststellen, wer angreift (Quell-IP), was das Ziel ist (Ziel-IP und Port) und welche Art von Angriff vermutet wird (Nachricht).

Vollständige Paket-Dumps untersuchen

Während das Fast-Log hervorragend für einen schnellen Überblick geeignet ist, fehlen ihm die tiefgreifenden technischen Details, die für eine gründliche Untersuchung erforderlich sind. In diesem Schritt untersuchen Sie die Datei full_alert.log.

Das Full-Log unterstützt eine andere Fragestellung: nicht nur "Welcher Alarm wurde ausgelöst?", sondern "Wie sah das auslösende Paket tatsächlich aus?". Dieser tiefere Kontext hilft Analysten, Alarme zu validieren, das Protokollverhalten zu verstehen und potenzielle Fehlalarme oder Umgehungsversuche zu untersuchen.

Das "full"-Alarmformat enthält die vollständigen Paket-Header-Informationen. Dies ermöglicht es Analysten, Details wie die Time to Live (TTL), den Type of Service (TOS), die Paketlänge und TCP-Flags zu überprüfen, was entscheidend sein kann, um die Art eines Angriffs zu verstehen oder Fehlalarme zu identifizieren.

Da das Full-Log mehrere Zeilen pro Alarm enthält, kann es recht lang sein. Verwenden Sie den head-Befehl, um die ersten 30 Zeilen der Datei anzuzeigen, die Ihnen die Details der ersten paar Alarme zeigen.

head -n 30 /var/log/snort/full_alert.log

Ihre Ausgabe wird in etwa so aussehen:

[**] [1:1000001:1] ICMP Ping Detected [**]
09/15-10:00:01.123456 192.168.1.10 -> 8.8.8.8
ICMP TTL:64 TOS:0x0 ID:12345 IpLen:20 DgmLen:84 DF
Type:8  Code:0  ID:15  Seq:1  ECHO
...
[**] [1:1000002:1] HTTP Traffic Detected [**]
09/15-10:00:05.654321 192.168.1.10:45678 -> 93.184.216.34:80
TCP TTL:64 TOS:0x0 ID:54321 IpLen:20 DgmLen:60 DF
******S* Seq: 0x1A2B3C4D  Ack: 0x0  Win: 0xFAF0  TcpLen: 40

Beachten Sie die zusätzlichen Details, die im Full-Log bereitgestellt werden:

  • IP-Header-Info: TTL:64 (Time to Live), TOS:0x0 (Type of Service), ID:12345 (IP-Identifikation) und DgmLen:84 (Datagrammlänge).
  • ICMP-Spezifika: Type:8 Code:0 zeigt eine ICMP Echo Request (einen Standard-Ping) an.
  • TCP-Spezifika: ******S* repräsentiert die im Paket gesetzten TCP-Flags (in diesem Fall ist das SYN-Flag gesetzt, was den Beginn einer Verbindung anzeigt). Es zeigt auch Sequenznummern (Seq), Bestätigungsnummern (Ack) und die Fenstergröße (Win) an.

Durch die Analyse dieser vollständigen Paket-Dumps können Sie ein viel tieferes Verständnis des Netzwerkverkehrs gewinnen, der den IDS-Alarm ausgelöst hat.

Zusammenfassung

In diesem Lab haben Sie das Snort Intrusion Detection System erfolgreich konfiguriert und ausgeführt, um den Netzwerkverkehr zu überwachen. Sie haben gelernt, wie man benutzerdefinierte Erkennungsregeln durch das Erzeugen spezifischer Arten von Netzwerkverkehr, wie ICMP-Pings und HTTP-Anfragen, auslöst. Darüber hinaus haben Sie die Unterschiede zwischen den fast- und full-Alarm-Logs von Snort untersucht und praktische Erfahrungen beim Lesen und Interpretieren der darin enthaltenen kritischen Informationen gesammelt – von grundlegenden Quell- und Ziel-IPs bis hin zu detaillierten Paket-Header-Flags. Diese Fähigkeiten sind unerlässlich, um die Netzwerksicherheit effektiv zu überwachen und auf potenzielle Bedrohungen zu reagieren.