Burp Suite k penetračnímu testování (3.díl - Modul Intruder)

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: .cCuMiNn.
Datum: 5.8.2014
Hodnocení/Hlasovalo: 1.13/8

Jednou z největších devíz nástroje Burp Suite je bezesporu právě Intruder, který penetračnímu testerovi ušetří dlouhé hodiny nezáživné rutinní práce při odhalování hesel, souborů, nebo třeba obsazených ID konkrétního obsahu.

Burp SuiteTéměř každý, kdo se pokoušel proniknout do tajů hackingu, se dříve či později setkal s guessingem, nebo-li s útoky proti přihlašovacím formulářům, jejímž cílem bylo prolomit hrubou silou (brute force) nebo slovníkovým útokem (dictionary attack) hesla uživatelů. Postupem času testeři přišli také na to, že by nebylo špatné zkoušet hrubou silou nebo pomocí slovníku odhadnout i umístění a jména různých souborů a skriptů uložených na serveru, na které nevedou žádnou odkazy. Setkat jste se ale mohli i s případy, kdy aplikace používá jedinečné ID například pro zobrazení profilu uživatele nebo k adresování souborů. Číselná řada ovšem může být děravá a hledat, které ID je obsazeno a které je volné, by bylo pro manuální procházení skutečně nadlidským úkolem.

No a právě ke všem výše uvedeným činnostem (ale nejenom k nim) se výborně hodí právě modul Intruder nástroje Burp Suite, se kterým se v tomto dílu seznámíme. Hned v úvodu se ale sluší zmínit, že právě Intruder je ve free verzi nástroje Burp Suite významně omezen a to na kadenci, se kterou odesílá jednotlivé požadavky. Pokud tedy budete potřebovat využít plné rychlosti Intruderu, abyste měli možnost odesílat stovky requestů za sekundu, budete se muset poohlédnout po placené professional verzi.

Využití intruderu pro guessing

Vertikální nebo horizontální guessing, aneb odesílání různých hesel pro jedno uživatelské jméno, nebo zkoušení jednoho hesla pro všechny uživatele, je základní praktickou dovedností nejednoho začínajícího útočníka. My se ovšem s guessingem nebudeme seznamovat proto, abychom jako zlí hoši pronikali do cizích účtů, ale proto, že guessing je současně také jednou ze základních technik používaných během penetračního testování. V následujících odstavcích se proto podíváme na jednotlivé typy útoků testující sílu uživatelských hesel s využitím nástroje Burp Suite.

Sklízíme uživatelská jména

Pokud netestujeme přítomnost slabého hesla pouze u jednoho konkrétního uživatele, jehož login je nám znám (např. admin), je dobré si nejprve připravit seznam loginů, které jsou v aplikaci zaregistrovány. Možnost vytáhnout z aplikace slovníkovým útokem nebo hrubou silou uživatelská jména je poměrně častou logickou chybou webových aplikací. Jako příklad zranitelného místa uvedu například registrační formulář, který nám svědomitě oznámí, zda je dané jméno volné nebo obsazené. Podobně se chovají také formuláře určené k zaslání zapomenutého hesla, které nám v případě, že si přejeme zaslat heslo k neexistujícímu loginu, oznámí, že námi zadané jméno nebylo v databázi nalezeno. Pojďme tedy před samotným guessingem využít Intruder nejprve ke sklizni uživatelských jmen.

Jako vždy nebudeme zkoušet nic na cizí webové aplikaci, ale raději si vše vyzkoušíme na našem již dobře známém pískovišti, kterým se pro nás stane náš Hackme webmail. Přejdeme-li na stránku registrace nového uživatelského účtu a vyzkoušíme zaregistrovat účet s loginem „admin“ dostane se nám odpovědi „Zadaný login je již použitý“. Toto místo tedy bude pro sklizeň loginů ideální.


Spustíme si tedy náš starý známý Burp Suite a nastavíme webový prohlížeč tak, aby všechny požadavky proudily přes něj. Není potřeba, abychom požadavky zastavovali interceptem a proto tuto volbu v modulu Proxy deaktivujeme. Následně odešleme vyplněný registrační formulář a půjdeme se podívat do historie komunikace, zda se náš požadavek správně zaznamenal. Najdeme request směřující na adresu /user/send_registration.php, a již důvěrně známým postupem přes kontextové menu jej odešleme do Intruderu (Sent to Intruder).


Mezi záložkami v horní části nástroje Burp Suite vyhledáme tu s označením Intruder a jediným kliknutím na ni se přesuneme na zatím neznámé místo. Nezoufejte však. Až dočtete tento článek, budete se cítit jako doma už i zde.

Pod hlavními záložkami jednotlivých modulů se podobně jako v repeateru nachází ouška karet označená 1x, 2x, 3x, atd. v závislosti na tom, kolik požadavků jste si do Intruderu odeslali. Pomocí těchto záložek se mezi jednotlivými požadavky můžete přepínat, případně je křížkem za číslem můžete uzavřít, pokud je již nebudete potřebovat.

Ještě níže se pak nachází záložky pojmenované Target, Position, Payloads a Options, které pro nás budou dnes velice důležité.

Po té, co jsme úspěšně nastavili všechny požadované hodnoty, nastal ten správný čas spustit samotný test. K tomu nás slouží volba Start attack dostupná po kliknutí na položku Intruder v hlavním menu aplikace nad záložkami karet jednotlivých modulů.


Pokud jsme vše správně nastavili, měli bychom v případě free verze obdržet pouze upozornění na skutečnost, že je Intruder ve free verzi omezen a pak už můžeme v novém okně sledovat průběh samotného testu.

Video zachycující celý postup pro sklizeň uživatelských jmen


Sklizeň uživatelských jmen na základě uživatelského id

Jak jsem slíbil v odstavci věnovaném Grep – Extract, je s použitím Intruderu velice snadné vyextrahovat z obsahu stránky uživatelská jména na základě jejich id (trpí-li samozřejmě webová aplikace tímto typem logické zranitelnosti). Jedním ze známých cílů pro tuto extrakci je například redakční systém Wordpress, který je v tomto směru ukecaný dostatečně.

Pomocí Google dorks je možné nalézt několik milionů Word Pressů, které nám seznam svých uživatelů poměrně ochotně nabídnou:

https://www.google.cz/?gws_rd=ssl#q=%22inurl:\%3Fauthor%3D1%22+intitle:admin

No a nyní již k samotnému postupu, který už nebudu popisovat písemně, ale jen prostřednictvím následujícího videa.


Testujeme sílu hesel

V tuto chvíli byste již měli být schopni sami otestovat sílu hesel jednotlivých uživatelů našeho testovacího webmailu, které jsme pomocí postupu uvedeného dříve z aplikace vydolovali. Pro jistotu pouze připomenu různé varianty útoků, které můžete při testování hesel použít.

Dictionary Attack (slovníkový útok)

Burp SuiteTento typ útoku na prolomení hesel se snaží najít heslo ve slovníku (souboru s konkrétními řetězci). Pokud tedy uživatelé používají jako své heslo běžná slova, nebo jména, bude jejich odhalení s využitím vhodného slovníku poměrně snadnou záležitostí. Na našem serveru naleznete některé slovníky v sekci download.

Brute Force Attack (útok hrubou silou)

Burp SuiteÚtok hrubou silou se používá ve chvílích, kdy heslem není běžné slovo a slovníkové metody tak selhávají. Má-li však uživatel nastaveno příliš krátké heslo, nebo známe znaky, ze kterých se heslo skládá, můžeme se pokusit o jeho prolomení touto metodou, která zkouší použít všechny možné kombinace zvolených znaků. V případě velkého keyspace je ovšem použití této metody časově natolik náročné, že prolomení hesla není realizovatelné v rozumném čase.

Horizontální Attack

Horizontální útok znamená, že budeme testovat jedno heslo (případně několik málo hesel) proti všem uživatelům. Řekněme, že jedním z nejčastějších hesel v česku bude slovo „heslo“. Vyzkoušejme tedy použít toto heslo u všech námi zjištěných uživatelských účtů.

Vertikální Attack

Při vertikálním útoku se budeme snažit prolomit heslo jednoho konkrétního uživatele (případně několika málo uživatelů). Použít při tom můžeme jednak slovníkové útoky, nebo útok hrubou silou.

Kompletní Attack

Spojením horizontálního a vertikálního útoku získáme variantu, kdy budeme testovat všechny možné hesla, na všechny uživatelské účty aplikace. Tento typ útoku bude časově velice náročný.

Všechny typy útoků byste měli být schopni s využitím intruderu z nástroje Burp Suite sami zvládnout. Pro jistotu, ale přikládám ještě jedno video, které některé z postupů zachycuje.


Závěr

Věřím, že jste se přesvědčili o skutečnosti, že modul Intruder je velice užitečným nástrojem, kterým lze otestovat snad cokoliv vás napadne. Dolování loginů a prolamování hesel bylo jen malou ukázkou z širokého spekra možností, které Intruder testerům poskytuje. Až budete příště testovat, jak se aplikace zachová, pokud obdrží určitý vstup, zkuste si na tento nástroj vzpomenout a ušetřete si tak spoustu času, který byste jinak věnovali manuálnímu otestování.