De acordo com uma pesquisa realizada pela ESET no início de 2018, 70% dos usuários acreditam que os dispositivos IoT não são seguros. No entanto, 62% disseram que ainda assim comprariam um dispositivo IoT. Esses números se refletem na quantidade de dispositivos IoT que encontramos atualmente em residências e nas compras de usuários, já que em 2018 as vendas de dispositivos inteligentes excederam o número de dispositivos móveis vendidos. De fato, até 2020, de acordo com uma projeção da Gartner, estima-se que haverá 20 bilhõ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 usuário. Desde auxiliares de voz, plugues inteligentes, câmeras IP, luzes ou termostatos até o novo "wearable" (dispositivos usáveis) que até mesmo monitora o estado do nosso corpo; todos os tipos de dispositivos podem ser obtidos por preços que variam de 30 a 500 dólares. Ao contrário das tecnologias anteriores, a análise de segurança dos dispositivos IoT é altamente complexa devido à grande variedade de dispositivos e softwares disponíveis no mercado.
No entanto, embora sua análise possa ser complexa, é bom começar com algumas vulnerabilidades conhecidas e algumas técnicas bastante úteis para obter informações.
Information Disclosure
A primeira coisa que você deve buscar 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 sua configuração, interações, tráfego ou outros arquivos que podem ser úteis para entender melhor sua funcionalidade, o ambiente onde estão conectados ou até mesmo dados pessoais do usuário. 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 varrer e coletar portas e serviços públicos na Internet, muitos dos quais pertencem a dispositivos IoT. Serviços como Shodan ou Cencys são definitivamente um bom lugar para começar a procurar dispositivos para investigar.
- Protocolos não criptografados: computadores que se comunicam através de HTTP ou qualquer outro protocolo não criptografado geralmente são muito fáceis de espionar, já que é suficiente usar um proxy como intermediário para ver todo o tráfego desses dispositivos.
- Metadados: dados que se referem aos dados, isto é, 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 de dispositivos IoT, podemos encontrar, por exemplo, informações sobre a rede do usuário 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 acessá-las, 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 seus métodos e sua interface para poder interagir com ela. Em APIs públicas, essas informações normalmente são encontradas 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 a seguir, você pode 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:
Engenharia reversa de aplicativos e firmwares
Em muitos casos, obter o dispositivo IoT que queremos analisar é complicado ou até mesmo 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 por meio de aplicativos que podem ser baixados e aos quais podemos aplicar engenharia reversa. De fato, às vezes é melhor começar com a análise dos aplicativos que controlam os dispositivos inteligentes para ver quais são mais vulneráveis e podem nos permitir realizar melhores investigações.
A engenharia reversa é usada para entender como um aplicativo funciona a partir de seu executável ou empacotado. No caso de aplicativos móveis, podemos até obter o código fonte desses, o que é muito útil para analisar suas funções, entender como ele recebe e envia informações, localizar usuários e chaves hardcodeadas e até mesmo descobrir vulnerabilidades e explorá-las. Em alguns casos, é possível até mesmo encontrar os links de download do firmware, que, uma vez baixados, também faz com que seja possível aplicar engenharia reversa.
No caso dos aplicativos 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 usado para obter o código-fonte de um aplicativo que controla os plugues inteligentes. As funções mais interessantes encontradas neste caso foram aquelas encarregadas de criptografar e descriptografar o 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.
Análise de tráfego e MiTM
Uma grande quantidade de informação viaja desde e para os dispositivos, portanto, poder controlá-la nos dará uma grande vantagem no controle do dispositivo que estamos investigando. Seja porque o dispositivo se comunica através de protocolos inseguros ou porque a comunicação foi descriptografada (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 podemos alterar os pacotes enviados e recebidos ou até gerar novos pacotes. Ou seja, através da manipulação do tráfego de um dispositivo se torna possível controlá-lo.
A melhor maneira de capturar esses pacotes é através do uso de um proxy, como o Burp Suite. Às vezes, a captura de tráfego pode ser um pouco mais tediosa para analisar e teremos que recorrer a ferramentas como o Wireshark para facilitar nosso trabalho.
Como exemplo, nas imagens a seguir podemos ver o tráfego entre uma webcam e o aplicativo 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âmera, mas também sobre as imagens que são capturadas por ela:
Neste caso, se também conseguirmos obter o código-fonte do aplicativo a partir da engenharia reversa, poderemos até entender como os pacotes enviados são formados para controlar o dispositivo, gerá-los a partir de um computador remoto e interceptar a resposta do dispositivo com as imagens produzidas.
Configurações inseguras
Para finalizar, muitos dispositivos se tornam inseguros para usuários que não prestam atenção às configurações. É muito comum (você pode verificar isso no Shodan), encontrar portas e serviços habilitados por padrão, até mesmo alguns obsoletos ou que não estão sendo usados. Além disso, você provavelmente já ouviu falar sobre os usuários e senhas de fábrica (padrão) que não foram alterados e os protocolos inseguros que detalhamos nos casos anteriores.
Até mesmo os desenvolvedores, às vezes, esquecem de desativar o recurso de depuração, que permite que um atacante interaja com a assinatura ou com o sistema operacional do computador. Esse é 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 permitiu que um minerador de criptomoedas infectasse o dispositivo e usasse seus recursos.
Caso tenha dispositivos que deseja analisar, saiba por onde iniciar sua análise para encontrar vulnerabilidades. Por outro lado, se você é um daqueles que gosta de uma casa inteligente, mas prioriza a segurança, existem algumas medidas de segurança que devem ser consideradas:
- Mantenha seus dispositivos atualizados. Muitas vulnerabilidades são relatadas e corrigidas em pouco tempo, portanto, caso mantenha a versão mais recente dos aplicativos e do firmware, ficará menos vulnerável.
- Pesquise e analise qual dispositivo deve comprar. Na Internet existem muitas análises de segurança publicadas sobre vários dispositivos. Você pode até usar engenharia reversa para analisar aplicativos antes de comprar um dispositivo e escolher o modelo mais seguro.Se você é um desenvolvedor, inclua a segurança desde o design do seu aplicativo e realize auditorias que incluam testes de segurança.
- Separe algum tempinho para configurar seus dispositivos corretamente. Desabilite portas e serviços que você não usa, evite configurações padrão e altere as senhas.