¿Cómo prevenir los ataques BadUSB en el escritorio de Linux?

41

¿Qué puedo hacer para proteger mi computadora portátil Linux de los ataques BadUSB como se describe por ArsTechnica aquí ?

¿Quizás sería útil escribir el perfil AppArmor adecuado?

    
pregunta student 02.08.2014 - 10:39
fuente

6 respuestas

33

El ataque BadUSB se basa en el hecho de que las computadoras permiten y habilitan dispositivos HID en todos los puertos usb. Los adaptadores de red falsos no son un peligro real. Mi respuesta trata de describir cómo usar udev para desactivar temporalmente la adición de nuevos dispositivos HID. No soy un experto en udev, pero he probado mi enfoque y funciona para mí.

Para preparación , cree un archivo /etc/udev/rules.d/10-usbblock.rules con el contenido:

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

Si también desea bloquear otras clases, busque el número de clase , copie la línea y cambiar la clase.

Ahora puede bloquear todos los dispositivos HID nuevos con el comando

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

y desbloquear con:

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

Antes de cerrar, siempre desbloquee , ya que la configuración es persistente y sus dispositivos "buenos" HID se rechazarán al reiniciar.

No sé si puede editar el directorio de reglas temporales, pero si los cambios afectan el comportamiento, debe editarlo en su lugar, ya que no es necesario desbloquearlo antes del cierre.

    
respondido por el user10008 03.08.2014 - 02:30
fuente
24

La idea detrás de BadUSB es que un agente malicioso vuelve a flashear el chip del controlador USB de un dispositivo para hacer algo desagradable. Esta es una posibilidad interesante, pero hay algunas suposiciones serias que las personas tienden a pasar por alto:

1: el chip del controlador USB debe permitir el parpadeo del firmware a través de la conexión USB

Esto es una vulnerabilidad de seguridad si es posible. Si esto está permitido, entonces cualquier host al que esté conectado el dispositivo puede alterar permanentemente las características del dispositivo. Por lo general, esto requiere equipo especial y acceso directo a los pines físicos del chip, pero si un fabricante decide exponer la funcionalidad a través del protocolo USB, eso es motivo de alarma en sí mismo y debe informarse como una vulnerabilidad en ese producto. Es no , sin embargo, un defecto en el protocolo en sí.

El hecho de que 3 de las 4 demostraciones programadas incluyan chips de Phison Electronics sugiere que el investigador descubrió tal vulnerabilidad en un producto específico.

2: el dispositivo debe ser físicamente capaz de realizar la actividad que estás intentando

Al actualizar el firmware de su dispositivo, puede obtener una unidad de disco USB para presentarse como un adaptador de red. Pero eso no lo convierte en en realidad un adaptador de red, solo significa que la computadora hablará con él como si fuera uno. Entonces, su computadora comienza a hablar con su Verbatim Store-n-Go usando el controlador para el D-Link DUB-E100 . Pero a menos que el Store-n-Go tenga la interfaz de hardware correspondiente que se encuentra en el D-Link, todo lo que tiene es una memoria USB rota.

Si la memoria USB tiene un microcontrolador relativamente potente a bordo, es posible que pueda reprogramarlo. Pero "potente" y "periférico USB" no suelen ir juntos.

3: la computadora tiene que estar dispuesta a seguir el ritmo

Uno de los ejemplos citados es enseñar a un dispositivo a actuar como un adaptador de red, y luego suponer que todo el tráfico pasará a través de él en cualquier computadora que lo conecte. Eso es ... un estiramiento. Para que esto ocurra, su computadora ya debe estar configurada para configurar cualquier adaptador de red recién conectado como la nueva puerta de enlace predeterminada. No estoy seguro de si Windows está ansioso por el cambio, pero si alguna vez configuró una red en una computadora con Linux, sabe que nunca es tan simple.

The Take-Away

Todo este concepto no es todo una litera. Si un dispositivo permite que un host conectado vuelva a parpadear, es un problema. Puedo afirmar con seguridad con un 100% de certeza que no conducirá a las calamidades empujadas por los artículos de noticias asociados sin aliento. Pero vale la pena prestar atención.

Y, lo que es más importante, el USB es potente y poderoso significa potencialmente peligroso. Conectar un dispositivo a través de USB significa necesariamente alterar la forma en que se comporta su computadora, y son posibles cosas muy, muy peligrosas. Lo hemos sabido desde los años 90. Tenga mucho cuidado al adjuntar cosas a su computadora. Pero este nuevo descubrimiento cambia muy poco; Los nuevos ataques posibles aquí no son tan poderosos como lo que ya existe, el nuevo peligro es que desdibuja la línea entre dispositivos "de confianza" y "no confiables".

    
respondido por el tylerl 02.08.2014 - 22:45
fuente
14

BadUSB no es un ataque. Es una herramienta utilizada al diseñar ataques.

Cuando conecta un dispositivo USB a una computadora, el dispositivo le dice a la computadora qué tipo de cosa es, para que la computadora pueda seleccionar el controlador apropiado. Por ejemplo, una unidad de memoria USB se declara a sí misma como un dispositivo de "almacenamiento masivo USB", mientras que un teclado es un "dispositivo de interfaz humana".

BadUSB es una técnica para volver a escribir el firmware de un dispositivo USB conectado desde la computadora. Por ejemplo, podría hacer que una unidad de disco se identifique a sí misma como un mouse y provocar que el puntero salte al azar. O podría hacer que la unidad de memoria USB se identifique como un concentrador USB con teclado conectado y almacenamiento masivo, que cuando está conectado introduce una secuencia de pulsaciones de teclas que hace que se ejecute un programa en la unidad de memoria USB.

Lo nuevo aquí no es hacer que los dispositivos USB no sean lo que parecen: las agencias de inteligencia, los ciberdelincuentes y otros han estado haciendo esto durante años. Lo novedoso es que esto se puede hacer con el hardware básico a través de la conexión USB, abriendo la puerta a los sistemas de autopropagación, como un virus que se escribe a sí mismo en cualquier unidad de disco que se haya conectado a la máquina, y luego modifique el firmware de la unidad para intente ejecutar el virus cada vez que se conecte la unidad.

Esto es algo difícil de defender, ya que opera en un nivel tan bajo y es tan flexible en lo que un atacante puede hacer con él. En un sistema Linux, una cosa que puede hacer es asegurarse de que todos los medios extraíbles estén montados como "noexec": esto evita que se ejecuten los programas en ellos y hace que los ataques sean más difíciles. También puede consultar el árbol de dispositivos USB cada vez que conecte algo, para ver si ha aparecido algo inesperado.

En un nivel no técnico, evite utilizar cualquier dispositivo USB que se haya conectado a un sistema posiblemente infectado,

    
respondido por el Mark 02.08.2014 - 12:17
fuente
8

Recientemente comencé a trabajar en USBGuard que implementa una lista blanca / lista negra de dispositivos USB con la ayuda de UDev y Linux Característica de autorización del kernel USB. Es un demonio de espacio de usuario que escucha los eventos de UDev y autoriza o desautoriza los dispositivos USB basados en un conjunto de reglas escritas en un lenguaje de reglas .

Creo que hace que sea más difícil para un atacante reprogramar un dispositivo de manera que evite una buena lista blanca (es decir, tan específica como sea). Por supuesto, USBGuard no puede protegerlo de todos los ataques y si un atacante tiene acceso físico a sus dispositivos USB, entonces tiene acceso a todos los valores necesarios para crear una copia de dicho dispositivo, por ejemplo, un teclado. Los teclados son casos especialmente graves, ya que generalmente no exportan ningún valor de iSerial que pueda distinguir dos teclados del mismo tipo.

Sin embargo, usar una lista blanca de dispositivos conocidos es bueno contra las interfaces ocultas / inesperadas en un dispositivo USB. El ejemplo notorio es un teclado o una tarjeta de red agregada (mediante la reprogramación en una máquina diferente / infectada con malware). Si sabe que su disco flash USB debe tener solo una interfaz de almacenamiento masivo y de repente tiene algo más, entonces no debe dejar que interactúe con su sistema, y ese es el caso de uso principal de USBGuard.

El mismo nivel se puede implementar simplemente usando las reglas de UDev y algunos ayudantes para analizar los descriptores USB, pero USBGuard lo hace más conveniente.

    
respondido por el Daniel Kopeček 07.04.2015 - 19:05
fuente
3

Acepte el primer teclado / mouse USB HID, en la pantalla para aceptar más teclados / ratones HID USB. Probablemente la forma más sencilla, no conozco ningún sistema operativo o software que haya implementado algo así todavía.

Como alternativa, muestre algo en la pantalla que el usuario debe ingresar desde el teclado para que sepa que no es un dispositivo deshonesto. Como, una breve secuencia de números o letras. (Porque, ¿cómo sabría un dispositivo deshonesto lo que está en pantalla?)

    
respondido por el linagee 03.10.2014 - 07:23
fuente
3

La forma más fácil es probablemente usar un kernel seguro , me refiero al grsecurity kernel parchado:

enlace

Grsec ofrece 2 opciones para deshabilitar usb después del arranque:

el suave:

enlace

El usuario todavía puede desbloquear usb usando un sysctl (kernel.grsecurity.deny_new_usb)

la difícil:

enlace

No usb en absoluto después del arranque

Grsec es un conjunto de parches de origen que mejoran el nivel de seguridad del kernel de Linux y lo protegerá de muchos más problemas de seguridad (desbordamiento de búfer, exec de pila y muchos más), consulte enlace

Puedes crear tu propio kernel de Linux parcheado de grsecurity en cualquier distro de linux, pero las distribuciones que lo soportan son:

enlace

enlace

enlace

    
respondido por el neofutur 30.11.2014 - 05:48
fuente

Lea otras preguntas en las etiquetas