Brute force – útok na hesla hrubou silou

V dnešním příspěvku si vysvětlíme, co je to útok na heslo hrubou silou. Demonstraci útoku provedeme na starší verzi WordPressu s úmyslně slabým heslem do administrace. Tento článek má za cíl ukázat, že jednoduchá hesla jsou hřebíčkem do rakve každé aplikace. Upozorňujeme, že záměr článku je čistě edukační a tímto vás odrazujeme od podobných pokusů na systémech, které sami nevlastníte.

Autentizace

Každá aplikace, která řeší uživatele, musí ověřovat jejich identitu. Autentizace je akt ověření identity uživatele.

Z pohledu útočníka je “proklepnutí” autentizace jedna z přímých cest, jak se dostat dovnitř. Nabízí se následující scénáře:

  • Bypass – odhalení a zneužití chyby v autentizačním modulu.
  • Útok na heslo hádáním – zkoušíme heslo uhodnout pomocí slovníku s hesly.
  • Útok na heslo hrubou silou – zkoušíme všechny kombinace hesel z daného prostoru.
  • Útok na uživatele sociálním inženýrstvím.

Enumerace uživatelských účtů

Útoky na hesla vyžadují znalost názvu účtu uživatele. Administrátorské účty jsou většinou “profláknuté” a jejich názvy najdeme v dokumentaci, někdy i spolu s počátečním heslem.

Často se setkáme s uživatelskými jmény ve formě emailů. Pokud známe email oběti, známe i název účtu. V ostatních případech musí útočník název účtu uhádnout pomocí slovníku nebo poprosit aplikaci, aby to vyzradila sama.

Následující příklad demonstruje zranitelnost aplikace WordPress 4.0, která vyzrazuje existenci účtu.

Přihlášení neexistujícího uživatele končí upřímnou odpovědí – uživatel neexistuje.

Zvolíme-li jméno existující uživatele, např. admin, aplikace odpoví, že jsme použili špatné heslo. Tímto hlášením nám aplikace sama vyzradila, že uživatel admin existuje.

Uživatele už známe a tak se můžeme přesunout k samotnému útoku.

Útok na hesla hrubou silou

Útok hrubou silou je jednoduchý a z analytického pohledu vždy úspěšný. Zkouší všechny kombinace hesel z dané abecedy (použité znaky a symboly). Pokud útočník zná název účtů a maximální délku hesla, musí se zákonitě trefit. Klíčová otázka však je, jak dlouho mu to bude trvat.

Platnost hesla

Reálný svět přináší svá omezení a většina uživatelů si v podnikovém prostředí mění hesla každých 60 nebo 90 dní. To je praktická hranice pro úspěšný útok.

Výpočetní síla

Výpočetní síla počítačů sice roste a dá se rozložit na více strojů, ale musíme si uvědomit, že se bavíme o online útoku na hesla proti jedné webové aplikaci. Každý pokus o ověření hesla musí jít po síti tam a zpět. Samotná webová aplikace má své uživatele, kteří jí používají a nemůžeme urvat celý její výpočetní výkon.

Útočník není dokonalý

Pokud bereme útok trvající 60 dnů, tak je pravděpodobné, že se útočník setká s výpadky aplikace nebo síťového připojení, tj. někdo jej odstřihne.

Útočník dále nemůže celý útok sledovat jako v kině. Je pravděpodobné, že se během útoku něco stane a on nebude schopen včas reagovat, aby na útok navázal nebo nebude chtít analyzovat, která hesla nemohl ověřit.

Motivace

Proč má stále útok hrubou silou pro útočníka smysl? Už víme, že je jednoduchý na realizaci. Útočník může mít silnou motivaci se do systému dostat a tato cesta může být jednodušší než překonání jiného stupně obrany.

Je zde také šance, že si vytipuje uživatele s velmi slabým heslem, nebo má na heslo indicie a pohybuje se na menším prostoru kombinací.

Dále existují aplikace nebo administrátorské účty, na které nikdo z obavy “nešahá”, a rotace hesel je zde úmyslně potlačena, aby se byznys neposkládal jak domino.

V této kategorii najdeme nesmrtelné aplikace, které běží více jak 5 let a mají pevnou uživatelskou základnou, která trvá na svých starých heslech. Pokud nemá smysl útok hrubou silou, tak má smysl zkusit alespoň hitparádu populárních hesel.

Útok hrubou silou a hádání se provádějí podobně a tak se vrátíme k našemu příkladu s přihlášením do WordPressu. Máme platný účet admin a zbývá najít nástroj, který vyzkouší různá hesla.

Nástroj – THC Hydra

THC Hydra je vhodný reprezentant nástroje pro naše účely. Zvolíme si uživatele, způsob generování hesel a cílový server. Pro rychlou ukázku jsem ve WordPressu adminovi zvolil 6 znakové heslo, které používá číslice a omezené znaky (m, d, a).

Nápověda

Hydra bez dalších parametrů zobrazí krátkou nápovědu.

Nápověda ukazuje, že parametry (-l, -L) slouží k definici loginu. Malé “l” je pro jednoho uživatele, velké “L” definuje slovník s názvy více uživatelů. Obdobná analogie platí pro hesla (-p, -P). Všimněte si parametru (-x), který umožňuje generovat hesla na základě abecedy a délky slova. Nakonec specifikujeme službu a IP adresu.

Víme, že přihlašovací údaje potřebujeme poslat HTTP metodou POST. Pro náš test využijeme modul hydry http-post-form. Jak tento modul nastavit zjistíme přepínačem -U.

Hydra útočí

Pojďme sestavit potřebné parametry. Zafixujeme uživatele admin (-l) a nadefinujeme abecedu znaků (-x) pro 6 znakové heslo. Následuje URL adresa WordPressu, která přihlašovací údaje přijímá.

Parametry log a pwd jsou z přihlašovacího formuláře, najdeme je ve zdrojovém kódu HTML stránky. Parametr “:F” napovídá hydře, jak poznat neúspěšné přihlášení. Ostatní parametry jsou pro komfort.

Po spuštění příkazu začne nástroj paralelně zasílat několik HTTP požadavků s žádostí o přihlášení.

Po třech minutách vidíme první ovoce. Hydra našla uživatele admin heslo adm123.

Získané přihlašovací údaje použijeme k příhlášení do WordPressu. Z následujícího obrázku můžeme vidět, že se jedná o správné uživatelské jméno a heslo.

Útok hrubou silou je tedy možný, pojďme probrat varianty opatření, které mohou útoku zabránit nebo alespoň zmírnit jeho dopady.

Opatření

Správné technické řešení je dvoufaktorová autentizace, ale ne každá aplikace si může takový luxus dovolit. Zbývají nám následující možnosti obrany.

Politika síly hesel

Z aplikačního pohledu je nejjednodušší implementovat politiku hesel a vynutit si minimální sílu hesla (délka a počet použitých znaků). Čím delší heslo je, tím klesá pravděpodobnost, že útočník heslo objeví.

Všechna hesla vymyšlená člověkem mají nějaký vzor a proti tomuto útoku politika hesel nepomůže. Doporučujeme vždy hesla generovat v aplikaci pro správu hesel.

Politika uzamykání účtů

Dále máme možnost implementovat politiku účtů, která dočasně uzamkne účet uživatele, pokud se opakovaně chybně přihlašoval v krátkém časovém rozpětí. Uživatel obvykle čeká další minutu, dokud se jeho účet neodemkne, aby mohl pokračovat v přihlašování.

Představte si, že útočník vyzkouší řádově 500 hesel za minutu. S uzamykáním účtů útočník stihne ověřit zhruba 5 hesel, pak se účet uzamkne a čeká se další minutu. Nyní je útočník schopen testovat pouze 5 hesel za dvě minuty a to už je výrazný rozdíl v rychlosti.

Pokud se jedná o kritickou aplikaci, tak musí hlásit opakované uzamčení účtů jako podezření na bezpečnostní událost. Další variantou je trvalé uzamčení účtu, které však znamená větší režii. Administrátor nebo helpdesk musí uživateli nabídnout pomoc a účet odblokovat.

Inspekční zařízení

Na síťové vrstvě můžeme instalovat inspekční zařízení – chytrý firewall, web aplikační firewall (WAF) nebo systém pro detekci (IDS) a prevenci narušení (IPS). Tato zařízení dokáží útok rozpoznat, zablokovat nebo alespoň nahlásit.

Pokud je aplikace někde v intranetu a okruh uživatelů je relativně malý, můžeme si vystačit s jednoduchými skripty pro reporting událostí přímo z logů web serverů nebo z http proxy. Bohužel se takové řešení špatně spravuje a rozvíjí.

Monitoring logů

Nejméně oblíbené opatření nakonec. Pokud máme personál, který má kapacitu na to, aby procházel pravidelně logy, nebo jejich agregace, může tento druh vizuální kontroly útočníka prozradit. Tímto se blížíme k závěru.

Závěr

V dnešním příspěvku jsme si ukázali útok hrubou silou a diskutovali jsme možnosti jeho obrany.

Pokud se vám příspěvek líbil, sledujte náš facebook a diskutujte pod článkem na téma oblíbené “brute force” nástroje, tipy na správu a generování silných hesel nebo se podělte o zkušenosti s efektivitou diskutovaných opatření.

 

 

 

 

 

 

Blog

Kontakty

Kali linux na Raspberry Pi

V dnešním článku nainstalujeme Kali linux na Raspberry Pi3. Raspberry Pi  je jednočipový minipočítač s procesorem ARM, který strčíte do krabičky od mýdla. Pro Raspberry…

Číst dál

Modelování hrozeb ve vývoji

v květnu jsem na Black Swan Security Congresu 2018 prezentoval o tématu modelování hrozeb ve vývoji a rád bych se s vámi podělil o svoje zkušenosti….

Číst dál

Android hacking pro začátečníky – ADB

Vítám čtenáře, kteří sledují náš seriál o “hackování” Androidu. Minule jsme se prokousali přípravou prostředí, abychom se dnes mohli připojit k Androidu pomocí nástroje Android…

Číst dál

Kontakty

+420 739 639 132

Petr Juhaňák
V Poli 547
517 71 České Meziříčí

IČO 01259041