IoT Pentesting Ultimate Checklist

Nuts About Sec
NutsAboutSec
Published in
4 min readJun 21, 2019

Uma coisa que percebi esses dias com as demandas do trabalho aumentando e os resultados caindo foi que organização/gerenciamento de projetos não é brincadeira. Na era da informação, ser inundado por novos conteúdos, tarefas, ideias e desejos já se tornou música para acordar de manhã. Com tanta coisa acontecendo e mudando, fica inévital a necessidade de dedicar um pouco de tempo para organizar os afazeres e criar estratégias para terminá-los.

Uma coisa que eu já tinha deixado no fundo da gaveta era elaborar algumas propostas de IoT Pentesting para tornar esse ramo um pouco mais comum no mundo de segurança do Brasil. Lendo alguns reports de vulnerabilidades e o livro The IoT Hacker’s Handbook acabei criando alguns bullets para as propostas e resolvi postar aqui. Vai que alguém também tem a cabeça na lua que nem eu e vive se perdendo nas metas diárias…

Antes de qualquer coisa, algumas ferramentas que eu uso:

Beleza, mas o que é IoT? Resposta:

Pode parecer um exagero, mas hoje IoT incorpora tudo isso e mais um pouco, mas, no geral, é isso:

  • Coisas que coletam informações e depois as enviam.
  • Coisas que recebem informações e depois agem sobre elas.
  • Coisas que fazem as duas coisas.

Tipo isso:

Smart Tênis https://en.orphe.shoes/

Ou isso:

hehe

Beleza, estando com um dispositivo desses em mãos, algumas perguntas que devem ser respondidas são:

  • Quais os papéis dos componentes envolvidos?
  • Qual componente inicia o mecanismo de autenticação e pareamento?
  • Como é o mecanismo de pareamento?
  • Quantos dispositivos cada componente pode manipular simultaneamente?
  • Em qual frequência o aparelho opera?
  • Quais protocolos estão sendo usados ​​por diferentes componentes? Eles são protocolos personalizados ou proprietários?
  • Existem dispositivos similares operando na mesma faixa de frequência que este dispositivo?

Depois de responder a essas perguntas, os seguintes passos ajudam a organizar os passos iniciais:

  • Listar todos os componentes presentes no produto alvo.
  • Preparar um diagrama de arquitetura.
  • Etiquetar os componentes e os fluxos de comunicação entre eles.
  • Identificar vetores de ataque para cada componente e canais de comunicação ou protocolos utilizados.
  • Categorizar os vetores de ataque por criticidade.

Após realizar essas etapas, é legal fazer uma inspeção externa:

  • Quais e quantos botões estão presentes?
  • Existem opções de interfaces externas: porta Ethernet, cartão SD, etc?
  • Que tipo de exibição o dispositivo possui?
  • Quais os requisitos de energia e tensão para o dispositivo?
  • O dispositivo transporta algum tipo de certificação e o que ela significa?
  • Existem FCC ID’s na parte de trás?
  • Que tipo de parafusos o dispositivo usa?
  • O dispositivo se parece com outros dispositivos que você conhece?

Bom, com tudo isso, você está pronto para a caçar às vulns!

Let’s go!

Essa parte, seguindo o livro The IoT Hacker’s Handbook será separada em Hardware, Firware/Aplicação/Web e Radio. Normalmente, para encontrar algumas vulnerabilidades mais comuns, deve-se checar:

Hardware

  • Portas externas expostas.
  • Mecanismo de autenticação inseguro usado nessas portas.
  • Capacidade de descarregar o firmware através do JTAG ou via Flash.
  • Ataque por mídia externa.
  • Ataque por análise de energia (ex,differential power analysis)
  • Ataque baseado em Side-Channels.

Firware/Apps/Web

Firmware

  • Capacidade de modificar o firmware.
  • Assinatura insegura e verificação de integridade.
  • Valores sensíveis codificados no firmware — chaves de API, senhas, URLs de teste e assim por diante.
  • Certificados privados.
  • Capacidade de compreender todo o dispositivo através do firmware.
  • Extração do sistema de arquivos do firmware.
  • Componentes desatualizados com vulnerabilidades conhecidas.

Aplicação

  • Engenharia Reversa do app.
  • Se é possível fazer o dump código-fonte do aplicativo móvel.
  • Verificações de autenticação e autorização inseguras.
  • Falhas comerciais e lógicas.
  • Vazamento de dados do side-channel.
  • Ataques de manipulação em tempo de execução.
  • Comunicação de rede insegura.
  • Bibliotecas e software de terceiros desatualizados (SDKs).

Web

  • Insecure Direct Object.
  • Autenticação e autorização inseguras.
  • Vazamento de dados sensíveis.
  • Falhas de lógica de negócios.
  • Cross-site request forgery.
  • Cross-site scripting.

Radio

  • Man-in-the-middle attacks.
  • Replay-based attacks.
  • Insecure Cyclic Redundancy Check (CRC) verification.
  • Jamming-based attacks.
  • Denial of service (DoS).
  • Falta de criptografia.
  • Existência de dados sensíveis.
  • Informação sensível na troca de pacotes.
  • Modificação na comunicação.

That’s all for now, folks!

Escrito por Alexandra Percário ✧゚・:*⌒\(・‿・*)

--

--