Lámání hesel: on-line útok

V zásadě můžeme rozlišit dva typy útoků. V prvním případě je cílem útočníka uhádnutí hesla ke konkrétnímu účtu a ve druhém uhádnutí hesla k jakémukoliv účtu.

Ač útočník daleko spíše získá přihlašovací údaje k vybrané službě pomocí malwaru, phishingu nebo prostým zkopírováním celé DB hesel, nebude na škodu, když si popíšeme, jakým způsobem by mohlo probíhat hádání hesel v reálném čase přímo proti autentizační autoritě.

Password cracker

Uhádnutí hesla ke konkrétnímu účtu (targeted attack)

Vytvářet silné heslo má smysl především v případě, že útok může probíhat off-line, což však ve většině případů není možné. Pokud by útok probíhal on-line, systém by neúspěšné pokusy o přihlášení nedetekoval, účet by se po neúspěšných pokusech neuzamykal a ani by se neprodlužovala doba mezi jednotlivými pokusy o přihlášení, dala by se doba potřebná k prolomení takového hesla celkem snadno spočítat jako součin všech možných hesel a doby za, kterou je systém schopen ověřit zadané heslo a zobrazit výsledek této kontroly.

Předpokládejme, že systém je schopen ověřit jedno heslo za sekundu, resp. jednu sekundu v průměru trvá, než se útočník dozví, zda zadané heslo je správné či nikoliv. Předpokládejme, že útočník se nejprve snaží heslo uhádnout, poté provede slovníkový útok a pokud i ten selže, bude pokračovat v útoku hrubou silou. Pro představu, jak by takový útok mohl probíhat, použijeme jako příklad hypotetickou banku vyžadující pro přístup do svého internetového bankovnictví zadání správného ID a PIN. V případě 5místného PINu můžeme hovořit o 100.000 možností, což není mnoho. Pokud by byl útočník schopen vyzkoušet jeden PIN za sekundu, mohl by se ke správnému PINu dopracovat během jednoho dne.

Nepochybně jsou i systémy, které dokážou zpracovat za sekundu i větší počet požadavků o přihlášení. Jenže, i kdyby neměla společnost implementována žádná opatření na detekci neúspěšných pokusů o přihlášení, pravděpodobně detekuje nestandardní stav jen díky sledování zatížení systému a počtu otevřených spojení. Vždyť v případě, že by společnost měla 10.000 klientů, bylo by vytvořeno mnohonásobně větší množství požadavků na autentizaci, než je obvyklé. Proto útočník, pokud nechce být odhalen, nemůže být moc aktivní a útok musí rozložit do více dnů nebo i týdnů.

Vzhledem k tomu, že banky účet po několika neúspěšných pokusech o přihlášení na nějakou dobu uzamykají, je výše uvedený způsob útoku tohoto typu vysoce nepravděpodobný. Stejně tak pravděpodobnost, že by se někomu podařilo dostat se tímto způsobem k účtu jiného klienta, je velice nízká. I když jak se to vezme. Kdyby se účet uzamykal jen na hodinu, tak by útočník mohl za rok odzkoušet 26,2% PINů (24*3*365/10^5). Pokud by se účet uzamykal na 4 hodiny, tak by to bylo 6,5 % PINů (6*3*365/10^5) a pokud by se účet uzamykal na celý den, tak by to bylo jen 1,0% PINů (3*365/10^5). Ač je pravděpodobnost, že útočník uhádne PIN vyšší než ve sportce, zdá se, že to uživatele internetového bankovnictví příliš netrápí.

Proč ale hovořit jen o internetovém bankovnictví. Podívejme se na to, jaká je situace v případě freemailu, který používá nesrovnatelně více lidí než internetové bankovnictví. V případě freemailu, není počet pokusů pro přihlášení nijak omezen. Což je celkem logické, když je tato služba poskytována zdarma. Pokud by i na e-mail byla aplikována politika uzamykání, musel by provozovatel neustále řešit, jak účet odemknout a tím by mu vzrostly náklady. Představte si, že byste tímto způsobem mohli komukoliv zablokovat přístup k jeho e-mailové schránce. Po kolika pokusech by se měl účet uzamknout a na jak dlouhou dobu? Na základě čeho by se měl účet pro přístup k e-mailu zase odemknout? Oproti ID je e-mailová adresa v podstatě veřejná informace.

Když u internetového bankovnictví neznáte ID svého souseda, tak prostě nemůžete hádat jeho PIN. Jeho ID zná obvykle jen on a jeho banka. Můžete sice namítnout, že se jedná o „security through obscurity“ přístup, ale funguje bez větších problémů už spoustu let. Další rozdíl mezi ID do internetového bankovnictví a heslem k e-mailu spočívá v tom, že u e-mailu uživatel obvykle není nucen si volit numerický PIN, ale alfanumerické heslo, které musí splňovat určitá pravidla. Na druhou stranu si ale uživatelé heslo k e-mailu příliš často nemění, spíš vůbec, a systém je do toho ani nenutí. Freemailové servery bývají také výkonnější, protože se musí vypořádat s větším počtem uživatelů a větším objemem přenesených dat. Neúspěšných pokusů o přihlášení si pravděpodobně nikdo nevšimne a útočník může slavit úspěch.

Provozovatele freemailu totiž oproti bance nějaká důvěrnost, dostupnost, integrita nebo neodmítnutelnost vůbec nemusí trápit, a jestli jste pozorně četli smluvní podmínky, a věřím, že ano, tak jistě víte, že poskytovatel této služby se veškeré odpovědnosti za škody vzdává. Mimochodem u britských bank nese odpovědnost vždy klient a on musí prokázat, že danou transakci neprovedl, naproti tomu u amerických bank má klient vždy pravdu a banka musí prokázat, že transakci provedl opravdu on. Jak myslíte, že je to u nás v ČR?

Uhádnutí hesla k libovolnému účtu (bulk attack)

Většina útoků není vedena proti konkrétní osobě, útočníkovi je v podstatě jedno, k jakému účtu heslo získá. Pokud se tedy budeme držet dál našeho původního předpokladu, že útočník nemá jinou možnost, jak vést útok, než prostým hádáním hesel on-line proti autentizační autoritě a má seznam všech ID, pak může postupovat tak, že si zvolí libovolný PIN z intervalu <00000,99999>. Předpokládáme, že útočník ví, jakých hodnot může PIN nabývat, např. proto, že je sám klientem a náhodně zvolenou hodnotu pak bude zkoušet u každého ID. Je jisté, že se najde minimálně jedno ID, pro které bude daný PIN platný.

Pokud by naše hypotetická banka měla 1.000.000 klientů, a používala pětimístný PIN, tak by útočník našel při prvním průchodu minimálně deset ID, pro které by byl náhodně zvolený PIN platný. Zde předpokládáme, že PINy jsou sice generovány náhodně a dva klienti, kteří si po sobě internetové bankovnictví zřídí, nezískají po sobě jdoucí ID a PIN a zároveň si systém udržuje seznam již přidělených PINů, aby stejný PIN nemohl být přidělen druhému klientovi. Tím by mělo být zajištěno, že neexistují ani dva klienti, kteří by měli stejný PIN. Problém nastává v okamžiku, kdy si klienti mohou/musí PIN změnit, zde již může dojít k tomu, že si větší počet klientů zvolí stejný PIN a poté již při prvním průchodu získáme větší počet ID, ke kterým známe heslo.

Teoreticky by útočník mohl vyzkoušet 10^11 možností, pokud budeme předpokládat, že je 10^5 PINů a 10^6 ID, ale to není vůbec nutné. Pokud bude chytrý, bude PIN zkoušet třeba jen jednou měsíčně, řekněme, že vždy dvacátého. Při každém průchodu tak získá minimálně jednu desítku platných credentials tj. PIN a ID. Jednou měsíčně proto, aby zamezil uzamčení účtu. Bude předpokládat, že se aspoň část klientů v mezidobí úspěšně autentizuje, např. aby se podívali, jestli jim na účet přišla výplata a tím jeho chybné pokusy o přihlášení vynulují. Tímto způsobem by útočník mohl za rok získat až 100 platných credentials.

Útočník ale nemusí PIN generovat náhodně, ale vytvořit si množinu PINů, které předpokládá, že by mohlo používat více klientů. Některé PINy se prostě musí opakovat, a pokud se klientům dá možnost si PIN změnit nebo po nich banka změnu PINu po určité době vyžaduje, může být klientů se stejným PINem dokonce mnohem víc. Ukazuje se, že u tohoto typu útoku je důležitá i délka a (ne)predikovatelnost ID. Podstatnou roli také hraje počet klientů resp. platných ID. Jednoduše řečeno, čím delší ID a čím méně klientů, tím lépe. Útočníkovi může nahrát i skutečnost, že některé systémy vyzrazují, zda je dané ID použito či nikoliv, a nemusí to být přímo chybové hlášení na obrazovce, ale odezva systému může být rychlejší v případě, kdy ID není platné (jedná se v podstatě o útok postraním kanálem). Řešením by bylo i nepoužitým ID přidělit nějaké PINy, např. nějaký dlouhý alfanumerický řetězec. V takovém případě by byl každý pokus o přihlášení na tyto nepoužívané ID neúspěšný.

Může však být výše uvedený scénář útoku použit i v praxi? Musíme se zamyslet nad tím, jak dlouho by takový útok trval. Budeme předpokládat, že útočník musí vyzkoušet jím zvolený PIN pro 10^6 ID. Pokud se budeme držet našeho předpokladu, že je možné vyzkoušet jen jeden PIN za sekundu, potom by vyzkoušení daného PINu na všech ID trvalo 10^6 sekund, což je přibližně 11 dní. Vyzkoušení zvoleného PINu u 7místného ID by trvalo 115 dní, 8místného ID více než 3 roky a 9místného dokonce 31 let. Na základě výše uvedeného výpočtu se domníváme, že použití 8místného ID představuje dostatečnou ochranu před útokem tohoto typu za předpokladu, že jsou přidělována ID z celého intervalu <00000000,99999999>.

Klientovi je též třeba umožnit se přihlásit i na dovolené, tedy z místa odkud se běžně nehlásí a teprve z jeho dalších kroků usuzovat na to, zda se náhodou nejedná o útočníka. V takovém případě není možné použít jednoduché řešení založené na identifikace zařízení klienta, ale skutečný FDS, který je schopen na základě předchozích transakcí klienta, jeho chování a místa odkud přistupuje, vyhodnotit, s jakou pravděpodobností transakci provádí oprávněný uživatel a v případě pochybností si vyžádá dodatečnou autentizaci, kterou některé firmy označují jako adaptivní. Pro banku a klienta však mnohdy představuje větší riziko uzamčení účtu, než uhádnutí ID a PIN, neboť uhádnutím ID a PINu útočník obvykle může provádět jen pasivní operace, protože aktivní operace vyžadují dodatečnou autentizaci spočívající např. v opsání kódu zaslaného ve formě SMS, použití tokenu nebo kalkulátoru.

Závěr: Domníváme se, že při správné implementaci může být systém založený na jednofaktorové autentizaci, FDS a adaptivní autentizaci poměrně bezpečný a pro naprostou většinou klientů plně vyhovující.


Pokud vás tento příspěvek zaujal, sdílejte ho!
Share on FacebookShare on LinkedInTweet about this on TwitterShare on Google+Email this to someonePrint this page

Štítky: ,


K článku “Lámání hesel: on-line útok” se zde nenachází žádný komentář - buďte první.

Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.

Přihlášeným uživatelům se tento formulář nezobrazuje - zaregistrujte se.

Jméno:(požadováno)
E-mail:(požadováno - nebude zobrazen)
Web:

Text vaší reakce: