WinSec: Zugangsdatenhash in unter 2 Sekunden geklaut

Der Rechnerarbeitsplatz ist verwaist, der Screensaver mit Passworteingabe saved so vor sich in, und doch sind die Logindaten jetzt bei jemand anderem?

Was nach Magie klingt, ist lediglich das Ausnutzen von aktuellen Mechanismen unter Windows, MacOs und vielleicht auch Linux. Der Angreifer ist dabei ein kleiner USB Stick, der sich als Netzwerkkarte ausgibt und eine schnellere und bessere Netzwerkanbindung verspricht, als die Netzwerkkarte zu bieten hat. Akzeptiert das Betriebssystem die neue Netzwerkkarte als besser, trennt es die bisherigen Netzwerkverbindungen auf und erstellt über den neuen Link sofort neue Verbindungen.  (DHCP ist da nicht ganz schuldlos dran.)

Was kann dabei schon schief gehen, ist doch alles verschlüsselt !

Ja, was kann da schon schief gehen, wenn man sich als SMB Client, Unixern besser bekannt als Samba, als ein Netzwerklaufwerk neu an einem Netzwerkgerät anmeldet ? Na, das Passwort wird erneut übertragen, was im Fall von Samba ein Passwordhash ist und der ist bei Nativem Windows, wer hätte es erraten, nicht sicher. Deswegen Blocken Router Samba auch per Default, damit es keine Passwörter und Usernamen verrät. Ja, der Username wird in Klartext übermittelt 😀

Der Gag am Rande, SMB schickt den Usernamen und Hash unaufgefordert zum Netzwerkgerät, selbst wenn man da noch nie angemeldet war, weil es könnte ja einen User mit dem Passwort dort geben und dann soll der verdammt nochmal auch gleich das Laufwerk benutzen können.

SMB Entwickler: Laßt Euch von der Marketingabteilung nicht immer alles  gefallen, Ihr Weicheier ! Steht auch mal für ein „Nein, ist uns zu unsicher.“ ein !

Wer wars, was benutzte er dazu ?

Hacker Mubix beschreibt in seinem Beitrag wie er mit einer 50 US$ Hardware den Angriff in 15 Sekunden durchführt. Dazu läuft auf dem USB Stick ein Minicomputer mit Linux der einen Sambashare simuliert und einfach alle IPs bedient.

Besser verständlich ist allerdings ein Video von Hak5 über einen anderen Angriff, der die gleiche Lücke von SMB ausnutzt, aber nur funktioniert, wenn der User eingeloggt ist. Dafür braucht er nur 1,5 Sekunden dafür, und dafür reicht schon ein simples Ablenkungsmanöver.

Gegenmaßnahmen

So leid es mir tut, dies zu sagen, aber außer Ausschalten hilft da nichts, weil aus einem Standby könnte der Angreifer den Rechner rausholen, die Netzwerkkarte zu deaktivieren und damit das Netz lahmlegen nutzt auch nichts, weil das USB Gerät ist ja eine Netzwerkkarte und genau die will das OS haben.  Man müßte schon in Windows das automatische akzeptieren von USB Geräten abschalten. Lustigerweise wird das für Storage-Sticks auch gemacht, aber eine USB-Ethernetkarte ist halt kein Storage-Stick 😀  Mal sehen ob M$ ein Einsehen hat und einen Patch rausbringt, daß wenn der Screensafer läuft, keine Automatismen greifen.

Mit LUKS einen USB Stick verschlüsseln

Was alles so passiert, wenn man sich langweilt… da kommt man auf die komischsten Ideen, z.b. einen USB-Stick mit LUKS zu verschlüsseln und davon ein „Tutorial“ zu schreiben.

Als erstes brauchen wir das bei Fedora schon beiliegende Laufwerke Tool. Wir suchen uns den USB Stick aus und formatieren diesen über das obere Menü am Fensterrand!

Crypto-1Damit das für das Tutorial schneller geht, denn der USB Port ist nicht der schnellste, habe ich QUICK Format ausgewählt. Das ist insofern ein Problem, als das dies einen Angriff auf die Verschlüsselung zuläßt, wenn man nicht gleich große Datenmengen darauf spielt. Da dies Tutorial nur die Basis für einen anderen Artikel ist, kann ich davon ausgehen, daß gleich große Datenmengen auf den Stick kommen. SIE zu hause werden die Methode „Langsam“ auswählen.

Ist der Stick frisch formatiert, richten wir eine LUKS Partition ein. Dazu drücken wir auf das Zahnrädericon unter der Partitionsanzeige und legen eine neue Partition an :

Crypto-2Offensichtlich habe ich mich bei den Namen der Partition vertan, aber macht nichts, das wird im nachfolgenden Artikel der Serie ohnehin überschrieben. Der Name hier ist für die automatisch erstellte Ext4 Formatierung der (später) entschlüsselten Partition wichtig und die wird in Teil 2 der Serie gleich wieder vernichtet. Passphrasen sollten min. 20 Zeichen lang sein, Groß- und Kleinbuchstaben und natürlich Zahlen beinhalten. Ich hoffe, daß niemand auf die Idee kommt, dieses Passwort ernsthaft zu benutzen 😉

Wenn das Laufwerketool mit der Partitionierung fertig ist, sieht das so aus:

Crypto-3und was wir danach mit dem Stick machen, gibt es morgen zu lesen in … Die Rachel von Kryptistan – Eine Saga um Bits und Bytes.

Probleme beim Formatieren von USB Sticks ?

Wenn Euch diese Fehlermeldung bekannt vorkommt, Ihr aber keine Lösung gefunden habt, dann ist der Artikel genau das, was Ihr sucht:

„Error creating partition on /dev/sdd: Command-line `parted –align optimal –script „/dev/sdd“ „mkpart primary ext2 1487MiB 3958374399b“‚ exited with non-zero exit status 1: Warnung: Der Treiberdeskriptor sagt, dass die physische Blockgröße 2048 Bytes ist. Linux sagt, dass es 512 Bytes sind.
 (udisks-error-quark, 0)“

Das Laufwerkstool hat Euch im Stich gelassen ?
GParted weigert sich überhaupt mit der Partition zu reden ?
sfdisk weigert sich eine neue Partition für das Drive anzulegen ?

Ok, es wird Zeit in die Steinzeit von Linux zurück zugehen und ein Tool rauszukramen, daß dank GParted aus der Mode kommen ist: fdisk .

Wer sich die mit Sfdisk die Daten des USBSticks ansieht, wird feststellen, daß logisch 2048 Byte, per physikalisch nur 512 Byte als Sektorgröße angegeben sind. Das führt zu einem logischen Dilemma, weil der Block nicht passen kann.

Modell: Intenso Rainbow Line (scsi)
Festplatte  /dev/sdd:  15,8GB
Sektorgröße (logisch/physisch): 2048B/512B
Partitionstabelle: mac
Disk-Flags:

fdisk dagegen liest es mit 512 Byte logisch wie physikalisch ein und damit paßt es dann wieder.

Festplatte /dev/sdd: 3,7 GiB, 3958374400 Bytes, 7731200 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: dos
Festplattenbezeichner: 0x537ee902

Der Stick ist nur in Wirklichkeit nur 4 GB groß, also ist die Sektorgröße 512. 1:0 für fdisk.

ruft man als root folgendes auf : fdisk /dev/sdd

kann man sich im fdisk eine neue Partition wie folgt anlegen:

Befehl (m für Hilfe): n
Partitionstyp
   p   Primär (3 primär, 0 erweitert, 1 frei)
   e   Erweitert (Container für logische Partitionen)
Wählen (Vorgabe e): p

Partition 4 ausgewählt
Erster Sektor (3010560-7731199, Vorgabe 3010560):
Letzter Sektor, +Sektoren oder +Größe{K,M,G,T,P} (3010560-7731199, Vorgabe 7731199):

Eine neue Partition 4 des Typs „Linux“ und der Größe 2,3 GiB wurde erstellt.

Befehl (m für Hilfe): w
Die Partitionstabelle wurde verändert.
ioctl() wird aufgerufen, um die Partitionstabelle neu einzulesen.

Jetzt hat man eine neue Partition auf dem Stick, die man noch formatieren muß, was im Detail etwas dauern kann:

# mkfs.ntfs /dev/sdd4
Cluster size has been automatically set to 4096 bytes.
Initializing device with zeroes: 100% – Done.
Creating NTFS volume structures.

und ein paar Stunden später , kein Witz, kommt einem wie Stunden vor… kann man die Partition dann benutzen:

mkntfs completed successfully. Have a nice day.

Das Filesystem ntfs habe ich genommen, damit Linux und Windows Daten austauschen können.

Achtung: steckt man den USB Stick im selben Slot nochmal rein, kann es passieren, daß die neue Partitionstabelle nicht eingelesen wird und man seine Partition nicht sieht. Lösung: (Wieder kein Witz) Steckt den Stick in einen anderen Slot, damit bekommt er intern ein anderes Device zugewiesen, das umgeht das Kernel Cache 😀 (:facepalm:)