Conferência DEFCON 22. GTVHacker Group. Hackeie tudo: 20 dispositivos em 45 minutos. Parte 1

Amir Etemadi: Congratulo-me com todos e bem-vindo à apresentação do GTVHacker "Hackear tudo: 20 dispositivos em 45 minutos". Somos os criadores dos produtos originais do Google TV desde 2010, além de produtos como Chromecast, Roku e Nest, e também lançamos explorações para todos os dispositivos do Google TV.



Então quem somos nós? Sou cientista pesquisador do Accuvant Labs, criado pelo GTVHacker, CJ é líder de equipe e pesquisador de segurança e também ocasionalmente atua como desenvolvedor de tecnologia. Hans Nielsen é consultor sênior de segurança da Matasano, enquanto Mike Baker desenvolve firmware e é co-fundador do OpenWRT.

Existem 8 membros em nosso grupo, incluindo Gynophage, no momento ele está envolvido em algo chamado DefCon CTF, Jay Freeman, criador de Cydia, aluno Coa Hoang e Tom Dwenger, o maior especialista em APK e tudo relacionado a Java.

Então, por que decidimos invadir dispositivos, por que não softwares que também não gostamos? Você sabe, quando um dispositivo se torna obsoleto, chega ao fim de sua vida útil, é simplesmente jogado em um aterro sanitário. De fato, os dispositivos antigos estão acabando, e não adianta fazer isso, como aconteceu com o Logitech Revue.

Damos nova vida aos dispositivos descartados e também sempre nos esforçamos para melhorar o produto, oferecer mais recursos e, se pudermos fazê-lo, o faremos. Gostamos de responder a desafios técnicos, você sabe, é como quebra-cabeças que você gosta de resolver.

Estudar, é claro, é um processo incrível, mas a essência desta apresentação pode ser expressa em palavras:

"Você tem uma raiz!"



Essencialmente, "invadir 20 dispositivos em 45 minutos", ou seja, durante a apresentação, não nos deixa muito tempo para gastar em detalhes em cada dispositivo. Portanto, mostrarei uma mostra de dispositivos que entrarão em nosso Wiki logo após a apresentação. Vamos apresentar os detalhes técnicos, diagramas de equipamentos, tudo o que podemos, porque é bastante difícil de ler. Na parte inferior do slide, você vê um link, pode usá-lo após a apresentação para obter acesso a tudo o que é mostrado durante esta demonstração. E agora passo a palavra ao meu colega, que falará sobre a “perspectiva de ataques”.

Hans Nielsen: Há um número infinito de maneiras de atacar dispositivos desse tipo. Hoje, usando o exemplo desses 20 dispositivos, consideraremos três métodos principais de hacking.

O primeiro é o uso de portas de depuração localizadas nos próprios dispositivos. O segundo método - podemos usar portas seriais ou cartões de memória EMMC, esta é uma versão desatualizada dos cartões SD para conectar-se ao dispositivo e modificar o armazenamento. O terceiro método é obter acesso direto ao sistema operacional, o que permite implementar um monte de comandos por meio da linha de comando para causar os erros mais comuns nos eletrônicos de consumo.

Então, vamos falar sobre o UART - um transceptor assíncrono universal. É usado pelos desenvolvedores para depurar equipamentos e não carrega mais nenhuma carga funcional. Essa é uma interface muito simples - um fio é para transmissão, o outro para recepção e o terceiro serve como terra.



Eles me perguntam quantos anos eu tenho - respondo, tenho 27 anos, obrigado pela sua pergunta! Portanto, um protocolo de troca de dados muito simples é usado aqui, e a própria porta trabalha com voltagem de diferentes níveis, por exemplo, 1,8V, 3,3V ou 5V e é uma porta serial, semelhante às portas USB de um computador.

Portanto, você tem vários adaptadores gratuitos que permitem jogar com seus próprios dispositivos, e espero que você aproveite o máximo possível deles. Então, como você pode usar o UART?

Considere um dispositivo específico - a MFP Epson Artisan 700/800, é uma impressora, scanner e copiadora, que pode ser usada como impressora de rede. É controlado pelo Linux 2.6.21 - arm1. O que pode ser feito com isso? Se você abrir o gabinete, poderá ver a placa de circuito impresso na qual estão localizados 4 contatos: recepção, transmissão, aterramento, energia. Esta é uma opção clássica de conexão UART.



Depois de conectar nossa porta de depuração aqui, vimos um menu de console das configurações da impressora.



Podemos reiniciar a impressora, redefinir as configurações, executar um comando shell arbitrário, executar todos os comandos que precisamos, em geral, nos divertir jogando com nossa impressora.

O segundo dispositivo é um soquete inteligente Belkin WeMo com controle da Internet. Ele permite que você use um telefone celular para ligar a cafeteira e outros eletrodomésticos via Internet e é amplamente utilizado por pessoas diferentes.



Este é um dispositivo bastante pequeno, portanto, ler a notação na placa de circuito é bastante difícil. Mas encontramos os contatos do receptor e do transmissor e conectamos o UART a eles. Depois disso, a Internet informou que o dispositivo estava corrigido, mas isso não era verdade. Aconteceu que tínhamos apenas 2 segundos para inserir um comando, após o qual o dispositivo foi reiniciado automaticamente.



No momento certo, conseguimos inserir um comando que "matou" o script de reinicialização, após o qual poderíamos fazer o que quiséssemos com esse soquete inteligente.

O terceiro dispositivo foi a lâmpada inteligente Greenwave Reality, concorrente da Phillips Hue, que usa o protocolo de rede de nível superior ZigBee, muito se falou sobre isso. Engraçado que ele usa um microprocessador PowerPC. Durante a inicialização, esta lâmpada fornece um servidor SSH do qual não tínhamos uma senha.



Quando abrimos o caso, também encontramos contatos para o UART. Este dispositivo foi equipado com um carregador de inicialização U-boot universal de inicialização aberta que carrega e executa o Linux. Usando este carregador de inicialização, você pode fazer qualquer coisa - reflash o dispositivo, altere a linha de comando do kernel. Você pode acompanhar a inicialização do Linux com uma variedade de opções, por exemplo, permitindo descobrir a quantidade de memória do dispositivo. Conseguimos obter direitos de root alterando a linha de comando do gerenciador de inicialização. Para fazer isso, conectamos via UART, inserimos o módulo bin / sh na linha de comando do kernel e, então, fomos para o shell do carregador de inicialização.



Para usar o dispositivo com segurança no futuro, quebramos a senha do thinkgreen para acessar os direitos de root.

O quarto dispositivo é o File Transporter, uma unidade flash com a capacidade de transferir dados pela rede. Este é um tipo de "nuvem" portátil que usa um grande disco rígido do HDD de formato clássico com capacidade de 1 TB para armazenar arquivos. Você pode conectá-lo à sua rede doméstica e acessar arquivos em vários dispositivos domésticos.



Essa "transferência de arquivos" apareceu no mercado recentemente e é um tipo de dispositivo bastante padrão executando o Linux. Isso é uma coisa bem engraçada e, depois de remover o gabinete, encontramos facilmente um adaptador para conectar o UART.



O carregador de inicialização U-boot também foi usado aqui, para que, como no caso anterior, pudéssemos obter direitos de root usando a linha de comando do kernel. Isso nos deu a oportunidade de alterar a senha root e obter acesso ao dispositivo.



O quinto dispositivo foi o media player de rede Vizio CoStar LT modelo ISV-B11. Ele fornece acesso ao canal CoStar, que costumava fazer parte da rede do Google TV. Este reprodutor de mídia se conecta a outros dispositivos via Internet ou a cabo via saída HDMI.



Pode parecer engraçado que o Google TV não exista mais, mas ainda existe nosso grupo chamado GTVHacker. Portanto, no canto superior esquerdo da placa de circuito impresso, letras brancas indicam o conector clássico para conectar o UART a partir de 4 pinos seguidos. Aqui tivemos algumas dificuldades em se comunicar com o kernel, porque depois de conectarmos a “unidade flash USB”, recebemos a mensagem ““ sistema de arquivos incompreensível em uma unidade flash ”. Nós a reformatamos para FAT32, após o qual uma mensagem apareceu: "Não consigo encontrar o fs.sys". Parecia suspeito, por isso fizemos algumas pesquisas.

Como resultado, concluiu-se que, durante a inicialização, você precisa ter os dois arquivos na unidade flash USB - fs.sys e safe-kernel.img1. O primeiro arquivo é um downloader de imagem de script do U-Boot que contém comandos arbitrários do U-Boot que são executados no momento da inicialização. Usamos a mesma técnica de quando invadimos o dispositivo anterior. A modificação da linha de comando do kernel nos deu a oportunidade de invadir o kernel e obter privilégios de root. Para baixar um kernel completamente novo, você pode usar uma combinação desses dois arquivos localizados em uma unidade flash que simplesmente se conecta ao UART.

O Staples Connect, o modelo Linksys Zonoff, foi o sexto dispositivo que invadimos. Este é outro pequeno centro de automação residencial, um hub que comunica dispositivos domésticos de diferentes marcas e tipos. É equipado com um módulo Wi-Fi e uma porta USB para conectar um disco rígido e é baseado no uso da tecnologia em nuvem.
Na placa de circuito, encontramos um bloco com soquetes de contato. Colocamos um curto-circuito nos pinos da memória NAND 29/30, devido aos quais ocorreu um erro ao carregar o ambiente U-Boot e o dispositivo reinicializado. Definindo o tempo limite padrão, executamos o comando setenv bootargs “console = ttyS0,115200 init = / bin / sh [...]”, inicializamos no console raiz. Adicionando a linha # dropbear - d 222, conseguimos modificar, salvar e editar o U-Boot. Para acessar o root, foi usada a senha SSH oemroot, que conseguimos quebrar com relativa facilidade. E agora eu quero apresentá-lo ao CJ.



CJ Jerez: Quero falar com você sobre cartões de memória não voláteis no formato eMMC - Embedded MultiMedia Card. Eles são baseados em um chip de cartão de memória SD padrão. Isso é uma coisa bem legal que inclui um módulo flash e um controlador flash. Nesse caso, você não precisa se preocupar com mais bits mágicos.



Um cartão de memória comum contém bits adicionais que manipulam erros e contêm código de correção de erros; essa função é destinada aos desenvolvedores. O cartão de memória eMMC usa um sistema de arquivos comum, e o acesso é feito através de um leitor de cartão multimídia barato, que lê os cartões SD comuns e o eMMC igualmente bem. Como esta placa é estruturalmente um chip BGA montado na superfície, suas descobertas são bolas de solda depositadas na parte traseira do bloco. Para trabalhar com esse cartão, é necessário identificar esses contatos, ou seja, precisávamos de certas bolas para conectar o depurador.

Para encontrar os contatos necessários, examinamos primeiro o design do painel, todos os tipos de adesivos, etiquetas sob os resistores, o traçado do substrato impresso e os contatos do outro lado do painel. Em seguida, aproveitamos a intuição e a análise lógica e, depois disso, retiramos o chip e garantimos que ele não estava funcionando. Conseguimos conectar este cartão ao leitor MMC e redefinir as configurações.

Agora, vamos falar sobre nosso sétimo dispositivo, este é um decodificador de TV Amazon Fire com controle remoto.



É equipado com um processador Snapdragon 600 de 1,7 GHz e 4 núcleos e uma unidade de memória eMMC de 8 GB e é controlado por uma versão modificada do Android 4.2.2, chamada Fire OS 3.0.

Após abrir o gabinete, começamos a procurar a pinagem do eMMC e, durante a pesquisa, arruinamos um dispositivo, porque quebramos um dos contatos quando retiramos o chip eMMC, então tivemos que trabalhar na segunda cópia do decodificador.



À esquerda, no slide, mostra a localização dos contatos do eMMC, à direita - contatos do UART em 1,8V.

Tendo decifrado com sucesso esse decodificador, adotamos o dispositivo número 8 - Hisense Android TV, uma TV inteligente com Android, esse é um tipo de Google TV que foi renomeado. Ele usa um dos mais recentes processadores, o Marvell MV88DE3108 de 4 núcleos. Na conferência DefCon do ano passado, mostramos como ignorar a inicialização no modo de segurança dos processadores desta linha devido a um pequeno erro no firmware.



O próximo slide mostra como os contatos procuram conectar um depurador. Eles são pequenos o suficiente, mas não precisamos retirar o chip de memória flash.



Eu tive que fazer um procedimento bastante extenso para este dispositivo - primeiro monte a seção de configurações de fábrica “factory_settings” usando o comando / dev / mmcblk0p3, que foi salvo entre downloads, depois use o bom e antigo modo # chmod 4755 su, você também pode usar o programa para obter direitos Super root SU. Além disso, através da ponte de depuração "ADB" do Android, você pode modificar o sistema operacional, que é muito semelhante ao Android original.
Então, siga em frente. Nunca diga: "O dispositivo X não pode ser invadido". Em 2011, o serviço postal do USPS publicou um comercial que afirmava que "a geladeira não pode ser quebrada". Esta empresa se posicionou como líder em segurança de frigoríficos. Um vídeo sobre isso pode ser visto no YouTube aqui . Eu tomei isso como um desafio. Eu não tinha os US $ 3.000 extras para testar esta afirmação no novo refrigerador, mas no depósito você pode encontrar qualquer coisa, incluindo partes dos refrigeradores descartados. Consegui obter o preenchimento eletrônico do LG Smart Refrigerator, modelo LFX31995ST, executando um sistema operacional Android 2.3 ligeiramente desatualizado. Este é o nono dispositivo que conseguiu quebrar.



O “cérebro” da geladeira controlava o congelamento, a temperatura dos alimentos, a produção de gelo, o consumo de água potável e o próprio dispositivo era equipado com um módulo Wi-Fi, uma porta USB e um cartão de memória SD.

Na placa de circuito impresso, havia contatos UART, permitindo baixar o console Raiz e o chip eMMC. Isso possibilitou montar o sistema, como no caso da Fire TV, inserir o gerenciador de inicialização do Android e baixar o binário do superusuário. Como se viu, o parâmetro ro.secure = 0, ou seja, o dispositivo já tinha acesso de superusuário. Provavelmente, os desenvolvedores tinham certeza de que ninguém aproveitaria essa oportunidade.

Então começamos a digitar comandos. Observo que você nunca deve confiar nos dados inseridos pelo usuário e nunca usar comandos de shell. A inserção do comando ls% s com o parâmetro "; reboot" deu o resultado de ls; reboot, após o qual o sistema foi reiniciado com sucesso.

O Anexo 10, que demonstrou perfeitamente os recursos de hackers, foi o Vizio Smart TV, modelo VF552XVT, baseado na série de TVs inteligentes BCM97XXX Yahoo Powered Smart TV. Apesar de esta plataforma estar desatualizada, ainda é amplamente usada.



Este é um dos mais recentes televisores com retroiluminação LED, que é visivelmente mais fino que os modelos LCD.

A injeção de linha de comando aqui é feita por meio de uma senha Wi-Fi, que é uma versão mais moderna do depurador UART por uma porta USB.



Se você definir o modo Wi-Fi, poderá entrar no menu e conectar-se ao ponto de acesso Wi-Fi. Se você conseguir digitar os comandos mostrados no slide, terá acesso à raiz do sistema.

Para fazer isso, usamos um adaptador USB UART e, em seguida, inserimos uma sequência de vários caracteres que informavam ao kernel para onde enviar dados. Após alguns minutos, recebemos um erro de entrada de dados e, em seguida, inserimos um comando longo do bash 2, o que significava que todos os dados provenientes deste dispositivo devem ser enviados ao shell e todos os dados do shell devem ser enviados ao dispositivo. Assim, conseguimos obter direitos de root através do USB UART.

O dispositivo nº 11 foi o reprodutor de Blu-ray Sony BDP-S5100 com um processador MTK 8500 executando o OC Linux. É equipado com Wi-Fi, acesso aos serviços de visualização de filmes online Netflix, VUDU e assim por diante.



Outro aparelho de Blu-ray no mesmo chipset é o número 12 do dispositivo, o LG BP530, com funcionalidade semelhante.



Descobrimos que esses dois dispositivos têm o mesmo erro de firmware do chipset que suporta o uso de SDKs.

Se você colocar um arquivo vazio chamado "vudu.txt" em uma pasta chamada "vudu" na unidade flash USB e criar uma exploração "vudu.sh" contendo as seguintes linhas:

mount –t overlayfs –o overlayfs /etc/passwd echo "root::0:0:root:/root:/bin/sh" > /etc/passwd /mnt/rootfs_normal/usr/sbin/telnetd 

Então você pode fazer o seguinte.

Inicie o serviço VUDU, ele executará o script de shell como um superusuário e você poderá usar livremente a conexão através da rede Telnet. Isso pode ser feito com todos os players do chipset MTK 8500, incluindo o próximo dispositivo no número 13 - o Blu-ray Panasonic DMP-BDT230.



É muito simples O próximo slide mostra uma placa de circuito impresso com quase o mesmo layout para todos os jogadores mencionados. Há uma saída de console 115200 8n1 à qual você pode conectar um UART. Isso foi muito importante para nós, pois nos permitiu detectar o erro acima durante a depuração. No entanto, existe outra possibilidade de injetar a linha de comando no console raiz usando o menu na tela, pois o nome da pasta da rede não é verificado antes do uso.



Assim, você pode obter direitos de superusuário e gerenciar todos os recursos dos dispositivos a seu critério.



24:10 min

Conferência DEFCON 22. GTVHacker Group. Hackeie tudo: 20 dispositivos em 45 minutos. Parte 2


Obrigado por ficar conosco. Você gosta dos nossos artigos? Deseja ver materiais mais interessantes? Ajude-nos fazendo um pedido ou recomendando a seus amigos, um desconto de 30% para os usuários da Habr em um análogo exclusivo de servidores básicos que inventamos para você: Toda a verdade sobre o VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD 1Gbps de US $ 20 ou como dividir o servidor? (as opções estão disponíveis com RAID1 e RAID10, até 24 núcleos e até 40GB DDR4).

VPS (KVM) E5-2650 v4 (6 núcleos) 10GB DDR4 240GB SSD de 1Gbps até dezembro de graça quando pagar por um período de seis meses, você pode fazer o pedido aqui .

Dell R730xd 2 vezes mais barato? Somente nós temos 2 TVs Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 a partir de US $ 249 na Holanda e nos EUA! Leia sobre Como criar um prédio de infraestrutura. classe usando servidores Dell R730xd E5-2650 v4 custando 9.000 euros por um centavo?

Source: https://habr.com/ru/post/pt424907/


All Articles