1 pontos por GN⁺ 2025-01-18 | 1 comentários | Compartilhar no WhatsApp
  • Circulou a alegação de que um adaptador Ethernet-para-USB comprado na China vinha com malware embutido, mas os indícios confirmados se pareciam mais com o método de distribuição de driver de chips antigos RJ45-para-USB
  • Os “elementos em russo” no scan do CrowdStrike Falcon batiam com características do EXE autoextraível do 7-Zip de Igor Pavlov, e o conteúdo do arquivo também parecia corresponder ao driver público do SR9900 da CoreChips Shenzhen
  • O SR9900 é um chip sobre o qual quase não há informações, mas parece ser um clone direto do Realtek RTL8152B, o que combina com o contexto de dispositivos USB 2.0·100BASE-TX que forneciam drivers por armazenamento próprio na época do Windows 7
  • O flash SPI de 512 kB no formato 25x40 da PCB não se mostrou um repositório para captura de pacotes, mas sim uma configuração em que a ferramenta de produção grava diretamente uma imagem ISO 9660 e drivers do Windows para funcionar como um CD-ROM virtual
  • O código do microcontrolador USB·Ethernet interno do SR9900 continua sendo uma área não verificada, mas este caso isolado não oferece base suficiente para concluir imediatamente que “hardware estranho” é malicioso

O ponto de partida da suspeita de hardware malicioso na cadeia de suprimentos

  • No setor de segurança da informação, alegações de grande sabotagem na cadeia de suprimentos aparecem com frequência, mas parte-se da premissa de que, na prática, a maioria acaba sendo falsa
    • Não porque esse tipo de ataque seja impossível, mas porque é complexo, demorado e arriscado de executar
    • No mundo real, costuma ser mais simples roubar credenciais ou induzir alguém a baixar um arquivo malicioso
  • A polêmica cresceu quando um jovem fundador afirmou nas redes sociais que um adaptador Ethernet-para-USB comprado na China vinha pré-carregado com malware
    • A alegação incluía expressões como evasão de máquina virtual, captura de teclas e uso de elementos em russo
    • As publicações relacionadas tiveram milhões de visualizações, mas as informações técnicas concretas permaneceram pouco claras

Verificação do scan público e dos arquivos de driver

  • O relatório de scan do CrowdStrike Falcon compartilhado pelo autor da postagem era ambíguo e estava mais para pista confusa do que para evidência decisiva
  • O binário analisado era um EXE autoextraível baseado no 7-Zip, programa de compressão open source criado por Igor Pavlov
    • Os elementos em russo podem ser entendidos como traços ligados à nacionalidade do autor
    • O fato de ser um arquivo autoextraível que instala drivers explica boa parte do comportamento que pareceu suspeito
  • O conteúdo do arquivo parecia coincidir com o driver público assinado 2.0.7.0 para chips RJ45-para-USB fabricados pela CoreChips Shenzhen
    • No arquivo .inf incluído, a empresa também usa o nome Corechip Semiconductor

O chip SR9900 e o contexto de um projeto antigo

  • O driver faz referência ao chip SR9900
    • Quase não há informações públicas sobre o chip e seu fabricante
    • A investigação indicou que o SR9900 parecia ser um clone direto do Realtek RTL8152B
  • Uma apresentação de produto em inglês sugere que “SR” significa “Supereal”, e a marca Supereal também aparece no contexto dos antigos chips falsos FTDI FT232RL, que causaram problemas no setor
  • Essa linhagem importa porque o projeto original da Realtek é antigo, baseado em um datasheet de 2013
    • O dispositivo suporta 100BASE-TX e USB 2.0
    • Isso se encaixa nas práticas de periféricos da era do Windows 7
  • Naquela época, os drives de CD-ROM estavam desaparecendo, mas ainda não dava para presumir que todos os computadores estivessem sempre online
    • Alguns periféricos se apresentarem como dispositivos de armazenamento em massa contendo seus próprios drivers fazia sentido nesse contexto
    • Do ponto de vista de segurança, isso não era claramente melhor nem pior do que outros métodos improvisados de entregar arquivos de driver

O uso real do flash SPI

  • As fotos da desmontagem mostravam uma PCB simples com um CI de flash serial do tipo 25x40 montado ao lado do SR9900
    • A principal dúvida era se o flash de 512 kB servia para firmware ou para armazenar pacotes capturados
  • A documentação do SR9900 e do RTL8152B não explicava suficientemente a finalidade do CI de flash associado, e nem mesmo buscas por imagens de esquemas encontraram um projeto do chip original da Realtek com algo conectado aos pinos seriais
  • O próprio barramento SPI é simples
    • O host fornece o sinal de clock na velocidade desejada
    • A cada borda de subida do clock, o periférico lê 1 bit do “serial in”, e o host lê 1 bit do “serial out”
    • Não há handshake, cabeçalho, bit de paridade nem controle de fluxo
  • Uma leitura comum de flash serial consiste em enviar o comando READ 0x03 e um endereço de 3 bytes, depois receber os dados em sequência
    • Por isso, também era possível comprar o dongle real e despejar o conteúdo da memória
  • Após localizar o texto original em chinês no site da CoreChips e pesquisar mais, foram encontrados posts antigos em fóruns chineses e arquivos protegidos por senha e pagos relacionados à “ferramenta de produção em massa do chip série SR9900 para sistema Windows”
    • O arquivo “SR9900(A)设计资料1018.rar” foi obtido por US$ 2,99 para verificação
    • O pacote incluía a ferramenta de produção SR9900Efuse, com uma interface de estilo retrô
  • A imagem de sistema de arquivos ISO 9660 de 168 kB incluída continha um driver autoextraível para Windows
    • A ferramenta de produção grava o arquivo .iso diretamente no flash SPI
    • O chip passa a funcionar como um CD-ROM “definido por software”, substituindo um CD-ROM físico
    • A imagem de disco pode ser baixada aqui, e a senha é rj45
  • A imagem do CD-ROM foi criada com “ULTRAISO V9.3 CD & DVD CREATOR, (C) EZB SYSTEMS”
    • O UltraISO é apresentado como uma ferramenta com cara da era Windows XP
    • O requisito para execução informado é Intel Pentium 166MHz ou superior

Função opcional de CD-ROM virtual e limitações restantes

  • O arquivo principal também incluía o documento “SR9900(A)设计前必看.docx”
    • Segundo um trecho traduzido automaticamente, ao usar o SR9900 como placa de rede USB, é possível usar o SPI como drive óptico virtual para instalar o driver no Windows
    • O flash SPI pode ser previamente gravado com o driver do SR9900 para Windows
    • O uso do chip de flash é explicitamente opcional
  • O aspecto estranho neste caso parece vir não de um comportamento malicioso, mas de um método antigo de distribuição de drivers para periféricos
    • Mesmo sem um laboratório de hardware, foi possível resolver as dúvidas centrais apenas com pesquisa em material público e paciência
  • A área ainda não totalmente verificada são os dois pequenos núcleos de microcontrolador dentro do CI SR9900
    • Há núcleos internos para USB e Ethernet, e cada um executa seu próprio código interno
    • Se o fabricante do chip estivesse envolvido, talvez fosse possível inspecionar essa parte
    • A Realtek fornece um driver Linux open source para o RTL8152, e esse driver aplica patches de firmware a partir da memória
    • Visualmente, não parecia haver criptografia nem assinatura aplicada
  • Não é possível descartar completamente a possibilidade de um dongle USB malicioso
    • O texto menciona que, se você fosse um cientista do programa nuclear iraniano, isso seria motivo de preocupação
    • Se você fosse o CISO de uma empresa civil estrategicamente importante, algum nível de cautela seria apropriado
    • Em redes domésticas, porém, este caso por si só não oferece base para tratá-lo como ameaça imediata

1 comentários

 
GN⁺ 2025-01-18
Opiniões no Hacker News
  • Essa formulação é enganosa. O problema não era exatamente o chip falsificado em si, mas o fato de que, ao detectar uma falsificação, o driver oficial da FTDI alterava para 0000 o PID do hardware em funcionamento, fazendo com que ele não fosse mais reconhecido: http://www.rei-labs.net/changing-ftdi-pid/

    • Alguns funcionavam bem, mas entre os que eu tinha havia também um que se comportava de forma estranha nos pinos CBUS
    • Chips falsificados também eram uma dor de cabeça por criarem incerteza e se espalharem, contaminando vários tipos de dispositivos. Componentes falsificados que entram discretamente na cadeia são difíceis de aceitar
  • Ri da frase “requer Intel Pentium 166 MHz ou superior”. O texto também é divertido, e gosto muito desse gênero de “uma pessoa inteligente, entediada, vai até o fim investigando uma conclusão que parece óbvia pelo senso comum, mas cuja prova exige uma criatividade e persistência inesperadas”

    • Também não dá para deixar de fora a parte: eu estava pronto para ir à Dark Web (amazon.com) e comprar um dongle para despejar o conteúdo do chip de memória
    • É um bom exemplo de como a verdade é complexa, cara e inconveniente. Supor, sem provas, um agente estatal maligno com um plano ruim é muito mais fácil do que entrar no matagal como neste texto, e também sai muito mais barato em tempo e conhecimento técnico
      Também é mais confortável dizer que se é vítima e que se descobriu uma conspiração do que aceitar que isso era apenas um resultado remendado, comum em engenharia. Aplausos ao autor
    • Além de divertido, acho esse tipo de trabalho importante por expor a xenofobia por trás do texto original. Há um chip flash numa placa de circuito? Meu Deus, só pode ser spyware chinês!
      Não estou dizendo que spyware chinês não seja um problema. Mas, se você não tem a competência técnica básica para distinguir isso, não deveria sair correndo por aí gritando “China! China! China!”. É assim que políticos pegam fake news e as usam como desculpa para políticas idiotas, e isso é prejudicial à sociedade
  • Assim que vi o tuíte sobre esse dongle “malicioso”, reconheci que era exatamente o mesmo item com o qual eu já tinha trabalhado. Em vez de malicioso, ele é só irritante
    https://blog.brixit.nl/making-a-usb-ethernet-adapter-work-sr...
    No meu caso, desativei o módulo de flash SPI para que ele não aparecesse como unidade de CD, mas o autor deste texto chegou a encontrar documentação dizendo que o SPI era opcional. Curiosamente, agora o texto também fornece uma ferramenta para reflashear e criar um verdadeiro dongle RJ45 malicioso

    • O que aconteceu com o U3 no canto superior esquerdo da foto do chip flash?
      Parece que colocaram um footprint de diodo para encapsulamento SOT23 de 3 pinos e, por não terem estoque do componente especial, soldaram um diodo SOD323 inclinado uns 30 graus entre dois pinos
    • É irônico. Tenho certeza de que a maioria dos problemas de segurança é criada por pessoas bem-intencionadas que desmontam hardware e software e explicam como “hackeá-los”
      Se foi uma consequência não intencional, no máximo era segurança por obscuridade desde o início, e o correto é que isso venha à tona para que as pessoas não dependam dela
    • Será que dá para adicionar um autorun.inf ao CD falso?
    • Por que colocar CS e S0 em curto faz ele parar de funcionar?
  • Gosto bastante da abordagem em que um dispositivo USB se faz passar por armazenamento e fornece seu próprio driver. A forma “correta” hoje em dia provavelmente seria colocar coisas nos servidores da Microsoft e fazer o sistema baixar o necessário quando o dispositivo for conectado, mas já lidei o suficiente com equipamentos que exigem instalação manual de driver para saber que isso não é tão simples quanto parece. Por exemplo, preciso baixar drivers ADB específicos de fornecedores com muita frequência
    De qualquer forma, é uma abordagem esperta quando o periférico ajuda na configuração inicial, e ter o driver dentro do dispositivo é um pouco mais fácil do que sair procurando a fonte oficial de download

    • Melhor ainda são dispositivos que nem precisam de driver próprio. Existem coisas que precisam de drivers especiais, mas itens como pendrives USB ou mouses devem simplesmente funcionar com drivers padrão e, se a pessoa quiser, receber atualizações pela internet
    • Agradeço mais quando funciona de imediato no Linux. Na prática, a maioria funciona assim, e hoje vejo o Linux como o melhor sistema operacional em plug and play
      Mas vários modos de operação tornaram difícil configurar dispositivos como dongles USB 4G/LTE. Eles aparecem como armazenamento USB, ou como algum tipo de dispositivo serial, ou como algo parecido com um modem CDC-ACM, e para alternar para o modo correto é preciso combinar ferramentas e comandos AT específicos do fornecedor. Eu queria voltar a dispositivos simples que fazem seu trabalho assim que são conectados
    • Neste caso, faz um pouco mais de sentido, porque, se você precisa instalar o driver de um dongle RJ45, é bem provável que esteja em uma situação sem conexão de rede
    • Seria algo parecido com NuBus? Se me lembro bem, placas para os primeiros Macintosh normalmente traziam pelo menos um driver básico mínimo na ROM, escrito em Forth ou em assembly 680x0
  • Não sei qual é o estado da arte hoje, mas por muito tempo foi comum acoplar uma pequena flash a ICs de periféricos USB para armazenar VID/PID e outras informações de configuração USB. Assim, quando conectado, o dispositivo podia ser enumerado corretamente e associado ao driver certo. Dependendo da época do projeto, a menor capacidade facilmente disponível na cadeia de suprimentos talvez fosse 512 kB, então não seria estranho usar um chip desses para armazenar algumas dezenas de bytes
    A parte do ISO é um pouco estranha, mas, sendo sincero, é uma forma criativa de contornar políticas corporativas de segurança de TI que restringem dispositivos USB de armazenamento em massa. Unidades ópticas usam outra classe de dispositivo e provavelmente escapam da maioria das restrições; se forem enumeradas como um dispositivo composto que combina unidade óptica e adaptador de rede, parece possível instalar seu próprio driver até em computadores onde “USB drives” estejam bloqueados

    • Por um tempo, o Windows executava o autorun de discos com mais facilidade do que o de pendrives USB. Mesmo quando esse disco estava dentro de uma unidade de disco USB emulada
  • O estranho é que eles gastaram dinheiro adicionando flash, mas removeram os componentes de isolamento magnético. Só há capacitores em série, o conector é pequeno demais para parecer ter componentes magnéticos integrados, e incluir capacitores em série junto com isso também não faz sentido

    • Uau, boa observação. Parece que a PCB foi projetada para aceitar ou os componentes magnéticos ou os capacitores em série, e o lado dos capacitores deveria ter sido marcado como DNP
      Eu ficaria realmente irritado se descobrisse que o dongle USB Ethernet que comprei não tem componentes de isolamento magnético
  • Existem dongles USB Ethernet “maliciosos”? Claro que existem. Só que este produto não é um deles
    https://hak5.org/products/lan-turtle

    • O próprio texto reconhece isso explicitamente: há muitos precedentes de hardware malicioso sendo usado tanto por agências de inteligência quanto por pentesters civis, e, cerca de 10 anos atrás, o autor também fez uma bola de plasma maliciosa para uso profissional. A pergunta importante aqui não era se é possível criar um adaptador RJ45-USB malicioso, mas se este item era mesmo mais um caso de “a China fez de novo”
    • Também não dá para deixar de fora cabos de patch Ethernet maliciosos: https://imgur.com/Gpgj7w7
  • Do ponto de vista de um purista de RJ45, isto deveria ser chamado de 8P8C. Vou me retirar

    • Chamar o conector de RJ45 tudo bem, mas quando chamam este item de “dongle RJ45”, minha pálpebra começa a tremer. Isto é um dongle Ethernet. RJ45 pode ser usado para várias outras coisas
      Por exemplo, já vi “dongles RJ45” que convertem USB para serial RS232 para portas de console de muitos equipamentos de rede
    • Aprendi hoje. Uso esse conector há uns 25 anos e foi a primeira vez que ouvi chamarem de 8P8C. Eu sabia que Ethernet já tinha usado outras camadas físicas, assim como se usava cabo coaxial para conectar Amigas entre si antigamente, mas só hoje conheci o 8P8C
    • Quem estudou Network+ parece ficar em dúvida toda vez que RJ45 é mencionado: comenta isso ou não?
    • Não vá embora; fique e continue explicando. É importante. Porque os dois não são conceitos intercambiáveis nos dois sentidos
    • Também existem RJ31X e RJ38X. Ambos usavam conectores modulares 8P8C em uma configuração sem chave
  • Para quem se importa com desempenho em USB-1000BASE-T e, hoje em dia, dongles 2.5GBaseT em geral, é bom saber a diferença entre ser um dispositivo USB e ser um dispositivo PCI Express
    Depois de conectar a quente em um notebook com um kernel Linux recente, basta ver se ele aparece em sudo lsusb -v ou em sudo lspci -v
    Dispositivos PCIe nativos entregam desempenho muito melhor, chegam até a velocidade de linha de 2.5GBASE-T e se comunicam com o host por meio de uma implementação de Thunderbolt sobre USB. Dispositivos exclusivamente USB também podem funcionar razoavelmente bem, mas há um motivo para serem baratos. Claro, notebooks de baixo custo talvez nem tenham implementação de Thunderbolt, então isso também precisa ser levado em conta

    • Não existe só 2.5GBaseT. Eu tenho o dongle Thunderbolt 10GBase-T de [1]. Ele é um pouco maior que dongles comuns, tem uma porta USB-C fêmea em vez de um cabo embutido e esquenta
      Mesmo assim, basicamente ainda é um dongle e, no Mac, chega a 9,4 Gbit/s com iperf3. Naturalmente, aparece como um dispositivo PCIe
      [1] https://www.amazon.com/gp/product/B0DHSWSSBY
    • Você poderia explicar em mais detalhes por que a abordagem USB é pior? Segundo a Wikipedia, o USB 3.0 de 2008 já conseguia chegar a 5 Gbit/s, então, ingenuamente, parece que deveria ser fácil atingir velocidade de linha em 2.5GbE
    • O Realtek RTL8156, ou seja, Ethernet USB 2.5G, é rápido e muito estável. Serve bem até para uso em servidor, e eu escolheria ele em vez do i225
    • Se não for Thunderbolt/USB4, não existe PCIe via USB, certo? Ou existe alguma outra coisa?
      Se você só tem uma porta USB e se importa com desempenho, a diferença maior provavelmente é se o dispositivo Ethernet USB implementa CDC-NCM ou apenas CDC-ECM. O CDC-ECM envia os frames um a um para o driver, e o driver precisa confirmar e processar um por um, gerando bastante trabalho de CPU; já o CDC-NCM, mais recente, envia os frames em lotes
      No meu notebook, mesmo um dongle ECM de 1 Gbit chega à velocidade de gigabit, mas usa 100% de um núcleo de CPU; um dongle NCM de 1 Gbit quase não usa CPU
    • Se eu comprasse por engano um dongle no modo PCIe, acho que ele não funcionaria em nenhuma porta USB que eu tenho. Pelo que sei, só tenho portas USB. Ou normalmente ele faz fallback para dispositivo USB e funciona?
  • Criar uma conexão prejudicial por uma porta Ethernet é extremamente difícil, mas criar uma conexão prejudicial por uma porta USB é muito fácil. Deve-se chamar as coisas pelo que são. Isto é um dongle USB malicioso que também tem um soquete Ethernet