Conferência DEFCON 27. Buttplug: True Penetration Testing. Parte 1

Os analistas acreditam que atualmente existem cerca de 10 bilhões de dispositivos do mundo da Internet das Coisas (IoT). Às vezes, esses dispositivos ganham seu lugar no mercado, literalmente subindo no traseiro humano. Como se viu, chips de rádio baratos e de baixa potência não são ótimos apenas para automação residencial - eles também mudam a maneira como as pessoas interagem com brinquedos sexuais. Neste relatório, mergulharemos no mundo das dildônicas da televisão, a tecnologia do sexo a uma distância na qual tátil, temperatura e outras sensações são transmitidas entre os parceiros através de uma linha de comunicação bidirecional. O orador lhe dirá que a segurança dos brinquedos sexuais anal eletrônicos eletrônicos Buttplug pode se opor a um invasor que encontra e explora vulnerabilidades em cada nível da pilha. Por fim, isso permite que os brinquedos sexuais sejam comprometidos,e os dispositivos aos quais eles se conectam.



Um hacker com o apelido smea, ou Smealum, iniciou sua carreira como desenvolvedor de videogames para consoles de jogos como o Nintendo DS, tentando simultaneamente decifrá-los. Em algum momento, os consoles adquiriram sistemas de segurança sérios, e Smea passou do software doméstico para o desenvolvimento de técnicas para quebrá-lo. Smea é conhecido por seu "trabalho" no Nintendo 3DS e no Wii U, embora também tenha contribuído para o desenvolvimento de explorações para os mais populares navegadores da Web e pilhas de virtualização. Provavelmente, agora ele se interessou em invadir plugues anal "inteligentes".

Olá pessoal, eu sou Smia, e hoje falaremos sobre como quebrar um plug de inicialização. Este é um objeto que tenho na mão, não sei se você já viu antes, pessoalmente não. Mas, nos últimos dois anos, conheci muitos representantes interessantes da indústria da Internet das Coisas, e agora chegou a vez disso. Você pode estar se perguntando como pode quebrar um bootplag, porque é apenas um pedaço de silicone que precisa ser inserido em algum lugar, e você concorda que não há muitos lugares para isso.

De fato, isso não requer nenhum componente eletrônico. Mas, nos últimos anos, ou mesmo décadas, surgiu uma nova indústria de dispositivos eletrônicos chamada teledildonika. A origem desse termo é mostrada no slide: a palavra grega "tele" significa "de longe" e o inglês "dildo" significa apenas um vibrador. Tentei encontrar a origem da palavra vibrador, mas ninguém sabe de onde ela veio. Mas isso é compreensível, certo? A idéia é que você queira fazer brinquedos sexuais que de alguma forma possam ser controlados à distância.

Existem vários cenários para isso. Eu só quero explicar como isso funciona, porque nem todos estão familiarizados com esses dispositivos. Então, você pega o bootplag, insira-o quando necessário e pode controlá-lo remotamente de onde quiser - do seu telefone, laptop etc. Este é o primeiro cenário chamado "jogo solo". O segundo cenário que chamei de "multiplayer local" - é quando você transfere o controle dessa coisa para outra pessoa. Isso é algo bastante real que geralmente é anunciado - você pode, por exemplo, ir a um bar com ela e ninguém saberá como é divertido. Mas tecnicamente, isso cria um novo vetor de ataque, porque você dá o controle do dispositivo a alguém de fora, e aqui o modelo de ameaça realmente muda.

O terceiro cenário, "multiplayer remoto", é semelhante ao segundo, só que agora você permite que outra pessoa controle o dispositivo pela Internet. Lembre-se de que essa pessoa pode ser um estranho.



Para muitos, fazer sexo à distância parece bem legal e divertido, e não vou brincar sobre isso. Alguns usam teledildonics para ganhar a vida, e o cenário 3B é chamado de "multiplayer pago remoto". Portanto, o fato de eu estar tentando quebrar o plug anal não é apenas entretenimento - isso dá aos meus estudos de penetração uma certa justificativa.



Muitas pessoas, não sei como chamá-las - meninos, meninas - oferecem entretenimento sexual dinâmico na Internet, permitindo que outras pessoas controlem seus brinquedos sexuais por dinheiro. A empresa que produz essas bundas possui uma patente para o conceito de dedução de lucros ao usar seus produtos para jogos sexuais na Internet. Nesse cenário, para deduções de US $ 5, você tem o direito de colocar um link, por exemplo, no Twitter, para fornecer a alguém a oportunidade de gerenciar seu bootplag por um tempo limitado. Como as pessoas confiam nesses brinquedos como ferramentas para ganhar dinheiro, na minha opinião, é muito importante considerar sua segurança.

Vejamos cenários que são de interesse dos invasores. O primeiro é um hack local, quando um invasor que está ao alcance do dispositivo intercepta o controle por meio de comunicação sem fio. Houve muita pesquisa sobre esse método de hackers, por isso não ficaremos presos à nossa atenção.



Tecnicamente, essa intervenção pode ser considerada abuso sexual; portanto, seja legal ou não, não tente fazê-lo. De acordo com o cenário a seguir, um invasor faz a mesma coisa, mas remotamente, pela Internet. Como eu já disse, se você ganhar assim, poderá muito bem fornecer voluntariamente a um estranho - um atacante com acesso remoto ao seu brinquedo sexual.

Isso significa que um hacker pode comprometer seus brinquedos sexuais "inteligentes" ou dispositivos relacionados, em suma, fazer algo ruim para você e é completamente legal, já que você mesmo deu a ele acesso. Para um hacker, essa é uma opção mais interessante, por isso permaneceremos nela por mais um tempo.



O terceiro cenário é o oposto - o próprio invasor usa o plug-in de inicialização para controlar um computador ou telefone e hackear dispositivos localizados na lateral do usuário que participa remotamente de jogos com o plug-in. As pessoas não entendem que isso é um risco real, mas você provavelmente imagina como as bucetas podem ser insidiosas (risos no corredor). Também estamos explorando esse cenário.



Agora que você tem uma idéia do mundo da teledildonics, vejamos como fica na prática. No slide, você vê um modelo de vibrador chamado Lovense Hush, e mais tarde mostrarei uma demonstração com essa coisa no ar. Este é o primeiro modelo de dildo-teledildonics do mundo, um plugue anal que pode ser controlado a partir do seu telefone ou computador. Existem aplicativos para IoS e Android para esse problema, você pode controlá-lo em um computador executando o Mac OS e o Windows. Os aplicativos móveis oferecem suporte a recursos sociais, como bate-papo, compartilhamento de texto, fotos, vídeos e controle de brinquedos com amigos ou estranhos.



No Windows, você precisa usar uma chave USB especial, que mostrarei mais adiante, porque agora este plug-in de inicialização está conectado ao meu computador. A chave do flash drive eletrônico foi desenvolvida pela mesma empresa, “Lovens”, fabricante de um plug-in de inicialização que criou seu próprio ecossistema de vibradores “inteligentes” e gasta cerca de US $ 5 em comissão por uma sessão na Internet.



O slide a seguir mostra minha visão de um ataque a um plug-in de inicialização usando um aplicativo para PC. Há uma conexão BLE (BlueTooth Low Energy) entre o plug de inicialização e a chave USB, a chave está conectada ao computador do usuário, que por sua vez está conectado à Internet. O cenário nº 1 é usado por um invasor na seção de chave USB do plug-in de inicialização, ou seja, a conexão BLE é atacada. De fato, não há proteção, para que qualquer estranho possa assumir o controle deste brinquedo. No ano passado, houve uma discussão séria sobre uma ferramenta chamada BTLE Jack, que permite atacar com êxito essa conexão.



O cenário nº 2 consiste em atacar uma seção da conexão com a Internet do computador de um usuário. O terceiro cenário é uma tentativa de invadir qualquer um dos três sites: BLE, USB, Internet. É provável que exista um projeto aberto Buttplug ... você pode rir, foi uma piada. Então, por onde começamos nosso "verdadeiro teste de penetração"?



Não encontrei códigos ou binários para o vibrador e o dongle, mas existem arquivos de aplicativos binários para dispositivos móveis e um computador disponível para download na Internet. Eu instalei esses arquivos no meu computador e comecei a trabalhar neles. No próximo slide, você verá a interface do aplicativo para gerenciar o plug-in de inicialização. No centro da tela, há um controle deslizante para ajustar a vibração do brinquedo e, à esquerda, o painel de controle com botões - acesso à conta, modo de controle na rede local, modo de controle remoto via Internet. Para entender a estrutura do aplicativo, você só precisa ler um pouco de código JavaScript confuso.



Não gosto de JavaScript, mas o que há de bom nisso é a presença de vários nomes de variáveis ​​e nomes de campos de objetos, e tudo isso é de engenharia reversa perfeitamente. Basta soltar o código no Beautifier e descobrir como ele funciona. Depois de fazer isso, você pode começar a entender o funcionamento da chave eletrônica.



Descobrindo que essa é apenas uma porta serial para conexão via USB, comecei a cheirar o tráfego entre a chave e o aplicativo. Preste atenção nas linhas à direita do slide - antes de tudo, notei que as mensagens entre o dongle e o aplicativo estavam no formato de texto JSON. Para código JavaScript, isso é familiar, mas para uma chave USB, que é um microcontrolador de 32 bits, a incorporação do analisador JSON parece estranha ... Para nós, é muito conveniente, porque os analisadores JSON geralmente contêm bugs de firmware que podem ser usados.



No entanto, encontrar bugs sem o código da chave em si é uma tarefa tediosa, mas como eu tinha o código do aplicativo, comecei a procurar um mecanismo para atualizar o firmware da chave USB e logo encontrei o que queria - a URL do nó de atualização. Aconteceu que o firmware não estava criptografado ou assinado de forma alguma, então eu apenas o baixei e peguei um binário para análise.



Então eu comecei a engenharia reversa e chamei a atenção para duas coisas. Em primeiro lugar, existem 2 manipuladores de comando para a porta USB serial. O primeiro usa comandos simples, como redefinir ou tipo de dispositivo, o segundo usa comandos como DFU para atualizar o firmware do dispositivo, para que possamos enviar esses comandos e atualizar o firmware.



Tendo examinado o analisador JSON, que é de maior interesse para nós, descobri o bug esperado - a função parseJsonString. Ele só precisa alocar uma cópia da string original em um novo buffer e também trabalhar com coisas como sequências de escape. Ao calcular o comprimento do novo buffer, ele não corresponde ao comprimento real usado.



Esta função funciona assim: suporta uma sequência de escape de 5 parâmetros U em vez de, como esperado, igualando-os a 0. Graças a isso, podemos evitar uma string terminada em nulo e tornar incorreto o comprimento da primeira string calculada.



Esta pequena animação mostra o que está acontecendo aqui. A barra invertida antes de U significa que 6 caracteres devem ser descartados. Em seguida, a função salta pelo terminador nulo, o que é um problema. Em seguida, o processo continua, todos os caracteres são copiados e caem no buffer com um comprimento de apenas 6 bytes. Aqui o segundo problema aparece - o risco de estouros de buffer. Isso é ótimo, mas ainda não sabemos como o hardware do dongle funciona.



Temos certeza de que ele não possui randomização do espaço de endereço ASLR, nenhuma pilha de cookies, mas é possível que a chave tenha proteção, como prevenção de execução de dados DEP ou proteção XN, que impede a execução de código na memória, exceto na região .text.

A chave é equipada com um chip SoC NRF51822 com um processador Cortex M0, sem proteção DEP, muito popular para dispositivos BLE e equipada com vários contatos de depuração. Portanto, é bastante simples conectar-se a essa chave soldando algumas coisas e fazer depuração na interface para depurar e piscar chips SWD, se não estiver desativado nas configurações de fábrica. Ao conectar via SWD, podemos liberar o conteúdo da pilha.

Acontece que ele é usado apenas para o analisador JSON, o que não é muito interessante, mas o heap contém metadados. Então, o que pode ser estragado aqui? Claro, metadados da pilha! Dessa forma, criamos uma exploração para o analisador JSON.



Uma pilha é apenas uma lista grátis. Se você olhar para este código, poderá ver que cada distribuição tem seu próprio comprimento e ponteiro. Se você usar o estouro de buffer, poderá arruinar o comprimento e a posição do próximo ponteiro, o que permite controlar o local da próxima distribuição. Ao copiar uma nova linha para ele, você pode organizar facilmente dados arbitrários em um local arbitrário. Tudo isso pode ser feito enquanto o depurador estiver conectado.



No lado direito do slide, você vê uma pilha que é redefinida e completamente substituída com apenas 8 caracteres. Isso nos dá a execução do código da chave USB, o que é bem legal.
Lembrei-me de que, infelizmente, este dongle possui um modo de atualização de firmware DFU de emergência. Eu esperava que, por analogia com os consoles de jogos de hackers, esse modo sirva para autenticar a atualização de qualquer maneira possível. Acontece que aqui o DFU usa o cálculo clássico de soma de verificação CRC16, que, se você entender criptografia, não é autenticação de nenhum tipo. Eu não acho que eles realmente quisessem usar autenticação nesse caso, provavelmente eles apenas decidiram que poucas pessoas estariam interessadas em executar o código da chave USB para o plug de inicialização. No entanto, isso me interessou.



No momento, eu tinha duas maneiras diferentes de executar código neste dispositivo, mas a confusão com o analisador JSON, no qual passei muito tempo, acabou não sendo particularmente eficaz devido à presença do modo DFU. Mais tarde, consideraremos esse método juntamente com a vulnerabilidade do analisador existente. Até agora, fiquei mais interessado em saber se é possível simplesmente modificar o arquivo main.bin, recalcular seu CRC16 e incorporá-lo usando o programa incluído no aplicativo Remoto Lovense. Descobriu-se que é possível.
Como resultado, obtivemos uma chave USB que foi comprometida pelo uso de um aplicativo para PC e foi definitivamente a parte mais fácil de quebrar. Tendo adquirido o controle da chave, comecei a procurar uma maneira de executar o código no próprio plug-in.



Para fazer isso, virei para o "hardware" do nosso brinquedo sexual - provavelmente também tinha um depurador e valia a pena dar uma olhada. Tendo examinado o plug de inicialização, encontrei um chip mais sério, com uma grande quantidade de memória flash e RAM e um processador Cortex M4 mais poderoso.

Eu facilmente descobri o que estava faltando e o que estava a bordo do bootplag. Não há DEP, como em um dongle, na parte superior há fios que levam à bateria, a seguir está a porta de carregamento, contatos do motor vibrador, várias almofadas de contato para depuração e uma antena Bluetooth. Assim, graças à presença de SWD, o dispositivo pode ser facilmente refluído.



Você vê o que aconteceu - eu não tenho acionista, mas na bolsa sempre haverá um monte de buchas para experiências. Então eu comecei a engenharia reversa e depurando o bootplag, redefinindo o firmware original. Não havia analisadores JSON, apenas comandos simples, mas em grandes números.

Eu pensei que, se o modo de atualização de firmware do dongle fosse tão inseguro, é possível que haja vulnerabilidades. Acabou do jeito que está. Como resultado da pesquisa do DFU, encontrei duas coisas: o manipulador de comandos DFU comum e a linha DfuTarg no setor de inicialização. Esse DfuTarg é usado da mesma maneira que o identificador do plug-in de inicialização do LVS-Z00, ou seja, é semelhante ao gerenciador de inicialização do DFU para BLE. Portanto, no modo DFU, o registro de inicialização é reconhecido como um dispositivo com o nome DfuTarg, e esse identificador exclusivo pode ser usado para procurar o dispositivo.
Portanto, se você enviar exatamente a ele o mesmo comando DFU que enviamos para a chave, o bootplag entrará no modo de atualização de firmware do dispositivo. Para piscar, você pode usar as ferramentas proprietárias do fabricante do microcircuito Nordic Semiconductor - nRF Toolbox.



Usando um sniffer de hardware, você pode visualizar pacotes BLE no Wireshark.



Enviei uma mensagem curta “olá do plug”, e isso significa que você pode executar o código no batplag sem hackers, e isso não é uma vulnerabilidade, mas simplesmente um tipo de design de desenvolvedor que permite atualizar o dispositivo. Talvez a comunidade de código aberto queira essa solução. A conclusão é que qualquer pessoa que possa se conectar ao seu plug-in de inicialização poderá executar seu próprio código nele, e isso já é uma coisa bastante perigosa. Nesse caso, o hacker deve estar na área da conexão local, ou seja, estar próximo o suficiente do brinquedo sexual para obter controle sobre ele através de um dongle comprometido e um canal BLE. Ao mesmo tempo, você pode usar o dongle em si ou qualquer outro dispositivo BLE.



A questão é: o que realmente pode ser feito com o plug-in de inicialização, tendo a oportunidade de executar seu próprio código nele? Eu tenho algumas ideias. O primeiro - assumindo o controle dessa coisa, você pode criar um rótulo de inicialização de ransomware. Você pode modificar o firmware para que o usuário não possa ativar o modo DFU até que você forneça uma determinada chave ou simplesmente desligue a função de vibração e peça 50 dólares para desbloquear este dispositivo útil.



Para muitos, isso servirá como um tipo de vacina do uso desses brinquedos. A segunda idéia é transformar o bootplag em uma arma. Possui uma bateria bastante potente que alimenta o motor vibrador, podemos dizer que 80% do conteúdo do plug de inicialização é uma bateria. Você provavelmente se lembra do que aconteceu com os smartphones Samsung Galaxy Note - eles simplesmente explodiram (risos), por isso é provável que isso possa acontecer com as buchas. Não sei qual é a probabilidade da explosão, mas se você tem muitos brinquedos sexuais com motor, deve pensar nisso. A equipe de desenvolvimento afirma que essas coisas são absolutamente seguras, apesar da presença de muitas partes móveis. Mas, se esse for o caso, o recurso de segurança do dispositivo será codificado em software, não em hardware.Nesse caso, a execução de código malicioso pode ter consequências desastrosas.

Brinquedos sexuais equipados com uma bomba de ar também são perigosos. Eles também têm um motor bastante potente com uma bateria, portanto, você também deve prestar atenção neles.
Finalmente, a última idéia é um plug-in de batalha hostil. Hostil, não no sentido de que é capaz de explodir sua bunda, mas no fato de que pode servir como um meio de invadir o resto de seus dispositivos. Portanto, consideraremos o plug-in de batalha do ponto de vista de sua hostilidade, garantida pela execução de código malicioso.

Vamos tentar descobrir se é possível obter a execução de código no aplicativo para o plug-in de inicialização, considerando como ele processa as mensagens recebidas.



À esquerda, você vê um retorno de chamada em JavaScript e à direita, como ele interage com o aplicativo através da porta serial. O retorno de chamada é colocado em uma sequência e processado por várias funções diferentes.

A primeira função é encontrar a chave, ela processa as mensagens de inicialização provenientes da chave. A segunda função está ativada ("Dados"), uma função de processamento que aceita um pacote JSON de entrada, cujo comprimento, a propósito, não pode exceder 32 caracteres. Em seguida, a análise e tudo o mais é feito. De fato, não há processamento sério aqui - apenas uma solicitação é feita para o status do dispositivo, verificando a carga da bateria e outras despesas gerais.

A última função é muito mais interessante - eu chamo de log de depuração, embora na verdade não tenha nome no código real. Esta função registra tudo o que entra no dispositivo através da porta serial e redefine essas linhas para o console, que, se necessário, exibe uma mensagem de erro. Além disso, essa função cria um novo elemento DOM como um elemento HTML e lança todo o conteúdo recebido pela porta serial nesse HTML. Não sou desenvolvedor web, mas acho que essa é uma vulnerabilidade séria ao XSS.

Portanto, se você tiver controle sobre o dongle, poderá enviar qualquer coisa pela porta serial, forçando o aplicativo a interpretar isso como HTML. Esse é o problema, porque o HTML tem a capacidade de criar um novo código JavaScript em um aplicativo instalado no seu computador, ou seja, pode comprometê-lo. A questão é: qual malware pode ser inventado, sabendo que apenas 32 caracteres são permitidos por vez.

22:00 min

Conferência DEFCON 27. Buttplug: teste de penetração genuíno. Parte 2


Um pouco de publicidade :)


Obrigado por ficar com a gente. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando aos seus amigos o VPS baseado em nuvem para desenvolvedores a partir de US $ 4,99 , um analógico exclusivo de servidores básicos que foi inventado por nós para você: Toda a verdade sobre o VPS (KVM) E5-2697 v3 (6 núcleos) 10GB DDR4 480GB SSD 1Gbps de 10GB de US $ 19 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).

Dell R730xd 2 vezes mais barato no data center Equinix Tier IV em Amsterdã? Somente nós temos 2 TVs Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV a partir de US $ 199 na Holanda!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - a partir de US $ 99! Leia sobre como construir infraestrutura classe c usando servidores Dell R730xd E5-2650 v4 que custam 9.000 euros por um centavo?

All Articles