Hračky na hackování: Hak5 Bash Bunny

Před Vánoci jsem pro kolegy z firmy udělal malé školení o bezpečnosti a hackování. Cílem bylo jim zdůvodnit, proč máme v sítích nasazené určité (občas nepopulární) restrikce a zároveň ukázat, na kterých místech je třeba ještě zapracovat.

S kolegy i zákazníky mluvíme o bezpečnosti často. Dobré je, že všichni chápou, že je potřeba dělat věci pořádně a dbát na bezpečnost. Na druhou stranu mám dojem, že si myslí, že jsou to všechno spíš teoretické věci a prakticky není útok jednoduché udělat. Rozhodl jsem se proto udělat školení pouze praktické – ukázal jsem jim útoky jak proti laboratornímu prostředí, tak i proti našemu produkčnímu prostředí. Myslím, že to zabralo 😊.

Abychom to měli „zábavnější“, objednal jsem si na pomoc pár hraček (Bash Bunny a Packet Squirrel od Hak5). Jelikož mi obě zařízení přijdou bezvadná pro prezentaci bezpečnostních rizik, chtěl bych se s vámi podělit o své zkušenosti. Asi netradičně začnu tím, k čemu se hračky dají použít. Protože jestli jste se s podobným zařízením ještě nesetkali, tak vás z toho nejspíš zamrazí. Pojďme tedy začít s tím, co se dá dělat se zařízením Bash Bunny.

Ještě, než se rozepíši. Rád bych upřesnil, že není mým cílem někoho nabádat, aby s těmito zařízeními páchal trestnou činnost, nebo někomu ubližoval. Zařízení prezentuji kvůli osvětě a sám je používám pro demonstraci a penetrační testování. Někdo může namítnout, že tyto informace by se měly udržovat pouze v odborných kruzích. To je podle mě strkání hlavy do písku a navíc už je na to pozdě – stačí si zadat do vyhledávání na Youtube slovo „hacking“.

Co se s tím dá dělat

Pokud jste hodný admin,

tak to použijete pro automatizaci věcí, které vás nebaví. Třeba když musíte pravidelně psát do každého PC nějakou sadu příkazů a nelze to udělat jiným způsobem – např. PC nejsou na síti. V takovém případě si všechny příkazy napíšete do texťáku, ten nahrajete a nastavíte do Bash Bunny. Nyní, když Bash Bunny připojíte do nějakého zařízení, bude se Bash Bunny tvářit jako klávesnice a bude do PC posílat to, co je obsahem texťáku (jako kdybyste si k tomu PC připojili skutečnou klávesnici a psali sami ručně – tzn. veškeré dění je na PC vidět). Bash Bunny napíše vše, co si přejete, bez chyb a mnohonásobně rychleji, než byste to zvládli sami.

Pokud hodný admin nejste,

tak použijete Bash Bunny např. k připojování nezamčených PC k vašemu Metaspoloit frameworku, nebo instalaci backdoorů. Prostě jen připojíte Bash Bunny do PC a za 15 sekund je PC pod vaší kontrolou (videa jsou vždy pouze ilustrační – obdobné útoky co se mi podařilo na Youtube dohledat).

Nebo jej můžete použít k získávání hesel z PC. Bash Bunny připojíte do PC a ten se připojí jako USB disk a klávesnice. Skrze klávesnici napíše příkaz pro spuštění programu umístěného na svém USB disku. Tento program pak z PC vytáhne hesla (ze správce pověření Windows, ke všem uloženým Wifi sítím, hesla a historii z webových prohlížečů, hesla a databáze správce hesel KeePass [pokud je spuštěn]) a vše uloží na USB disk. Do 40 sekund je hotovo, Bash Bunny můžete vysunout z PC a odejít. (postaveno na programu Lazagne a payloadu „library/credentials/PasswordGrabber“)

Pokud je obrazovka PC zamknutá, neznamená to, že se z PC nedá nic zjistit. Od toho má Bash Bunny možnost emulace sítové karty. Při zapojení do PC se Bash Bunny tváří jako 2 Gbitová karta a jelikož to bude pravděpodobně nejrychlejší rozhraní, stane se výchozím síťovým rozhraním. Přes DHCP přidělí PC IP adresu a PC začne přes tuto síťovku komunikovat. Samozřejmě je to pouze emulace síťová karty – tzn. na internet ani síť se PC nedostane. Bash Bunny však na všechny pokusy PC o připojení k jiným zařízením bude odpovídat a simulovat komunikaci – na základě toho pak bude na interní úložiště ukládat zachycená hesla, cookies nebo „authentication challenges“ (založeno na útoku a payloadu „library/credentials/QuickCreds/“ ).

Pikantní na všem je, že útoky fungují proti plně aktualizovaným PC se zapnutou antivirovou ochranou a administrátorská oprávnění nejsou nutnou podmínkou (může se lišit antivirus od antiviru a restriktivnosti nastavení PC – pokud máte kompletně zablokované USB porty, je jasné, že to fungovat nebude 😉).

Co je Bash Bunny

Jedná se o „PC on a stick“ – „mikro počítač“ (Quad-core ARM Cortex A7, 512 MB DDR3, 8 GB storage), který vypadá jako větší USB flash disk a obsahuje Debian Linux s úpravami od Hak5.

Je to zařízení vhodné pro provádění útoků skrze USB (někdy nazývané BadUSB útoky). Je to postrach uživatelů, co si nezamykají obrazovku, když odchází od svého PC. Bash Bunny se umí při připojení do PC tvářit jako klávesnice, usb disk a síťová karta, nebo libovolná kombinace těchto zařízení (na PC není třeba instalovat žádné ovladače).

Vkládám i video od výrobce, kde zařízení představuje a ukazuje práci s ním. Pokud máte 20 minut čas, dá vám to slušný obrázek.

Bash Bunny má na horní straně jeden třípolohový přepínač, přes který se volí, co se stane při připojení do PC. Jedna poloha je „arming mode“, při které se BashBunny připojí pouze jako USB disk a je možné jej rekonfigurovat. Další dvě polohy jsou pak konfigurovatelné –nastavíte si sami, jaký útok se při nich má provést.

Bash Bunny obsahuje i jednu RGB diodu, pomocí které vám signalizuje, v jaké fázi útoku se nachází (např. bootování, fáze 1, fáze 2, vše hotovo).

Postřehy z praxe

Bohužel jsem na hraní s Bash Bunny ještě neměl tolik času, kolik bych si představoval. Avšak píši, na co jsem přišel:

  • Útoky pro Bash Bunny si můžete napsat sami anebo zvolíte z již existujících. Výrobce Bash Bunny spravuje následující repositář https://github.com/hak5/bashbunny-payloads/tree/master/payloads/library . Ne všechny útoky v oficiálním repositáři jsou bezchybné – občas je třeba i něco fixnout.
  • Aktualizace zařízení je velice jednoduchá. Stačí Bash Bunny připojit do PC v Arming módu. Nahrát na něj updater a spustit. Ten se postará o nahrání nejnovějšího firmware a také stažení útoků z repositoráře (viz bod výše).
  • Zařízení bootuje cca 9 sekund a pak ihned začíná provádět vybraný útok, tzn. u počítače vám stačí opravdu jen chvilka.
  • Nevýhodou, na kterou jsem narazil (ale ta se týká všech emulátorů klávesnice), je problém s rozložením klávesnice. U každého útoku, kdy Bash Bunny emuluje klávesnici, je třeba nastavit, jaké rozložení klávesnice má emulovat (např. anglickou, českou, slovenskou …). Rozložení nastavené v Bash Bunny se musí shodovat s tím, jaké je nastavené na cílovém PC. Pokud na Bash Banny nastavíte anglické rozložení klávesnice, ale v PC bude aktuálně nastaveno české, tak bude Bash Bunny psát „z“ místo „y“ a „(“ místo „{“ atd. Řešením je buď před útokem na PC přepnout rozložení klávesnice (to už ale není tak sexy, protože se musíte PC „dotknout“), nebo mít na Bash Bunny pod polohou (přepínače) 1 připraven útok pro CZ rozložení klávesnice a pod polohou 2 ten stejný útok, ale s EN rozložením klávesnice.

Kde jej pořídit

Kdybyste si chtěli stejné hračky pořídit, tak jsem objednával přímo z Ameriky. Hračky jsem měl na stole za 9 dní od objednání, takže rychlovka. Na druhou stranu se to docela prodražilo. Obě zařízení stojí dohromady 160$. Bohužel jsem zaplatil dalších 165$, abych je dostal do ČR (57$ poštovné, 33$ americké DPH [podle mě neoprávněně] a 75$ za clo a zastupování v celním řízení). Lepší by bylo asi objednat přímo od někoho z EU.

Jako alternativa k Bash Bunny se dá pořídit zařízení USB Armory, které se dá objednat přímo z EU a vyjde i s poštovným cca na 152 Eur (zatím jsem jej však v ruce neměl).

Mé plány

Jakmile to čas dovolí, rád bych si sestavil vlastní knihovnu útoků. Bash Bunny bych pak chtěl používat u zákazníků pro demonstraci, jak křehká je bezpečnost. Protože si myslím, že je nízké povědomí o rizicích spojených s USB zařízeními. Většina lidí, co znám, si myslím, že USB je jenom na připojování USB flash disků a nehrozí žádné nebezpečí.

Takto bych do jejich PC zasunul jenom Bash Bunny, který vypadá jako USB disk a za 30 sekund jej opět odpojil. Následně bych jim ukázal, že za těch 30 sekund jsem získal jejich hesla/data/nebo vzdálený přístup na jejich počítač (keylogger, screenshoty obrazovky, přístup k datům, přístup k webkameře).

Myslím, že nejvíce „sexy“ na tom je, že po celou dobu se člověk nemusí nijak dotknout cílového PC.

Závěr

V příštím článku (tady je Hračky na hackování: Hak5 Packet Squirrel) popíšu druhou z hraček, které jsem k nám do firmy pořídil, a to Packet Squirrel. Jestli chcete, nechte mi na sebe níže e-mail a já vám napíšu hned, jak článek vyjde.

Jak se vám Bash Bunny líbí? Máte nějaké podobné hračky? Demonstrujete nějak zákazníkům, jak moc je bezpečnost křehká?

(Napsal jsem pokračování tohoto článku Jak za pár sekund hacknout počítač aneb útok s Bash Bunny a Packet Squirrel)

Líbí se vám témata, o kterých píši?

Abyste nemuseli kontrolovat, jestli už vyšel nový článek, rád vám ho ihned po zveřejnění pošlu do e-mailu. Každý kontakt, který mi poskytnete, si nechám vždy jen pro sebe.

Diskuze k článku

Pavel

18. 01. 2018 v 14:19

Martine skvělý článek. Už dlouho jsem o BashBunny pro tyto účely demostrace křehkosti zabezpečení uvažoval.

Odpovědět

Odpovědět

Martin Haller

18. 01. 2018 v 17:55

Děkuji za pochvalu. Určitě budu rád, když se v budoucnu podělíte o „pokusy“, které jste zařadil do svého prezentačního arzenálu :).

Odpovědět

Odpovědět

Roman

21. 01. 2018 v 20:14

Skvělý článek. Jak vidíte řešení těchto situací – zapojení neoprávněného USB v rámci firemní sítě? Řešit plošnou blokací USB portů?

Odpovědět

Odpovědět

Martin Haller

22. 01. 2018 v 10:23

Romane, děkuji za pochvalu. Ochrana není tak jednoduchá – zablokovat kompletně USB není vždy možné (PC mají USB klávesnice i myši běžně a zákazníci chtějí běžně používat USB disky). Dobré by však bylo:
– Naučit všechny zamykat si PC, pokud od něho odchází, nebo to technicky vynutit – např. automatické zamykání obrazovky po 15 minutách neaktivity.
– Myslím, že např. Kaspersky má ochranu proti „falešný klávesnicím“ takovou, že po zapojení klávesnice je třeba opsat číselný kód z obrazovky – Bash Bunny neví, co je na obrazovce zobrazené (nemá obrazové informace).
– Ochrana proti emulaci síťové karty, pak přes blokování tohoto druhu USB periférii (u nás nejsou alespoň běžné).
Co myslíte?

Odpovědět

Odpovědět

Roman

23. 01. 2018 v 23:04

Co se týče windowsu, tak by se dalo skrze GPO vynutit zakázání instalace nových ovladačů. Takže teoreticky lze nainstalovat zařízení, co chceme pravidelně používat a následně zablokovat ostatní. A v případě, že by chtěl někdo vyměnit nebo přidat další, musel by se kontaktovat administrátor aby povolil zařízení nové.

Nebo použít hardware zámek, to myslím nabízí například Kensington. Ten zamkne fyzicky na klíč USB vstup klidně i s kabelem. To mi přijdou jako celkem neprůstřelné metody, pokud selže uživatel daného počítače.

Odpovědět

Odpovědět

Martin Haller

25. 01. 2018 v 10:14

Díky za tip s tím GPO nastavením – to jsem neznal. Zkusím se zamyslet, zda-li bychom to u nás nějak nevyužili :).

S tím zámkem máš taky pravdu. Dobré postřehy.

Odpovědět

Odpovědět

Michal Zobec

03. 05. 2019 v 23:37

blokace instalace ovladačů nemá smysl, to se týká podle mne jen zařízení, které nemají ovladače ve windows. předpokládám, že autoři udělátka bashbunny nejsou hloupí a používají pro indentifikaci class nějakých obecných síťovek a usb storage, které mají windows v sobě, takže se windows na instalaci ovladačů nebudou vůbec ptát.

lepší metoda ochrany je podle mne ve vynucení pouze povolených tříd zařízení (filtrace podle device class) a taky vynucení bitlocker na externí disky. tím pádem se připojí jakýkoli externí disk jen v režimu readonly. toto je navíc běžně doporučovaná politika minimálně pro STIG a asi i pro Microsoft Windows 10 baseline security šalblony (neověřoval jsem).

koukám že toto udělátko ukazuje smysl implementace credential guard ve firmách 🙂

Odpovědět

Odpovědět

Martin Haller

05. 05. 2019 v 11:07

Zdravím. Pokud si to pamatuji dobře, tak jsem se na to blokování instalace ovladačů díval a testoval. Opravdu to útoků může zabránit. Ono to zabrání v zavedení nových ovladačů do OS. To že jsou to ovladače v defaultním Win repositáři na věci nic nemění.

Samozřejmě, když by útočník firmu lépe znal, mohl by BB napodobit nějaké povolené zařízení. Jen už pak ten útok není tak jednoduchý.

Také nasadit ve firmě úspěšně blokaci instalace ovladačů bude stát dost času jak na nasazení tak i provozu (uživatelé budou často volat že potřebují něco povolit – usb reproduktory, usb sluchátka, usb modem, usb propojení s mobilem, bezdrátové klávesnice …).

Ten Bitlocker na ext. drive je dobrý nápad. Myslím ale, že v defaultním Win 10 sec baseline to není. Stejně tak i filtrace povolených tříd zařízení je fajn. Pro většinu útoků je stěžejní ta funkcionalita klávesnice a ta se bude pomocí tříd těžko řešit – každé kancelářské PC potřebuje mít klávesnici a jakmile již nějakou má, BB může zfalšovat její PID, VID a SN.

Cred guard se mi také líbí, jen je škoda že je jen v edicích Enterprise :-/.

Odpovědět

Odpovědět

Michal Zobec

23. 08. 2019 v 01:43

@martinhaller: no já pracuji většinou v korporátech, kde právě win10enterprise je standard a nic jiného se tam nepoužívá. co se týče zařízení, která jste vyjmenoval, nic z toho tam neprojde, tam není možné si připojit ani mobil a vytáhnout z něj fotky. usb sluchátka možná jsou, ale je to jen jeden model se kterým se počítá a ten jako jediný funguje.

pro úspěšný vektor útoku je nutné aby ta vaše flashka se chovala jako usb storage class zařízení ne? nebo je to jedno? já nevím jak to funguje v praxi a co to přesně požaduje pro svou funkcionalitu, ale nejsem si jist, jak by se chovalo usb storage device s class sluchátek … to pak by windowsy nezpřístupnily obsah té flashky a útok by se nekonal, je to tak?

jinak právě v korporátech se obvykle implementuje STIG a nikoli MS Baseline. Vzhledem k poslední zkušenosti s jeho implementací do image (musel jsem implementovat určitý seznam device class), bych řekl, že u těchto zařízení to bude náročnější.

mimochodem dalším levelem je applocker, podle mne takto zabezpečená zařízení používající politiky STIG spolu s AppLocker je téměř nemožné hacknout, pokud se nezneužije nějaká 0-day zranitelnost, jen tudy je cesta, dle mého názoru.

Odpovědět

Odpovědět

Martin Haller

23. 08. 2019 v 08:00

Ad Applocker) Jj, taky si myslím, že to je cesta vpřed (application whitelisting), která významně redukuje nebezpečí kompromitace zařízení.

Ad BashBunny) Umí se tvářit jako klávesnice, flash, síťová karta, či jejich kombinace (usb composite device). Mimo BB existuje i emulace myši a dokáži si představit i emulaci jiných zařízení co se dají připojit přes USB (např. zvuková karta, grafická karta). Pro některé útoky stačí pouze emulace klávesnice (např. napsání celého skriptu/viru a jeho spuštění).

Odpovědět

Odpovědět

Michal Zobec

29. 08. 2019 v 08:04

@martinhaller okay, umí se tvářit jako klávesnice, to chápu tak, že pak i emuluje vstup klávesnice a zadává opakovaně hesla, tedy bruteforce útok? chápu to dobře? jak jsem psal, já nevím co to přesně umí a jak se to chová. pokud se to bude tvářit jako sluchátka, i přesto se dokáže načíst ve windows obsah toho bashbunny flashdisku jako by to byl obyčejný usb flash disk? pokud je odpověď na tuto otázku ano, pak ta limitace device class skoro nemá smysl.

Odpovědět

Odpovědět

Tomáš

07. 02. 2018 v 19:24

Ahoj, pěkné čtení, u nás ve firmě používáme plošnou blokaci na cizí USB zařízení pluginem do antiviru (konkrétně McAfee DLP). Také zamykáme stanice po 15min. Také šifrujeme disky u notebooků a heslujeme bootmenu key a vstup do BIOSu. Jsem zvědav jak by naše stanice obstála proti takovému útoku, nasadil jsi mi brouka do hlavy 🙂

P.S.: když přijde zákazník se svojí (cizí) USB Flash musí na IT a tam s ní „odborně“ manipulujeme.

Odpovědět

Odpovědět

Martin Haller

08. 02. 2018 v 10:20

Ahoj Tomáši,

děkuji za pochvalu a Tvou zkušenost. Zabezpečení, jak jej popisuješ zní opravdu dobře. Je fajn, že to tak můžete zabezpečit a uživatelé se nebouří (nemohou nic připojovat a neustále musí zadávat heslo do počítače).

Koukal jsem na popis McAfee DLP. Vypadá to, že je to whitelisting/blacklisting na základě VID/PID (https://kc.mcafee.com/corporate/index?page=content&id=KB86007). Zrovna tyto hodnoty se dají u Bash Bunny měnit (jiní na fóru řeší i přepisování názvu produktu a SN) (viz https://www.hak5.org/gear/bash-bunny/docs). Tzn. dokážeš Bash Bunny donutit aby se maskoval jako zařízení, které ve firmě máte povolené a pak by jej nejspíše McAfee povolil. Samozřejmě by to od útočníka vyžadovalo ještě více úsilí a přípravy. Třeba by nakonec zvolil nějakou jinou cestu do sítě :).

Odpovědět

Odpovědět

Martin Vlach

23. 01. 2019 v 12:51

Včera jste na přednášce zmiňoval, že i pro Android devices existuje sw, který se chová podobně jako BashBunny. Nicméně nejlepší, co jsem našel je USB Cleaver @ https://forum.xda-developers.com/showthread.php?t=1656497 , ten však vypadá docela chabě a nepodporuje Android5+, víte o něčem lepším/silnějším?

Odpovědět

Odpovědět

Martin Haller

23. 01. 2019 v 15:12

Odpovědět

Martin Vlach

23. 01. 2019 v 17:08

Díky,přesně to mě zajímalo.

Odpovědět

Odpovědět

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Hack The Box OSCP MCSE CHFI ECSA CCNP CCNA