Pentest em Dispositivos IoT
Pentest em Dispositivos IoT

O que é um pentest em dispositivos IoT?
Basicamente o teste de intrusão em dispositivos IoT é a avaliação e exploração de vulnerabilidades conhecidas com o objetivo de melhorar a segurança, deixando esses dispositivos ainda mais seguros.
O que é um dispositivo IoT
Internet das coisas (em inglês: Internet of Things, IoT, sendo em português e espanhol IdC o acrónimo equivalente) é um conceito que se refere à interconexão digital de objetos cotidianos com a internet, conexão dos objetos mais do que das pessoas.
Em outras palavras, a internet das coisas nada mais é que uma rede de objetos físicos (veículos, prédios e outros dotados de tecnologia embarcada, sensores e conexão com a rede) capaz de reunir e de transmitir dados. É uma extensão da internet atual que possibilita que objetos do dia a dia, quaisquer que sejam, mas que tenham capacidade computacional e de comunicação, se conectem à Internet. A conexão com a rede mundial de computadores possibilita, em primeiro lugar, controlar remotamente os objetos e, em segundo lugar, que os próprios objetos sejam usados como provedores de serviços. Essas novas capacidades dos objetos comuns abrem caminho a inúmeras possibilidades, tanto no âmbito acadêmico quanto no industrial. Todavia, tais possibilidades acarretam riscos e implicam grandes desafios técnicos e sociais.
Ciclo do Teste de Intrusão
O ciclo padrão de testes de intrusão nesse tipo de tecnologia não foge muito do padrão já utilizado.

Entendendo o Escopo
A primeira etapa do pentest e dos testes de invasão é dedicada ao planejamento e reconhecimento.
Aqui, o analista responsável deverá definir o escopo dos testes, objetivos, logística, expectativas, implicações legais e sistemas-alvo, além de escolher qual tipo de teste será mais adequado, por exemplo: Blackbox, GreyBox ou WhiteBox.
Mapeamento da Superfície de Ataque
Para realizar o mapeamento da superfície de ataque, podem ser utilizadas algumas técnicas de reconhecimento do alvo, como por exemplo OSINT (Open Source Intelligence, ou inteligência de fonte aberta), que consiste em uma pesquisa por fontes de informações públicas realizada por meio de motores de busca.
Quando você adquire um novo dispositivo, leva tempo para entender o alvo, começando com informações parciais e incompletas. Colete o máximo de informações que puder. Você pode coletar informações como documentação, manuais do dispositivo, recursos online, postagens sobre o produto e qualquer conteúdo disponível ou pesquisa anterior sobre o dispositivo.
Anote todos os componentes usados no dispositivo, como tipo de arquitetura, protocolos de comunicação usados, detalhes de aplicativos móveis, processo de atualização de firmware, portas de hardware, suporte de mídia externa em dispositivos e praticamente qualquer outra coisa que você possa encontrar.
A arquitetura do dispositivo pode ser amplamente dividida em três categorias:
- Dispositivo integrado
- Firmware, software e aplicativos
- Comunicações de rádio
1. Dispositivos incorporados
Um dispositivo incorporado é a chave para qualquer arquitetura de dispositivo IoT e também é a coisa na Internet das Coisas. O dispositivo embutido em um produto IoT pode ser usado para vários propósitos diferentes, dependendo do cenário no caso do usuário. Ele pode ser usado como um hub para toda a arquitetura IoT do dispositivo, pode servir como o sensor que coleta dados de seu entorno físico ou pode ser usado como uma forma de exibir os dados ou executar a ação pretendida pelo usuário. Assim, os dispositivos na Internet das Coisas podem ser usados para coletar, monitorar, analisar dados e realizar ações.
Existem algumas vulnerabilidades que são encontradas em dispositivos incorporados:
- Portas seriais expostas
- Mecanismo de autenticação inseguro usado nas portas seriais
- Capacidade de despejar o firmware em JTAG ou através de chips Flash
- Ataques baseados em mídia externa
- Análise de energia e ataques baseados em canal lateral
2. Firmware, software e aplicativos
O próximo componente que examinamos é o software que inclui tudo, desde o firmware executado no dispositivo, os aplicativos móveis usados para controlar o dispositivo, até os componentes de nuvem conectados ao dispositivo e assim por diante. Existem também algumas partes em que podemos aplicar nossa experiência tradicional de pentesting ao ecossistema de IoT. Isso também envolveria tópicos como engenharia reversa de binários de diferentes arquiteturas, incluindo Advanced RISC Machines (ARM) e MIPS (Microprocessor without Interlocked Pipelined Stages), bem como engenharia reversa de aplicativos móveis.
Existem algumas vulnerabilidades que são encontradas em Firmware, software e aplicativos:
Firmware
- Capacidade de modificar o firmware
- Assinatura insegura e verificação de integridade
- Valores sensíveis codificados em hardware no firmware como por exemplo chaves de API, senhas, URLs de teste e assim por diante
- Certificados privados
- Capacidade de compreender toda a funcionalidade do dispositivo por meio do firmware

Aplicativos móveis
- Engenharia reversa no aplicativo móvel
- Dump do código-fonte do aplicativo móvel
- Autenticação insegura e checagem de autorização
- Lógica de negócios
- Vazamento de dados do canal lateral
- Executar ataques de manipulação de tempo
- Comunicação de rede insegura
- Bibliotecas de terceiros e kits de desenvolvimento de software (SDKs) desatualizados

Aplicações Web
Algumas vulnerabilidades que podem ser exploradas na camada 7 do modelo OSI:
- Injeção de código do lado do cliente
- Referência direta insegura do objeto (IDOR)
- Autenticação e autorização inseguras
- Vazamento de dados confidenciais
- Falhas na lógica de negócios
- Cross-Site Request Forgery
- Cross-Site Scripting

3. Comunicações de rádio
Este tópico é interessante para discutirmos, porque sua tecnologia é muito diferente de outros dispositivos IoT.
Existem vários protocolos de comunicação de rádio: celular, WI-Fi, BLE, ZigBee, Wave, 6LoWPAN, LoRa entre outros.
Dependendo de qual protocolo de comunicação um dispositivo está usando. Precisamos de hardware especializado para realizar as análises de comunicações de rádio.
Existem algumas vulnerabilidades encontradas nas comunicações de rádio que cito logo a seguir:
- Ataques man-in-the-middle
- Ataques baseados em repetição
- Verificação Insecure Cyclic Redundancy Check (CRC)
- Ataques baseados em jamming (Ataque Roll-Jam)
- Negação de serviço (DoS)
- Falta de criptografia (Pacote ADB-S)
- Capacidade de extrair informações confidenciais de pacotes de rádio (GQRX ou GNU Radio)
- Interceptação e modificação de comunicação de rádio ao vivo

Análise de Vulnerabilidades e Exploração
O próximo passo de como otimizar o pentest e testes de invasão é utilizar um scanner de vulnerabilidades para mapear as brechas de segurança do sistema.
Depois de identificadas, as vulnerabilidades devem ser classificadas de acordo com seu risco aos ativos da empresa e as ameaças também devem ser listadas.
Com o mapa das vulnerabilidades, você pode começar a explorar as brechas usando táticas como Cross-Site Scripting, Injeção de código SQL (SQL Injection), Backdoors, Engenharia Social etc.
Nessa etapa dos pentests e testes de invasão, o objetivo é roubar dados, escalar privilégios e interceptar o tráfego para entender o nível de efetividade dos controles de segurança.
Além de invadir o sistema, também é importante testar se a vulnerabilidade pode ser usada para uma permanência mais longa, que pode levar a um acesso mais profundo do cibercriminoso.
Pwn3D-On
Iremos demonstrar alguns exemplos de testes que podem ser realizados utilizando ferramentas como o Shodan ou Censys para coleta de informações.

Uma breve explicação sobre o Shodan
O Shodan é um mecanismo de busca que permite ao usuário encontrar tipos específicos de computadores conectados à Internet usando uma variedade de filtros
Encontrando dispositivos com o Shodan
Iremos realizar algumas pesquisas no Shodan, com o objetivo de encontrar alguns dispositivos acessíveis na internet.

Ao realizarmos esta pesquisa, é possível detectar alguns dispositivos que podem ser encontrados, como por exemplo web cam, routers, printers etc.
Clicando em determinada categoria, somos redirecionados para uma lista de pesquisa contendo todos os IPs que foram encontrados expostos para a internet.

Algumas informações podem ser obtidas, como por exemplo nome do fabricante, versão de software, MAC Address, password etc.

Ao adicionarmos o endereço no navegador somos direcionados para uma página de login, porém só temos a senha e não o usuário.

É aí que entra o mindset de um atacante, com posse do nome do dispositivo, podemos procurar por manuais no site do fabricante, entre outras informações.

No próprio manual do usuário conseguimos identificar um usuário válido padrão para este dispositivo.
Adicionando este usuário mais a senha que tínhamos capturados, conseguimos acessar o dispositivo de forma irrestrita.


Este foi somente um exemplo de ataque, e como podemos ver existe um número gigantesco desses dispositivos expostos para a internet, para os cibercriminosos isso é um prato cheio.
Reporte da Vulnerabilidade e Documentação
Ao término dos testes de invasão, é preciso fazer uma análise aprofundada dos resultados, compilando as vulnerabilidades exploradas, métodos utilizados, dados sensíveis acessados e tempo de permanência do pentester no sistema sem detecção.
Essas informações devem ser documentadas em um relatório e compartilhadas com as áreas envolvidas, junto com as recomendações para correções das falhas encontradas.