Unser Einführungslabor konzentriert sich auf die Identifizierung eines Vorfalls im Zusammenhang mit dem Zugriff auf das Admin-Panel eines Webservers.
Fall
Während der ISA-Ferien wurden Entwickler von Drittanbietern beauftragt, eine Webanwendung zu erstellen, die auf dem Tomcat-Webserver gehostet werden sollte. Der Einfachheit halber haben die Entwickler die Webkonsole für die Verwaltung von Serveranwendungen für die gesamte Außenwelt verfügbar gemacht und ein "nicht triviales" admin: admin-Konto erstellt.
Die Drohung
Ein Angreifer stößt beim Scannen der externen Hosts des Unternehmens auf Port 8080 des betreffenden Webservers, stellt sicher, dass die Administrationskonsole verfügbar ist, und führt nach einigen Versuchen das Kennwort für das Administratorkonto erfolgreich durch.
Aufgabe
Es muss festgelegt werden, wie der Administrator für Informationssicherheit SIEM vor seinem Urlaub einrichten kann, um einen Vorfall im Zusammenhang mit der betreffenden Bedrohung rechtzeitig zu registrieren. Danach müssen Sie dieses Angriffsszenario implementieren und sicherstellen, dass die Korrelationsanweisungen ordnungsgemäß funktionieren.
Virtuelle Infrastruktur
Die Situation entwickelt sich in der folgenden in VirtualBox bereitgestellten IT-Infrastruktur:
- Angreifer-Maschine (Kali Linux, IP: 8.8.8.10, 4 GB RAM, Kali: Kali);
- Firewall mit Intrusion Detection System (pfSense, externe IP: 8.8.8.1, interne Netzwerk-IP: 192.168.1.1, DMZ-IP: 192.168.2.1, 1 GB RAM, Administrator: pfsense);
- Webserver (Ubuntu Server 18.04 mit Tomcat, IP 192.168.2.15, 2 GB RAM, Benutzer: Benutzer);
- Server SIEM-System "KOMRAD" (Ubuntu 20.04, IP 192.168.1.99, 4 GB RAM, Benutzer: Benutzer).
Wenn Sie diese Infrastruktur selbst bereitstellen möchten, können Sie die Anweisungen verwenden . Wenn Sie jedoch Zeit sparen möchten, haben wir die konfigurierten virtuellen Maschinen im OVA-Format veröffentlicht . Das SIEM-System muss zusätzlich erhalten werden, dies wird jedoch nachstehend beschrieben.
Lösung: Einrichten eines SIEM-Systems
Um das Problem zu lösen, führen wir nacheinander die Aktionen des Angreifers aus, analysieren, wie sie sich in den Firewall- und Webserver-Protokollen widerspiegeln, konfigurieren die Erfassung, Analyse und Filterung von Ereignissen und erstellen die erforderlichen Korrelationsanweisungen im SIEM-System.
Der Leitfaden unseres Labors enthält detaillierte Schritte zur Lösung dieses Problems. In diesem Artikel konzentrieren wir uns nur auf die wichtigsten Punkte.
1. Senden von Ereignissen von der Firewall
Mit der pfSense-Firewall können Sie Ihre Protokolle über das Syslog-Protokoll an einen Remote-Server senden. Dazu müssen Sie nur die IP-Adresse und den Port des Syslog-Kollektors SIEM "KOMRAD" festlegen und eine Regel hinzufügen, die das Senden von Protokollen aus dem 192.168.2.0/24-Netzwerk an das interne Netzwerk 192.168 ermöglicht .1.0 / 24.
Das SIEM-System empfängt Ereignisse des folgenden Typs:
<134> 1 2020-10-18T02: 33: 40.684089 + 00: 00 pfSense.localdomain filterlog 9761 - - 4 ,,, 1000000103, em0, match, block , in, 4, 0x0 ,, 64,25904,0, DF, 6, tcp, 60, 8.8.8.10 , 8.8.8.1 , 35818,1721,0, S, 1017288379 ,, 64240 ,, mss; sackOK; TS; nop; wscale
Wie Sie sehen können, enthält dieser Eintrag so wichtige Informationen wie die IP-Adresse des Hosts, der die Verbindung hergestellt hat, die IP-Adresse des Hosts, zu dem die Verbindung hergestellt wird, und einen Hinweis darauf, dass der Verbindungsversuch blockiert wurde.
2. Senden von Ereignissen von einem Webserver
Der Tomcat-Webserver protokolliert http-Anforderungen in lokalen Protokollen, die über rsyslog an das SIEM-System umgeleitet werden können. Um dieses Problem zu lösen, können Sie auch den Dateisammler verwenden, der Teil des SIEM-Systems "KOMRAD" ist. In den Datensätzen sehen Sie, dass die IP-Adresse des Hosts, von dem die Anforderung empfangen wurde, sowie das Benutzerkonto bei erfolgreicher Autorisierung registriert sind:
3. Empfangen eines Ereignisstroms durch das SIEM-System "KOMRAD"
Die berücksichtigten Ereignisse werden vom SIEM-System "KOMRAD" automatisch registriert:
Die beiden genannten Ereignistypen reichen aus, um folgende Situationen zu erkennen:
- Verbindungsblockierung - basierend auf Blockierung;
- Port-Scan - bei mehrfacher Blockierung von Verbindungsversuchen, die von demselben Host initiiert wurden;
- Verdacht auf nicht autorisierten Zugriff - Port-Scan und anschließender Administratorzugriff.
Alle drei Situationen können Informationssicherheitsvorfälle sein, aber natürlich mit unterschiedlichem Schweregrad.
Bevor wir Vorfälle registrieren, müssen wir lernen, wie Sie die oben genannten nützlichen Informationen aus Ereignissen extrahieren.
4. Analyse von Ereignissen durch das SIEM-System "KOMRAD" (Parsing)
Um Quellereignisse in einem SIEM-System zu analysieren, müssen Sie ein Plugin erstellen, das eine Reihe regulärer Ausdrücke enthält. Für die beliebtesten Quellen verfügt COMRAD bereits über vorgefertigte Plugins. Wenn kein Plug-In vorhanden ist, kann der Benutzer eines erstellen.
Im Folgenden finden Sie ein Beispiel für das Entwerfen eines regulären Ausdrucks zum Extrahieren von Feldern aus dem obigen Firewall-Ereignis. Als Debugging-Tool haben wir das Portal https://regex101.com/ verwendet.
Nach dem Erstellen des Plug-Ins werden Daten aus Ereignissen in separate Felder extrahiert, wie aus der folgenden Ereigniskarte hervorgeht:
5. Konfigurieren von Filtern zum Extrahieren von interessierenden Informationssicherheitsereignissen aus dem Stream
Um die Ereignisse zu identifizieren, die für uns im Strom von Ereignissen, die in das SIEM-System eintreten, von Interesse sind, müssen wir Filter einrichten. Im SIEM-System werden "KOMRAD" -Filter mit der gängigen Skriptsprache Lua gebildet (Informationssicherheitsspezialisten sind bereits aus Nmap und Suricata damit vertraut).
Um Firewall-Ereignisse im Zusammenhang mit dem Blockieren der Verbindung auszuwählen, erstellen wir den folgenden Filter:
-- filter
function filter(event)
-- , IP- ,
action = event:getString ('Action')
ip = event:getString ('IpSrc')
-- IP-,
if action == 'block' then
return {IP=ip}
end
end
Der Filter für das Tomcat-Ereignis sieht etwas komplizierter aus. Wir prüfen, ob das vom Ereignis abgerufene Konto mit dem Wert "admin" übereinstimmt. In diesem Fall geben wir auch die IP-Adresse zurück.
function filter(event)
journal = event:getString ('Journal')
login = event:getString ('Username')
ip = event:getString ('IpSrc')
if journal == 'tomcat-access' and login == 'admin' then
return {IP=ip}
end
end
In einer Produktionsumgebung müssen Sie zur Verbesserung der Systemleistung möglicherweise zu Beginn jedes Filters eine bestimmte Kollektor-ID überprüfen, um den Umfang des Filters einzuschränken.
6. Erstellen von Korrelationsanweisungen
Erstellen wir Korrelationsanweisungen für die betrachteten Situationen mit den folgenden Schweregraden:
- Verbindungsblockierung - "unbedeutend";
- Port Scan - Niedrig;
- Das Senden von http-Anfragen über das Administratorkonto ist "hoch".
Um einen Vorfall zu erstellen, wenn die Verbindung blockiert ist, reicht es aus, in der Korrelationsanweisung den einzigen angewendeten Filter anzugeben:
filter 5
Die zweite Anweisung, die bei dreimaliger Blockierung einer von demselben Host initiierten Verbindung einen Vorfall verursachen sollte, sieht folgendermaßen aus:
/* ip, , .*/
var ip
filter 5 export ip = ep.IP
/* IP.
notforking, .*/
filter 5 +1m where ep.IP==ip notforking
// .
filter 5 +1m where ep.IP==ip notforking
In der dritten Anweisung fügen wir eine weitere Zeile hinzu, in der wir den Filter mit der ID 6 verwenden, der erstellt wurde, um Anforderungen an den Webserver mit dem Administratorkonto auszuwählen.
var ip
filter 5 export ip = ep.IP
filter 5 +1m where ep.IP==ip notforking
filter 5 +1m where ep.IP==ip notforking
filter 6 +1m where ep.IP==ip notforking
Im Tutorial-Beispiel wurde das Zeitfenster auf 1 Minute belassen. Im wirklichen Leben ist es sinnvoll, es auf mehrere Minuten zu erhöhen.
Lösung: einen Angriff ausführen und identifizieren
Nach der Konfiguration der Ereignisquellen und des SIEM-Systems ist es Zeit, einen Scheinangriff durchzuführen. Lassen Sie uns zuerst die Ports scannen:
Dann gehen wir zu Port 8080 und durchlaufen die Autorisierung mit dem Konto admin: admin:
Diese Aktionen werden vom SIEM-System "KOMRAD" aufgezeichnet: Alle drei Korrelationsanweisungen werden ausgelöst:
Fazit
Daher haben wir in dieser Laborarbeit die Abfolge von Aktionen zum Sammeln und Analysieren von Informationssicherheitsereignissen für den Fall gesehen, dass Sie Administratorzugriff auf den Webserver erhalten. Im nächsten Labor entwickelt der Angreifer den Angriff und verwendet den gewonnenen Administratorzugriff, um Informationen über die Zielinfrastruktur zu sammeln.
So erhalten Sie eine Demoversion des SIEM-Systems "KOMRAD"
Wir befinden uns derzeit im Beta-Test unseres Produkts, an dem jeder teilnehmen kann. Dazu stellen wir die aktuelle Version des SIEM-Systems in Form eines Docker-Containers zur Verfügung. In der Demoversion gibt es nur zwei Einschränkungen: Die Ereignisverarbeitungsrate wird auf 1000 EPS gesenkt, und es gibt kein Autorisierungs- und Zugriffskontrollsystem.
Um ein Archiv mit einer Demoversion zu erhalten, schreiben Sie uns an die E-Mail-Adresse getkomrad@npo-echelon.ru aus dem Postfach Ihrer Organisation (wir sind daran interessiert, wer teilnehmen wird). Wir laden Sie auch zu unserer Telegrammgruppe ein, in der Sie bei Schwierigkeiten Hilfe erhalten können: https://t.me/komrad4
Links
- Virtuelle Maschinen zum Organisieren der Trainingsinfrastruktur in VirtualBox: https://yadi.sk/d/GQ4BFn_soDJj0A
- , : https://yadi.sk/i/tD8nxckjYwr_6Q
- №1: https://yadi.sk/i/ffztj2XQMPD-xw