Hak5 Bash Bunny Release – First Look
1 maart verscheen de nieuwste telg uit de familie van penetration testing tools van Hak5, de Bash Bunny. Voor 99,99 USD + 80,00 Euro douanekosten (welke overigens echt belachelijk over-the-top zijn gezien de aanschafprijs van het product) bestelde ik 1 maart de Bash Bunny meteen. Vandaag heb ik dan voor het eerst even kunnen spelen met deze fantastische USB stick. In deze post vertel ik je mijn eerste bevindingen.
De belangrijkste kracht van de Bash Bunny is dat hij zogenaamde “trusted USB devices” emuleert. Denk terug aan de “Rubber Ducky” welke een USB toetsenbord (HID device) emuleert. Computers zien geen kwaad in een “toetsenbord” waardoor de USB Ducky vrolijk kwakend door de beveiliging heen waggelt. De Bash Bunny is hierop geïnspireerd (sterker nog, de zogenoemde “Ducky Script” code wordt volledig ondersteund waardoor deUSB Rubber Ducky bijna overbodig wordt wanneer je in het bezit bent van de Bash Bunny. Ik zeg “bijna” omdat de Rubber Ducky nog wel 2 voordelen heeft t.o.v. de Bash Bunny. De Rubber Ducky is kleiner en heeft minder tijd nodig om te booten waardoor hij sneller is. Maar de Bash Bunny kan veel meer trusted USB devices emuleren. Denk naast toetsenborden aan Gigabit Ethernet, Serieel en Flash geheugen.
De Bash Bunny beschikt over krachtige hardware waardoor de boottijd slechts 5-6 seconde is. In de toekomst zal de boottijd nog iets verkort worden. De Bash Bunny beschikt over een quad-core ARM Cortex A7 CPU, 512 MB DDR3 Memory en een desktop-class SSD disk.
Het eerste grote voordeel aan de Bash Bunny is zijn switchbutton. Waar we bij de USB Rubber Ducky keer op keer de SSD kaart moesten wisselen tussen cardreader en computer werkt de Bash Bunny met een switchbutton. Arming mode laat de Bash Bunny fungeren als normale USB drive zodat de payloads erop geplaatst kunnen worden. Vervolgens zijn er 2 attack standen. Je kunt dus 2 payloads op scherp stellen en activeren door de switchbutton in de juiste positie te zetten. Dit werkt snel, gemakkelijk en foutloos. Een ander voordeel is dat “Bunny Script” niet meer gecompiled hoeft te worden zoals “Ducky Script” op de USB Rubber Ducky. Er bestaand dus geen inject.bin bestanden meer maar simpelweg “payload.txt” files met “Bunny Script”.
Nu we het toch over “bunny script” hebben… het is gewoon “Bash” met een aantal extra’s. Het lijkt een beetje op Bash met een combinatie van “Ducky Script”. Een script start dus met:
#!/bin/bash # My first script # Commentaar.... etc. |
In het script kunnen we zelfs extra “bunny” functionaliteiten laden middels de “bunny_helpers.sh”. Dit doe je als volgt:
#!/bin/bash # My first script # Commentaar.... etc. source bunny_helpers.sh |
Ook geef je in het begin van je script uit welke devices geëmuleerd moeten worden. Zo kun je jezelf richten op alleen een HID of ETHERNET attack maar het kunnen ook combinaties zijn. Let op, er zijn 2 soorten ETHERNET aanvallen, namelijk RNDIS_ETHERNET & ECM_ETHERNET. RNDIS is de standaard voor Windows (en sommige Linux machines) en ECM is de standaard voor MAC, Linux en Android. Deze 2 kunnen niet tegelijkertijd geëmuleerd worden. Maar RNDIS en HID dus wel. Dit doe je als volgt:
#!/bin/bash # My first script # Commentaar.... etc. ATTACKMODE RNDIS_ETHERNET HID source bunny_helpers.sh |
Je kunt zelfs de VID & PID spoofen om je Bash Bunny als compleet ander merk & type te emuleren. VID = VendorID en PID = ProductID. Dit doe je dan als volgt “ATTACKMODE RNDIS_ETHERNET HID VID 0XF000 PID 0X1234”.
Bij elke stap kun je aangeven welke kleur je multicolor LED lampje op de Bash Bunny mag zijn.
#!/bin/bash # My first script # Commentaar.... etc. LED R ATTACKMODE RNDIS_ETHERNET HID LED R B 1000 source bunny_helpers.sh LED G |
In bovenstaande voorbeeld is het LED lampje van je Bash Bunny dus Red/Rood tijdens het booten. Daarna licht het lampje elke seconde paars op tijdens het uitvoeren van je script (Red/Rood & Blue/Blauw = Purple/Paars) en als het script klaar is brand het lampje Green/Groen. Het LED lampje uitschakelen doe je zonder toevoeging en dus alleen “LED”.
Zoals al gezegd is “Bunny Script” gewoon bash. Je kunt dus alle aanvallen uitvoeren zoals je dat gewent bent en met de tools die je gewent bent. Denk aan b.v. een NMAP SYN scan voor open TCP/UDP poorten:
#!/bin/bash # My first script # Commentaar.... etc. LED R ATTACKMODE RNDIS_ETHERNET HID LED R B 1000 source bunny_helpers.sh nmap -sS -sU -PN -p 1-65535 192.168.0.164 LED G |
Bovenstaande IP adres kunnen we vervangen voor “$TARGET_IP” waardoor het script universeel wordt. Dit kan omdat… (nieuw major voordeel) we in deze aanval een RNDIS Ethernet simuleren. De bash Bunny emuleert nu een 2 GB netwerkkaart. Er zijn op Windows machines geen additionele drivers nodig (RNDIS is immers een Windows standaard). Ook draait de Bash Bunny zijn eigen DHCP server. De nieuwe netwerkkaart krijgt (door de 2GB snelheid) de laagste metric en wordt dus de default kaart. De DHCP server deelt een IP adres uit aan de cliënt en dit IP adres kunnen we opvragen met de variabele “$TARGET_IP”. Dit kunnen we omdat we de “bunny_helpers.sh” includen in het script. Zonder deze zou de variabele niet herkent worden. Dus:
#!/bin/bash # My first script # Commentaar.... etc. LED R ATTACKMODE RNDIS_ETHERNET HID LED R B 1000 source bunny_helpers.sh nmap -sS -sU -PN -p 1-65535 $TARGET_IP LED G |
Zoals je ziet worden alle “Bunny Script” commando’s met hoofdletters geschreven. We kennen nu LED, VID, PID & ATTACKMODE. Dan bestaat er nog “QUACK” of afgekort “Q” voor het implementeren / gebruiken van Ducky Script. Met de bunny_helpers.sh worden de functionaliteiten van Bunny Script dus uitgebreid en kun je handige variabelen gebruiken.
Een paar best practices m.b.t. Bunny Script zijn o.a. dat opties bovenin het script worden toegevoegd en wanneer het script bestanden naar de “loot” folder schrijft dat je afsluit met een “syn” commando om deze bestanden te synchroniseren.
Dus, bovenstaande script uitgewerkt:
#!/bin/bash # NMAP Payload # Options NMAP_OPTIONS="-sS -sU -PN -p" LOOTDIR=/root/udisk/loot/nmapscan # 1st LED / Attack Prep LED LED R # Use RNDIS for Windows. Mac/*nix use ECM_ETHERNET ATTACKMODE RNDIS_ETHERNET #ATTACKMODE ECM_ETHERNET # Use source bunny_helpers.sh for functions & variables TARGET_IP & TARGET_HOSTNAME source bunny_helpers.sh # Setup named logs in loot directory mkdir -p $LOOTDIR HOST=${TARGET_HOSTNAME} # If hostname is blank set it to "noname" [[ -z "$HOST" ]] && HOST="noname" COUNT=$(ls -lad $LOOTDIR/$HOST* | wc -l) COUNT=$((COUNT+1)) mkdir -p $LOOTDIR/$HOST-$COUNT # Blink LED purple, run attack LED R B 1000 nmap $NMAP_OPTIONS 1-65535 $TARGET_IP > $LOOTDIR/$HOST-$COUNT # Clean logs directory rm logs/* # Sync USB disk filesystem sync # Light turns green - attack is done. LED G |
Tot zover dus een stukje Bunny Script. Think of all the posibilities…. 🙂
Nog een fantastische feature is dat de Bash Bunny een complete Debian Linux box is. Dus door je Bash Bunny te voorzien van de bekende add-ons zoals Phyton worden je attack mogelijkheden vele malen groter. Je kunt gewoon inloggen op de Linux terminal als de Bash Bunny in Arming Mode staat. Stel je favoriete serial client (ik gebruik PuTTY) in en connect met de Bash Bunny Linux Terminal. Alle commando’s zijn beschikbaar… just as you like it! Connecten doe je met de volgende gegevens:
115200/8N1 Baud: 115200 Data Bits: 8 Parity Bit: No Stop Bit: 1 |
De gegevens om in te loggen “by default” zijn:
Username: root Password: hak5bunny IP Address: 172.16.64.1 DHCP Range: 172.16.64.10-12 |
Conclusie
Whow… na 2 uurtjes spelen met de Bash Bunny ben ik zeer onder de indruk. Vooral het gegeven dat je “je eigen netwerk” mee kunt nemen om de cliënt te foppen biedt zo’n breed scala aan mogelijkheden dat alleen al met deze feature legio payloads gemaakt kunnen worden. Daarnaast het gegeven dat de Bash Bunny een volledige Linux terminal is en dat je alle bekende commando’s kunt gebruiken (ook in de Bunny Scripts die ontzettend makkelijk te maken zijn). De multicolor LED, de switchbutton etc. Over alles is nagedacht. Compatibiliteit met mijn huidige “Ducky Scripts” is een andere feature waar ik heel blij mee ben. Kortom, er zijn zoveel nieuwe mogelijkheden met de Bash Bunny dat hij de aanschafprijs + douanekosten meer dan waard is. Hier ga ik nog veel plezier mee beleven en op een later tijdstip zal ik zeker nog een post maken met een uitgebreidere payload.
Zoals de slogan zegt: de Bash Bunny is net zo snel en makkelijk “as hopping on a box” 🙂