modsecurity-czy-twoj-waf-to-potrafi-leszek-mis-linux-polska

42
Modsecurity – czy Twój WAF to potrafi? Leszek Miś Linux Polska Sp. z o.o.

Upload: leszek-mi

Post on 22-Jan-2018

112 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Modsecurity – czy Twój WAF to potrafi?Leszek Miś

Linux Polska Sp. z o.o.

Page 2: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

CEL:Modsecurity jest cool!

Page 3: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Agenda

● Modsecurity

● Wprowadzenie● Architektura● Funkcjonalność

● Filtrowanie komunikacji JSON

● Aktywacja mechanizmu HMAC

● Aktywacja i wykorzystanie reguł OWASP CRS

Page 4: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Wprowadzenie

● Aplikacje webowe jako cel czyli zagrożenia kryją się wszędzie:

● Aplikacja● Protokół● Serwer HTTP/Proxy/Apps● Framework● Język programowania

Page 5: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Wprowadzenie

● Rzeczywistość weryfikuje:

● Zimbra: priv_esc poprzez LFI:– /res/I18nMsg,AjxMsg,ZMsg,ZmMsg,AjxKeys,ZmKeys,ZdMsg,Ajx%20TemplateMsg.js.zgz?

v=091214175450&skin=../../../../../../../../../opt/zimbra/conf/localconfig.xml

● OSSIM: SQL Injection● Apache Struts: RCE● F5 BigIQ – priv_esc● Jira: directory traversal● Katello: users/update_roles● I wiele innych...

Page 6: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Wprowadzenie

● Problem z patchowaniem podatności:● Zbyt wysoki koszt● Kod źródłowy firmy zewnętrznej● Ograniczony kontrakt/umowa● Brak zasobów● Brak skillsów● SDLC dla poprawki-> tst->acc->prod● Niedostępność aplikacji

Page 7: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Zagrożenia

● Cross Site Scripting

● SQL Injection

● LDAP Injection

● XPATH Injection

● XML Injection

● Blind SQLi

● Time based SQLi

● Remote Command Execution

● Local File Inlusion

● Remote File Inclusion

● Session Hijacking

● HTTP Response Spliiting

● Sniffing/Spoofing

● ClickJacking

● MitB

● Open Redirect

● DOS/DDOS

● Cross Site Request Forgery (CSRF)

● Information/Path Dislosure

● Double Encoding

● Server Side Includes Injection

● Bruteforce

● Buffer overflow

● Misconfiguration

● RE-DOS

● Forced browsing

● Drive by Download

Page 8: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Uchybienia

Page 9: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Wprowadzenie

● WAF pozwala na● Pełne logowanie audytowe ruchu HTTP:

– requests– responses

● Monitorowanie HTTP w czasie rzeczywistym

● Wykrywanie i blokowanie ataków:

– Negative– Positive– Znane podatności (regexpy)

● Web Honeypoty

Page 10: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Wprowadzenie

● Negative security model:● Monitoruje pod kątem anomalii, nietypowego

zachowania, pod kątem znanych appek.

● Wzrastający anomaly scoring per sesja, IP, user

● Reguła musi się „zamatchować”

● Positive security model:● Tylko żądania uznawane za poprawne są obsługiwane

● Wymagana doskonała znajomość aplikacji i zachowań użytkowników, danych wejściowych

● Najlepsze dla rzadko aktualizowanych appek

Page 11: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Wprowadzenie

● Negative security model:

SecRule REQUEST_FILENAME „@contains /owa/scriptname.asx” „chain, phase:1,block,log,msg:'XSS na mojej appce'”

SecRule ARGS:parameter „@pm < > ( ) --”

● Positive security model:

SecRule REQUEST_FILENAME „@contains /owa/scriptname.asx” „chain, phase:1,block,log,msg:'XSS na mojej appce'”

SecRule ARGS:parameter „!@rx ^\w+$”

Page 12: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Wprowadzenie

● Modsecurity for:● Apache:

– Najpopularniejszy– Ficzer riczi ricz– Aktualnie 2.4

● Nginx:

– Reverse proxy– Performance

● IIS

● Modsecurity Core Rule Set

Page 13: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Architektura

● Reverse Proxy:● mod_proxy:

<Location /appka/>

ProxyPass http://192.168.122.217/appka/

ProxyPassreverse http://192.168.122.217/appka/

SecRuleEngine On

</Location>

● Lokalnie wbudowany

● Chain of proxies

Page 14: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Architektura Reverse proxy+modsecurity

Page 15: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Funkcjonalność

● Modsecurity:

● Parsuje:

– Chce zrozumieć ruch HTTP● Bufferuje:

– Kompletne żądanie przez przekazaniem do aplikacji

– Kompletną odpowiedź przez przekazaniem do klienta● Loguje:

– Pełny zapis ruchu● Analizuje:

– Checkuje pod kątem reguł

Page 16: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Funkcjonalność

● Apache z modsecurity pozwala na:● Deszyfrowanie SSL

● Wydobywanie z transmisji żądań HTTP

● Parsowanie żądań

● Aktywację WAF

● Przekazywanie żądań do serwerów typu backend

● Modyfikacja danych wychodzących w locie - dynamiczne wstrzykiwanie

● Wirtualne patchowanie

● LUA

Page 17: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Funkcjonalność

● Fazy filtrowania:

● Każda transakcja przechodzi przez 5 faz filtrowania:● 1: Request headers

● 2: Request body

● 3: Response headers

● 4: Response body

● 5: Logging

Page 18: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Funkcjonalność

● Wirtualny patch w uproszczonym przypadku:● Ograniczenie Request_Body_Size● Wykrywanie powtarzających się payloadów● Ograniczenie ilości ARGS● Weryfikacja ARGS● Analiza i filtrowanie RESPONSE_BODY

Page 19: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Funkcjonalność

● Przykładowe reguły:● SecRule REQUEST_URI "@detectSQLi"

"id:152,log,deny"

● SecRule REQUEST_BODY "@detectXSS" "id:12345,log,deny"

● SecRule REQUEST_HEADERS:User-Agent "@pm WebZIP WebCopier Webster WebStripper ... SiteSnagger CheeseBot" "id:166"

● SecRule ARGS:foo "!@streq bar" "id:176"

Page 20: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

LAB1 – uruchomienie Apache jako Reverse Proxy

Page 21: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Czym jest JSON?

● Prosty, tekstowy format wymiany danych

● Podzbiór języka JS

● Dwie struktury:● Zbiór par nazwa/wartość

● Lista/tabela/sekwencja wartości

● MIME type: application/json

● Wykorzystywany w implementacjach API, np. Rest

Page 22: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Czym jest JSON?

● Openweathermap.org:

{"coord":{"lon":-0.13,"lat":51.51},"sys":{"message":0.0139,"country":"GB","sunrise":1399436419,"sunset":1399491223},"weather":[{"id":521,"main":"Rain","description":"proximity shower rain","icon":"09d"}],"base":"cmc stations","main":{"temp":286.16,"pressure":1008,"humidity":66,"temp_min":284.26,"temp_max":288.15},"wind":{"speed":6.7,"deg":250},"rain":{"3h":0},"clouds":{"all":75},"dt":1399448174,"id":2643743,"name":"London","cod":200}

Page 23: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Filtrowanie komunikacji JSON

● Modsecurity 2.8.0:● SecRule REQUEST_HEADERS:Content-Type

"application/json" "id:'2200001',phase:2,t:none,t:lowercase,pass,log,ctl:requestBodyProcessor=JSON"

● Libyajl●

Page 24: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

LAB2 - Filtrowanie komunikacji JSON

Page 25: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Mechanizm HMAC

● HMAC Token Protection:● Forceful Browsing● Reflected XSS ● Ochrona CSRF ● Manipulacja QUERY_STRINGS● Ochrona przed automatami/botami

Page 26: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

HMAC

● Manipulacja kontentem:

● W jaki sposób sprawdzić czy odbyła się modyfikacja dokumentu?

● Parsowanie wyjścia (RESPONSE_BODY)● Wyliczanie hasha dla wynikowego HTML● Wstrzykiwanie unikalnych tokenów dla wszystkich

linków dokumentu HTML● Token = request parameter validation token

Page 27: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

HMAC

● Executing operator "validateHash" with param "\\.(aspx?|php)" against REQUEST_URI.

Target value: "/showimage.php?file=./database_connect.php"

Request URI without hash parameter [/showimage.php?file=./database_connect.php]

● Warning. Request URI matched "\\.(aspx?|php)" at REQUEST_URI. No Hash parameter [file "/etc/httpd/modsecurity.d/base_rules/hmac.conf"] [line "10"] [id "1000"] [msg "Hash Validation Violation."] [tag "testphp.vulnweb.com"]

Page 28: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

HMAC

● HMAC zablokuje:● Skanery● Automaty● Botnety

które nie podążają za linkami dostępnymi w kontekście aplikacji

● XSS/SQL-Injection

Page 29: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

HMAC

Page 30: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

HMAC● Dyrektywy:

● SecDisableBackendCompression On

● SecRuleEngine On

● SecContentInjection On

● SecStreamOutBodyInspection On

● SecHashEngine On

● SecHashKey rand keyOnly

● SecHashParam "hmac"

● SecHashMethodrx "HashHref" "\.(aspx?|php)"

● SecHashMethodrx "HashFormAction" "\.(aspx?|php)"

● SecRule REQUEST_URI "@validateHash \.(aspx?|php)" "phase:2,id:1000,t:none,block,msg:'Hash Validation Violation.',ctl:hashEnforcement=On,setvar:tx.anomaly_score=+%{tx.critical_anomaly_score},setvar:'tx.msg=%{rule.msg}',setvar:tx.%{rule.id}-OWASP_CRS/WEB_ATTACK/PARAM_MANIPULATION-%{matched_var_name}=%{matched_var}"

Page 31: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

LAB3 - HMAC

Page 32: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

OWASP Top 10

● Zbiór 10 najistotniejszych, kluczowych błędów w zabezpieczeniach aplikacji internetowych:

● A1 – Injection

● A2 – Broken Auth and Session MGMT

● A3 – XSS

● A4 – Insecure Direct Object References

● A5 – Security Misconfiguration

● A6 – Sensitive Data Exposure

● A7 – Missing Function Level Access Control

● A8 – CSRF

● A9 – Known vulns

● A10 – Unvalidated Redirects and Forwards

Page 33: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

OWASP Docs & tools

● ASVS

● ESAPI

● Testing Guide

● Cheat Sheets

Page 34: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

OWASP CRS

● Modsecurity to tylko silnik

● Musimy go „naładować”:● Tworzenie dedykowanych reguł od podstaw per

aplikacja● Wykorzystanie gotowych reguł OWASP CRS● Hybryda czyli połączenie reguł CRS z własnymi

regułami typu Whitelist

Page 35: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

OWASP CRS● HTTP Protection - detecting violations of the HTTP protocol and a locally defined usage policy.

● Real-time Blacklist Lookups - utilizes 3rd Party IP Reputation

● 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.

● 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 36: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

OWASP CRS

● Reguły OWASP CRS podzielone są na:● base_rules● experimental_rules● optional_rules● slr_rules

● /etc/httpd/modsecurity.d/

Page 37: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

LAB4 – Atak.

Page 38: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

OWASP CRS

● Dostosowanie reguł per aplikacja:● SecRuleRemoveById● SecRuleRemoveByMsg● SecRuleRemoveByTag

Page 39: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

LAB5 – instalacja i aktywacja reguł CRS

Page 40: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Różne

● Integracja z BEEF

● DDOS

● LUA

● Splunk for Modsecurity

● Learning mode i generowanie reguł na podstawie raportów ze skanerów

● Wykrywanie zmiany User-Agent podczas sesji

Page 41: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Podsumowanie

● To tylko zajawka na dobry początek

● W Modsecurity drzemią ogromne możliwości i potencjał

● Idealny komponent rozbudowanego stacku typu Web Gateway/Secure Proxy

● Automatyzacja

● Skalowalność

● Customizacja

● Auditing

Page 42: Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska

Dziękuję za uwagę:)[email protected]