
Framework de experimentação Bluetooth para chips Broadcom e Cypress.
Os chips Broadcom são utilizados em aproximadamente um bilhão de dispositivos, como todos os iPhones, MacBooks, a série Samsung Galaxy S, a antiga série Google Nexus, os Thinkpads antigos, Raspberry Pis, vários dispositivos IoT e muito mais. Em 2016, a Cypress adquiriu a divisão de IoT da Broadcom. Desde então, as variantes de firmware divergiram ligeiramente, pois a Broadcom manteve clientes não IoT, como Apple e Samsung. No entanto, a interação com o firmware e o mecanismo de atualização permaneceram os mesmos. Fizemos engenharia reversa de como os sistemas operacionais aplicam patches a esse firmware e interagem com ele. Com base nisso, desenvolvemos uma estrutura de experimentação Bluetooth, capaz de aplicar patches ao firmware. Isso permite vários recursos que, de outra forma, só seriam possíveis com uma implementação de rádio definido por software de pilha completa, como injetar e monitorar pacotes na camada de enlace.
InternalBlue não foi usado apenas em nossa própria pesquisa no Secure Mobile Networking Lab (SEEMOO). Além disso, o protótipo de ataque KNOB e BIAS foi implementado usando mensagens LMP do InternalBlue e os ataques SweynTooth também experimentaram o InternalBlue para criar mensagens LCP. Observe que, ao contrário de ferramentas como btlejack ou Ubertooth, o InternalBlue não tem como objetivo realizar ataques Machine-in-the-Middle. No entanto, o dispositivo que executa o InternalBlue pode enviar pacotes arbitrários e também injetá-los em conexões existentes. Durante o monitoramento, todos os pacotes recebidos pelo dispositivo que executa o InternalBlue são capturados, e não há perda de pacotes. O InternalBlue não tem problemas com a análise de conexões criptografadas ou Bluetooth Clássico. Se você tiver solicitações específicas de recursos para sua pesquisa de segurança, sinta-se à vontade para abrir um ticket.
Além da pesquisa de segurança, o InternalBlue também abre possibilidades para análises adicionais, como estatísticas e melhorias de desempenho do Bluetooth Low Energy. Qualquer coisa que possa ser melhorada em uma pilha Bluetooth pode ser testada diretamente em dispositivos comuns.
Nossa pesquisa recente apresenta o Frankenstein, que emula o firmware, incluindo troca de threads e entrada de modem virtual. O firmware emulado pode ser anexado a um host Linux. Assim, a abordagem é de pilha completa. Usamos principalmente para fuzzing e encontramos vulnerabilidades que incluem respostas do host a serem acionadas. O Frankenstein está em um repositório separado, mas depende do InternalBlue para capturar snapshots de estado etc. em um dispositivo físico.
Além disso, acabamos de publicar o Polypyus. Ele permite diffing binário somente com binários, independente do IDA e do Ghidra. No entanto, ele se integra a esse fluxo de trabalho identificando bons pontos de partida para análises adicionais. Já o testamos em vários firmwares Broadcom de Wi-Fi e Bluetooth.
Procurando por nossas medições do gerador de números aleatórios que fizemos durante a análise da CVE-2020-6616? Você pode encontrá-las aqui.
Há também alguns hooks mais dinâmicos para HCI com Frida no iOS e Android. Usamos isso para estudar o comportamento de aviso na interface do usuário em ataques MitM. Provavelmente útil para muitos outros experimentos, no entanto.
Devido ao Spectra 👻🌈 os comandos de escrita e leitura de RAM são desativados após a inicialização do driver. Soluções alternativas para isso estão descritas nas instruções correspondentes de Android e iOS, e bypasses para outros dispositivos serão fornecidos se necessário.
Copyright 2018-2021 The InternalBlue Team
A permissão é concedida, gratuitamente, a qualquer pessoa que obtenha uma cópia de este software e dos arquivos de documentação associados (o "Software"), para negociar o Software sem restrição, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar, publicar, distribuir, sublicenciar e/ou vender cópias do Software, e para permitir que as pessoas a quem o Software for fornecido o façam, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão devem ser incluídos em todas cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "NO ESTADO EM QUE SE ENCONTRA", SEM QUALQUER TIPO DE GARANTIA, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM NENHUM CASO OS AUTORES OU TITULARES DOS DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER REIVINDICAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.