1 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, 20092 ...
Ú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í
50-60% šance dopadení
10% šance dopadení
Pravděpodobnost odsouzení
95% šance odsouzení při dopadení
15% dopadených soudně stíháno, z toho 50% odsouzeno
Trest
5-6 let v průměru, pokud pachatel nikoho nezabil
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)
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">
načtení skriptu z cizího umístění a jeho následné provedení: <script src=„http://web.com/javascript.js">
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 ""; ?> http://web/index.php?search=val'><script src='http://myweb/script.js'>
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
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 kreditních karet přihlašovacích údajů
Phishing
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 stroj útočníka stroj oběti
rychlost …
připojení
k prolomení 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)
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ů
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