
Erste Iteration eines ML-basierten Feedback-WAF
NGWAF wurde erstellt von @yupengfei, @zhangbosen, @matthewng und @elizabethlim.
Besonderer Dank an @ruinahkoh für ihre Beiträge in den Anfangsphasen von NGWAF.
NGWAF ist ein experimenteller Proof of Concept und in seiner aktuellen Form nicht für den Produktionseinsatz geeignet.
Inhaltsverzeichnis
Die Komponenten | Die Zahnräder von NGWAF
Das Gehirn: Maschinelles Lernen basierte WAF
Der Spiegel: Skalierbare interaktive Quarantäne-Umgebung
Die Bibliothek: Nachschulungssequenz zur Stärkung des Gehirns
Mit dem explosionsartigen Wachstum von Webanwendungen seit den frühen 2000er Jahren sind webbasierte Angriffe zunehmend häufiger geworden. Eine gängige Lösung ist die Web Application Firewall (WAF). Das Anpassen von Regeln aktueller WAFs zur Verbesserung der Erkennungsmechanismen kann jedoch komplex und schwierig sein. NGWAF versucht, diese Nachteile mit einer neuartigen Architektur zu adressieren, die auf maschinellem Lernen und Quarantäne-zu-Honeypot basiert.
Inspiriert von tatsächlichen Schmerzpunkten beim Betrieb von WAFs, beabsichtigt NGWAF, den WAF-Betrieb durch die folgenden Prozesse zu vereinfachen und neu zu denken:
| Schwachstelle | NGWAF-Funktion |
|---|---|
| Die Wartung von Erkennungsmechanismen und Regeln kann komplex sein | Nutzung von maschinellem Lernen zur Automatisierung des Prozesses der Erstellung und Aktualisierung von Erkennungsmechanismen |
| Das sofortige Blockieren von bösartigem Traffic verringert die Möglichkeiten, aus dem Verhalten von Bedrohungsakteuren zu lernen, um zukünftige WAF-Verbesserungen zu erzielen | Bedrohungsbeseitigung durch umgeleitete Quarantäne anstelle des herkömmlichen Verwerfens und Blockierens von bösartigem Traffic |
Um die Bereitstellung einfach und portabel zu gestalten, haben wir die verschiedenen Komponenten der Architektur mit Docker containerisiert und in einer docker-compose-Datei konfiguriert. Dies ermöglicht einen schnellen und einfachen Betrieb auf einer Neuinstallation, da die Abhängigkeiten automatisch von Docker verwaltet werden. Die Bereitstellung kann erweitert werden, um in einem lokalen oder cloudbasierten Kubernetes-Cluster bereitgestellt zu werden, was sie skalierbar macht, da Benutzer die Anzahl der Knoten/Pods erhöhen können, um große Trafficmengen zu bewältigen.
Die Bereitstellung wurde auf macOS (Docker Desktop) und Linux (Ubuntu) getestet.
NGWAF läuft sofort einsatzbereit mit drei Schlüsselkomponenten; diese Komponenten sind, wie oben erwähnt, alle containerisiert und je nach gewünschter Nutzung skalierbar. Die geschützte Ressource kann durch eine Änderung der Bereitstellung innerhalb des Setups angepasst werden.
Hochrangige Architektur von NGWAF mit erwarteten Trafficflüssen verschiedener Parteien
NGWAF wurde mit den folgenden Hauptvorteilen für Benutzer entwickelt:
NGWAF ersetzt traditionelle Regelsets durch Deep-Learning-Modelle, um die Komplexität der Verwaltung und Aktualisierung von Regeln zu reduzieren. Anstatt Regeln manuell zu bearbeiten, automatisiert das maschinelle Lernen von NGWAF den Prozess des Musterlernens aus bösartigen Daten. Daten, die aus der Quarantäne-Umgebung gesammelt werden, werden automatisch bereinigt und gebündelt, sodass sie bei Bedarf in unser Erkennungsmodell nachtrainiert werden können.
NGWAF verwendet eine neuartige Architektur, die aus einer interaktiven Quarantäne-Umgebung besteht, die entwickelt wurde, um potenzielle feindliche Angreifer zu isolieren. Im Gegensatz zu herkömmlichen WAFs, die bei Erkennung blockieren, leitet NGWAF Bedrohungsakteure auf emulierte Systeme um, fängt sie ein und mildert die Auswirkungen ihrer bösartigen Aktionen. Die Umgebung fungiert auch als Sinkhole, um aktuelle Angriffsmethoden zu sammeln und ermöglicht die Beobachtung und Sammlung bösartiger Daten. Diese Daten können verwendet werden, um die Erkennungsfähigkeit von NGWAF weiter zu verbessern.
NGWAF in Aktion: Bei Erkennung einer SQL-Injection leitet NGWAF in unsere Quarantäne-Umgebung um, anstatt den Versuch zu verwerfen oder zu blockieren.
Das Leitprinzip hinter der Erstellung von NGWAF ist der Schutz vor den Risiken, die im Standard-Awareness-Dokument des Open Web Application Security Project – The OWASP Top 10 2021 – hervorgehoben werden. Trainingsdaten und Compliance-Prüfungen für NGWAF werden basierend auf dieser Anforderung gesammelt und durchgeführt.
Wer braucht manuell, wenn wir neuronal gehen können
Anstelle von traditionellen Regelsets, die von Analysten verlangen, im Laufe der Zeit manuell Regeln zu identifizieren und hinzuzufügen, nutzt NGWAF End-to-End-Machine-Learning-Pipelines für den Erkennungsmechanismus, was die Komplexität der WAF-Regelverwaltung erheblich reduziert, insbesondere bei der Erkennung komplexer Payloads.
Dazu mussten wir zunächst ein Basismodell und eine Architektur erstellen, mit denen Benutzer beginnen können, bevor sie später Daten aus ihren eigenen Anwendungen zum Nachtrainieren und Feintuning verwenden:
Die allgemeine Architektur des Basismodells ist ein einfaches RNN mit einem bidirektionalen LSTM-Modul wie unten dargestellt:
Bild entnommen aus Tensorflow (Link)
Durch die Verwendung dieser RNN-Architektur konnten wir Leistungsverbesserungen gegenüber einfacheren Modellen erzielen:
Obwohl wir Logs von verschiedenen Anwendungen einbezogen haben, um die Generalisierbarkeit des Basismodells zu verbessern, werden weitere Wartung und Nachschulung des Modells wichtig sein, um:
Um dies zu adressieren, profitieren Benutzer von NGWAF von unserer verpackten End-to-End-Modell-Nachschulungs-Pipeline und können die Modellwartung mit wenigen einfachen Schritten auslösen, ohne unter die Haube schauen zu müssen. (Siehe Abschnitt 3 unten).
Lass sie nicht gehen, HALTET SIE FEST!
Im Gegensatz zu herkömmlichen WAFs, bei denen bösartiger Traffic sofort blockiert oder verworfen wird, verfolgt NGWAF einen flexibleren Ansatz. Dabei werden bösartige Akteure umgeleitet und in einer Quarantäne-Umgebung festgehalten. Diese Umgebung besteht aus verschiedenen interaktiven emulierten Honeypots, um weitere Angriffsmethoden/Daten zu sammeln; diese Daten werden genutzt, um die Erkennungsrate von NGWAF für modernere und komplexere Angriffe potenziell zu verbessern.
Derzeit leitet die Quarantäne-Umgebung von NGWAF alle Daten, die vom gefangenen Angreifer übermittelt werden, an unseren ELK-Stack zur Analyse und Visualisierung weiter. Die Daten werden automatisch in verschiedene Komponenten der HTTP-Anfrage bereinigt, dann intern auf dem Backend der Umgebung im JSON-Format verpackt, bevor sie weitergeleitet werden. Dies hilft, die Arbeitskosten zu senken, die für die Bereinigung und Indizierung der Daten beim Start des Nachschulungsprozesses erforderlich sind.
NGWAF ermöglicht Benutzern derzeit, das Erscheinungsbild des Front-End-Aspekts unserer Honeypots innerhalb der Quarantäne-Umgebung zu ändern (basierend auf einer angepassten Version von Drupot). Benutzer müssen lediglich den Assets-Ordner im Docker-Volume durch ihre bevorzugten Front-End-Assets ersetzen.
NGWAF ist auch für Benutzer geeignet, die ihre eigenen Honeypots als Teil der Quarantäne-Umgebung einbinden möchten. Benutzer müssen lediglich die HTTP-Anfragen des Honeypots an den Backend-Server der Umgebung weiterleiten (Backend-Prozesse bereinigen und leiten die Daten automatisch an das Analyse-Dashboard – ELK-Stack weiter).
Klug ist nicht wirklich klug, bis man weiterlernen kann
Da neue Payloads und Angriffsvektoren auftauchen, ist es wichtig, die Erkennungsfähigkeiten zu aktualisieren, um die Sicherheit zu gewährleisten. Daher ist eine Nachschulungsfunktion in NGWAF integriert, um sicherzustellen, dass Verteidiger das maschinelle Lernmodell trainieren können, um diese neueren Payloads zu erkennen. Benutzer, die mit Data Science oder neuronalen Netzen nicht vertraut sind, können die Modelle dennoch mit dieser einfachen Oberfläche feinabstimmen, da die komplexen Schritte für sie erledigt werden.
Benutzer müssen nur eine kleine Stichprobe gelabelter Daten aus ihrem eigenen Live-System hochladen (z.B. im niedrigen Tausenderbereich), die zum Feintuning des bestehenden Modells im Backend verwendet werden:
Wenn das Training abgeschlossen ist, erhalten Benutzer auch einige kurze Modelldiagnosen (z.B. Leistung auf Testsatz und bei verschiedenen Score-Schwellenwerten), um das neue Modell zu bewerten.
Um den Nachschulungsprozess auszulösen, gehen Sie zum Dashboard und folgen Sie diesen Schritten:
payload [str]: Dies sollte entweder der Payload von Ihrem System oder einige stringbasierte Beispiele sein (z.B. SQLi-Injektionsbeispiele)label [int]: Dies sollte 0 für nicht bösartige Beispiele und 1 für bösartige Beispiele seinis_url [bool]: Dies sollte TRUE sein, wenn der Payload von Ihrem System stammt (d.h. einschließlich anderer Systeminformationen wie Pfad und Gerät), und FALSE, wenn es sich um ein stringbasiertes Beispiel handelt (z.B. "1==1")http://localhost:8088, um das NGWAF-Admin-Panel anzuzeigen.
NGWAF verwendet den ELK-Stack, um Logs von Netzwerkdaten zu erfassen, die durch NGWAF fließen, sodass Benutzer den Traffic, der durch NGWAF läuft, zur weiteren Analyse überwachen können.
NGWAF verfügt auch über eine Live-Telegram-Benachrichtigung, um Betreiber über live erkannte bösartige Bedrohungen zu informieren, die von NGWAF erkannt werden.
Getestete Betriebssysteme
Mit laufendem Docker führen Sie die folgende Datei mit dem folgenden Befehl aus:
./run.sh
Um die Ziele zu ersetzen, setzen Sie die Variablen dest_server und honey_pot_server auf die korrekten Ziele in der Datei /waf/WafApp/waf.py
# Replace me
dest_server = "dvwa"
honey_pot_server = "drupot:5000"
Sobald der Docker-Container läuft, können Sie Ihren Localhost besuchen, auf dem diese Ports die folgenden Dienste bereitstellen:
Richten Sie auch Folgendes in einer waf-secrets.env-Datei ein
# ML MODEL API ENDPOINT
API_ENDPOINT="https://xxxxx.xxx"
API_KEY="******************"
# TELEGRAM CONFIG
TELEGRAM_CHAT_ID="-57893457893457345"
TELEGRAM_TOKEN="******************"
Richten Sie auch Folgendes in einer waf-admin-secrets.env-Datei ein
# ML MODEL API ENDPOINT
API_ENDPOINT="https://xxxxxx.xxx"
API_KEY="******************"
BUCKET_NAME="******************"
ACCESS_KEY_ID="******************"
SECRET_ACCESS_KEY="******************"
SQL_USERNAME="******************"
SQL_PASSWORD="******************"
SQL_SERVER="******************"
SQL_DATABASE_NAME="******************"
NGWAF ist ein in Arbeit befindliches Open-Source-Projekt; Funktionen und Merkmale können sich von Patch zu Patch ändern. Wenn Sie Interesse haben, einen Beitrag zu leisten, erstellen Sie bitte ein Issue oder einen Pull Request!
| Modellarchitektur | Genauigkeit | F1-Wert |
|---|
| Unser endgültiges Modell | 0.995 | 0.993 |
| Neuronales Netzwerk ohne LSTM-Modul | 0.956 | 0.891 |
| Entscheidungsbaum | 0.878 | 0.840 |
| Logistische Regression | 0.946 | 0.914 |
| Port | Dienst | Anmerkungen | Anmeldedaten (falls zutreffend) |
|---|
| 8080 | DVWA | Wo die WAF läuft | admin:password |
| 5601 | Elasticsearch | Zum Anzeigen von Logs | elastic:changeme |
| 8088 | Admin Dashboard | Dashboard zur Verwaltung des WAF-Modells | |
| 5001 | Drupot | Honeypot |