Análise de dispositivos IoT: vulnerabilidades mais comuns e como encontrá-las

Conheça algumas das técnicas utilizadas para analisar dispositivos IoT e descobrir vulnerabilidades.

De acordo com uma pesquisa realizada pela ESET no início de 2018, 70% dos utilizadores acredita que os dispositivos IoT não são seguros. No entanto, 62% disseram que esse facto não seria impeditivo para comprarem um dispositivo IoT. Esses números refletem-se na quantidade de dispositivos IoT que encontramos atualmente em residências e nas compras de utilizadores, já que em 2018 as vendas de dispositivos inteligentes excederam o número de dispositivos móveis vendidos. Até 2020, de acordo com uma projeção do Gartner, estima-se que haverá 20 mil milhões de dispositivos IoT no mundo, um número que equivale a 3 dispositivos por habitante.

A variedade de dispositivos IoT é extremamente ampla e acessível para qualquer utilizador. Desde assistentes de voz, tomadas inteligentes, câmaras IP, luzes ou termostatos até ao novo “wearable” (dispositivos usáveis) que monitoriza o estado do nosso corpo; todos os tipos de dispositivos podem ser obtidos por preços que variam de 30 e os 500 dólares. Ao contrário das tecnologias anteriores, a análise de segurança dos dispositivos IoT é altamente complexa dada à grande variedade de dispositivos e softwares disponíveis no mercado.

No entanto, embora a sua análise possa ser complexa, é bom começar por algumas vulnerabilidades conhecidas e técnicas bastante úteis para obter informações.

Information Disclosure

A primeira coisa a procurar quando ao analisar um dispositivo IoTé toda a informação que está à vista. Muitos dispositivos fornecem – às vezes de propósito e outros por engano – informações sobre a sua configuração, interações, tráfego ou outros arquivos que podem ser úteis para melhor entender como funcionam, o ambiente onde estão conectados ou até mesmo dados pessoais do utilizador. Nestes casos, estas informações estão visíveis, sendo apenas uma questão de saber como procurá-las.

Algumas coisas que você pode verificar são:

  • Mecanismos de pesquisa:nem tudo na Internet são páginas web. Assim como há o Google para nos ajudar a encontrar os sites de que precisamos, também há outros mecanismos de pesquisa que, em vez de indexar sites, dedicam-se a explorar e reunir portas e serviços públicos na Internet, muitos dos quais pertencem a dispositivos IoT. Serviços como o Shodan ou Cencys são definitivamente um bom lugar para começar a procurar dispositivos para investigar.
  • Protocolos não encriptados: computadores que se comunicam através de HTTP ou qualquer outro protocolo não encriptado são geralmente muito fáceis de espiar, já que é suficiente usar um proxy como intermediário para ver todo o tráfego desses dispositivos. 
  • Metadados:descrevem o conteúdo dos arquivos ou suas informações, como qualidade, condições, histórico, disponibilidade e outras características dos dados. No caso dos dispositivos IoT, podemos encontrar, por exemplo, informações sobre a rede do utilizador ou até mesmo sobre seus hábitos e consumos. 
  • APIs públicas:uma API é uma interface que especifica como diferentes componentes de software devem interagir. Quando essas APIs são públicas, ou seja, qualquer pessoa na rede pode aceder, elas podem ser usadas para integrar a funcionalidade do dispositivo com serviços externos ou para obter informações sobre ela. As APIs são muito diversas e cada uma é implementada de forma diferente, no entanto, basta conhecer os seus métodos e sua interface para poder interagir com ela. Em APIs públicas, essas informações são encontradas normalmente na Internet publicamente para desenvolvedores. Por exemplo, em alguns dispositivos do Google, como o Chromecast ou o assistente de voz, podemos encontrar uma API HTTP que usa os métodos GET e POST e os formatos JASON para interagir com outros computadores. Embora não seja uma API oficialmente documentada, já foram publicadas pesquisas com a sintaxe que deve ser usada. Na imagem seguinte, é possível ver informações de um dispositivo Google Mini, como a versão e a rede na qual está conectado, bem como os tempos de ativação:
Informações sobre um dispositivo Google Mini e da rede à qual está ligado e os seus horários de ativação

Engenharia inversa de aplicações e firmwares

Em muitos casos, obter o dispositivo IoT que queremos analisar é complicado ou até mesmo muito caro. No entanto, isso não é motivo para interromper a análise, pois nem tudo passa pela análise do dispositivo. Todos os dispositivos IoT são controlados através de aplicações que podem ser descarregadas e às quais podemos aplicar engenharia inversa. De facto, por vezes é melhor começar com a análise das aplicações que controlam os dispositivos inteligentes para ver quais são mais vulneráveis e podem permitir-nos realizar melhores investigações.

A engenharia inversa é usada para entender como determinada aplicação funciona a partir do seu executável ou empacotado. No caso de aplicações móveis, podemos até obter o código fonte dessas, o que é muito útil para analisar as suas funções, entender como recebe e envia informações, localizar utilizadores e chaves codificadas e até mesmo descobrir vulnerabilidades e explorá-las. Em alguns casos, é mesmo possível encontrar os links de download do firmware, que, uma vez descarregados, também fazem com que seja possível aplicar engenharia inversa.

No caso das aplicações para dispositivos móveis, um dos descompiladores mais utilizados é o JADX, que possui uma interface muito amigável para análise. No exemplo a seguir, esse decompilador foi utilizado para obter o código-fonte de uma aplicação que controla as tomadas inteligentes. As funções mais interessantes encontradas neste caso foram aquelas responsáveis pela encriptação e desencriptação do tráfego entre o aplicativo e o dispositivo, e a partir dessas funções poder controlar o dispositivo remotamente e sem qualquer tipo de autenticação.

Exemplos do uso do JDAX para obter o código-fonte de um aplicação que controla as tomadas inteligentes.

Análise de tráfego e MiTM

Uma grande quantidade de informação viaja desde e para os dispositivos, portanto, poder controlá-la dá-nos uma grande vantagem no controle do dispositivo que estamos a investigar. Seja porque o dispositivo se comunica através de protocolos inseguros ou porque a comunicação foi desencriptada (como no caso anterior), a partir da análise do tráfego de rede podemos não apenas obter informações sensíveis, mas também entender e analisar protocolos de comunicação. Muitas vezes é também possível alterar os pacotes enviados e recebidos ou até gerar novos pacotes. Ou seja, através da manipulação do tráfego de um dispositivo torna-se possível controlá-lo.

A melhor forma de capturar esses pacotes é através do uso de uma proxy, como a Burp Suite. Por vezes, a captura de tráfego pode ser um pouco mais chata de analisar e teremos que recorrer a ferramentas como o Wireshark para facilitar o trabalho.

Como por exemplo, nas imagens que se seguem é possível ver o tráfego entre uma webcam e a aplicação móvel que a controla. Neste caso, o tráfego é enviado em texto simples via HTTP e não só podemos obter informações sobre a câmara, mas também sobre as imagens que são capturadas pela mesma:

Análise do tráfego entre uma webcam e a aplicação móvel que a controla

Neste caso, se também conseguirmos obter o código-fonte da aplicação a partir de engenharia inversa, poderemos até entender como os pacotes enviados são formados para controlar o dispositivo, gerá-los a partir de um computador remoto e intercetar a resposta do dispositivo com as imagens produzidas.

Configurações inseguras

Para finalizar, muitos dispositivos tornam-se inseguros para os utilizadores que não prestam atenção às configurações. É muito comum (é possível verificar isso no Shodan) encontrar portas e serviços habilitados por padrão, até mesmo alguns obsoletos ou que não estão a ser usados. Além disso, há que considerar ainda os utilizadores que usam passwords de fábrica (padrão) que não foram alteradas e os protocolos inseguros que detalhamos nos casos anteriores.

Até mesmo os programadores, por vezes, se esquecem de desativar o recurso de depuração, que permite que um hacker interaja com a assinatura ou com o sistema operativo do computador. Este é o caso de alguns dispositivos Android que chegaram ao mercado asiático com a porta ADB (Android Debug Bridge) ativada por padrão e que permitiram que um minerador de criptomoedas infetasse dispositivos e usasse os seus recursos.

Caso tenha dispositivos que gostasse de analisar, saiba por onde iniciar sua análise para encontrar vulnerabilidades. Por outro lado, e se é daqueles que gosta de uma casa inteligente, mas dá prioridade à segurança, existem algumas medidas de segurança que devem ser consideradas:

  • Mantenha os seus dispositivos atualizados. Muitas vulnerabilidades são relatadas e corrigidas em pouco tempo, portanto, caso mantenha a versão mais recente das aplicações e do firmware, ficará menos vulnerável.
  • Pesquise e analise qual o dispositivo que deve comprar. Na Internet existem muitas análises de segurança publicadas sobre vários dispositivos. Você pode até usar engenharia inversa para analisar aplicações antes de comprar um dispositivo e escolher o modelo mais seguro.
  • Dedique algum tempo a configurar os seus dispositivos corretamente. Desabilite portas e serviços que não usa, evite configurações padrão e altere as senhas.

DEIXE UMA RESPOSTA

Please enter your comment!
Please enter your name here

twenty + one =