Geile Sticks

    Schmuddelecke

Stellen Sie sich vor, in irgendeiner Raucherecke liegen diese 3 USB Sticks herum (oder auf einem Tisch im Wartebereich einer Klinik, an der Bushaltestelle auf der Bank…). Wer würde da nicht zugreifen.

usbstick

Partybilder von Desirees 17ten Geburtstag vielleicht – wer weiss, was die Girlies so getrieben haben? Oder der etwas schmuddelige, alte Harkoon – wer weiss was da schmutziges drauf ist? Oder der 16GB Stick… kurz auf dem Firmenrechner nach brauchbarem durchflöhen und dann frisch formatiert für eigene Zwecke nutzen.

    USB Normal

USB (Universal Serial Bus) ist eigentlich eine tolle Sache. Statt gesonderter Stecker und Buchsen für Tastatur, Maus, Kopfhörer, externe Festplatten, DBTV oder Bluetooth-Adapter, kleine Massenspeicher usw. gibt es nur noch ein Format, den Rest erledigt die Software. Gut, riesige Datenübertragungsraten sind nicht möglich, aber mal schnell für Bilder von A nach B zu transportiern ist das vollkommen ausreichend.

Und damit es kein Durcheinander gibt, wurden in den Standards feste Regeln eingeführt wie sich bestimmte Geräteklassen zu verhalten haben sodass das Betriebssystem im Normalfall mit Software vom Typ „einmal geschrieben, funktioniert überall“ (sogenannte „generische Treiber“) ganz prima auskommt. Was mit ein Grund für den Erfolg von USB ist, denn stellen Sie sich mal vor wenn jeder popelige USB-Stick erstmal eine Treiberinstallation erfordert – der Alptraum für jeden Admin.

Von diesen Geräteklassen gibt es übrigens über den Daumen gepeilt 20 Stück. Einige Geräte müssen über Subklassen noch genauer definiert werden, gerade die Ecke „Drahtlose Übertragung“ besteht ja nicht nicht nur aus Bluetooth sondern auch „Handy-Modems“, WLAN etc.

    Firmung

Leider hat die Technik des Jahres 2015 kaum noch was mit dem alten Dampfradio zu tun wo man die Elektronen noch flitzen sehen konnte. Und auch festverdrahtete Logikbausteine gibt es kaum noch – die Arbeitspferde („Controller“) in einem USB-Stick oder einer USB-Tastatur sind eigentlich „auch nur“ kleine PCs, abgespeckt auf das Notwendigste – dafür aber mit genügend Ausrüstung und Anschlüssen um zb. Speicherbausteine oder eine Festplatte anzusprechen. Und gesteuert wird alles – wie beim „großen“ PC auch – über ganz banale Software, nur dass man es hier nicht „Betriebssystem“ sondern „Firmware“ nennt. Das „Firm“ (engl. für „Fest“) bezieht sich darauf, dass früher dieses Stück Sofware im Produktionsprozess fest eingebrannt wurde, heute kann man es nachträglich verändern oder mittlerweile komplett neu aufspielen („Firmware flashen“).

Das hat so einige Vorteile: Stellt man in der Produktion fest, dass die Hardware paar Macken hat kann man in der Software oft noch reparieren. Zb. werden defekte Speicherzellen ausgeschlossen und ein 16GB-USB Stick findet als 15GB Version verbilligt seinen Weg in den Handel.

Thorie: jeder dieser kleinen „Minicomputer“ ist anders und wenn zB 20 gleich aussehende USB-Sticks in der Hand hält ist nicht gesagt, dass diese 20 Geräte auch die gleiche Hardware und die gleiche Firmware besitzen.

Praxis: Massenfertigung rulez – irgendeine Firma in China entwickelt das Design, eine andere Firma giesst das in Hardware wärend ein unterbezahlter Kodierknecht eine passende „sitzt, passt, wackelt und hat Luft“-Firmware zusammenkloppt. Das Endprodukt wird ähnlich einem Kinofilm auf Spulen gewickelt von dem dann Roboter die Chips abziehen, aufkleben, löten und in einen Korb schmeissen. Das Design mit den geringsten Kosten und der problemlosesten Firmware setzt sich durch sodass man es über die Jahre mit vielleicht einer Handvoll verschiedener Chipsätze und entsprechend angepasster Firmware zu tun hat (im Kern ist die Software immer gleich: Daten von A nach B schaufeln).

    USB Reloaded

Wir haben also:

  1. USB Geräte, die über eine einfache Nummer mitteilen, welche Geräteklasse sie sind
  2. USB Geräte, deren Firmware man nachträglich verändern kann

Ich habe mir schon 1996 bei der Einführung von USB 1.0 überlegt, was passiert wenn sich eine USB-Festplatte als USB-Tastatur ausgibt und einfach „Notepad öffnen, Batchdatei herunterschreiben und ausführen“ heruntertippt. Denn auch Windows lässt sich – dass wissen die „Mäuseschubser“ nicht – mit der Tastatur ganz hervorragend bedienen, und seit dem die Keycodes für „Menue“ und „Windows-Taste“ Einzug gehalten haben, erst recht.

Erstaunlich für mich ist, dass man das erst 2014 mal ernsthaft ausprobiert hat (die Geheimdienste nützen das vermutlich schon lange): Ein harmlos aussehender USB-Stick wird an einen PC angeschlossen, vom Stick werden Tastaturkommandos abgespult welche der PC auch brav ausführt.

Hier mal ein simples Beispiel unter dem als „sicher“ geltendem Betriebssystem Linux:

fcl

DELAY 500 # Warte eine halbe Sekunde bis der USB-Stick erkannt wurde
ALT F2 # Öffnet unter Linux ein Eingabefeld um ein Programm zu starten und …
DELAY 200 # … einfach bisserl warten bis das Fenster offen ist
STRING gedit # Nun „gedit“ in das Eingabefeld tippen …
ENTER # … und die Eingabetaste drücken
DELAY 500 # Wieder warten, danach sollte „gedit“ gestartet sein.
STRING Ich bin ein test # Was Sinnbefreites in den Editor tippen.
ENTER

Genausogut könnte ich unter Linux mit „wget“ von einem Server speziell dafür eingelagerte Schadprogramme herunterladen starten. Windows ist noch schlimmer, die aktuelle Powershell und Windows selber bringen alles mit um den Computer mit einer kleinen Fernwartung auszustatten oder die Passwörter gleich lahmzulegen.

Das Script da oben ist übrigens für „USB Rubber Ducky“, ein USB-Stick der speziell dafür entwickelt wurde mit einer einfachen Scriptsprache zu funktionieren und nach aussen zu sagen „Ich bin eine Tastatur!“. Der Stick hat natürlich auch eine Firmware die man so hacken kann dass er sich erst als Tastatur ausgibt um danach wieder als ganz normaler USB-Massenspeicher zu erscheinen.

Wer mich also mit einem USB-Stick um irgendwelche Rechner herumschleichen sieht – obacht 🙂

PS: Ja, man kann bei Linux auch mit den bescheidenen Möglichkeiten eines normalen Users viel Schaden in der Umgebung anrichten. Debian und Gnome durchlaufen ~/.profile und andere Batches, dort kann man mit >> problemlos einen Start auf ein Script in zb. ~/.config anhängen. Mit bisserl Debian-Builtin Sachen scannt man die Netze in seiner Umgebung bis man auf ein WordPress stösst was man mal via xmlrpc.php zum DDOS anderer Server nutzt. Oder Spamversand geht auch einfach, denn auch der normale User darf :23,:25,:80,:110 etc. nach aussen kontaktieren. Und ein Server auf :8080 geht natürlich auch.