Únos spojení
Únos spojení (anglicky session hijacking nebo cookie hijacking) je v informatice označení počítačového útoku, který zneužívá HTTP cookie odcizené oběti útoku pro získání neoprávněného přístupu k informacím nebo službám poskytovaným webovým serverem.
Charakteristika
HTTP cookie je malé množství dat, které je uloženo ve webovém prohlížeči oběti. Slouží zde k vytvoření tzv. session, která typicky vzniká autentizací uživatele (např. jménem a heslem). Pomocí cookie je uživatel identifikován při příští návštěvě stránek na dotyčném webovém serveru (je tak překonána bezstavovost HTTP protokolu). Protože jsou cookie v takovém případě vlastně autentizační data (tzv. „magic cookie“), může se po jejich odcizení útočník vůči serveru vydávat za oběť (a server to nemusí poznat).
Metody útoku
Existují čtyři základní metody jak se zmocnit sezení (session), přičemž všechny jsou založeny na získání identifikátoru sezení (tzv. session key, session ID, dále je používána zkratka SID), který je uložen v HTTP cookie:
- Session fixation
- U fixace sezení útočník nastaví SID na hodnotu platnou pro napadeného uživatele a tu pak zašle například e-mailem jako součást odkazu napadenému uživateli a čeká, až uživatel klikne na webový odkaz a přihlásí se. Zaslané SID se stane platným a útočník ho může použít.
- Session sidejacking
- U session sidejacking útočník odposlouchává nešifrovanou síťovou komunikaci mezi prohlížečem a webovým serverem pomocí analyzátoru síťového provozu. Mnoho webových stránek používá pro přihlášení (tj. pro přenos uživatelského jména a hesla) přenos zabezpečený pomocí HTTPS, ale následná komunikace již probíhá nešifrovaně, a tak je možné přidělené SID snadno získat. Útočník tak získá identitu napadeného uživatele i bez toho, aby bylo prozrazeno přihlašovací jméno a heslo. Útok je velmi snadné provést například při připojení pomocí nešifrovaných veřejných Wi-Fi hotspotů.
- Cross-site scripting
- Cross-site scripting je založeno na snaze útočníka podvrhnout do uživatelova počítače kód (např. JavaScript), který je jím považován za důvěryhodný, protože vypadá, jako by byl získán ze navštíveného webového serveru. Podvržený kód může následně získat SID nebo provádět jiné nežádoucí operace.
- Fyzické zkopírování SID
- Útočník může získat SID prostým zkopírováním souboru s cookie z uživatelova počítače (cookie jsou typicky uložena jako běžné soubory), zkopírováním části operační paměti počítače nějakým nežádoucím programem nebo zkopírováním SID přímo z napadeného webového serveru.
Exploity
Firesheep
V říjnu 2010 byl vydán doplněk s názvem Firesheep pro Mozillu Firefox, který umožnil uživatelům jednoduše se zmocnit session na nešifrovaných veřejných Wi-Fi. Nejde o aktivní útok o získání hesla, ale o pasivní zachytávání cookies uživatelů, jejichž webový provoz proudí vzduchem bez šifrování. Stránky jako Facebook, Twitter a další byly pomocí tohoto doplňku lehce prolomitelné. Měsíc po vydání tohoto doplňku tyto servery využívali komunikaci HTTPS v celém prohlížení webu.
WhatsApp sniffer
Tato aplikace nazvaná "WhatsApp Sniffer" byla uveřejněna na Google Play v květnu 2012 a umožňovala zobrazovat zprávy ostatních uživatelů WhatsApp připojené na stejné síti. WhatsApp využívala nešifrovanou XMPP komunikaci, jinak řečeno sítí se přenášel čistý text.
DroidSheep
Je jednoduchý nástroj pro zmocnění se webové session na principu sidejacking. Naslouchá HTTP pakety vyslané bezdrátové (802.11) a z těchto paketů získá session id k následnému využití. Přestože nezachycuje přímo hesla, dokáže DroidSheet využít zranitelnosti nezabezpečených webů pomocí aktuální instance jiného člověka. Dokáže "škodit" na nezabezpečených sítí, sítích využívající WEP a WPA/WPA2 (pouze PSK). Tato aplikace byla dostupná na Google Play, ale následně byla odtud odstraněna společností Google.
CookieCadger
CookieCadger je aplikace napsaná v Javě, která funguje také na principu sidejacking a využívá nezabezpečené HTTP GET požadavky. Cookie Cadger dokáže identifikovat informace z aplikací, které využívají nezabezpečené HTTP GET požadavky. Weboví provideři se začali otázkou bezpečnosti zabývat od vydání Firesheep v roce 2010. Dnes, největší webové aplikace používají SSL/TLS komunikaci během každé transakce, prevenci proti zneužití cookie jak přes kabelové tak i přes nezabezpečené Wi-Fi spojení. Cookie Cadger je první open-source pen-testing nástroj pro zachycení a přeposlání konkrétního nezabezpečené HTTP GET požadavku do prohlížeče. Cookie Cadger je utilita s grafickým rozhraním, která využívá sílu Wiresharku a Javy, je plně multiplatformní a zcela open-source nástroj, kterým můžete sledovat jak ethernet, nezabezpečenou Wi-Fi síť, tak i načíst digitalizaci souboru paketů pro offline analýzu.
Prevence
Metody pro prevenci útoků tohoto typu jsou:
- Šifrování komunikace mezi prostředníky pomocí SSL/TLS. Na tuto techniku spoléhá většina rizikových komerčních webových aplikací jako je například internetové bankovnictví a další, protože toto šifrování kompletně znemožní jakýkoliv sniffing útok. Bohužel toto šifrování nezamezí úplné odstranění session útoku.
- Používat dlouhá náhodně vygenerovaná čísla, nebo řetězce jako session key. Toto odstraní možnost útočníkovi jednoduše uhodnout například pomocí útoku hrubou silou.
- Vygenerovat zcela nový session id po úspěšném přihlášení. Toto je prevence proti typu útoku session fixation, protože útočník neví session id uživatele, který je přihlášen.
- Některé služby mají druhotnou kontrolu identity uživatele. Například, webový server může kontrolovat jakou IP adresou je každý požadavek odeslán.
- Některé aplikace mění hodnotu cookie při každém požadavku. To dramaticky zkomplikuje útočníkovi zmocnění se údajů, ale oproti tomu je aplikace více náchylná na technické problémy (například dvě stejné legitimace, nebo více požadavků na server v krátkém čase může vyvolat chybu).
Reference
V tomto článku byl použit překlad textu z článku Session hijacking na anglické Wikipedii. (únor 2015)