Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Modsecurity – czy Twój WAF to potrafi?
Leszek Miś
Linux Polska Sp. z o.o.
CEL:
Modsecurity jest cool!
Agenda
● Modsecurity
● Wprowadzenie
● Architektura
● Funkcjonalność
● Filtrowanie komunikacji JSON
● Aktywacja mechanizmu ...
Wprowadzenie
● Aplikacje webowe jako cel czyli zagrożenia kryją
się wszędzie:
● Aplikacja
● Protokół
● Serwer HTTP/Proxy/A...
Wprowadzenie
● Rzeczywistość weryfikuje:
● Zimbra: priv_esc poprzez LFI:
– /res/I18nMsg,AjxMsg,ZMsg,ZmMsg,AjxKeys,ZmKeys,Z...
Wprowadzenie
● Problem z patchowaniem podatności:
● Zbyt wysoki koszt
● Kod źródłowy firmy zewnętrznej
● Ograniczony kontr...
Zagrożenia
● Cross Site Scripting
● SQL Injection
● LDAP Injection
● XPATH Injection
● XML Injection
● Blind SQLi
● Time b...
Uchybienia
Wprowadzenie
● WAF pozwala na
● Pełne logowanie audytowe ruchu HTTP:
– requests
– responses
● Monitorowanie HTTP w czasie ...
Wprowadzenie
● Negative security model:
● Monitoruje pod kątem anomalii, nietypowego
zachowania, pod kątem znanych appek.
...
Wprowadzenie
● Negative security model:
SecRule REQUEST_FILENAME „@contains
/owa/scriptname.asx” „chain,
phase:1,block,log...
Wprowadzenie
● Modsecurity for:
● Apache:
– Najpopularniejszy
– Ficzer riczi ricz
– Aktualnie 2.4
● Nginx:
– Reverse proxy...
Architektura
● Reverse Proxy:
● mod_proxy:
<Location /appka/>
ProxyPass http://192.168.122.217/appka/
ProxyPassreverse htt...
Architektura Reverse proxy+modsecurity
Funkcjonalność
● Modsecurity:
● Parsuje:
– Chce zrozumieć ruch HTTP
● Bufferuje:
– Kompletne żądanie przez przekazaniem do...
Funkcjonalność
● Apache z modsecurity pozwala na:
● Deszyfrowanie SSL
● Wydobywanie z transmisji żądań HTTP
● Parsowanie ż...
Funkcjonalność
● Fazy filtrowania:
● Każda transakcja przechodzi przez 5 faz filtrowania:
● 1: Request headers
● 2: Reques...
Funkcjonalność
● Wirtualny patch w uproszczonym przypadku:
● Ograniczenie Request_Body_Size
● Wykrywanie powtarzających si...
Funkcjonalność
● Przykładowe reguły:
● SecRule REQUEST_URI "@detectSQLi"
"id:152,log,deny"
● SecRule REQUEST_BODY "@detect...
LAB1 – uruchomienie Apache
jako Reverse Proxy
Czym jest JSON?
● Prosty, tekstowy format wymiany danych
● Podzbiór języka JS
● Dwie struktury:
● Zbiór par nazwa/wartość
...
Czym jest JSON?
● Openweathermap.org:
{"coord":{"lon":-0.13,"lat":51.51},"sys":
{"message":0.0139,"country":"GB","sunrise"...
Filtrowanie komunikacji JSON
● Modsecurity 2.8.0:
● SecRule REQUEST_HEADERS:Content-Type
"application/json"
"id:'2200001',...
LAB2 - Filtrowanie komunikacji JSON
Mechanizm HMAC
● HMAC Token Protection:
● Forceful Browsing
● Reflected XSS
● Ochrona CSRF
● Manipulacja QUERY_STRINGS
● O...
HMAC
● Manipulacja kontentem:
● W jaki sposób sprawdzić czy odbyła się
modyfikacja dokumentu?
● Parsowanie wyjścia (RESPON...
HMAC
● Executing operator "validateHash" with param ".(aspx?|php)" against
REQUEST_URI.
Target value: "/showimage.php?file...
HMAC
● HMAC zablokuje:
● Skanery
● Automaty
● Botnety
które nie podążają za linkami dostępnymi w
kontekście aplikacji
● XS...
HMAC
HMAC
● Dyrektywy:
● SecDisableBackendCompression On
● SecRuleEngine On
● SecContentInjection On
● SecStreamOutBodyInspecti...
LAB3 - HMAC
OWASP Top 10
● Zbiór 10 najistotniejszych, kluczowych błędów w zabezpieczeniach aplikacji
internetowych:
● A1 – Injection
...
OWASP Docs & tools
● ASVS
● ESAPI
● Testing Guide
● Cheat Sheets
OWASP CRS
● Modsecurity to tylko silnik
● Musimy go „naładować”:
● Tworzenie dedykowanych reguł od podstaw per
aplikacja
●...
OWASP CRS
● HTTP Protection - detecting violations of the HTTP protocol and a locally defined usage policy.
● Real-time Bl...
OWASP CRS
● Reguły OWASP CRS podzielone są na:
● base_rules
● experimental_rules
● optional_rules
● slr_rules
● /etc/httpd...
LAB4 – Atak.
OWASP CRS
● Dostosowanie reguł per aplikacja:
● SecRuleRemoveById
● SecRuleRemoveByMsg
● SecRuleRemoveByTag
LAB5 – instalacja i aktywacja reguł CRS
Różne
● Integracja z BEEF
● DDOS
● LUA
● Splunk for Modsecurity
● Learning mode i generowanie reguł na podstawie
raportów ...
Podsumowanie
● To tylko zajawka na dobry początek
● W Modsecurity drzemią ogromne możliwości i potencjał
● Idealny kompone...
Dziękuję za uwagę:)
lm@linuxpolska.pl
Prochain SlideShare
Chargement dans…5
×

Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

130 vues

Publié le

  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

  1. 1. Modsecurity – czy Twój WAF to potrafi? Leszek Miś Linux Polska Sp. z o.o.
  2. 2. CEL: Modsecurity jest cool!
  3. 3. Agenda ● Modsecurity ● Wprowadzenie ● Architektura ● Funkcjonalność ● Filtrowanie komunikacji JSON ● Aktywacja mechanizmu HMAC ● Aktywacja i wykorzystanie reguł OWASP CRS
  4. 4. Wprowadzenie ● Aplikacje webowe jako cel czyli zagrożenia kryją się wszędzie: ● Aplikacja ● Protokół ● Serwer HTTP/Proxy/Apps ● Framework ● Język programowania
  5. 5. Wprowadzenie ● Rzeczywistość weryfikuje: ● Zimbra: priv_esc poprzez LFI: – /res/I18nMsg,AjxMsg,ZMsg,ZmMsg,AjxKeys,ZmKeys,ZdMsg,Ajx%20TemplateMsg.js.zgz? v=091214175450&skin=../../../../../../../../../opt/zimbra/conf/localconfig.xml ● OSSIM: SQL Injection ● Apache Struts: RCE ● F5 BigIQ – priv_esc ● Jira: directory traversal ● Katello: users/update_roles ● I wiele innych...
  6. 6. Wprowadzenie ● Problem z patchowaniem podatności: ● Zbyt wysoki koszt ● Kod źródłowy firmy zewnętrznej ● Ograniczony kontrakt/umowa ● Brak zasobów ● Brak skillsów ● SDLC dla poprawki-> tst->acc->prod ● Niedostępność aplikacji
  7. 7. Zagrożenia ● Cross Site Scripting ● SQL Injection ● LDAP Injection ● XPATH Injection ● XML Injection ● Blind SQLi ● Time based SQLi ● Remote Command Execution ● Local File Inlusion ● Remote File Inclusion ● Session Hijacking ● HTTP Response Spliiting ● Sniffing/Spoofing ● ClickJacking ● MitB ● Open Redirect ● DOS/DDOS ● Cross Site Request Forgery (CSRF) ● Information/Path Dislosure ● Double Encoding ● Server Side Includes Injection ● Bruteforce ● Buffer overflow ● Misconfiguration ● RE-DOS ● Forced browsing ● Drive by Download
  8. 8. Uchybienia
  9. 9. Wprowadzenie ● WAF pozwala na ● Pełne logowanie audytowe ruchu HTTP: – requests – responses ● Monitorowanie HTTP w czasie rzeczywistym ● Wykrywanie i blokowanie ataków: – Negative – Positive – Znane podatności (regexpy) ● Web Honeypoty
  10. 10. Wprowadzenie ● Negative security model: ● Monitoruje pod kątem anomalii, nietypowego zachowania, pod kątem znanych appek. ● Wzrastający anomaly scoring per sesja, IP, user ● Reguła musi się „zamatchować” ● Positive security model: ● Tylko żądania uznawane za poprawne są obsługiwane ● Wymagana doskonała znajomość aplikacji i zachowań użytkowników, danych wejściowych ● Najlepsze dla rzadko aktualizowanych appek
  11. 11. Wprowadzenie ● Negative security model: SecRule REQUEST_FILENAME „@contains /owa/scriptname.asx” „chain, phase:1,block,log,msg:'XSS na mojej appce'” SecRule ARGS:parameter „@pm < > ( ) --” ● Positive security model: SecRule REQUEST_FILENAME „@contains /owa/scriptname.asx” „chain, phase:1,block,log,msg:'XSS na mojej appce'” SecRule ARGS:parameter „!@rx ^w+$”
  12. 12. Wprowadzenie ● Modsecurity for: ● Apache: – Najpopularniejszy – Ficzer riczi ricz – Aktualnie 2.4 ● Nginx: – Reverse proxy – Performance ● IIS ● Modsecurity Core Rule Set
  13. 13. Architektura ● Reverse Proxy: ● mod_proxy: <Location /appka/> ProxyPass http://192.168.122.217/appka/ ProxyPassreverse http://192.168.122.217/appka/ SecRuleEngine On </Location> ● Lokalnie wbudowany ● Chain of proxies
  14. 14. Architektura Reverse proxy+modsecurity
  15. 15. Funkcjonalność ● Modsecurity: ● Parsuje: – Chce zrozumieć ruch HTTP ● Bufferuje: – Kompletne żądanie przez przekazaniem do aplikacji – Kompletną odpowiedź przez przekazaniem do klienta ● Loguje: – Pełny zapis ruchu ● Analizuje: – Checkuje pod kątem reguł
  16. 16. Funkcjonalność ● Apache z modsecurity pozwala na: ● Deszyfrowanie SSL ● Wydobywanie z transmisji żądań HTTP ● Parsowanie żądań ● Aktywację WAF ● Przekazywanie żądań do serwerów typu backend ● Modyfikacja danych wychodzących w locie - dynamiczne wstrzykiwanie ● Wirtualne patchowanie ● LUA
  17. 17. Funkcjonalność ● Fazy filtrowania: ● Każda transakcja przechodzi przez 5 faz filtrowania: ● 1: Request headers ● 2: Request body ● 3: Response headers ● 4: Response body ● 5: Logging
  18. 18. Funkcjonalność ● Wirtualny patch w uproszczonym przypadku: ● Ograniczenie Request_Body_Size ● Wykrywanie powtarzających się payloadów ● Ograniczenie ilości ARGS ● Weryfikacja ARGS ● Analiza i filtrowanie RESPONSE_BODY
  19. 19. Funkcjonalność ● Przykładowe reguły: ● SecRule REQUEST_URI "@detectSQLi" "id:152,log,deny" ● SecRule REQUEST_BODY "@detectXSS" "id:12345,log,deny" ● SecRule REQUEST_HEADERS:User-Agent "@pm WebZIP WebCopier Webster WebStripper ... SiteSnagger CheeseBot" "id:166" ● SecRule ARGS:foo "!@streq bar" "id:176"
  20. 20. LAB1 – uruchomienie Apache jako Reverse Proxy
  21. 21. Czym jest JSON? ● Prosty, tekstowy format wymiany danych ● Podzbiór języka JS ● Dwie struktury: ● Zbiór par nazwa/wartość ● Lista/tabela/sekwencja wartości ● MIME type: application/json ● Wykorzystywany w implementacjach API, np. Rest
  22. 22. Czym jest JSON? ● Openweathermap.org: {"coord":{"lon":-0.13,"lat":51.51},"sys": {"message":0.0139,"country":"GB","sunrise":1399436419,"sun set":1399491223},"weather": [{"id":521,"main":"Rain","description":"proximity shower rain","icon":"09d"}],"base":"cmc stations","main": {"temp":286.16,"pressure":1008,"humidity":66,"temp_min":284. 26,"temp_max":288.15},"wind":{"speed":6.7,"deg":250},"rain": {"3h":0},"clouds": {"all":75},"dt":1399448174,"id":2643743,"name":"London","cod" :200}
  23. 23. Filtrowanie komunikacji JSON ● Modsecurity 2.8.0: ● SecRule REQUEST_HEADERS:Content-Type "application/json" "id:'2200001',phase:2,t:none,t:lowercase,pass,log,c tl:requestBodyProcessor=JSON" ● Libyajl ●
  24. 24. LAB2 - Filtrowanie komunikacji JSON
  25. 25. Mechanizm HMAC ● HMAC Token Protection: ● Forceful Browsing ● Reflected XSS ● Ochrona CSRF ● Manipulacja QUERY_STRINGS ● Ochrona przed automatami/botami
  26. 26. HMAC ● Manipulacja kontentem: ● W jaki sposób sprawdzić czy odbyła się modyfikacja dokumentu? ● Parsowanie wyjścia (RESPONSE_BODY) ● Wyliczanie hasha dla wynikowego HTML ● Wstrzykiwanie unikalnych tokenów dla wszystkich linków dokumentu HTML ● Token = request parameter validation token
  27. 27. HMAC ● Executing operator "validateHash" with param ".(aspx?|php)" against REQUEST_URI. Target value: "/showimage.php?file=./database_connect.php" Request URI without hash parameter [/showimage.php? file=./database_connect.php] ● Warning. Request URI matched ".(aspx?|php)" at REQUEST_URI. No Hash parameter [file "/etc/httpd/modsecurity.d/base_rules/hmac.conf"] [line "10"] [id "1000"] [msg "Hash Validation Violation."] [tag "testphp.vulnweb.com"]
  28. 28. HMAC ● HMAC zablokuje: ● Skanery ● Automaty ● Botnety które nie podążają za linkami dostępnymi w kontekście aplikacji ● XSS/SQL-Injection
  29. 29. HMAC
  30. 30. HMAC ● Dyrektywy: ● SecDisableBackendCompression On ● SecRuleEngine On ● SecContentInjection On ● SecStreamOutBodyInspection On ● SecHashEngine On ● SecHashKey rand keyOnly ● SecHashParam "hmac" ● SecHashMethodrx "HashHref" ".(aspx?|php)" ● SecHashMethodrx "HashFormAction" ".(aspx?|php)" ● SecRule REQUEST_URI "@validateHash .(aspx?|php)" "phase:2,id:1000,t:none,block,msg:'Hash Validation Violation.',ctl:hashEnforcement=On,setvar:tx.anomaly_score=+% {tx.critical_anomaly_score},setvar:'tx.msg=%{rule.msg}',setvar:tx.% {rule.id}-OWASP_CRS/WEB_ATTACK/PARAM_MANIPULATION-% {matched_var_name}=%{matched_var}"
  31. 31. LAB3 - HMAC
  32. 32. OWASP Top 10 ● Zbiór 10 najistotniejszych, kluczowych błędów w zabezpieczeniach aplikacji internetowych: ● A1 – Injection ● A2 – Broken Auth and Session MGMT ● A3 – XSS ● A4 – Insecure Direct Object References ● A5 – Security Misconfiguration ● A6 – Sensitive Data Exposure ● A7 – Missing Function Level Access Control ● A8 – CSRF ● A9 – Known vulns ● A10 – Unvalidated Redirects and Forwards
  33. 33. OWASP Docs & tools ● ASVS ● ESAPI ● Testing Guide ● Cheat Sheets
  34. 34. OWASP CRS ● Modsecurity to tylko silnik ● Musimy go „naładować”: ● Tworzenie dedykowanych reguł od podstaw per aplikacja ● Wykorzystanie gotowych reguł OWASP CRS ● Hybryda czyli połączenie reguł CRS z własnymi regułami typu Whitelist
  35. 35. OWASP CRS ● HTTP Protection - detecting violations of the HTTP protocol and a locally defined usage policy. ● Real-time Blacklist Lookups - utilizes 3rd Party IP Reputation ● HTTP Denial of Service Protections - defense against HTTP Flooding and Slow HTTP DoS Attacks. ● Common Web Attacks Protection - detecting common web application security attack. ● Automation Detection - Detecting bots, crawlers, scanners and other surface malicious activity. ● Integration with AV Scanning for File Uploads - detects malicious files uploaded through the web application. ● Tracking Sensitive Data - Tracks Credit Card usage and blocks leakages. ● Trojan Protection - Detecting access to Trojans horses. ● Identification of Application Defects - alerts on application misconfigurations. ● Error Detection and Hiding - Disguising error messages sent by the server.
  36. 36. OWASP CRS ● Reguły OWASP CRS podzielone są na: ● base_rules ● experimental_rules ● optional_rules ● slr_rules ● /etc/httpd/modsecurity.d/
  37. 37. LAB4 – Atak.
  38. 38. OWASP CRS ● Dostosowanie reguł per aplikacja: ● SecRuleRemoveById ● SecRuleRemoveByMsg ● SecRuleRemoveByTag
  39. 39. LAB5 – instalacja i aktywacja reguł CRS
  40. 40. Różne ● Integracja z BEEF ● DDOS ● LUA ● Splunk for Modsecurity ● Learning mode i generowanie reguł na podstawie raportów ze skanerów ● Wykrywanie zmiany User-Agent podczas sesji
  41. 41. Podsumowanie ● To tylko zajawka na dobry początek ● W Modsecurity drzemią ogromne możliwości i potencjał ● Idealny komponent rozbudowanego stacku typu Web Gateway/Secure Proxy ● Automatyzacja ● Skalowalność ● Customizacja ● Auditing
  42. 42. Dziękuję za uwagę:) lm@linuxpolska.pl

×