Question:
Comment empêcher les attaques BadUSB sur le bureau Linux?
student
2014-08-02 13:39:46 UTC
view on stackexchange narkive permalink

Que puis-je faire pour protéger mon ordinateur portable Linux contre les attaques BadUSB comme décrit par ArsTechnica ici?

La rédaction d'un profil AppArmor approprié serait peut-être utile ?

Puisque personne n'a répondu à propos d'AppArmor, non, cela n'aiderait pas. AA ajoute un contrôle d'accès pour les processus utilisateur, pas pour le code de firmware dont AA n'est même pas conscient.
Je pensais que je mentionnerais au moins USBGuard: https://github.com/dkopecek/usbguard
Sept réponses:
user10008
2014-08-03 05:30:54 UTC
view on stackexchange narkive permalink

L'attaque BadUSB est basée sur le fait que les ordinateurs autorisent et activent les périphériques HID sur tous les ports USB. Les fausses cartes réseau ne représentent pas un réel danger, ma réponse tente de décrire comment utiliser udev pour désactiver temporairement l'ajout de nouveaux périphériques HID. Je ne suis pas un expert udev, mais j'ai testé mon approche et cela fonctionne pour moi.

Pour la préparation , créez un fichier / etc / udev / rules .d / 10-usbblock.rules avec le contenu:

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

Si vous souhaitez également bloquer d'autres classes, recherchez le numéro de classe , copiez la ligne et modifiez la classe.

Vous pouvez maintenant bloquer tous les nouveaux appareils HID en utilisant la commande

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

et débloquer avec:

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

Avant d'arrêter, débloquez toujours , car le paramètre est persistant et vos "bons" appareils HID seraient rejetés sur redémarrer.

Je ne sais pas si vous pouvez modifier le répertoire des règles temporaires, mais si des modifications affectent le comportement, vous devriez le modifier à la place, car vous n'avez pas besoin de débloquer avant l'arrêt.

Pouvez-vous donner quelques détails sur l'approche basée sur le temps?
@user53541 a essayé de commenter mais ne peut pas en raison de la limite de réputation, il a donc dû recourir à l'édition pour nous parler. Modification rejetée, mais ajout d'un commentaire pour lui: "Il ne peut pas fonctionner pour autoriser le périphérique en utilisant le numéro de classe d'interface, le périphérique d'interface ne sera pas créé si le périphérique n'est pas autorisé."
@user53541 Il a raison, j'ai maintenant testé une nouvelle approche: autorisé par défaut, et s'il y a une interface avec la classe 3 ajoutée, l'appareil est désautorisé. Je modifierai ma réponse en conséquence.Hey user53541, voulez-vous y répondre vous-même? Il est évident que je suis nouveau sur udev, alors peut-être avez-vous une meilleure solution en tête.
Vraiment bonne réponse, mais maintenant ma question est la suivante: que se passe-t-il si votre "clavier" ou "souris", vos soi-disant bons appareils HID, sont également capables d'exécuter BadUSB? Comment géreriez-vous cela dans cette situation? La plupart des attaques BadUSB que j'ai personnellement vues concernaient le clavier et la souris.
Certaines choses auxquelles vous devez faire confiance. Vous ne pouvez pas avoir d'ancre de confiance. Vous pouvez éviter d'être attaqué par BadUSB à partir de périphériques que vous n'utilisez pas pour l'entrée HUD, mais les périphériques que vous utilisez pour le HUD doivent faire confiance.
tylerl
2014-08-03 01:45:25 UTC
view on stackexchange narkive permalink

L'idée derrière BadUSB est qu'un agent malveillant ré-clignote la puce du contrôleur USB d'un périphérique pour faire quelque chose de méchant. C'est une possibilité intéressante, mais il y a ici quelques suppositions sérieuses que les gens ont tendance à ignorer:

1: La puce du contrôleur USB doit permettre au micrologiciel de clignoter via la connexion USB

Ceci est une vulnérabilité de sécurité à coup sûr si c'est possible. Si cela est autorisé, tout hôte sur lequel le périphérique est branché peut modifier de façon permanente les caractéristiques du périphérique. En règle générale, cela nécessite un équipement spécial et un accès direct aux broches physiques de la puce, mais si un fabricant décide d'exposer la fonctionnalité via le protocole USB, cela est un motif d'alarme en soi et doit être signalé comme une vulnérabilité dans ce produit. Ce n'est pas , cependant, une faille dans le protocole lui-même.

Le fait que 3 des 4 démos programmées impliquent des puces de Phison Electronics suggèrent que le chercheur a découvert une telle vulnérabilité. dans un produit spécifique.

2: l'appareil doit être physiquement capable de l'activité que vous tentez

En faisant clignoter le micrologiciel de votre appareil, vous pouvez obtenir une clé USB pour se signaler en tant qu'adaptateur réseau. Mais cela n'en fait pas en fait une carte réseau, cela signifie simplement que l'ordinateur lui parlera comme s'il en était un. Alors maintenant, votre ordinateur commence à parler à votre Verbatim Store-n-Go en utilisant le pilote du D-Link DUB-E100 . Mais à moins que le Store-n-Go n'ait l'interface matérielle correspondante trouvée dans le D-Link, tout ce que vous avez est une clé USB cassée.

Si la clé USB a un microcontrôleur relativement puissant à bord, vous pourriez être capable de le reprogrammer. Mais "puissant" et "périphérique USB" ne vont généralement pas ensemble.

3: L'ordinateur doit être prêt à jouer avec

L'un des exemples cités est d'apprendre à un périphérique à se comporter comme une carte réseau, puis de supposer que tout le trafic sera acheminé en boucle sur n'importe quel ordinateur auquel vous le branchez. C'est ... un étirement. Pour ce faire, votre ordinateur doit déjà être configuré pour définir toute carte réseau nouvellement connectée comme nouvelle passerelle par défaut. Je ne sais pas si Windows est aussi avide de changement, mais si vous avez déjà configuré le réseau sur un ordinateur Linux, vous savez que ce n'est jamais aussi simple.

The Take-Away

Tout ce concept n'est pas superflu. Si un appareil autorise le re-flashage par n'importe quel hôte connecté, c'est un problème. Je peux affirmer en toute sécurité avec une certitude à 100% que cela ne conduira pas aux calamités poussées par les articles de presse essoufflés associés. Mais cela mérite votre attention.

Et plus important encore, USB est puissant, et puissant signifie potentiellement dangereux. Connecter un appareil via USB signifie nécessairement modifier le comportement de votre ordinateur et des choses très, très dangereuses sont possibles. Nous le savons depuis les années 90. Soyez prudent lorsque vous attachez des objets à votre ordinateur. Mais cette nouvelle découverte change très peu; les nouvelles attaques possibles ici ne sont pas aussi puissantes que ce qui existe déjà, le nouveau danger est que cela brouille la ligne entre les appareils «fiables» et «non approuvés».

Un autre cas d'utilisation très réel pour prétendre être un périphérique différent est d'exploiter une vulnérabilité dans un pilote pour ce périphérique. Le potentiel d'un tel bogue est énorme, car vous pouvez envoyer des données que le pilote n'a jamais été conçu pour gérer. Ceci est particulièrement tentant car l'exploitation d'un pilote peut vous donner une voie express pour augmenter les privilèges. Si vous trouvez un tel bogue dans un pilote inclus avec le système d'exploitation cible, vous aurez également une bonne couverture.
Malheureusement, il n'est pas rare de trouver des lecteurs de stockage de masse USB avec des contrôleurs reprogrammables. J'ai en fait un tas de contrôleurs Alcor ici. Mais il existe de nombreux contrôleurs différents et votre micrologiciel modifié devrait être différent pour chaque contrôleur, ce qui rend les attaques auto-propagées irréalisables au mieux. Et si vous n'en avez pas besoin, vous pouvez tout aussi bien utiliser du matériel spécial physiquement déguisé en lecteur flash.
@tylerl, Re "cette nouvelle découverte change très peu";Vous avez en quelque sorte manqué le point de l'article.Avant la découverte, vous pouvez acheter un périphérique USB et être sûr qu'il peut être branché en toute sécurité sur votre ordinateur.** Maintenant, vous ne pouvez pas. **
@Pacerier bien au contraire.Mon point était que vous ne pourriez * jamais * être sûr qu'un périphérique USB n'était pas malveillant, quelle que soit la source ou l'emballage.Cette vuln dans les appareils phison est intéressante, mais ce n'est pas plus probablement une menace quotidienne que, par exemple, les attaques de la chaîne d'approvisionnement.
@tylerl, Avant la publication, vous pouvez prendre une nouvelle clé USB d'un fournisseur de confiance, ** la reformater ** et être suffisamment en sécurité.Maintenant, vous ne pouvez même pas après le reformatage, n'est-ce pas?
Mark
2014-08-02 15:17:55 UTC
view on stackexchange narkive permalink

BadUSB n'est pas une attaque. C'est un outil utilisé lors de la conception d'attaques.

Lorsque vous branchez un périphérique USB sur un ordinateur, le périphérique indique à l'ordinateur de quel genre de chose il s'agit, afin que l'ordinateur puisse sélectionner le pilote approprié. Par exemple, une clé USB se déclare comme un périphérique "USB Mass Storage", tandis qu'un clavier est un "Human Interface Device".

BadUSB est une technique pour réécrire le firmware d'un plug-in Périphérique USB de l'ordinateur. Par exemple, une clé USB pourrait s'identifier comme une souris et faire sauter le pointeur au hasard. Ou cela pourrait faire en sorte que la clé USB s'identifie comme un concentrateur USB avec un clavier connecté et une mémoire de masse, qui, lorsqu'elle est branchée, tape une séquence de frappes qui provoque l'exécution d'un programme sur la clé USB.

La nouveauté ici, il ne s'agit pas de fabriquer des périphériques USB qui ne sont pas ce à quoi ils ressemblent - les agences de renseignement, les cybercriminels et d'autres le font depuis des années. La nouveauté est que cela peut être fait au matériel de base via la connexion USB, ouvrant la porte à des systèmes auto-propagés, tels qu'un virus qui s'écrit sur n'importe quelle clé USB qui a été branchée sur la machine, puis modifie le micrologiciel du lecteur pour essayez d'exécuter le virus à chaque fois que le lecteur est branché.

C'est une chose difficile à défendre, car il fonctionne à un niveau si bas et est si flexible dans ce qu'un attaquant peut en faire. Sur un système Linux, une chose que vous pouvez faire est de vous assurer que tous les supports amovibles sont montés en tant que "noexec" - cela empêche l'exécution des programmes sur eux et rend les attaques plus difficiles. Vous pouvez également consulter l'arborescence des périphériques USB à chaque fois que vous branchez quelque chose, pour voir si quelque chose d'inattendu s'est produit.

Sur un plan non technique, évitez d'utiliser un périphérique USB qui a été branché sur un système infecté,

noexec n'aiderait pas beaucoup. Il n'y a pas beaucoup de différence pour un attaquant d'émuler des frappes qui exécutent un programme à partir du stick pour émuler des frappes qui copient d'abord le programme et modifient les permissions, puis l'exécutent.
Re "monté comme" noexec "";Quelle est la commande dont vous parlez?
@SteffenUllrich, Mais vous pouvez le voir à l'écran pendant qu'il le fait, non?Il n'y a tout simplement aucun moyen de le faire si rapidement qu'il n'y aurait pas de fenêtres "clignotantes".
@Pacerier: pas nécessairement et dépend de l'environnement.Mais vous devriez voir que quelque chose se passe si vous savez où chercher, c'est-à-dire que l'attaque n'est pas totalement furtive.Quant à `noexec` - une simple recherche mène par exemple à [Que signifie le drapeau NOEXEC ...] (https://superuser.com/questions/728127/what-does-noexec-flag-mean-when-mounting-répertoires sur rhel).
@SteffenUllrich, L'attaque peut-elle empêcher le système de détection de la détecter?
@Pacerier: Les approches discutées ici ne détectent pas explicitement l'attaque mais limitent simplement si des périphériques USB peuvent être connectés ou quels périphériques (liste blanche).Pour des questions étendues à ce sujet, veuillez ne pas en discuter dans les commentaires sur plus de 3 votre ancien message, mais posez plutôt une nouvelle question.
Daniel Kopeček
2015-04-07 22:05:48 UTC
view on stackexchange narkive permalink

J'ai récemment commencé à travailler sur USBGuard qui implémente une liste blanche / liste noire de périphériques USB avec l'aide d'UDev et de la fonction d'autorisation USB du noyau Linux. C'est un démon de l'espace utilisateur qui écoute les événements UDev et autorise ou désautorise les périphériques USB en fonction d'un ensemble de règles écrites dans un langage de règles personnalisé.

Je pense que cela en fait beaucoup plus difficile pour un attaquant de reprogrammer un périphérique de manière à contourner une bonne liste blanche (c'est-à-dire aussi spécifique que possible). Bien entendu, USBGuard ne peut pas vous protéger de toutes les attaques et si un attaquant a un accès physique à vos périphériques USB, alors il a accès à toutes les valeurs nécessaires pour créer une copie d'un tel périphérique, par exemple un clavier. Les claviers sont particulièrement mauvais car ils n'exportent généralement aucune valeur iSerial qui distinguerait deux claviers du même type.

Cependant, l'utilisation d'une liste blanche de périphériques connus est bonne contre les interfaces cachées / inattendues sur une clé USB dispositif. L'exemple notoire étant l'ajout d'un clavier ou d'une carte réseau (par reprogrammation sur une machine différente / infectée par un malware). Si vous savez que votre disque flash USB ne devrait avoir qu'une seule interface de stockage de masse et qu'il a soudainement quelque chose de plus, vous savez que vous ne devriez pas le laisser interagir avec votre système - et c'est le cas d'utilisation principal d'USBGuard.

Le même niveau peut être implémenté simplement en utilisant les règles UDev et quelques aides pour analyser les descripteurs USB, mais USBGuard le rend plus pratique.

Hey Daniel Kopeček J'ai dû chercher ta réponse sur un endroit où j'avais assez de réputation pour voter et commenter que tu avais fait un bon outil.Ya peut vouloir mettre à jour votre fichier readme pour refléter la prise en charge supplémentaire de l'empaquetage, car il semble que Kali Sana a ajouté un support packagé pour votre outil;même pour les CPU ARMhf, RPi ou Android avec chroot.Je vais l'essayer très bientôt et je vous remercie d'avoir construit et annoncé votre projet.
neofutur
2014-11-30 10:48:27 UTC
view on stackexchange narkive permalink

Le moyen le plus simple est probablement d'utiliser un noyau sécurisé , je veux dire le noyau patché grsecurity :

http: // grsecurity .net /

Grsec fournit 2 options pour désactiver l'usb après le démarrage:

le soft:

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

L'utilisateur peut toujours déverrouiller l'usb en utilisant un sysctl (kernel.grsecurity.deny_new)

le plus difficile:

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

Pas d'usb du tout après le démarrage

Grsec est un ensemble de correctifs sources améliorant le niveau de sécurité du noyau Linux, et vous protégera de nombreux autres problèmes de sécurité (buffer overflow, stack exec et bien d'autres), voir https://grsecurity.net/features.php

Vous pouvez construire votre propre noyau linux patché par grsecurity sur n'importe quel Linux distro, mais les distributions qui la supportent sont:

http://hardened.gentoo.org/

http://pentoo.ch / à propos de

http://www.netsecl.com/home

Cela n'aide que si vous craignez que quelqu'un d'autre ne mette une clé USB contre votre gré; cela n'aide pas si, par exemple, vous branchez un lecteur flash sur un ordinateur infecté (sans le savoir) et que vous le branchez ensuite sur votre ordinateur. Le problème principal est que vous pourriez _vouloir_ connecter un périphérique USB, mais pas un clavier (par exemple); une restriction devrait vraiment être basée sur la classe d'appareil pour être efficace contre cela (alors un appareil ne peut être malveillant que dans la classe d'appareils dans laquelle vous voulez qu'il soit).
vous pouvez toujours redémarrer avec votre périphérique USB (infecté ou non) pour le faire reconnaître.
C'est précisément mon point. La menace posée par BadUSB ne se limite pas aux attaquants connectant une clé USB infectée à votre ordinateur; l'une des principales menaces est qu'un utilisateur s'infecte involontairement. L'un des plus gros problèmes avec BadUSB, par rapport à la reprogrammation USB hors bande qui a toujours été possible, est qu'un ordinateur infecté peut infecter un périphérique qui y est connecté sans que l'utilisateur le sache. Si l'ordinateur de travail d'un utilisateur est infecté, il peut infecter son lecteur flash, et cela n'empêchera pas ce lecteur flash d'infecter son ordinateur personnel.
linagee
2014-10-03 10:23:50 UTC
view on stackexchange narkive permalink

Acceptez le premier clavier / souris USB HID, invite à l'écran pour accepter plus de claviers / souris USB HID. Probablement le moyen le plus simple, je ne connais aucun système d'exploitation ou logiciel qui ait encore implémenté quelque chose comme ça.

Alternativement, affichez quelque chose à l'écran que l'utilisateur doit entrer à partir du clavier pour que vous sachiez que ce n'est pas un appareil non autorisé. Comme, une courte séquence de chiffres ou de lettres. (Parce que comment un appareil malveillant saurait-il ce qui est à l'écran?)

Le simple fait d'accepter le premier appareil laisse la possibilité d'avoir une boîte de saisie à l'écran et pas de clavier fonctionnel - soit si la souris arrive en premier, soit si le périphérique badusb le fait ...
Les lecteurs de bandes magnétiques et de codes-barres sont généralement implémentés en tant que claviers HID. Si le système d'exploitation énumère l'un d'entre eux en premier, vous pourriez vous retrouver sans moyen de saisir des valeurs arbitraires.
@linagee, Re "comment un périphérique non autorisé pourrait-il savoir ce qui est à l'écran";Y a-t-il un moyen pour l'USB de se présenter également comme un «écran»?Ou est-ce physiquement impossible?
ajcg
2019-06-10 06:17:57 UTC
view on stackexchange narkive permalink

Il existe des projets qui font exactement ce que vous voulez:

J'ai testé, sur ubuntu 18.04, usbdeath et usbcut. La différence est que usbdeath éteint le PC lors de l'insertion d'un appareil non autorisé. Au lieu de cela, usbcut bloque l'appareil non autorisé (sans éteindre le PC)



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...