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 ?
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 ?
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 und entsperren mit: 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. sed -i 'blockieren. s / # // '/etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules
sed -i 's / ^ / # /' /etc/udev/rules.d/10-usbblock.rules; udevadm control --reload-rules
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:
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.
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.
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.
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.
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,
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
Der einfachste Weg ist wahrscheinlich die Verwendung eines sicheren Kernels . Ich meine den gepatchten Kernel grsecurity :
Grsec bietet zwei Optionen zum Deaktivieren von USB nach dem Start:
die weiche:
Der Benutzer kann usb weiterhin mit einem sysctl (kernel.grsecurity.denb) freischalten p>
der Schwierige:
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:
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?)
Es gibt Projekte, die genau das tun, was Sie wollen:
usbkill
usbdeath
(ein auf usbkill basierendes Bash-Skript) usbcut
(eine Gabelung von usbdeath, freundlicher) 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)