Bezpečnost webových aplikací blok A
Petr Závodský •
[email protected] • 26.11.2014
Petr Závodský ●
CZ.NIC, z.s.p.o. ●
●
SW Quality Assurance Manager –
vedení SW QA týmu
–
testování
Dřívější praxe ●
Specialista bezpečnosti IT
●
Bezpečnostní / penetrační testování
●
SW Quality Assurance / testování
Petr Závodský
Co nás čeká? ●
Základní pojmy
●
Nejběžnější bezpečnostní zranitelnosti ●
Pozor na zákon!
●
Trenažéry
●
OWASP Top 10
●
Vybrané nástroje
●
Techniky zjištění zranitelností (penetrační testy)
Kyberbezpečnost ●
Soubor technologií, procesů a postupů určených k ochraně sítí, počítačů, programů a dat před útoky, poškozením nebo neoprávněným přístupem.
Kyberbezpečnost ●
Součásti kyberbezpečnosti: ●
aplikační bezpečnost
●
síťová bezpečnost
●
disaster recovery (zotavení po havárii)
●
business continuity planning (plánování kontinuity)
●
vzdělávání uživatelů
●
...
Kyberbezpečnost ●
Problematický prvek kyberbezpečnosti: ●
●
Rychle a neustále se vyvíjející povaha bezpečnostních rizik. Tradiční soustředění většiny zdrojů na nejdůležitější části systému, ochrana proti největším rizikům, bezpečnostní zanedbávání méně důležitých systémových komponent je v současnosti nedostačující. Vhodnější je aktivní a adaptivní přístup – hrozby se mění rychleji, než naše představy o riziku. (Průběžné sledování, vyhodnocování v reálném čase.)
Triáda informační / aplikační bezp. ●
Důvěrnost (confidentality) ●
●
Integrita (integrity) ●
●
Zajištěna schopností ujistit se, že je vynucena nezbytná úroveň míry utajení v každém okamžiku, kdy dochází ke zpracování dat a je zajištěna prevence jejich neautorizovaného vyzrazení.
Udržena, když je zajištěno, že data jsou přesná, se zaručeným obsahem a jsou provedena opatření proti jejich neautorizované změně.
Dostupnost (availability) ●
Spolehlivá a včasná dispozice dat a zdrojů autorizovaným jednotlivcům.
Riziko ●
RIZIKO = PRAVDĚPODOBNOST X DOPAD
●
Proměnných může být více
Další pojmy ●
Hrozba
●
Zranitelnost
●
…
●
Výkladový slovník kybernetické bezpečnosti https://www.govcert.cz/cs/informacni-servis/akce-a-udalosti/vykladov y-slovnik-kyberneticke-bezpecnosti---druhe-vydani/
Pozor na zákon! ●
Při zajišťování nejen aplikační bezpečnosti se můžeme dostat do křížku se zákonem: ●
Zákon č. 40/2009 Sb., trestní zákoník (www.mvcr.cz/soubor/sb011-09-pdf.aspx ) –
Část druhá, Hlava II: Trestné činy proti svobodě a právům na ochranu osobnosti, soukromí a listovního tajemství; Díl 2 § 180 – 184 Trestné činy proti právům na ochranu osobnosti, soukromí a listovního tajemství: § 180 Neoprávněné nakládání s osobními údaji ● § 182 Porušení tajemství dopravovaných zpráv ● § 183 Porušení tajemství listin a jiných dokumentů uchovávaných v soukromí Část druhá, Hlava V: Trestné činy proti majetku: ●
–
● ●
●
§ 230 Neoprávněný přístup k počítačovému systému a nosiči informací § 231 Opatření a přechovávání přístupového zařízení a hesla k počítačovému systému a jiných takových dat § 232 Poškození záznamu v počítačovém systému a na nosiči informací a zásah do vybavení počítače z nedbalosti
Trenažéry ●
Přehled: https://www.skenerwebu.cz/zamerne_derave_aplikace ●
OWASP WebGoat https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project
●
Damn Vulnerable Web App http://www.dvwa.co.uk/
●
Hacme Casino http://www.mcafee.com/us/downloads/free-tools/hacme-casino.aspx
●
OWASP InsecureWebApp https://www.owasp.org/index.php/Category:OWASP_Insecure_Web_App _Project
●
atd.
OWASP Top 10
Injektování ●
Chyby umožňující napadení aplikace vložením kódu přes neošetřený vstup. Vkládáním kódu do neošetřeného vstupu útočník může spouštět příkazy s privilegovanými právy, k nimž by neměl mít přístup.
Chybná autentizace a správa relace ●
Zranitelnosti umožňující napadení funkcí aplikace, které souvisí s autentizací a správou sezení s cílem převzít identitu jiného uživatele. Funkce, které se vztahují k ověřování a řízení relace, často nejsou vytvořeny správně, což útočníkům umožňuje napadnout hesla, tokeny relací, klíče, session aj.
Cross Site Scripting (XSS) ●
Zranitelnosti umožňující napadení vkládáním skriptů či jejich částí do webového prohlížeče. XSS útočníkům umožňuje spouštět skripty v prohlížeči oběti. Útočník tak může unést uživatelské relace, přetvářet vzhled stránek, přesměrovávat uživatele na škodlivé weby atd.
Nezabezpečené přímé odkazy na objekty ●
Chyby umožňující neoprávněné přístupy k datům nezabezpečeným přístupem k vnitřnímu objektu aplikace (souboru, adresáři, databázovému klíči).
Chybná konfigurace zabezpečení ●
Zranitelnost umožňující napadení využitím nedostatků v zabezpečení konfigurací aplikačních serverů, webových serverů, databázových serverů, softwarových platforem atd. (např. ponecháním výchozích hodnot, neaktualizováním aj.).
Expozice citlivých dat ●
●
●
Zranitelnosti umožňující napadení nechráněných citlivých dat (mimo kontroly přístupu). A to od chvíle, kdy je uživatel zadá, jsou odeslány a uloženy v aplikaci anebo poslány (zpět) do prohlížeče. Nezabezpečený přímý odkaz na objekt (Insecure Cryptographic Storage) - rizika vyplývající z nedostatečně chráněných citlivých dat (čísla kreditních karet, rodná čísla atd.) šifrováním. Nezabezpečená komunikace (Insufficient Transport Layer Protection) – zranitelnosti umožňující napadení odposlechem sítí. Ohrožení dat na straně prohlížeče.
Chyby funkce kontroly řízení úrovní přístupů ●
●
Špatná kontrola ACL a URL (Failure to Restrict URL Access) – zranitelnosti umožňující napadení nedostatečně zabezpečeným řízením přístupu ke zdrojům informací (dokument, služba) přes URL. Zranitelnosti umožňující napadení neoprávněným přístupem k funkcionalitě.
Cross Site Request Forgery (CSRF) ●
●
Zranitelnosti umožňující napadení podvržením požadavku webové aplikace. CSRF útočníkovi umožňuje prohlížeč oběti donutit k vykonání předem autentizovaného požadavku nezabezpečenou aplikací. Tak může útočník např. provést transfer, odeslat zprávu, smazat účet, přidat záznam; útočník může takto provést mnoho jiných operací.
Použití komponent se známými zranitelnostmi ●
Zranitelnosti umožňující napadení užitím známých zranitelností komponent.
Neověřená přesměrování a přeposílání ●
Zranitelnosti umožňující napadení přesměrováním či přeposláním na jiné stránky. Takovým přesměrováním může útočník například dosáhnout nainstalování malware anebo odhalit uživatelské heslo anebo jiné citlivé informace.
Nástroje testování ●
Nessus Vulnerability Scanner http://www.tenable.com/products/nessus
●
●
ZAP (Zed Attack Proxy) https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project Skipfish http://code.google.com/p/skipfish/
●
●
●
Acunetix http://acunetix.cz/, http://www.acunetix.com/ ... Přehled nástrojů: https://www.owasp.org/index.php/Appendix_A%3A_Testing_Tools
ZAP
Instalace
●
https://www.owasp.org/
●
Projekt ZAP Proxy
●
Download ZAP
●
ZAP_2.2.2_Linux.tar.gz
●
Uložit
●
Rozbalit
●
Je nutné mít nainstalované Oracle Java 7
●
●
sudo add-apt-repository ppa:webupd8team/java
●
ENTER
●
sudo apt-get update
●
sudo apt-get install oracle-java7-installer
Vyzkoušet spuštění ZAP Proxy – v terminálu: ●
cd ZAP_2.2.2
●
./zap.sh
ZAP
Základní informace
●
ZAP = Zed Attack Proxy
●
OWASP projekt
●
Nástroj pro hledání zranitelností webových aplikací
●
Pro testery s různými zkušenostmi
●
Skenery + nástroje
●
Online nápověda: http://code.google.com/p/zaproxy/wiki/HelpIntro
●
Odnož open source nástroje Paros Proxy
ZAP
Rozhraní
●
Příkazový řádek / terminál
●
GUI
ZAP ●
Spuštění
V terminálu: ●
./zap.sh
ZAP
Rychlý start
●
Ponechat výchozí nastavení
●
Quick Start add-on
●
Zadat URL
●
Spustit Attack
ZAP ●
Nastavení – Proxy
Firefox: Edit / Preferences / Advanced / Network / Settings / Manual proxy configuration
ZAP ●
Funkce – Active Scan
Snaží se najít možné zranitelnosti známými útoky proti vybraným cílům
●
Jedná se o útoky na cíle!
●
Měli bychom mít povolení od vlastníka testované aplikace
●
Aktivní skenování může najít jen některé typy zranitelností
●
Dodatečně by mělo být prováděno ruční dotestování a ověření nálezů
●
Nastavení: Tools / Options...
ZAP
Funkce – Active Scan - Nastavení
●
Tools / Options... anebo
●
Maximální počet současných skenů (může zatížit systém)
●
●
●
●
●
Souběžnost vláken (procesů) skenování (může zatížit systém i testovanou aplikaci) Počet výsledků v záložce Active Scan (může ovlivnit dobu skenování) Zpoždění mezi požadavky (snižuje tlak na testovanou aplikaci, prodlužuje dobu testu) Anti CSRF tokeny – pokusí se vyžádat anti CSRF tokeny Alert – prahová hodnota: nízká hodnota – více pozitiv (i falešných), vysoká hodnota – méně pozitiv (více falešných negativ)
●
Počet prováděných útoků (čím více, tím déle sken trvá)
●
Parametry – pro každou aplikaci může být jiné (vhodným výběrem zkrátíme čas skenu)
ZAP ●
Funkce – Add-ons (doplňky)
Help / Check for Updates / Marketplace ●
Release
●
Beta
●
Alfa
ZAP
●
Funkce – Alerts
Editace: ●
Pravým tlačítkem myši na alert
●
Edit...
ZAP ●
●
Funkce – Anti CSRF Tokens
Anti-CSRF tokeny jsou (pseudo) náhodné parametry používané k ochraně proti Cross Site Request padělání (CSRF) Je vhodné anti csrf tokeny skeneru definovat
ZAP
Funkce – API
●
Application Programming Interface (API)
●
Nastavit proxy (localhost, 8080), do prohlížeče http://zap
●
Více informací: http://code.google.com/p/zaproxy/wiki/ApiDetails
ZAP
Funkce – Break Points
●
Zachycení požadavku, možnost jeho přepsání a následné odeslání
●
Při testování důležitá součást
●
Nutné povolit
●
Vložit Add Break Point
ZAP
Funkce – Forced Browse
●
Nucené procházení
●
Souběžné skenování vláken
●
Rekurzivní procházení všech nalezených podadresářů
●
●
Výchozí soubor – viz /ZAP_2.2.2/dirbuster/ (bude procházet v souboru zadané adresáře a soubory) Vlastní výchozí soubor
ZAP ●
Funkce – Fuzzing
Fuzzing – technika předkládání množství neplatných či nečekaných dat
●
Výběr z defaultní kategorie
●
Souběžné skenování procesů
●
Přidat vlastní fuzz soubor
ZAP
Funkce – Http Sessions
●
Udržuje aktuální relace
●
Zatím pouze cookies
●
Lze editovat
ZAP ●
●
Funkce – Intercepting Proxy
ZAP je záchytná proxy Umožňuje vidět všechny požadavky a odpovědi mezi klientem a serverem
●
Mj. umožňuje vidět AJAX volání
●
Lze nastavit body přerušení – viz výše uvedený Break Points
ZAP ●
Funkce – Invoke Application
Konfigurace aplikací, které mohou být vyvolávány ●
zobrazovaný název
●
úplná cesta ke spouštěnému souboru
●
parametry, které spouštějí vyvolávané aplikace (%url%, %site%, %host%, %port %, %cookie%, %postdata%; zadání např.: '-u %url%)
●
zobrazení v položce Output
●
připojení záznamu k poznámce v History
ZAP ●
●
Funkce – Modes
Safe mode (bez povolení potenciálně nebezpečných operací) Protected mode (potenciálně nebezpečné operace lze provést jen v omezeném rozsahu)
●
Standard mode (cokoli)
●
Safe mode a Protected mode mohou znepřístupnit: ●
Spidering
●
Active Scanning
●
Fuzzing
●
Force Browsing
●
Breaking (intercepting)
●
Resending requests
ZAP
Funkce – Notes
●
Vložení poznámky
●
Např. v History / pravé tlačítko myši / Note...
ZAP ●
Funkce – Passive Scan
Možnost pasivního skenování bez změn požadavků a odpovědí
ZAP
Funkce – Spider
●
„Pavouk“ je nástroj, který slouží k objevování nových zdrojů (URL)
●
Maximální hloubka procházení
●
Maximální počet podprocesů
●
Možnost prolézání i nalezených domén
Nessus VS
Instalace
●
Registrace (Nessus Free for 7 Days) http://www.tenable.com/products/nessus/evaluate
●
Na zaregistrovaný e-mail dorazí aktivační kód
●
http://www.tenable.com/products/nessus
●
Download
●
Linux
●
Nessus-5.2.5-ubuntu1110_amd64.deb
●
Terminal:
●
●
sudo dpkg -i Nessus-5.2.5-ubuntu1110_amd64.deb
●
spustit /etc/init.d/nessusd start
https://127.0.0.1:8834/ ●
Certifikát - potvrdit rizika
●
Vložit aktivační kód
●
Stažení pluginů (trvá trochu déle)
●
Přihlásit se
OWASP Testing Framework Work Flow ●
Before Development
●
Definition and Design
●
Development
●
Deployment
●
Maintenance
Penetrační testy ●
●
●
Proč?
„Bylo mi řečeno, že je třeba, aby můj systém byl testován.“ „Abych prokázal, že systém je bezpečný (certifikace, nařízení, ČNB, smlouva atp.).“ „Můj systém byl napaden a chci porozumět tomu, co se stalo.“
Penetrační testy ●
Módní pojem, zaměňovaný s jakýmkoliv typem bezpečnostního testování
●
Simulace reálných útoků
●
S cílem odhalit všechna možná slabá místa zabezpečení
●
Prozradí, zda je systém zranitelný vůči útokům
●
Nesoustředit se na jedinou hlavní slabinu
●
Užitečnost: ● ●
zjištění proveditelnosti daného souboru vektorů útoků identifikace slabých míst s vyšším rizikem, které vyplývají z kombinace slabých míst s nižším rizikem
●
identifikace slabých míst, která je obtížné nebo nemožné zjistit automatizovanými nástroji
●
posouzení závažnosti s ohledem na potenciální obchodní a provozní dopady v případě útoků
●
ověření schopnosti obranných systémů úspěšně detekovat útoky a reagovat na ně
●
zajištění podkladů pro podporu zvýšení investic do zabezpečení (pracovníků a technologií)
Penetrační testy ●
Obecně
Systém (aplikace, infrastruktura ...) se vyšetří / otestuje / prověří (...) a na závěr obdržíte zprávu, která popisuje všechny zjištěné nedostatečně zabezpečené oblasti, které vyžadují pozornost, společně s radami, jak tyto oblasti vhodně zabezpečit.
Penetrační testy
Než začneme testovat
●
Povolení od vlastníka systému – pozor na zákon
●
Dohoda o mlčenlivosti
●
Cíle testu
●
Rozsah a hloubka testu
●
Specifikovat podobu výstupu
●
Zajistit kontaktní osobu
●
Zajistit potřebnou dokumentaci
●
●
●
Pro analýzu zdrojového kódu zajistit pověřenou osobu dodavatele (tvůrce), která je schopna popsat konstrukce kódu a komunikaci kódu s okolím Zajistit několik účtů běžných uživatelů, nastavení práv Zajistit privilegovaný přístup (např. pod dohledem administrátora) pro konfigurační testy
Penetrační testy ●
●
●
Než začneme testovat
Zajistit spolupráci pro přípravu a provedení těchto testů (spouštění skriptů, součinnost při testování s automatizovanými nástroji, ověřování funkčnosti služeb po testech atd.) Zajistit neměnnost testovaného prostředí po dobu testů Zajistit exkluzivitu testovacího prostředí (vyhnutí se kolizí s dalšími testy např. zátěžovými)
●
Hájit zájmy klienta
●
Nepodílet se na realizačních projektech definovaných na výstupech
●
Nepreferovat žádného výrobce HW, SW nebo aplikací
●
Navrhovat řešení výhradně ve prospěch zákazníka
Penetrační testy ●
●
Hlavní rozdělení
Black box – základní anebo téměř žádné informace (např. jen název firmy) White box – značné množství informací (např. i zdrojový kód, dokumentace atd.)
Penetrační testy ●
Hlavní postup
Hlavní postupy: ● ●
identifikovat a využít nejpravděpodobnější a nejviditelnější slabiny ověřit i všechny ostatní možnosti útoků (v nutném rozsahu)
Penetrační testy ●
Obvyklý postup
Fáze získávání informací: ●
základních informací
●
skenování
●
Konzultace o dalších postupech
●
Fáze pronikání
●
Fáze automatizovaného zjišťování známých zranitelností
Penetrační testy ●
Fáze získávání informací
Základní informace ●
Sběr základních informací a dat o testovaném systému: ●
IP adresy
●
doménová jména
●
ISP
●
autoři
●
vlastníci
●
publikované příspěvky zaměstnanců (používané technologie)
●
jinak publikované informace
●
vazby obchodních partnerů
●
atd.
Penetrační testy ●
Fáze získávání informací
Skenování ●
Invazivní způsob zkoumání. Zpravidla probíhá na síťové a transportní vrstvě. ●
stav síťových portů: zavřené, otevřené, filtrované
●
publikované služby
●
používané operační systémy
●
pravidla chování bezpečnostních technologií (firewallů aj.)
●
pravidla chování síťových technologií (překlad adres, load balancing aj.)
Penetrační testy
Konzultace o dalších postupech
●
Konzultace nad dalšími postupy se zákazníkem
●
Je možné, že se objevily záležitosti, nad nimiž je zapotřebí jednat: ●
zřejmá možnost průniku do prostředí externího dodavatele
●
zjištěny záležitosti, které je nutné okamžitě vyřešit
●
●
zjištěno, že stav systému je podstatně rozsáhlejší, než se očekávalo atp.
Penetrační testy
Fáze pronikání
●
„Finální“ fáze
●
Průzkum zjištěných slabých míst a jejich ověření
●
Seznamy: ● ●
●
●
zranitelných aplikací, služeb oblastí, které ne/mohou být zabezpečeny pravidlem Security through obscurity
●
možných DoS
●
atd.
Vhodné postupy nebo nástroje: ●
podle cizích zdrojů (Internet, …)
●
vlastní zdroje
Nesoustředit se jen na jedinou hlavní slabinu, odhalit všechna místa útoků
Penetrační testy Fáze automatizovaného zjišťování známých zranitelností ●
Proč až na závěr penetračních testů? ●
●
mnohé nástroje nejsou schopny pracovat při maximálním utajení / maskování
Různá kvalita používaných nástrojů: ●
proto použít vícero nástrojů
Penetrační testy
Cíle
●
Weby
●
Databáze (MySQL, ORACLE, MSSQL, …)
●
Vzdálené přístupy (VPN, TELNET, SSH)
●
Publikování dat (SMB, NFS, FTP, …)
●
Grafický přístup (web admin. rozhraní, RDP, VNC, …)
●
DNS
●
Útoky na vnitřní síť (např. podstrčením kódu, informací ...)
●
Mail (SMTP, POP3, IMAP)
Ochrana před vnějšími hrozbami ●
Vývoj bezpečných aplikací
●
Softwarová protiopatření (aplikační FW)
●
Hardwarová protiopatření (router)
●
Ostatní (tradiční FW, šifrovací/dešifrovací programy, detekce odstranění spywaru, antivirové programy, systémy biometrického ověřování
Zvýšení aplikační bezpečnosti: ●
●
Přísně definované podnikové aktiva Určení toho, co která aplikace dělá (bude dělat) ve vztahům k těmto aktivům
●
Vytváření bezpečnostního profilu pro každou aplikaci
●
Identifikace a stanovení priorit potenciálních hrozeb
●
Dokumentování incidentů a přijatých opatření
●
Tzn. modelování hrozeb
●
V tomto kontextu hrozba znamená potenciální nebo skutečné nežádoucí účinky, které mohou ohrozit aktiva podniku
Ochrana před vnějšími hrozbami ●
Vývoj bezpečných aplikací
●
Softwarová protiopatření (aplikační FW)
●
Hardwarová protiopatření (router)
●
Ostatní (tradiční FW, šifrovací/dešifrovací programy, detekce odstranění spywaru, antivirové programy, systémy biometrického ověřování
Metodiky ●
●
●
OWASP – Open Web Application Security Project: ●
OWASP Top 10 →
●
EASPI – Enterprise Security API →
●
ASVS – Application Security Verification Standard Project →
●
SAMM – Software Assurance Maturity Model →
●
Developer Guide →
●
Testing Guide →
●
...
ISECOM – OSSTMM – Open Source Security Testing Methodology Maual → RFC – Request for Commands →
Metodiky ●
●
●
Microsoft – Security Development Lifecycle → Microsoft – patterns & practices Security Guidance for Applications Index → Firefox – ADD-ONS – Web Application Security Penetration Testing →
Databáze zranitelností ●
NVD – National Vulnerability Database (USA) →
●
CVE – Common Vulnerabilities and Exposures →
●
OSVDB – Open Sourced Vulnerability Databas →
●
SecurityFocus →
●
...
Děkuji za pozornost