1 pontos por GN⁺ 2024-02-24 | 1 comentários | Compartilhar no WhatsApp

Desbloqueando o recurso oculto do ThinkPad: emulação de dispositivo USB

  • Foi descoberto como transformar um notebook ThinkPad X1 Carbon de 6ª geração em um dispositivo USB programável.
  • Ao ativar o controlador xDCI, torna-se possível emular dispositivos USB arbitrários, como teclado, unidade de armazenamento etc.
  • É possível usar RawGadget e syzkaller para fazer fuzzing de hosts USB ou executar o Facedancer.
  • Tudo isso pode ser feito sem hardware externo.

Introdução

  • Raw Gadget é um módulo do kernel Linux para emular dispositivos USB altamente personalizáveis.
  • Para emular um dispositivo USB, é necessário um componente especial de hardware chamado USB Device Controller (UDC).
  • Em geral, PCs não têm UDC, e ele costuma vir embutido em computadores de placa única, como o Raspberry Pi.

Investigação

  • Ao investigar o código do kernel Linux relacionado ao controlador xHCI, foi descoberto que dispositivos xHCI oferecem suporte à troca de função.
  • Por meio de buscas online, foram encontradas discussões sobre a troca de função em dispositivos xHCI.
  • O ACPI foi verificado para confirmar se o xDCI estava ativado no ACPI.

Ativando o xDCI

  • Não foi encontrada nenhuma configuração relacionada ao xDCI nas opções da BIOS.
  • Ao inspecionar diretamente a imagem da BIOS, foi descoberto que as configurações relacionadas ao xDCI estavam ocultas.

Usando o xDCI

  • O xDCI foi ativado pela configuração Advanced da BIOS.
  • Foi confirmado que o dispositivo xDCI aparecia no lspci.

Resumo

  • Foi descoberto como ativar a funcionalidade oculta de controlador de dispositivo USB no notebook ThinkPad X1 Carbon de 6ª geração.
  • Com isso, o notebook passou a poder emular vários tipos de dispositivos USB.

Considerações finais

  • A ativação do xDCI permitiu explorar novas possibilidades de uso para o notebook.

Opinião do GN⁺

  1. Este artigo abre uma nova frente para hacking de hardware e customização ao mostrar como ativar um recurso oculto de notebooks ThinkPad para emular dispositivos USB.
  2. Como tarefas que antes exigiam hardware separado agora podem ser feitas com apenas um notebook, isso pode ser de grande ajuda para desenvolvedores e pesquisadores.
  3. O texto propõe um desafio interessante para pessoas com curiosidade técnica e ajuda a explorar como aproveitar ao máximo o potencial de dispositivos já existentes.

1 comentários

 
GN⁺ 2024-02-24
Comentários do Hacker News
  • Há um comentário se perguntando por que não é possível usar um notebook como teclado e monitor de outro computador. Ao fazer manutenção em máquinas headless, o notebook já acaba cumprindo esse papel, então comprar outro equipamento parece algo meio absurdo.
  • Há um comentário relembrando casos em que smart TVs recebiam atualizações de firmware por arquivos em um pendrive USB. O método consistia em um dispositivo que se passava por armazenamento USB, enviando primeiro o arquivo de firmware do fabricante e depois, numa segunda etapa, o firmware não oficial.
  • Há uma discussão interessante sobre tentativas de aproveitar um servidor NAS. A pessoa pesquisou maneiras de expor o armazenamento do NAS para PS5 e Xbox, descobrindo que é possível montar compartilhamentos do NAS via iSCSI ou NFS e usar o módulo g_mass_storage para expor o armazenamento a um host USB. Porém, a largura de banda acaba sendo o principal obstáculo, já que o ganho de velocidade oferecido ao sistema não é tão grande.
  • Há um comentário sobre uma tentativa de emular HDI usando um Raspberry Pi. Ele descreve a busca por outro método depois que a abordagem anterior, de enviar entradas de teclado para um processo do Windows, apresentou problemas ao enviar teclas modificadoras.
  • Há um comentário dizendo que isso dá esperança de implementar uma configuração parecida com Synergy ou Mouse Without Borders sem rede, usando apenas um cabo USB. Isso seria útil para quem precisa operar vários computadores ao mesmo tempo.
  • Há um comentário sobre a tentativa de obter uma conexão de 10 Gbps entre duas máquinas usando apenas um cabo USB-C. Ele observa que a maioria das placas Ryzen ainda não oferece suporte a Thunderbolt e que controladores USB de “dupla função” são raros. Também menciona que isso seria possível em USB 3.2/4.0, mas com suporte instável.
  • Há um comentário dizendo que a capacidade de usar um PC como dispositivo USB abre possibilidades interessantes. Ao mesmo tempo, lamenta que a opção xDCI necessária exista no hardware, mas só possa ser acessada por meio de hacking de firmware.
  • Há um comentário perguntando se a Lenovo usa essa tecnologia para depurar um ThinkPad com outro ThinkPad. Ele inclui um link para a tecnologia de depuração da Intel e um link para um vídeo relacionado no YouTube.
  • Há um comentário dizendo que lidar com Raspberry Pi parece trabalhoso. Ele sugere configurar USB OTG e usar SSH para ajustar montagens e comandos. O teor da mensagem incentiva a entender o próprio dispositivo, ler o kernel e se esforçar para resolver os problemas por conta própria.
  • Há um comentário dizendo que ativou a chave xDCI na BIOS, mas o nó de dispositivo UDC não apareceu, então será preciso investigar mais a fundo. Também menciona que o post original serviu de inspiração para uma investigação adicional.