modsecurity-czy-twoj-waf-to-potrafi-leszek-mis-linux-polska
Post on 22-Jan-2018
112 Views
Preview:
TRANSCRIPT
Modsecurity – czy Twój WAF to potrafi?Leszek Miś
Linux Polska Sp. z o.o.
CEL:Modsecurity jest cool!
Agenda
● Modsecurity
● Wprowadzenie● Architektura● Funkcjonalność
● Filtrowanie komunikacji JSON
● Aktywacja mechanizmu HMAC
● Aktywacja i wykorzystanie reguł OWASP CRS
Wprowadzenie
● Aplikacje webowe jako cel czyli zagrożenia kryją się wszędzie:
● Aplikacja● Protokół● Serwer HTTP/Proxy/Apps● Framework● Język programowania
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...
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
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
Uchybienia
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
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
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+$”
Wprowadzenie
● Modsecurity for:● Apache:
– Najpopularniejszy– Ficzer riczi ricz– Aktualnie 2.4
● Nginx:
– Reverse proxy– Performance
● IIS
● Modsecurity Core Rule Set
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
Architektura Reverse proxy+modsecurity
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ł
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
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
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
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"
LAB1 – uruchomienie Apache jako Reverse Proxy
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
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}
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●
LAB2 - Filtrowanie komunikacji JSON
Mechanizm HMAC
● HMAC Token Protection:● Forceful Browsing● Reflected XSS ● Ochrona CSRF ● Manipulacja QUERY_STRINGS● Ochrona przed automatami/botami
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
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"]
HMAC
● HMAC zablokuje:● Skanery● Automaty● Botnety
które nie podążają za linkami dostępnymi w kontekście aplikacji
● XSS/SQL-Injection
HMAC
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}"
LAB3 - HMAC
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
OWASP Docs & tools
● ASVS
● ESAPI
● Testing Guide
● Cheat Sheets
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
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.
OWASP CRS
● Reguły OWASP CRS podzielone są na:● base_rules● experimental_rules● optional_rules● slr_rules
● /etc/httpd/modsecurity.d/
LAB4 – Atak.
OWASP CRS
● Dostosowanie reguł per aplikacja:● SecRuleRemoveById● SecRuleRemoveByMsg● SecRuleRemoveByTag
LAB5 – instalacja i aktywacja reguł CRS
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
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
Dziękuję za uwagę:)lm@linuxpolska.pl
top related