Auch heute sind USB-Geräte für Unternehmen noch immer ein Sicherheitsrisiko. Ein fremder Stick kann Schadsoftware einschleusen oder sensible Daten unbemerkt aus dem Unternehmen tragen. Besonders tückisch ist BadUSB: Ein äußerlich normaler USB-Stick kann sich zusätzlich als Tastatur tarnen. Geräte wie der Rubber Ducky senden dann innerhalb weniger Sekunden vorbereitete Tasteneingaben, öffnen Befehlszeilen, verändern Systemeinstellungen oder laden Schadsoftware nach, ohne dass eine Datei vom Stick gestartet werden muss.
Enterprise-Lösungen können zwar Geräte zentral per Whitelist kontrollieren, setzen jedoch meist eine zentrale Serverinfrastruktur, aufwendige Einrichtung und Betriebsaufwand voraus. Für kleine und mittelständische Unternehmen mit begrenzten Kapazitäten fehlt damit bislang ein schlanker dezentraler Ansatz zur Reduzierung der Risiken im Hinblick auf USB.
Meine Bachelorarbeit an der THWS unter Betreuung von Prof. Dr.-Ing. Sebastian Biedermann setzt genau hier an. Entstanden ist ein kompakter Windows-Prototyp, der Speichermedien lokal autorisiert, ohne dauerhaft erreichbare zentrale Infrastruktur arbeitet und für Administratoren übersichtlich bleibt. Zusätzlich adressiert der Prototyp weitere Bedrohungsszenarien wie beispielsweise BadUSB.
Die Grundidee: Die Freigabe reist einfach mit
Die Grundidee ist einfach: Jeder freigegebene Stick bekommt eine kleine Freigabedatei mit auf den Weg, einen digitalen Ausweis, der sagt: dieser Stick ist erlaubt. Der Rechner muss dann keine zentrale Datenbank fragen, sondern liest den Nachweis direkt vom Stick. Ausgestellt wird die Freigabe lokal an einem beliebigen Rechner mit Administratorrechten über ein Admin-Tool:


Eine Freigabedatei allein ließe sich allerdings kopieren und auf einen zweiten Stick übertragen. Deshalb bindet der Prototyp jede Freigabe an konkrete Gerätemerkmale: Seriennummer, Vendor-ID, Product-ID und Kapazität. Beim Anschließen liest der Endpoint diese Merkmale direkt aus und gleicht sie mit den Angaben in der Freigabedatei ab. Stimmen die Werte nicht überein, etwa weil die Datei auf einen anderen USB-Stick kopiert wurde, verweigert das System die Freigabe.
Damit die hinterlegten Merkmale nicht nachträglich verändert werden können, wird die Freigabedatei digital signiert. Jeder Rechner verfügt über ein eigenes Schlüsselpaar und signiert die Freigabeinformationen bei der Ausstellung mit seinem privaten Schlüssel. Da die Signatur insbesondere die Gerätemerkmale umfasst, wird jede spätere Änderung erkannt und die Freigabe dadurch ungültig.
Sobald mehrere Rechner im internen Netz miteinander verbunden sind, tauschen sie ihre öffentlichen Schlüssel automatisch aus. Bei der Prüfung verwendet der Endpoint den öffentlichen Schlüssel des ausstellenden Rechners, um die Signatur der Freigabedatei zu verifizieren. Wurde ihr Inhalt nachträglich verändert, schlägt die Prüfung fehl und das System weist die manipulierte Freigabe zurück.


Manipulierbare Seriennummern: Timing-Fingerprint als zusätzliche Prüfung
Eine Grenze bleibt: Die statischen Gerätemerkmale meldet der Stick selbst, sie lassen sich also fälschen. Ein nachgebildetes Gerät mit derselben Seriennummer könnte die reine Merkmalsprüfung umgehen. Deshalb ergänzt der Prototyp einen Timing-Fingerprint.
Er misst, wie lange der Stick für eine festgelegte Anzahl an Schreibvorgängen braucht, und erfasst so dessen charakteristisches Schreibverhalten. Damit greift das System softwareseitig den Grundgedanken einer Physical Unclonable Function (PUF) auf: Hardware anhand physikalischer Eigenschaften erkennen, die sich nur mit hohem Aufwand reproduzieren lassen.
Der Wert wird signiert in der Freigabedatei hinterlegt und beim nächsten Anschließen erneut gemessen und abgeglichen. Da das Schreibverhalten physikalisch nicht bei jeder Messung exakt gleich ausfällt, wird dabei nicht auf exakte Übereinstimmung geprüft, sondern ein Toleranzbereich zugelassen: Erst wenn die Abweichung ein definiertes Distanzlimit überschreitet, gilt der Stick als nicht mehr derselbe.
Eine Auswertung mit zwölf Sticks auf drei Rechnern zeigt, dass sich verschiedene Modelle und Modellfamilien größtenteils unterscheiden lassen und auch hostübergreifend relativ stabil sind. Dennoch beeinflussen Faktoren wie der USB-Bus oder die Systemauslastung das Ergebnis. Baugleiche Geräte (siehe Kingston-Sticks K1 bis K6) bleiben jedoch ein Grenzfall, weil ihr Schreibverhalten untereinander fast identisch ist. Der Timing-Fingerprint ist daher kein alleiniger Identitätsnachweis, erhöht aber den Aufwand für eine Nachahmung.

Was, wenn ein bereits freigegebener Stick nachträglich infiziert wird?
Ein freigegebener Stick könnte trotz gültiger Freigabe zum Risiko werden: mit nach Hause nehmen, am privaten Rechner Schadsoftware einfangen, zurück ins Unternehmen bringen. Gerätemerkmale und Signatur stimmen weiterhin, die Prüfung würde die Freigabe akzeptieren.
Hier setzt eine optionale Verschlüsselung mit BitLocker To Go an. Sie kann bereits bei der Ausstellung der Freigabe aktiviert werden. Die Datenpartition lässt sich anschließend nur auf Rechnern entschlüsseln und nutzen, auf denen die Software installiert ist. Der zugehörige Schlüssel wird durch die Lösung verwaltet und zwischen den Rechnern synchronisiert. An einem privaten Rechner bleibt die Datenpartition unzugänglich, da dort der erforderliche Schlüssel fehlt. Dadurch wird auch das Risiko einer externen Infektion deutlich reduziert. Zugleich begrenzt die Verschlüsselung das Risiko des Datenabflusses und des Datenverlusts etwa wenn ein Stick verloren geht.
BadUSB-Schutz direkt am Endpoint
BadUSB-Angriffe lassen sich nicht über eine Freigabedatei stoppen, denn das Gerät bringt kein Dateisystem mit, sondern gibt sich als Tastatur aus. Statt die Identität des Geräts zu prüfen, setzt der Prototyp an einem Punkt an, den ein Angreifer kaum kopieren kann: dem Nachweis, dass wirklich ein Mensch an der Tastatur sitzt.
Meldet sich eine neue, unbekannte Tastatur an, bleibt sie zunächst gesperrt. Auf dem Bildschirm erscheint eine zufällige vierstellige PIN, die über genau diese Tastatur eingegeben werden muss. Ein Mensch liest den Code ab und tippt ihn ein. Ein automatisiertes Angriffsgerät wie der Rubber Ducky kennt den erst im Moment erzeugten Code nicht und scheitert. Nach fünf Fehlversuchen wird die Tastatur dauerhaft blockiert.

Technische Umsetzung
Der Prototyp wurde für Windows entwickelt. Die Administrationsanwendung und der Hintergrunddienst sind überwiegend in Python umgesetzt. Für die eigentliche Durchsetzung sorgen zwei in C entwickelte Filtertreiber im Windows-Kernel.
Der erste Treiber kontrolliert den Zugriff auf neu angeschlossene Laufwerke. Bis die Freigabe erfolgreich geprüft wurde, bleibt der USB-Stick für den Benutzer unzugänglich. Der zweite Treiber überwacht die Eingaben neu erkannter Tastaturen und gibt sie erst nach erfolgreicher PIN-Bestätigung weiter.
Mein Fazit
Für mich zeigt der Prototyp vor allem, dass eine kontrollierte USB-Nutzung nicht zwangsläufig eine große Serverlandschaft erfordert. Die Freigabeentscheidung wird direkt am jeweiligen Rechner getroffen. Signierte Freigaben und der automatische Austausch zwischen den Rechnern sorgen gleichzeitig dafür, dass das System auch im Verbund funktioniert.
Die einzelnen Schutzmechanismen ergänzen sich dabei. Keine dieser Maßnahmen macht USB-Geräte unangreifbar. Gemeinsam entsteht jedoch ein nachvollziehbares Schutzkonzept, das ohne komplizierte Infrastruktur auskommt und sich schrittweise erweitern lässt. Gerade für kleinere Unternehmen kann dieser Ansatz eine praktikable Grundlage bieten.
Mein besonderer Dank geht an Herrn Prof. Dr.-Ing. Sebastian Biedermann für die fachliche Betreuung und die Unterstützung während der Bachelorarbeit.
Literatur und Quellen
Nohl, K., Krißler, S. & Lell, J. (2014): BadUSB, On Accessories That Turn Evil.
Nissim, N., Yahalom, R. & Elovici, Y. (2017): USB-based Attacks.
Tian et al. (2018): SoK: Plug and Pray Today, Understanding USB Insecurity in Versions 1 Through C.
Cronin et al. (2022): Time-Print, Authenticating USB Flash Drives with Novel Timing Fingerprint
