1 puntos por GN⁺ 2024-02-24 | 1 comentarios | Compartir por WhatsApp

Desbloqueando la función oculta del ThinkPad: emulación de dispositivos USB

  • Descubrí cómo convertir una laptop ThinkPad X1 Carbon de 6.ª generación en un dispositivo USB programable.
  • Al activar el controlador xDCI, ahora es posible emular dispositivos USB arbitrarios (teclado, unidad de almacenamiento, etc.).
  • Se puede usar RawGadget y syzkaller para hacer fuzzing de hosts USB o ejecutar Facedancer.
  • Todo esto se puede hacer sin hardware externo.

Introducción

  • Raw Gadget es un módulo del kernel de Linux para emular dispositivos USB altamente personalizables.
  • Para emular un dispositivo USB, se necesita un componente especial de hardware llamado USB Device Controller (UDC).
  • Normalmente, las PC no tienen UDC, y suele venir integrado en computadoras de placa única como Raspberry Pi.

Investigación

  • Al investigar el código del kernel de Linux relacionado con el controlador xHCI, descubrí que los dispositivos xHCI admiten cambio de rol.
  • Mediante búsquedas en línea, encontré discusiones sobre el cambio de rol en dispositivos xHCI.
  • Revisé ACPI para verificar si xDCI estaba habilitado en ACPI.

Activación de xDCI

  • No encontré ninguna opción relacionada con xDCI en la configuración del BIOS.
  • Al revisar directamente la imagen del BIOS, descubrí que la configuración relacionada con xDCI estaba oculta.

Uso de xDCI

  • Activé xDCI mediante la configuración Advanced del BIOS.
  • Confirmé que el dispositivo xDCI aparece en lspci.

Resumen

  • Descubrí cómo habilitar la función oculta del controlador de dispositivos USB en una laptop ThinkPad X1 Carbon de 6.ª generación.
  • Esto permite emular la laptop como varios tipos de dispositivos USB.

Comentarios finales

  • Al activar xDCI, exploré nuevas posibilidades de uso para la laptop.

Opinión de GN⁺

  1. Este artículo abre una nueva área de hackeo de hardware y personalización al mostrar cómo activar una función oculta de una laptop ThinkPad para emular dispositivos USB.
  2. Permite hacer con una sola laptop tareas que antes requerían hardware aparte, lo que puede ser de gran ayuda para desarrolladores e investigadores.
  3. El texto presenta un reto interesante para personas con curiosidad técnica y ayuda a explorar cómo aprovechar al máximo el potencial de dispositivos existentes.

1 comentarios

 
GN⁺ 2024-02-24
Comentarios de Hacker News
  • Hay comentarios preguntándose por qué no se puede usar una laptop como teclado y monitor de otra computadora. Al dar mantenimiento a máquinas sin cabeza, la laptop ya cumple el papel de teclado y monitor, así que comprar algo nuevo se siente absurdo.
  • Hay un comentario que recuerda casos en los que una Smart TV recibía actualizaciones de firmware desde archivos en una memoria USB. Un dispositivo que se hace pasar por almacenamiento USB envía primero el archivo de firmware del fabricante y luego, en una segunda etapa, un firmware no oficial.
  • Hay una discusión interesante sobre intentos de aprovechar un servidor NAS. Se investigó cómo exponer el almacenamiento del NAS a una PS5 y una Xbox, y se descubrió que es posible montar un recurso compartido del NAS mediante iSCSI o NFS y exponer el almacenamiento a un host USB usando el módulo g_mass_storage. Sin embargo, el ancho de banda se convierte en el principal obstáculo, ya que la mejora de velocidad que aporta al sistema no es muy grande.
  • Hay un comentario sobre un intento de emular un HDI usando una Raspberry Pi. Se explica el proceso de buscar otro método porque la forma existente de enviar pulsaciones de teclado a un proceso de Windows daba problemas al enviar teclas modificadoras.
  • Hay un comentario que se muestra esperanzado ante la posibilidad de implementar una configuración tipo Synergy o Mouse Without Borders sin red, usando solo un cable USB. Esto resulta útil para quienes tienen que operar varias computadoras al mismo tiempo.
  • Hay un comentario sobre intentar una conexión de 10Gbps entre dos máquinas usando solo un cable USB-C. Señala que la mayoría de las placas Ryzen todavía no soportan Thunderbolt y que los controladores USB de “doble función” son poco comunes. También menciona que sería posible con USB 3.2/4.0, aunque el soporte es inestable.
  • Hay un comentario que dice que la capacidad de usar una PC como dispositivo USB abre posibilidades divertidas. Sin embargo, lamenta que la opción xDCI necesaria exista en el hardware pero solo se pueda acceder a ella mediante hacking del firmware.
  • Hay un comentario preguntándose si Lenovo usa esta tecnología para depurar una ThinkPad con otra ThinkPad. Incluye un enlace a la tecnología de depuración de Intel y un enlace a un video relacionado de YouTube.
  • Hay un comentario que considera engorroso lidiar con una Raspberry Pi. Sugiere configurar USB OTG y usar SSH para montar y establecer comandos. También anima a entender el propio dispositivo, leer el kernel e intentar resolver los problemas por cuenta propia.
  • Hay un comentario que dice que activó el interruptor xDCI en el BIOS, pero que el nodo del dispositivo UDC no apareció, así que tendrá que investigar más a fondo. Menciona que se inspiró en la publicación original y que hace falta seguir investigando.