Frage:
Wie kann man BadUSB-Angriffe auf Linux-Desktops verhindern?
student
2014-08-02 13:39:46 UTC
view on stackexchange narkive permalink

Was kann ich tun, um meinen Linux-Laptop vor BadUSB-Angriffen zu schützen, wie von ArsTechnica hier beschrieben?

Vielleicht hilft das Schreiben eines geeigneten AppArmor -Profils ?

Da niemand über AppArmor antwortete, würde es nicht helfen. AA fügt die Zugriffskontrolle für Userland-Prozesse hinzu, nicht für Firmware-Code, den AA nicht einmal kennt.
Ich dachte, ich würde zumindest USBGuard erwähnen: https://github.com/dkopecek/usbguard
Sieben antworten:
#1
+35
user10008
2014-08-03 05:30:54 UTC
view on stackexchange narkive permalink

Der BadUSB-Angriff basiert auf der Tatsache, dass Computer HID-Geräte an allen USB-Ports zulassen und aktivieren. Gefälschte Netzwerkadapter stellen keine wirkliche Gefahr dar. Meine Antwort versucht zu beschreiben, wie udev verwendet wird, um das Hinzufügen neuer HID-Geräte vorübergehend zu deaktivieren. Ich bin kein udev-Experte, aber ich habe meinen Ansatz getestet und er funktioniert für mich.

Erstellen Sie zur Vorbereitung eine Datei / etc / udev / rules .d / 10-usbblock.rules mit dem Inhalt:

  #ACTION == "add", ATTR {bInterfaceClass} == "03" RUN + = "/ bin / sh -c 'echo 0 > / sys $ DEVPATH /../ autorisiert' " 

Wenn Sie auch andere Klassen blockieren möchten, suchen Sie die Klassennummer und kopieren Sie die Zeile und ändern Sie die Klasse.

Jetzt können Sie alle neuen HID-Geräte mit dem Befehl p sed -i 'blockieren. s / # // '/etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules

und entsperren mit:

  sed -i 's / ^ / # /' /etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules  

Vor dem Herunterfahren immer die Blockierung aufheben , da die Einstellung dauerhaft ist und Ihre "guten" HID-Geräte auf abgelehnt werden Neustart.

Ich weiß nicht, ob Sie das Verzeichnis für temporäre Regeln bearbeiten können, aber wenn sich Änderungen dort auf das Verhalten auswirken, sollten Sie dies stattdessen bearbeiten, da Sie die Blockierung vor dem Herunterfahren nicht aufheben müssen.

Können Sie einige Details zum zeitbasierten Ansatz angeben?
@user53541 hat versucht, einen Kommentar abzugeben, kann dies jedoch aufgrund von Reputationsbeschränkungen nicht. Daher musste er auf die Bearbeitung zurückgreifen, um mit uns zu sprechen. Abgelehnte Bearbeitung, aber Hinzufügen eines Kommentars für ihn: "Es kann nicht funktionieren, das Gerät mithilfe der Schnittstellenklassennummer zu autorisieren. Das Schnittstellengerät wird nicht erstellt, wenn das Gerät nicht autorisiert ist."
@user53541 Er hat Recht, ich habe jetzt einen neuen Ansatz getestet: Standardmäßig autorisiert, und wenn eine Schnittstelle mit Klasse 3 hinzugefügt wird, wird das Gerät de-autorisiert. Ich werde meine Antwort entsprechend bearbeiten. Hey Benutzer 53541, möchten Sie sie selbst beantworten? Es ist offensichtlich, dass ich neu bei udev bin. Vielleicht haben Sie eine bessere Lösung im Sinn.
Wirklich nette Antwort, aber jetzt lautet meine Frage: Was passiert, wenn Ihre "Tastatur" oder "Maus", Ihre angeblich guten HID-Geräte, auch BadUSB ausführen können? Wie würden Sie in dieser Situation damit umgehen? Die meisten BadUSB-Angriffe, die ich persönlich gesehen habe, waren über Tastatur und Maus.
Einige Dinge, denen man vertrauen muss. Sie können keinen Vertrauensanker haben. Sie können verhindern, dass BadUSB von Geräten angegriffen wird, die Sie nicht für die HUD-Eingabe verwenden, aber von Geräten, die Sie für das HUD verwenden, denen Sie vertrauen müssen.
#2
+25
tylerl
2014-08-03 01:45:25 UTC
view on stackexchange narkive permalink

Die Idee hinter BadUSB ist, dass ein böswilliger Agent den USB-Controller-Chip eines Geräts erneut flasht, um etwas Böses zu tun. Dies ist eine interessante Möglichkeit, aber es gibt einige ernsthafte Annahmen, die die Leute eher beschönigen:

1: Der USB-Controller-Chip muss das Flashen der Firmware über die USB-Verbindung ermöglichen.

Dies ist sicher eine Sicherheitslücke, wenn es möglich ist. Wenn dies zulässig ist, kann jeder Host, an den das Gerät angeschlossen ist, die Eigenschaften des Geräts dauerhaft ändern. Im Allgemeinen erfordert dies spezielle Ausrüstung und direkten Zugriff auf die physischen Pins des Chips. Wenn sich ein Hersteller jedoch dazu entschließt, die Funktionalität über das USB-Protokoll bereitzustellen, ist dies selbst ein Grund zur Besorgnis und sollte als Sicherheitslücke in diesem Produkt gemeldet werden. Es ist jedoch kein Fehler im Protokoll selbst.

Die Tatsache, dass 3 der 4 geplanten Demos Chips von Phison Electronics enthalten, legt nahe, dass der Forscher eine solche Sicherheitsanfälligkeit entdeckt hat in einem bestimmten Produkt.

2: Das Gerät muss physisch in der Lage sein, die Aktivität auszuführen, die Sie versuchen.

Durch Flashen der Firmware Ihres Geräts können Sie einen USB-Stick erhalten, der sich selbst meldet als Netzwerkadapter. Das macht es jedoch nicht tatsächlich zu einem Netzwerkadapter, sondern bedeutet nur, dass der Computer mit ihm spricht, als wäre es einer. Jetzt beginnt Ihr Computer mit dem Verbatim Store-n-Go über den Treiber für den D-Link DUB-E100 zu kommunizieren. Wenn der Store-n-Go nicht über die entsprechende Hardwareschnittstelle im D-Link verfügt, ist lediglich ein USB-Stick defekt.

Wenn der USB-Stick über einen relativ leistungsstarken Mikrocontroller verfügt, ist dies möglicherweise der Fall in der Lage, es neu zu programmieren. Aber "leistungsstark" und "USB-Peripheriegerät" passen normalerweise nicht zusammen.

3: Der Computer muss bereit sein, mitzuspielen

Eines der genannten Beispiele besteht darin, einem Gerät beizubringen, sich wie ein Netzwerkadapter zu verhalten, und dann davon auszugehen, dass der gesamte Datenverkehr auf jedem Computer, an den Sie es anschließen, durch das Gerät geleitet wird. Das ist ... eine Strecke. Dazu muss Ihr Computer bereits so konfiguriert sein, dass ein neu verbundener Netzwerkadapter als neues Standardgateway festgelegt wird. Ich bin mir nicht sicher, ob Windows so begierig auf Änderungen ist, aber wenn Sie jemals ein Netzwerk auf einem Linux-Computer konfiguriert haben, wissen Sie, dass es nie so einfach ist.

The Take-Away

Dieses ganze Konzept ist nicht nur eine Koje. Wenn ein Gerät das erneute Flashen eines verbundenen Hosts zulässt, ist dies ein Problem. Ich kann mit 100% iger Sicherheit sicher sagen, dass dies nicht zu den Katastrophen führen wird, die durch die damit verbundenen atemlosen Nachrichtenartikel verursacht werden. Aber es ist Aufmerksamkeit wert.

Und was noch wichtiger ist, USB ist leistungsstark und leistungsstark bedeutet potenziell gefährlich. Das Anschließen eines Geräts über USB bedeutet zwangsläufig, das Verhalten Ihres Computers zu ändern, und es sind sehr, sehr gefährliche Dinge möglich. Das wissen wir seit den 90ern. Seien Sie vorsichtig, wenn Sie Dinge an Ihren Computer anschließen. Diese neue Entdeckung ändert sich jedoch kaum. Die hier möglichen neuen Angriffe sind bei weitem nicht so mächtig wie die bereits vorhandenen. Die neue Gefahr besteht darin, dass die Grenze zwischen "vertrauenswürdigen" und "nicht vertrauenswürdigen" Geräten verwischt wird.

Ein weiterer sehr realer Anwendungsfall für das Vorgeben, ein anderes Gerät zu sein, besteht darin, eine Sicherheitsanfälligkeit in einem Treiber für dieses Gerät auszunutzen. Das Potenzial für einen solchen Fehler ist groß, da Sie Daten senden können, für die der Treiber nie entwickelt wurde. Dies ist besonders verlockend, da Sie durch das Ausnutzen eines Treibers einen ausdrücklichen Weg zur Eskalation von Berechtigungen finden können. Wenn Sie einen solchen Fehler in einem Treiber finden, der im Zielbetriebssystem enthalten ist, haben Sie auch eine gute Abdeckung.
Leider ist es nicht ungewöhnlich, USB-Massenspeicherlaufwerke mit umprogrammierbaren Controllern zu finden. Ich habe hier tatsächlich ein paar Alcor-Controller. Es gibt jedoch viele verschiedene Controller, und Ihre modifizierte Firmware muss für jeden Controller unterschiedlich sein, sodass sich selbst ausbreitende Angriffe bestenfalls unmöglich sind. Und wenn Sie das nicht brauchen, können Sie auch spezielle Hardware verwenden, die physisch als Flash-Laufwerk getarnt ist.
@tylerl, Re "diese neue Entdeckung ändert sich sehr wenig";Sie haben den Punkt des Artikels irgendwie verpasst.Vor der Entdeckung können Sie ein USB-Gerät kaufen und sicher sein, dass es sicher an Ihren Computer angeschlossen werden kann.** Jetzt kannst du nicht. **
@Pacerier ganz im Gegenteil.Mein Punkt war, dass Sie * nie * sicher sein konnten, dass ein USB-Gerät nicht böswillig war, unabhängig von der Quelle oder Verpackung.Diese Vuln in Phison-Geräten ist interessant, aber es ist nicht wahrscheinlicher eine alltägliche Bedrohung als beispielsweise Angriffe in der Lieferkette.
@tylerl, Vor der Veröffentlichung können Sie einen neuen USB-Stick von einem vertrauenswürdigen Anbieter beziehen, ** neu formatieren ** und ausreichend sicher sein.Jetzt können Sie nicht einmal nach der Neuformatierung, nicht wahr?
#3
+14
Mark
2014-08-02 15:17:55 UTC
view on stackexchange narkive permalink

BadUSB ist kein Angriff. Es ist ein Tool, das beim Entwerfen von Angriffen verwendet wird.

Wenn Sie ein USB-Gerät an einen Computer anschließen, teilt das Gerät dem Computer mit, um was es sich handelt, sodass der Computer den entsprechenden Treiber auswählen kann. Ein USB-Stick deklariert sich beispielsweise als "USB-Massenspeicher" -Gerät, während eine Tastatur ein "Human Interface Device" ist.

BadUSB ist eine Technik zum Neuschreiben der Firmware eines angeschlossenen Geräts USB-Gerät vom Computer. Beispielsweise könnte sich ein USB-Stick als Maus identifizieren und den Zeiger zufällig herumspringen lassen. Oder es könnte das USB-Stick als USB-Hub mit angeschlossener Tastatur und Massenspeicher identifizieren, der beim Anschließen eine Folge von Tastenanschlägen eingibt, die dazu führen, dass ein Programm auf dem USB-Stick ausgeführt wird.

Das Neue Hier werden keine USB-Geräte hergestellt, die nicht so aussehen, wie sie aussehen - Geheimdienste, Cyberkriminelle und andere tun dies seit Jahren. Das Neue ist, dass dies getan werden kann, um Hardware über die USB-Verbindung zu verkaufen und die Tür zu sich selbst ausbreitenden Systemen zu öffnen, z. B. einem Virus, der sich selbst auf ein an den Computer angeschlossenes USB-Stick schreibt und dann die Firmware des Laufwerks ändert Versuchen Sie, den Virus jedes Mal auszuführen, wenn das Laufwerk angeschlossen wird.

Dies ist schwer zu verteidigen, da es auf einer so niedrigen Ebene arbeitet und so flexibel ist, was ein Angreifer damit tun kann. Auf einem Linux-System können Sie sicherstellen, dass alle Wechselmedien als "noexec" bereitgestellt werden. Dies verhindert, dass Programme auf ihnen ausgeführt werden, und erschwert Angriffe. Sie können den USB-Gerätebaum auch jedes Mal überprüfen, wenn Sie etwas anschließen, um festzustellen, ob etwas Unerwartetes aufgetreten ist.

Vermeiden Sie auf nicht technischer Ebene die Verwendung von USB-Geräten, die möglicherweise an ein Gerät angeschlossen sind. infiziertes System,

noexec würde nicht viel helfen. Es gibt keinen großen Unterschied für einen Angreifer, Tastenanschläge zu emulieren, die ein Programm vom Stick ausführen, um Tastenanschläge zu emulieren, die zuerst das Programm kopieren, die Berechtigungen ändern und dann ausführen.
Re "gemountet als" noexec "";Auf welchen Befehl beziehen Sie sich?
@SteffenUllrich, Aber Sie können es auf dem Bildschirm sehen, während es so richtig ist?Es gibt einfach keine Möglichkeit, dies so schnell zu tun, dass keine Fenster "blinken".
@Pacerier: nicht unbedingt und hängt von der Umgebung ab.Sie sollten jedoch sehen, dass etwas passiert, wenn Sie wissen, wo Sie suchen müssen, d. H. Der Angriff ist nicht vollständig getarnt.Was `noexec` betrifft - eine einfache Suche führt zum Beispiel zu [Was bedeutet NOEXEC-Flag ...] (https://superuser.com/questions/728127/what-does-noexec-flag-mean-when-mounting-Verzeichnisse-auf-Rhel).
@SteffenUllrich, Kann der Angriff das Erkennungssystem auf irgendeine Weise daran hindern, ihn zu erkennen?
@Pacerier: Die hier diskutierten Ansätze erkennen den Angriff nicht explizit, sondern beschränken lediglich, ob USB-Geräte angeschlossen werden können oder welche Geräte (weiße Liste).Bei erweiterten Fragen zu diesem Thema diskutieren Sie dies bitte nicht in Kommentaren zu mehr als 3 Ihrer alten Beiträge, sondern stellen Sie stattdessen eine neue Frage.
#4
+9
Daniel Kopeček
2015-04-07 22:05:48 UTC
view on stackexchange narkive permalink

Ich habe kürzlich begonnen, an USBGuard zu arbeiten, das mithilfe von UDev und der USB-Autorisierungsfunktion des Linux-Kernels eine Whitelist / Blacklist für USB-Geräte implementiert. Es ist ein User-Space-Daemon, der UDev-Ereignisse abhört und USB-Geräte basierend auf einer Reihe von Regeln autorisiert oder deaktiviert, die in einer benutzerdefinierten Regelsprache geschrieben sind.

Ich denke, das macht viel aus Für einen Angreifer ist es schwieriger, ein Gerät so neu zu programmieren, dass es eine gute Whitelist umgeht (dh so spezifisch wie es nur geht). Natürlich kann USBGuard Sie nicht vor jedem Angriff schützen. Wenn ein Angreifer physischen Zugriff auf Ihre USB-Geräte hat, hat er Zugriff auf alle Werte, die zum Erstellen einer Kopie eines solchen Geräts erforderlich sind, z. B. einer Tastatur. Tastaturen sind besonders schlimme Fälle, da sie normalerweise keinen iSerial-Wert exportieren, der zwei Tastaturen desselben Typs unterscheidet.

Die Verwendung einer Whitelist bekannter Geräte ist jedoch gut gegen versteckte / unerwartete Schnittstellen auf einem USB-Stick Gerät. Das berüchtigte Beispiel ist das Hinzufügen einer Tastatur oder einer Netzwerkkarte (durch Neuprogrammierung auf einem anderen / mit Malware infizierten Computer). Wenn Sie wissen, dass Ihr USB-Flash-Laufwerk nur eine Massenspeicherschnittstelle haben sollte und plötzlich etwas mehr hat, sollten Sie es nicht mit Ihrem System interagieren lassen - und das ist der Hauptanwendungsfall von USBGuard.

Dieselbe Ebene kann nur mithilfe von UDev-Regeln und einigen Hilfsprogrammen zum Analysieren von USB-Deskriptoren implementiert werden. USBGuard macht dies jedoch bequemer

Hey Daniel Kopeček, ich musste deine Antwort an einem Ort suchen, an dem ich genug Ruf hatte, um zu stimmen und zu kommentieren, dass du ein süßes Werkzeug gemacht hast.Möglicherweise möchten Sie Ihre Readme-Datei aktualisieren, um zusätzliche Verpackungsunterstützung zu berücksichtigen, da Kali Sana anscheinend eine Paketunterstützung für Ihr Tool hinzugefügt hat.auch für ARMhf CPUs, RPi oder Android mit Chroot.Ich werde es sehr bald ausprobieren und danke Ihnen, dass Sie Ihr Projekt erstellt und beworben haben.
#5
+4
neofutur
2014-11-30 10:48:27 UTC
view on stackexchange narkive permalink

Der einfachste Weg ist wahrscheinlich die Verwendung eines sicheren Kernels . Ich meine den gepatchten Kernel grsecurity :

http: // grsecurity .net /

Grsec bietet zwei Optionen zum Deaktivieren von USB nach dem Start:

die weiche:

https://en.wikibooks.org/wiki/Grsecurity/Appendix/Grsecurity_and_PaX_Configuration_Options#Deny_new_USB_connections_after_toggle

Der Benutzer kann usb weiterhin mit einem sysctl (kernel.grsecurity.denb) freischalten p>

der Schwierige:

https://en.wikibooks.org/wiki/Grsecurity/Appendix/Grsecurity_and_PaX_Configuration_Options#Reject_all_USB_devices_not_connected_at_boot

Nach dem Booten überhaupt kein USB

Grsec ist eine Reihe von Quell-Patches, die die Sicherheitsstufe des Linux-Kernels verbessern und Sie vor vielen weiteren Sicherheitsproblemen (Pufferüberlauf, Stack-Exec.) schützen und viele mehr), siehe https://grsecurity.net/features.php

Sie können Ihren eigenen grsecurity-gepatchten Linux-Kernel unter jedem Linux erstellen Distribution, aber die Distributionen, die dies unterstützen, sind:

http://hardened.gentoo.org/

http://pentoo.ch / about

http://www.netsecl.com/home

Dies hilft nur, wenn Sie sich Sorgen machen, dass jemand anderes ein Flash-Laufwerk gegen Ihre Wünsche einbaut. Das hilft nicht, wenn Sie beispielsweise ein Flash-Laufwerk (unwissentlich) an einen infizierten Computer anschließen und es dann an Ihren Computer anschließen. Das Hauptproblem besteht darin, dass Sie möglicherweise ein USB-Gerät anschließen möchten, nur keine Tastatur (zum Beispiel). Eine Einschränkung müsste wirklich auf der Geräteklasse basieren, um dagegen wirksam zu sein (dann kann ein Gerät nur innerhalb der Geräteklasse bösartig sein, in der es sich befinden soll).
Sie können immer noch mit Ihrem (infizierten oder nicht infizierten) USB-Gerät neu starten, um es zu erkennen.
Das ist genau mein Punkt. Die Bedrohung durch BadUSB beschränkt sich nicht nur auf Angreifer, die einen infizierten USB-Stick an Ihren Computer anschließen. Eine der Hauptbedrohungen ist ein Benutzer, der sich unbeabsichtigt selbst infiziert. Zu den größten Problemen mit BadUSB gehört im Vergleich zur Out-of-Band-USB-Neuprogrammierung, die immer möglich war, dass ein infizierter Computer ein angeschlossenes Gerät infizieren kann, ohne dass der Benutzer dies weiß. Wenn der Arbeitscomputer eines Benutzers infiziert ist, kann er sein Flash-Laufwerk infizieren. Dadurch wird nicht verhindert, dass dieses Flash-Laufwerk seinen Heimcomputer infiziert.
#6
+3
linagee
2014-10-03 10:23:50 UTC
view on stackexchange narkive permalink

Akzeptieren Sie die erste USB HID-Tastatur / -Maus und fordern Sie auf dem Bildschirm auf, weitere USB HID-Tastaturen / -Mäuse zu akzeptieren. Wahrscheinlich der einfachste Weg, ich kenne noch kein Betriebssystem oder keine Software, die so etwas implementiert hat.

Alternativ können Sie etwas auf dem Bildschirm anzeigen, das der Benutzer über die Tastatur eingeben muss, damit Sie wissen, dass dies nicht der Fall ist ein Schurkengerät. Wie eine kurze Folge von Zahlen oder Buchstaben. (Denn woher weiß ein Schurkengerät, was auf dem Bildschirm angezeigt wird?)

Wenn Sie nur das erste Gerät akzeptieren, können Sie ein Eingabefeld auf dem Bildschirm und keine funktionierende Tastatur anzeigen - entweder wenn die Maus an erster Stelle steht oder das Badusb-Gerät ...
Magnetstreifen- und Barcodeleser werden normalerweise als HID-Tastaturen implementiert. Wenn das Betriebssystem zuerst einen von ihnen auflistet, haben Sie möglicherweise keine Möglichkeit, beliebige Werte einzugeben.
@linagee, Re "Wie würde ein betrügerisches Gerät wissen, was auf dem Bildschirm angezeigt wird?"Gibt es eine Möglichkeit für den USB, sich auch als "Bildschirm" zu bewerben?Oder ist das nur physikalisch unmöglich?
#7
+1
ajcg
2019-06-10 06:17:57 UTC
view on stackexchange narkive permalink

Es gibt Projekte, die genau das tun, was Sie wollen:

Ich habe am Ubuntu 18.04 usbdeath und usbcut getestet. Der Unterschied besteht darin, dass usbdeath den PC ausschaltet, wenn ein nicht autorisiertes Gerät eingesetzt wird. Stattdessen blockiert usbcut das Gerät unbefugt (ohne den PC auszuschalten)



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...