Bezpečnost webových aplikací blok A Petr Závodský petr.zavodsky@nic.cz 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