BadUSB: cómo un pendrive se vuelve teclado hacker y cómo protegerte

BadUSB: cómo un pendrive se vuelve teclado hacker y cómo protegerte

En enero de 2022, el FBI alertó a empresas estadounidenses sobre paquetes que llegaban por correo con una memoria USB dentro: a veces una carta falsa de un departamento de salud sobre reglas de COVID, a veces una caja de regalo "de Amazon" con una tarjeta de regalo de obsequio. Quien conectaba el dispositivo a la computadora no veía ningún archivo. Lo que ocurría era peor: la "memoria USB" se presentaba como teclado y empezaba a escribir sola. Eso es BadUSB.

¿Qué es BadUSB?

BadUSB es una clase de ataque en la que un dispositivo USB se declara a la computadora como otro tipo de aparato —normalmente un teclado— y empieza a "escribir" comandos que el usuario nunca redactó. El sistema operativo confía en los teclados por defecto, así que acepta la entrada sin pedir permiso.

El nombre viene de la investigación presentada por Karsten Nohl y Jakob Lell, de SR Labs, en Black Hat USA el 7 de agosto de 2014. Hicieron ingeniería inversa del firmware del microcontrolador dentro de memorias USB comunes y demostraron que se podía reescribir. El código malicioso vive en el firmware, no en la memoria flash donde se guardan los archivos. Borrar el contenido o formatear la memoria no elimina nada, y los antivirus de la época no analizaban ese firmware. Según la cobertura de Security Affairs y eWeek, la demostración incluyó una memoria que imitaba un teclado e incluso una que se hacía pasar por tarjeta de red para cambiar el DNS del equipo.

¿Cómo un pendrive se convierte en teclado?

Todo dispositivo USB informa a la computadora su clase al conectarse: almacenamiento, audio, red o HID (Human Interface Device, la clase de teclados y ratones). Quien decide qué dice ser el aparato es el firmware. Un dispositivo con firmware modificado puede declararse HID y enviar secuencias de teclas grabadas de antemano, a velocidad de máquina.

Hay versiones listas, vendidas abiertamente para pruebas de intrusión autorizadas: el USB Rubber Ducky, de Hak5, parece una memoria USB y usa un lenguaje de script propio (DuckyScript) para definir qué se va a "escribir". También hay cables con la electrónica escondida dentro del conector, como el O.MG Cable. Desde el lado de la víctima, todo parece un cargador o una memoria cualquiera.

El truco funciona porque quien "escribe" tiene los mismos permisos que el usuario con sesión iniciada. Un payload típico abre una terminal, descarga algo de internet y lo ejecuta. Si el usuario es administrador, el daño es mayor.

El caso FIN7: BadUSB por correo

La alerta del FBI, publicada por Bleeping Computer el 7 de enero de 2022, atribuyó los envíos al grupo financiero FIN7. Los paquetes, enviados por USPS y UPS, apuntaban a empresas de transporte, seguros y, desde noviembre de 2021, del sector defensa. Los dispositivos eran placas LilyGO vendidas en internet y, según el FBI, se registraban como teclado, lo que funciona incluso con el almacenamiento extraíble deshabilitado. Los comandos eran de PowerShell para descargar e instalar cargas maliciosas, incluido ransomware, como informaron Bleeping Computer, Bitdefender y Tripwire.

La lección aquí es de ingeniería social: la parte técnica es banal; lo que hace funcionar el ataque es el empaque convincente y la curiosidad de quien lo recibe.

¿BadUSB es lo mismo que juice jacking?

No. En el juice jacking el ataque viene de un cargador o puerto público comprometido; en BadUSB el ataque está dentro del propio dispositivo que conectas. Los dos explotan la confianza en los puertos USB, y las defensas se solapan. El post sobre juice jacking cubre el otro lado de la moneda. Un keylogger es un destino común de estos ataques: el primer comando escrito suele instalar algo que se queda.

Cómo protegerte de BadUSB

  • Nunca conectes una memoria USB que encontraste, recibiste por correo o te regalaron en un evento. Es la defensa más barata y la más eficaz.
  • Bloquea la computadora cuando te alejes (Windows + L). Un dispositivo conectado a un equipo bloqueado tiene mucho menos que hacer.
  • No trabajes como administrador en el día a día. Una cuenta estándar limita lo que los comandos escritos pueden modificar.
  • Desactiva los puertos USB que nadie usa en servidores y equipos de uso fijo (BIOS/UEFI o política corporativa).
  • En empresas, usa una lista de dispositivos permitidos. Bloquear solo el "almacenamiento extraíble" no basta, porque BadUSB aparece como teclado.

Cómo detectarlo en Windows

Para ver qué teclados reconoce Windows en este momento, usa PowerShell:

Get-PnpDevice -Class Keyboard -PresentOnly | Select-Object FriendlyName, InstanceId, Status

Si aparece un teclado que no conectaste, investiga. Para tener historial, activa la auditoría de eventos Plug and Play. Genera el evento 6416 ("se reconoció un nuevo dispositivo externo") en el registro de Seguridad:

auditpol /set /subcategory:"Plug and Play Events" /success:enable
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=6416} -MaxEvents 10

El nombre de la subcategoría cambia según el idioma de Windows; compruébalo con auditpol /list /subcategory:*. El post sobre registros de auditoría de PowerShell te ayuda a registrar lo que ejecutaron esos comandos escritos.

Para un bloqueo real en un entorno corporativo, la Directiva de grupo tiene las reglas de Restricciones de instalación de dispositivos (Configuración del equipo, Plantillas administrativas, Sistema, Instalación de dispositivos), que permiten autorizar solo ID o clases específicas. Prueba antes: una regla mal hecha también deja sin funcionar tu teclado y ratón legítimos.

¿Y en Linux?

En Linux, USBGuard mantiene una lista de dispositivos autorizados y bloquea el resto. Instálalo con el gestor de paquetes, genera una política con los dispositivos ya conectados y lista lo que ve el sistema:

sudo apt install usbguard
sudo usbguard generate-policy | sudo tee /etc/usbguard/rules.conf
sudo systemctl enable --now usbguard
sudo usbguard list-devices

Genera la política con el portátil limpio y solo con tus periféricos conectados. A partir de ahí, cualquier dispositivo nuevo queda bloqueado hasta que lo autorices con usbguard allow-device.

La lección de fondo

BadUSB muestra una falla de diseño: el USB nació para ser plug and play, y la computadora cree lo que el dispositivo dice de sí mismo. Ya en 2014 la investigación avisaba de que no había una corrección simple, y la recomendación de Nohl era tratar como contaminado cualquier USB que haya tocado una computadora no confiable. Doce años después, la defensa sigue siendo de comportamiento: no conectar lo que no conoces y limitar lo que acepta cada puerto. Si quieres seguir por el lado del hardening, mira también la guía de 10 configuraciones para que Windows 11 sea más seguro.

Comentarios