SlideShare a Scribd company logo
1 of 28
Download to read offline
Jak usprawnić działanie WAF
wykorzystując uczenie maszynowe?
Andrzej Prałat & Wojciech Rybicki
Kim jesteśmy
● Andrzej Prałat
Machine Learning Engineer @ Grey Wizard
● Wojciech Rybicki
Machine Learning Engineer @ Grey Wizard
● WAF
● Ochrona przed atakami DDOS
● Load balancing
● CDN
Agenda
1. Wstęp
a. Ogólne informacje dotyczące Web Application Firewall (WAF)
b. Dlaczego WAF stanowi istotny element ochrony
c. Rodzaje błędów popełnianych przez WAF
d. Dlaczego WAF wymaga aktualizacji
e. Problemy związane z aktualizowaniem WAF
2. Opis rozwiązania
a. Wstęp do tematyki uczenia maszynowego
b. Zbiór danych
c. Przygotowywanie atrybutów
d. Jak oceniać model predykcyjny
e. Wybór modelu uczącego
3. Rezultaty
Czym jest Web Application Firewall?
Dlaczego WAF stanowi istotny element ochrony?
● Większość aplikacji posiada przynajmniej jedną podatność na atak
○ 86% wg Whitehat Security’s 2015 Report
○ 80% wg Contrast Security’s 2017 Report
○ 99.7% wg Trustwave Global Security’s 2017 Report
● Podatność nie zawsze musi dotyczyć naszego kodu
● Virtual patching
Koszt pomyłek
fałszywie pozytywnych
Koszt pomyłek
fałszywie negatywnych
Web Application Firewall Wysoki Wysoki
Filtrowanie spamu Wysoki Niski
Badania przesiewowe Niski Wysoki
Weryfikowanie skuteczności działania WAF
Aktualizacja WAF
● Przyczyny potrzeby aktualizacji WAF:
○ Nowe podatności
○ Nowe sposoby ominięcia detekcji oraz błędy w obecnej implementacji reguł
https://github.com/attackercan/regexp-security-cheatsheet
○ Zmiany w sposobie działania chronionej aplikacji
● Celem aktualizacji jest redukcja liczby nowych błędów
● WAF, który nie jest aktualizowany przestaje pełnić swoją funkcję
Wyrażenia regularne
/?x=<script>alert(1)</script>
REGEX: (<script[^>]*>.*?)
Jakie problemy wiążą się z utrzymywaniem WAF?
/?x=<script>alert(1)</script>
● Jak ocenić czy WAF działa dobrze?
● Mała widoczność błędów fałszywie negatywnych.
● Dane silnie niezrównoważone (~ 1:2500)
● Wymaga dużej wiedzy
● Czasochłonne
Rozwiązanie
Klasyfikacja
Uczenie
maszynowe
Uczenie ze
wzmocnieniem
Uczenie
nienadzorowane
Uczenie
nadzorowane
… Regresja Klasyfikacja
Proces
Pozyskiwanie danych
Feature Engineering
Feature Vectors
Trening
Model
Ewaluacja
Zbiór danych
URL ... Class
/?x=..%2F..%2F..%2F..%2Fetc%2Fpasswd ... 1
/backup.sql ... 1
/suggest/?q=hello%3Cscript%3Ejavascript(%27xss%27)%3B&platform_id=12 ... 1
/ ... 0
/faq ... 0
/index.php ... 0
/ ... 0
/category/251/index.html ... 0
/suggest/?q=gam ... 0
/index.asp ... 0
... ... ...
● Podział na zbiór treningowy i testowy
Feature engineering
● URL
○ N-grams
○ Liczba znaków specjalnych jak ‘..’, ‘<’, ‘>’, słowa kluczowe SQL
● IP
○ Geolokalizacja
○ Właściwości IP
○ Obecność na listach
● User agent
○ Wiek przeglądarki
○ Wykorzystywane oprogramowanie
● ...
N-Grams
● n=3
b a c k u p . s q l b a c k u p . s q l b a c k u p . s q l b a c k u p . s q l
b a c k u p . s q l b a c k u p . s q l b a c k u p . s q l b a c k u p . s q l
Feature vectors
n-grams
(url_path, n=3)
n-grams
(user_agent,
n=3)
one hot
encoded
(country)
binary
(is_proxy)
other
features
/a. a.t .tx txt /b. b.t chr hro ... PL RU is_proxy ...
log1 1 1 1 1 0 0 1 1 ... 1 0 0 ....
log2 0 0 1 1 1 1 1 1 ... 0 1 1 ...
log1 = {
"url_path": "/a.txt",
"user_agent": "Chrome 59",
"country": "PL",
"is_proxy": False,
...
}
log2 = {
"url_path": "/b.txt",
"user_agent": "Chrome 59",
"country": "RU",
"is_proxy": True,
...
}
Ewaluacja modelu
Czy model o accuracy na poziomie 99,9%
spełnia nasze oczekiwania?
Ewaluacja modelu
Brak jakiejkolwiek detekcji: accuracy = 99,97%
Inne miary:
● Precyzja = tp / (tp + fp)
(liczba poprawnych blokad / liczba wszystkich blokad)
● Recall = tp / (tp + fn)
(liczba poprawnych blokad / liczba żądań do zablokowania)
● Pole pod wykresem precyzja-recall
PRECYZJA
RECALL
0 1
1
Algorytmy uczące
● Linear regression
● Logistic regression
● Lasso
● Ridge
● SGD
● SVM
● KNN
● Naive Bayes
● Decision Trees
● Random Forest
● Neural networks
● Deep neural networks
● Gradient Boosting
● ...
XGBoost
● Distributed
● Efficient
● Flexible
● Portable
● Multiple languages
Architektura
Baza
predykcji
RaportyPredykcje
Model
Stream
danych
Alerty
Dane
treningowe
Trening
modelu
Aktualizacja
WAF
Monitoring
+
ewaluacja
Rezultaty
17
Średnia liczba potencjalnych podatności w WAF per raport.
Wartość obliczona na podstawie 3 ostatnich raportów.
Automatyzacja
Cron job
0 0 1 * * train_model.py
Baza
predykcji
RaportyPredykcje
Model
Stream
danych
Alerty
Dane
treningowe
Trening
modelu
Aktualizacja
WAF
Monitoring
+
ewaluacja
Aktualne
dane
treningowe
Iteracyjne wzmacnianie WAF i modelu
Aktualizacja
WAF
Predykcja
Uaktualniony
model
Dodatkowo
● Natychmiastowe powiadomienia o
nowych naruszeniach
● Regularne raporty - automatyzacja
procesu aktualizacji WAF
● Oszczędność czasu analityków
Co udało się uzyskać?
● Ciągła weryfikacja poprawności działania WAF - większa kontrola nad
systemem
● Zautomatyzowanie procesu weryfikacji - jego utrzymanie nie wymaga
żadnych czynności
● Szybsze usprawnianie WAF - oszczędność czasu i ludzi
Pytania?
Andrzej Prałat
apralat@greywizard.com
Wojciech Rybicki
wrybicki@greywizard.com

More Related Content

Similar to PLNOG19 - Andrzej Prałat & Wojciech Rybicki - Jak usprawnić działanie WAF wykorzystując machine learning?

Xen desktop na platformie nutanix
Xen desktop na platformie nutanixXen desktop na platformie nutanix
Xen desktop na platformie nutanixPawel Serwan
 
Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?javOnet
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
PHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowyPHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowyWydawnictwo Helion
 
JavaScript. Ćwiczenia praktyczne. Wydanie II
JavaScript. Ćwiczenia praktyczne. Wydanie IIJavaScript. Ćwiczenia praktyczne. Wydanie II
JavaScript. Ćwiczenia praktyczne. Wydanie IIWydawnictwo Helion
 
Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Bartlomiej Zass
 
Cometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólnaCometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólnaJakub Hajek
 
Testy jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitTesty jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitPHPstokPHPstok
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?Brainhub
 
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...Trójmiejska Grupa Testerska
 
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaModsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaLeszek Mi?
 
Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Quick-Solution
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyqbeuek
 
Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Future Processing
 
Testowanie bezpieczeństwa – jak dostosować zakres do realnych zagrożeń i budżetu
Testowanie bezpieczeństwa – jak dostosować zakres do realnych zagrożeń i budżetuTestowanie bezpieczeństwa – jak dostosować zakres do realnych zagrożeń i budżetu
Testowanie bezpieczeństwa – jak dostosować zakres do realnych zagrożeń i budżetuSecuRing
 
Obsługa klienta z wykorzystaniem sztucznej inteligencji
Obsługa klienta z wykorzystaniem sztucznej inteligencjiObsługa klienta z wykorzystaniem sztucznej inteligencji
Obsługa klienta z wykorzystaniem sztucznej inteligencji2040.io
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaBartłomiej Cymanowski
 

Similar to PLNOG19 - Andrzej Prałat & Wojciech Rybicki - Jak usprawnić działanie WAF wykorzystując machine learning? (20)

Xen desktop na platformie nutanix
Xen desktop na platformie nutanixXen desktop na platformie nutanix
Xen desktop na platformie nutanix
 
Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
PHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowyPHP5. Bezpieczne programowanie. Leksykon kieszonkowy
PHP5. Bezpieczne programowanie. Leksykon kieszonkowy
 
JavaScript. Ćwiczenia praktyczne. Wydanie II
JavaScript. Ćwiczenia praktyczne. Wydanie IIJavaScript. Ćwiczenia praktyczne. Wydanie II
JavaScript. Ćwiczenia praktyczne. Wydanie II
 
Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)Programowanie aplikacji dla Windows 8 (WinRT)
Programowanie aplikacji dla Windows 8 (WinRT)
 
Cometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólnaCometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólna
 
Testy jednostkowe - PHPUnit
Testy jednostkowe - PHPUnitTesty jednostkowe - PHPUnit
Testy jednostkowe - PHPUnit
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?tRPC - czy to koniec GraphQL?
tRPC - czy to koniec GraphQL?
 
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
TGT#14 - @Before – Nie będę automatyzować @After – No dobra, to nie jest taki...
 
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaModsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
 
Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Bohater UI bez front end developera ?
Bohater UI bez front end developera ?
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.Analiza wydajności następnej generacji - przykłady.
Analiza wydajności następnej generacji - przykłady.
 
Testowanie bezpieczeństwa – jak dostosować zakres do realnych zagrożeń i budżetu
Testowanie bezpieczeństwa – jak dostosować zakres do realnych zagrożeń i budżetuTestowanie bezpieczeństwa – jak dostosować zakres do realnych zagrożeń i budżetu
Testowanie bezpieczeństwa – jak dostosować zakres do realnych zagrożeń i budżetu
 
university day 1
university day 1university day 1
university day 1
 
Obsługa klienta z wykorzystaniem sztucznej inteligencji
Obsługa klienta z wykorzystaniem sztucznej inteligencjiObsługa klienta z wykorzystaniem sztucznej inteligencji
Obsługa klienta z wykorzystaniem sztucznej inteligencji
 
Devops/Sysops security
Devops/Sysops securityDevops/Sysops security
Devops/Sysops security
 
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba GajdaTesty wydajnościowe - najlepsze praktyki - Kuba Gajda
Testy wydajnościowe - najlepsze praktyki - Kuba Gajda
 

PLNOG19 - Andrzej Prałat & Wojciech Rybicki - Jak usprawnić działanie WAF wykorzystując machine learning?

  • 1. Jak usprawnić działanie WAF wykorzystując uczenie maszynowe? Andrzej Prałat & Wojciech Rybicki
  • 2. Kim jesteśmy ● Andrzej Prałat Machine Learning Engineer @ Grey Wizard ● Wojciech Rybicki Machine Learning Engineer @ Grey Wizard ● WAF ● Ochrona przed atakami DDOS ● Load balancing ● CDN
  • 3. Agenda 1. Wstęp a. Ogólne informacje dotyczące Web Application Firewall (WAF) b. Dlaczego WAF stanowi istotny element ochrony c. Rodzaje błędów popełnianych przez WAF d. Dlaczego WAF wymaga aktualizacji e. Problemy związane z aktualizowaniem WAF 2. Opis rozwiązania a. Wstęp do tematyki uczenia maszynowego b. Zbiór danych c. Przygotowywanie atrybutów d. Jak oceniać model predykcyjny e. Wybór modelu uczącego 3. Rezultaty
  • 4. Czym jest Web Application Firewall?
  • 5. Dlaczego WAF stanowi istotny element ochrony? ● Większość aplikacji posiada przynajmniej jedną podatność na atak ○ 86% wg Whitehat Security’s 2015 Report ○ 80% wg Contrast Security’s 2017 Report ○ 99.7% wg Trustwave Global Security’s 2017 Report ● Podatność nie zawsze musi dotyczyć naszego kodu ● Virtual patching
  • 6. Koszt pomyłek fałszywie pozytywnych Koszt pomyłek fałszywie negatywnych Web Application Firewall Wysoki Wysoki Filtrowanie spamu Wysoki Niski Badania przesiewowe Niski Wysoki Weryfikowanie skuteczności działania WAF
  • 7. Aktualizacja WAF ● Przyczyny potrzeby aktualizacji WAF: ○ Nowe podatności ○ Nowe sposoby ominięcia detekcji oraz błędy w obecnej implementacji reguł https://github.com/attackercan/regexp-security-cheatsheet ○ Zmiany w sposobie działania chronionej aplikacji ● Celem aktualizacji jest redukcja liczby nowych błędów ● WAF, który nie jest aktualizowany przestaje pełnić swoją funkcję Wyrażenia regularne /?x=<script>alert(1)</script> REGEX: (<script[^>]*>.*?)
  • 8. Jakie problemy wiążą się z utrzymywaniem WAF? /?x=<script>alert(1)</script> ● Jak ocenić czy WAF działa dobrze? ● Mała widoczność błędów fałszywie negatywnych. ● Dane silnie niezrównoważone (~ 1:2500) ● Wymaga dużej wiedzy ● Czasochłonne
  • 12. Zbiór danych URL ... Class /?x=..%2F..%2F..%2F..%2Fetc%2Fpasswd ... 1 /backup.sql ... 1 /suggest/?q=hello%3Cscript%3Ejavascript(%27xss%27)%3B&platform_id=12 ... 1 / ... 0 /faq ... 0 /index.php ... 0 / ... 0 /category/251/index.html ... 0 /suggest/?q=gam ... 0 /index.asp ... 0 ... ... ... ● Podział na zbiór treningowy i testowy
  • 13. Feature engineering ● URL ○ N-grams ○ Liczba znaków specjalnych jak ‘..’, ‘<’, ‘>’, słowa kluczowe SQL ● IP ○ Geolokalizacja ○ Właściwości IP ○ Obecność na listach ● User agent ○ Wiek przeglądarki ○ Wykorzystywane oprogramowanie ● ...
  • 14. N-Grams ● n=3 b a c k u p . s q l b a c k u p . s q l b a c k u p . s q l b a c k u p . s q l b a c k u p . s q l b a c k u p . s q l b a c k u p . s q l b a c k u p . s q l
  • 15. Feature vectors n-grams (url_path, n=3) n-grams (user_agent, n=3) one hot encoded (country) binary (is_proxy) other features /a. a.t .tx txt /b. b.t chr hro ... PL RU is_proxy ... log1 1 1 1 1 0 0 1 1 ... 1 0 0 .... log2 0 0 1 1 1 1 1 1 ... 0 1 1 ... log1 = { "url_path": "/a.txt", "user_agent": "Chrome 59", "country": "PL", "is_proxy": False, ... } log2 = { "url_path": "/b.txt", "user_agent": "Chrome 59", "country": "RU", "is_proxy": True, ... }
  • 16. Ewaluacja modelu Czy model o accuracy na poziomie 99,9% spełnia nasze oczekiwania?
  • 17. Ewaluacja modelu Brak jakiejkolwiek detekcji: accuracy = 99,97% Inne miary: ● Precyzja = tp / (tp + fp) (liczba poprawnych blokad / liczba wszystkich blokad) ● Recall = tp / (tp + fn) (liczba poprawnych blokad / liczba żądań do zablokowania) ● Pole pod wykresem precyzja-recall PRECYZJA RECALL 0 1 1
  • 18. Algorytmy uczące ● Linear regression ● Logistic regression ● Lasso ● Ridge ● SGD ● SVM ● KNN ● Naive Bayes ● Decision Trees ● Random Forest ● Neural networks ● Deep neural networks ● Gradient Boosting ● ...
  • 19. XGBoost ● Distributed ● Efficient ● Flexible ● Portable ● Multiple languages
  • 22. 17 Średnia liczba potencjalnych podatności w WAF per raport. Wartość obliczona na podstawie 3 ostatnich raportów.
  • 23. Automatyzacja Cron job 0 0 1 * * train_model.py Baza predykcji RaportyPredykcje Model Stream danych Alerty Dane treningowe Trening modelu Aktualizacja WAF Monitoring + ewaluacja
  • 24. Aktualne dane treningowe Iteracyjne wzmacnianie WAF i modelu Aktualizacja WAF Predykcja Uaktualniony model
  • 25. Dodatkowo ● Natychmiastowe powiadomienia o nowych naruszeniach ● Regularne raporty - automatyzacja procesu aktualizacji WAF ● Oszczędność czasu analityków
  • 26. Co udało się uzyskać? ● Ciągła weryfikacja poprawności działania WAF - większa kontrola nad systemem ● Zautomatyzowanie procesu weryfikacji - jego utrzymanie nie wymaga żadnych czynności ● Szybsze usprawnianie WAF - oszczędność czasu i ludzi