BadUSB-Geräte blockieren

USBDLM

 

BadUSB-Geräte blockieren


 

Seit Jahren ist bekannt, dass USB-Geräte eine potentielle Bedrohung darstellen, da sie eine Tastatur simulieren können, die von jedem modernen Betriebssystem kommentarlos eingebunden wird und dann im Kontext des angemeldeten Nutzers Tastendrücke simulieren kann.

In 2014 hat die deutsche Firma Security Research Labs auf der Black Hat gezeigt, dass sich weit verbreitete, auch in USB-Speichersticks genutzte USB-Controller so umprogrammieren lassen, dass sie genau das tun - das ist eine neue Qualität des Problems.

 

Unter Windows lässt sich das für Tastaturen recht problemlos aushebeln, indem man die Datei C:\Windows\inf\keyboard.inf verschiebt oder die Extension ändert, so lange die Datei nicht da ist, wird keine neue Tastatur eingebunden.

Ab Vista geht's auch eleganter, siehe hier: http://www.windowspage.de/tipps/021443.html

GUID_DEVCLASS_KEYBOARD: {4d36e96b-e325-11ce-bfc1-08002be10318}

GUID_DEVCLASS_NET:      {4D36E972-E325-11CE-BFC1-08002BE10318}

 

 

Mit USBDLM geht das etwas komfortabler: Jedes neu angeschlossene USB-Tastatur- oder USB-Netzwerkgerät wird sofort zum sicheren Entfernen vorbereitet und ist dann mit Code 21 lahmgelegt. Anschließend wird der Nutzer gefragt, ob es aktiviert werden soll. Um zu antworten braucht er natürlich eine Tastatur oder eine Maus, ggf. muss er eine USB-Maus mitbringen...

 

Für einen kurzen Moment funktioniert die Tastatur, aber längst nicht lange genug, um ein böses Script zu schreiben und zu starten.

 

Um die Rückfrage bei neu angeschlossenen USB-Tastatur-Geräten zu aktivieren:

 

[Settings]

BadUsbWatchKbd=1

 

  • BadUsbWatchKbd=0  ->  Neu angeschlossene USB-Tastaturen funktionieren normal  (default)
  • BadUsbWatchKbd=1  ->  Der Nutzer wird bei einer neu angeschlossenen USB-Tastatur gefragt
  • BadUsbWatchKbd=2  ->  Eine neu angeschlossene USB-Tastatur wird ohne Nachfrage "sicher entfernt"

 

Bleibt das ultimative BadUSB-Gerät, nämlich eine USB-Tastatur die bei passender Gelegenheit böse Tastenanschläge sendet. Aber das ist schon so seit es Tastaturen gibt...

 

In den Raum gestellt wurden auch USB-Netzwerkadapter die DNS-Abfragen manipulieren, allerdings ohne Details wie das funktionieren soll. Auch die kann USBDLM analog behandeln:

 

[Settings]

BadUsbWatchNet=1

 

 

Titel und Text der MessageBox können konfiguriert werden. Beispiel:

 

[Settings]

UsbKbdMsgTitle=USBDLM

UsbKbdMsgText=USB-Tastatur angeschlossen. Aktivieren?

UsbNetMsgTitle=USBDLM

UsbNetMsgText=USB-Netzwerkadapter angeschlossen. Aktivieren?

 

 

White- und Blacklisting von Geräte-IDs und USB-Ports

 

Um beim Anschließen bekanntermaßen gutartiger Geräte (z.B. ein USB-WLAN-Stick) nicht jedes Mal gefragt zu werden, kann man Geräte-IDs whitelisten:

 

[BadUsbWhiteList]

DeviceID=USB\VID_057C&PID_5601

 

Die Geräte-ID muss die des Tastatur- bzw. Netzwerkgerätes sein, also Geräteklasse Keyboard bzw. Net. UsbTreeView zeigt's.

Beispiel für ein USB-Verbundgerät mit einer HID-Tastatur:

 

Child Device 1          : USB-HID (Human Interface Device)

  Device ID              : USB\VID_05FE&PID_2001&MI_00\8&1D9FC75B&0&0000

  Class                  : HIDClass

   Child Device 1        : HID-Tastatur

    Device ID            : HID\VID_05FE&PID_2001&MI_00\9&2594D27D&0&0000

    Class                : Keyboard

 

Der letzte Teil der Geräte-ID ändert sich an jedem USB-Port wenn das Gerät keine USB-Seriennummer hat, also besser weg lassen.

 

 

Außerdem kann man USB-Ports white- und blacklisten. Z.B. könnte es sinnvoll sein, die Rückseitigen USB-Ports eines PCs von der Rückfrage zu befreien. Beispiel:

 

[BadUsbWhiteList]

UsbPort1=1-1

UsbPort2=1-2

UsbPort3=1-3

UsbPort4=1-4

UsbPort5=1-5

UsbPort6=1-6

 

Oder die Front-Ports generell für Tastaturen und Netzwerkadapter sperren. Beispiel:

 

[BadUsbBlackList]

UsbPort1=1-7

UsbPort2=1-8

 

Für gesperrte Geräte/Ports gibt es keine Rückfrage, die Geräte werden zum sicheren Entfernen vorbereitet. Die Blacklist hat Vorrang vor der Whitelist.

 

Um die Portnamen zu bestimmen muss an jeden Port ein USB-Laufwerk anschließen und mit UsbDriveInfo oder UsbTreeView den Namen ermitteln.

Bei Ports von USB2-Roothubs ist zu beachten, dass diese meist separate Roothubs für USB1-Geräte haben, der Portname variiert also, je nachdem, ob ein USB1 oder USB2-Gerät angeschlossen wird.

Das erste Digit kann sich auch ändern, wenn ein USB-Controller hinzugefügt oder entfernt wird. Falls das in Betracht kommt, kann man die lange Notation nutzen, siehe Buchstaben abhängig vom USB-Port.

 

 

Gut genug?

 

Nicht wirklich. Eine Tastatur zu simulieren ist nur der einfachste der denkbaren Angriffe per USB, siehe unten, der letzte Link.

 

 

Links:

Heise Newsticker: BadUSB: Wenn USB-Geräte böse werden

c't uplink: BadUSB

Präsentation auf Black Hat 2005 - Barrall-Dewey