BadUSB es una clase de ataques de piratas informáticos basada en una vulnerabilidad en los dispositivos USB . Ayuda a iniciar sesión sin contraseña. Debido a la falta de protección flash en algunos dispositivos USB, un atacante puede modificar o reemplazar por completo el firmware original y hacer que el dispositivo imite cualquier otro dispositivo. BadUSB está diseñado para entregar y ejecutar código malicioso [1] .
Los dispositivos USB llevan un microcontrolador encargado de comunicarse con el host a través de la interfaz USB. Durante el proceso de inicialización, el microcontrolador le dice al host, junto con otra información de servicio, las clases a las que pertenece el dispositivo. El host carga el controlador requerido y trabaja con el dispositivo según su clase y estos datos. Un dispositivo físico puede implementar varias clases y ser varios dispositivos separados para el host: las cámaras web implementan tanto una clase de video como una clase de dispositivo de audio [2] .
BadUSB se aprovecha del hecho de que los fabricantes no protegen sus dispositivos contra flasheo, y los anfitriones no verifican la autenticidad de los dispositivos USB. Gracias a esto, un atacante puede cambiar el firmware del microcontrolador y hacer pasar un dispositivo por otro. Además, dado que todas las comunicaciones se realizan a través de este microcontrolador, un atacante puede interceptar y reemplazar cualquier dato y comando entre el dispositivo y el host [3] . La infección automática de dispositivos también es posible: el dispositivo infecta el host mediante la ejecución de malware en él, luego el host infecta automáticamente todos los dispositivos USB conectados a él [3] .
Cada controlador es único, y para cada uno es necesario desarrollar un firmware o parche infectado por separado. No es posible escribir software genérico y usarlo en cualquier microcontrolador. El procedimiento de firmware difiere de un controlador a otro. Todo esto reduce significativamente la probabilidad de una epidemia de BadUSB, pero no protege contra un ataque dirigido [3] .
El concepto de BadUSB fue presentado en agosto de 2014 en la conferencia BlackHat USA 2014 por los investigadores de Security Research Labs Karsten Nohl y Jakob Lell , quienes hicieron una presentación "BadUSB-On Accessories that Turn Evil" . Rediseñaron el controlador USB Phison 2251-03 (2303) y desarrollaron firmware para algunos tipos de ataques. El firmware del controlador fue realizado por la aplicación DriveCom . Se ha demostrado la suplantación de teclado, el ataque a la tarjeta de red, el ataque a la protección de la unidad flash y la ocultación de la partición de la unidad flash. También se han considerado algunas formas de protegerse contra los ataques de BadUSB [1] [3] .
El 5 de agosto de 2014, se publicó un exploit de BadAndroid que convierte un teléfono Android en un rastreador de tráfico de red [4] .
El 26 de septiembre de 2014, se publicó el código fuente del firmware y los parches para el controlador Phison 2251-03, incluido un ataque de suplantación de teclado, un ataque de contraseña de unidad y ocultación de partición de unidad [5] .
Las vulnerabilidades afectan a todos los dispositivos con controladores USB desprotegidos a bordo: unidades flash , cámaras web , ratones , teclados , dispositivos Android . BadUSB no requiere software especial en la computadora de la víctima y funciona bajo cualquier sistema operativo que admita dispositivos USB-HID [3] [6] .
La necesidad de ingeniería inversa de cada dispositivo USB, que consume mucho tiempo, limita esta clase de ataques a ataques personalizados en dispositivos específicos como parte de tecnologías de relaciones públicas negras o ataques contra una víctima específica que utiliza dispositivos específicos.
El dispositivo se presenta a la computadora de la víctima como un teclado y, después de un tiempo, comienza a enviar secuencias de pulsaciones de teclas. Como resultado, un atacante puede realizar cualquier acción en la computadora de la víctima que esté disponible para un usuario autorizado usando solo el teclado. Por ejemplo, un atacante puede descargar y ejecutar malware desde Internet [3] .
Una desventaja significativa de este tipo de ataque es la falta de acceso a la información en la pantalla y, como resultado, la falta de retroalimentación sobre cualquier acción del dispositivo infectado. Por ejemplo, un atacante no puede determinar tanto la disposición actual del teclado como si un usuario ha iniciado sesión [3] .
El dispositivo aparece en la computadora de la víctima como una tarjeta de red y, por lo tanto, puede interceptar o redirigir el tráfico de la red. En particular, al responder a una solicitud de DHCP con la dirección del servidor DNS del atacante y no proporcionar una puerta de enlace predeterminada, el atacante puede redirigir el tráfico de la víctima: la computadora de la víctima resolverá la dirección a través del servidor DNS del atacante, pero, en ausencia de una puerta de enlace predeterminada, utilizará una interfaz de red real diferente [3] .
Un dispositivo con suficiente espacio para almacenar código malicioso, como una unidad flash, puede detectar el momento en que se enciende la computadora y, en el momento en que el BIOS lo detecta, emite un virus para cargar para infectar el sistema operativo. Esto es posible debido al hecho de que por el comportamiento del host cuando se comunica con el microcontrolador USB es posible determinar el sistema operativo del host, en particular Windows , Linux , MacOSX y también el BIOS [7] .
El ataque explota la capacidad de reinicializar el dispositivo [2] . Al ejecutarse en una máquina virtual , el virus infecta cualquier dispositivo conectado a través de USB. El firmware infectado realiza una reinicialización y aparece como dos dispositivos independientes: uno nuevo y otro que ya se ha conectado a la máquina virtual. El nuevo dispositivo se conectará automáticamente al sistema operativo host y el dispositivo antiguo se volverá a conectar a la máquina virtual. Por lo tanto, se puede realizar una transición fuera del entorno virtual, es decir, se ha realizado una transición del sistema operativo cliente al host [7] .
El informe "BadUSB - On Accessories that Turn Evil" propuso varias formas de protegerse contra BadUSB; sin embargo, según los investigadores, la integración completa de la protección llevará mucho tiempo [3] [7] .
Una posible contramedida es firmar el firmware con el fabricante del hardware y validarlo en el lado del host antes de usar el dispositivo, que no es compatible con la especificación USB actual. Otra solución al problema puede ser bloquear la posibilidad de flasheo de dispositivos por parte del fabricante [2] [6] .
Mark Shuttleworth , fundador de Canonical Ltd. También habló sobre el tema de la seguridad de los dispositivos USB y, como solución al problema, propuso abrir completamente el código fuente del firmware [8] .
A pesar de que una serie de herramientas integrales de protección antivirus, como ESET Endpoint Antivirus , Kaspersky Endpoint Security , el componente de control parental de Dr.Web AV-Desk , le permiten restringir el acceso a medios extraíbles y permitir la activación de acuerdo con el "lista blanca", en el caso de Bad USB, tales medidas no son suficientes. El propio usuario puede permitir la conexión de un dispositivo peligroso, considerándolo erróneamente seguro. Según Andrey Vasilkov, corresponsal de Computerra , los desarrolladores de soluciones antivirus tendrán que agregar "módulos separados para un control adicional más flexible sobre los dispositivos conectados por USB" en el futuro [9] .
La protección contra ataques BadUSB apareció en Kaspersky Endpoint Security 10, en una actualización del 7 de diciembre de 2015 [10] .
Las soluciones de seguridad Dr.Web desde la versión 11 protegen contra la vulnerabilidad BadUSB para dispositivos que imitan un teclado [11] .