
Prima iterazione di Feedback WAF basato su ML
NGWAF è creato da @yupengfei, @zhangbosen, @matthewng e @elizabethlim.
Un ringraziamento speciale a @ruinahkoh per i suoi contributi nelle fasi iniziali di NGWAF.
NGWAF è un proof of concept sperimentale e non è pronto per l'uso in produzione nella sua forma attuale.
Indice
I Componenti | Gli ingranaggi di NGWAF
Il Cervello: WAF basato su Machine Learning
Lo Specchio: Ambiente di Quarantena Interattivo Scalabile
La Libreria: Sequenza di Riaddestramento per Rinforzare il Cervello
Con la crescita esplosiva delle applicazioni web dai primi anni 2000, gli attacchi basati sul web sono diventati progressivamente più diffusi. Una soluzione comune è il Web Application Firewall (WAF). Tuttavia, modificare le regole degli attuali WAF per migliorare i meccanismi di rilevamento può essere complesso e difficile. NGWAF mira a superare questi inconvenienti con una nuova architettura basata su machine learning e su un sistema di quarantena che reindirizza a honeypot.
Ispirato da reali punti critici emersi dalla gestione dei WAF, NGWAF intende semplificare e reimmaginare le operazioni WAF attraverso i seguenti processi:
| Punto critico | Funzionalità di NGWAF |
|---|---|
| La manutenzione dei meccanismi di rilevamento e delle regole può essere complessa | Sfruttare il machine learning per automatizzare il processo di creazione e aggiornamento dei meccanismi di rilevamento |
| Il blocco immediato del traffico malintenzionato riduce le opportunità di apprendere dal comportamento degli attaccanti per futuri miglioramenti del WAF | Eliminazione delle minacce tramite quarantena con reindirizzamento, invece del tradizionale drop e blocco del traffico malevolo |
Per rendere la distribuzione semplice e portabile, abbiamo containerizzato i diversi componenti dell'architettura usando docker e li abbiamo configurati in un file docker-compose. Ciò consente di eseguirlo su un'installazione fresca in modo rapido e semplice, poiché le dipendenze sono gestite automaticamente da docker. La distribuzione può essere estesa per essere distribuita in un cluster kubernetes locale o su cloud, rendendola scalabile poiché gli utenti possono aumentare il numero di nodi/pod per gestire grandi volumi di traffico.
La distribuzione è stata testata su macOS (Docker desktop) e linux (ubuntu).
NGWAF funziona immediatamente con tre componenti chiave, questi componenti come menzionato sopra sono tutti containerizzati e sono scalabili in base all'uso desiderato. La risorsa protetta può essere personalizzata apportando una modifica alla distribuzione all'interno della configurazione.
Architettura di alto livello di NGWAF con i flussi di traffico attesi da diverse parti
NGWAF è stato progettato tenendo presenti i seguenti vantaggi chiave per l'utente:
NGWAF sostituisce i set di regole tradizionali con modelli di deep learning per ridurre la complessità della gestione e dell'aggiornamento delle regole. Invece di modificare manualmente le regole, il machine learning di NGWAF automatizza il processo di apprendimento dei pattern dai dati malevoli. I dati raccolti dall'ambiente di quarantena vengono automaticamente puliti e raggruppati, permettendo di essere riaddestrati nel nostro modello di rilevamento, se desiderato.
NGWAF adotta una nuova architettura composta da un ambiente interattivo e di quarantena costruito per isolare potenziali attaccanti ostili. A differenza dei WAF convenzionali che bloccano al rilevamento, NGWAF devia gli attaccanti verso sistemi emulati, intrappolandoli per attenuare l'impatto delle loro azioni malevole. L'ambiente funge anche da sinkhole per raccogliere i metodi di attacco correnti, consentendo l'osservazione e la raccolta di dati malevoli. Questi dati possono essere utilizzati per migliorare ulteriormente la capacità di rilevamento di NGWAF.
NGWAF in azione: al rilevamento di una SQL injection, NGWAF reindirizza all'ambiente di quarantena, invece di droppare o bloccare il tentativo.
Il principio guida alla base della creazione di NGWAF è proteggersi dai rischi evidenziati nel documento di sensibilizzazione standard dell'Open Web Application Security Project - The OWASP Top 10 2021.
I dati di addestramento e i controlli di conformità per NGWAF sono raccolti e condotti in base a questo requisito.
Chi ha bisogno di manuale quando possiamo andare NEURALE
Invece dei set di regole tradizionali che richiedono agli analisti di identificare e aggiungere manualmente le regole col passare del tempo, NGWAF sfrutta pipeline end-to-end di machine learning per il meccanismo di rilevamento, riducendo notevolmente la complessità nella gestione delle regole WAF, specialmente per il rilevamento di payload complessi.
Per fare ciò, abbiamo prima bisogno di creare un modello base e un'architettura che gli utenti possano utilizzare come punto di partenza, prima di utilizzare in seguito i dati raccolti dalle proprie applicazioni per riaddestrare e affinare:
L'architettura generale del modello base è una semplice RNN con un modulo LSTM bidirezionale come mostrato di seguito:
Immagine presa da Tensorflow (link)
Utilizzando questa architettura RNN, siamo riusciti a ottenere miglioramenti delle prestazioni rispetto a modelli più semplici:
| Architettura del modello | Accuratezza | Punteggio F1 |
|---|---|---|
| Il nostro modello finale | 0.995 | 0.993 |
| Rete neurale senza modulo LSTM | 0.956 | 0.891 |
| Albero decisionale | 0.878 | 0.840 |
| Regressione logistica | 0.946 | 0.914 |
Sebbene abbiamo incluso log da varie applicazioni per migliorare la generalizzabilità del modello base, un'ulteriore manutenzione e riaddestramento del modello saranno importanti per:
Per affrontare questo problema, gli utenti di NGWAF beneficiano della nostra pipeline di riaddestramento del modello end-to-end preconfezionata e possono facilmente attivare la manutenzione del modello con alcuni semplici passaggi senza dover guardare sotto il cofano. (Vedi Sezione 3 di seguito).
Non lasciarli andare, DETENETELI!
Contrariamente ai WAF tradizionali dove il traffico malevolo viene bloccato o droppato immediatamente, NGWAF adotta un approccio più flessibile. In cui, reindirizza e trattiene gli attaccanti malevoli all'interno di un ambiente di quarantena. Questo ambiente è composto da vari honeypot interattivi emulati per cercare di raccogliere più metodi/dati di attacco, questi dati saranno utilizzati per potenzialmente migliorare il tasso di rilevamento di NGWAF per attacchi più moderni e complessi.
Attualmente, l'ambiente di quarantena di NGWAF inoltra tutti i dati inviati dall'attaccante intrappolato al nostro stack ELK per analisi e visualizzazione. I dati vengono automaticamente puliti in diversi componenti della richiesta HTTP, quindi impacchettati internamente nel backend dell'ambiente in formato JSON prima dell'inoltro. Questo aiuta a ridurre il costo del lavoro manuale necessario per pulire e indicizzare i dati quando avviamo il processo di riaddestramento.
NGWAF attualmente consente agli utenti di apportare modifiche all'aspetto front-end dei nostri honeypot all'interno dell'ambiente di quarantena (basato su una versione personalizzata di drupot). Gli utenti devono semplicemente sostituire la cartella assets all'interno del volume docker con i propri asset front-end desiderati.
NGWAF è anche adattabile per utenti che desiderano collegare i propri honeypot come parte dell'ambiente di quarantena. Gli utenti devono solo inoltrare le richieste HTTP dell'honeypot al server backend dell'ambiente (i processi backend puliranno e inoltreranno automaticamente i dati al dashboard di analisi - stack ELK).
Intelligente non è veramente intelligente finché non continui ad imparare
Con l'emergere di nuovi payload e vettori di attacco, è importante aggiornare le capacità di rilevamento per garantire la sicurezza. Pertanto, una funzione di riaddestramento è integrata in NGWAF per assicurare che i difensori siano in grado di addestrare il modello di machine learning a rilevare questi payload più recenti. Gli utenti che non hanno familiarità con la data science o le reti neurali saranno comunque in grado di affinare i modelli con questa interfaccia semplice, poiché i passaggi complessi sono gestiti per loro.
Gli utenti devono solo caricare un piccolo campione di dati etichettati dal proprio sistema live (ad esempio, nell'ordine di poche migliaia), che verrà utilizzato per affinare il modello esistente nel backend:
Quando l'addestramento è completo, agli utenti verranno forniti anche alcuni brevi diagnostici del modello (ad esempio, prestazioni sul test set e a varie soglie di punteggio) per valutare il nuovo modello.
Per attivare il processo di riaddestramento, vai al dashboard e segui questi passaggi:
payload [str]: questo dovrebbe essere il payload del tuo sistema, o alcuni esempi basati su stringhe (es. esempi di SQLi injection)label [int]: dovrebbe essere 0 per esempi non malevoli e 1 per esempi malevoliis_url [bool]: dovrebbe essere TRUE se il payload proviene dal tuo sistema (cioè includendo altre informazioni di sistema come percorso e dispositivo), e FALSE se è un esempio basato su stringa (es. "1==1")http://localhost:8088 per visualizzare il pannello di amministrazione di NGWAF.
NGWAF utilizza lo stack ELK per catturare i log dei dati di rete che passano attraverso NGWAF, consentendo agli utenti di monitorare il traffico che passa attraverso NGWAF per ulteriori analisi.
NGWAF include anche notifiche Telegram in tempo reale, per informare i proprietari sulle minacce maligne in tempo reale rilevate da NGWAF.
Sistemi operativi testati
Con Docker in esecuzione, esegui il seguente file usando il comando seguente:
./run.sh
Per sostituire i target, punta le variabili dest_server e honey_pot_server ai target corretti nel file /waf/WafApp/waf.py
# Sostituiscimi
dest_server = "dvwa"
honey_pot_server = "drupot:5000"
Una volta che il container Docker è attivo, puoi visitare il tuo localhost, dove queste porte eseguono questi servizi:
| Porta | Servizio | Osservazioni | Credenziali (se applicabile) |
|---|---|---|---|
| 8080 | DVWA | Dove risiede il WAF | admin:password |
| 5601 | Elasticsearch | Per visualizzare i log | elastic:changeme |
| 8088 | Admin Dashboard | Dashboard per gestire il modello WAF | |
| 5001 | Drupot | Honeypot |
Configura anche quanto segue in un file waf-secrets.env
# ENDPOINT API MODELLO ML
API_ENDPOINT="https://xxxxx.xxx"
API_KEY="******************"
# CONFIGURAZIONE TELEGRAM
TELEGRAM_CHAT_ID="-57893457893457345"
TELEGRAM_TOKEN="******************"
Configura anche quanto segue in un file waf-admin-secrets.env
# ENDPOINT API MODELLO ML
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 è un progetto W.I.P., open source, funzioni e caratteristiche possono cambiare da una patch all'altra. Se sei interessato a contribuire, sentiti libero di aprire un issue o una pull request!