
IoTGoat é um firmware deliberadamente inseguro baseado no OpenWrt.

O Projeto IoTGoat é um firmware deliberadamente inseguro baseado em OpenWrt e mantido pela OWASP para educar os usuários sobre como testar as vulnerabilidades mais comuns encontradas em dispositivos IoT. Os desafios de vulnerabilidade são baseados no OWASP IoT Top 10 abaixo, bem como em "easter eggs" de colaboradores do projeto. Para uma lista de desafios de vulnerabilidade, veja a página do wiki de desafios do IoTGoat.
| OWASP IoT Top 10 2018 | Descrição |
|---|---|
| I1 Senhas Fracas, Adivinháveis ou Codificadas | Uso de credenciais facilmente bruteforçadas, publicamente disponíveis ou imutáveis, incluindo backdoors no firmware ou software cliente que concedem acesso não autorizado a sistemas implantados. |
| I2 Serviços de Rede Inseguros | Serviços de rede desnecessários ou inseguros executados no próprio dispositivo, especialmente aqueles expostos à internet, que comprometem a confidencialidade, integridade/autenticidade ou disponibilidade da informação ou permitem controle remoto não autorizado. |
| I3 Interfaces de Ecossistema Inseguras | Interfaces web, API backend, nuvem ou móveis inseguras no ecossistema fora do dispositivo que permitem comprometer o dispositivo ou seus componentes relacionados. Problemas comuns incluem falta de autenticação/autorização, criptografia ausente ou fraca e falta de filtragem de entrada e saída. |
| I4 Falta de Mecanismo de Atualização Segura | Falta de capacidade de atualizar o dispositivo de forma segura. Isso inclui ausência de validação de firmware no dispositivo, falta de entrega segura (não criptografada em trânsito), falta de mecanismos anti-rollback e falta de notificações de alterações de segurança devido a atualizações. |
| I5 Uso de Componentes Inseguros ou Desatualizados | Uso de componentes/bibliotecas de software obsoletos ou inseguros que podem permitir o comprometimento do dispositivo. Isso inclui personalização insegura de plataformas de sistema operacional e uso de software ou hardware de terceiros de uma cadeia de suprimentos comprometida. |
| I6 Proteção de Privacidade Insuficiente | Informações pessoais do usuário armazenadas no dispositivo ou no ecossistema que são usadas de forma insegura, inadequada ou sem permissão. |
| I7 Transferência e Armazenamento de Dados Inseguros | Falta de criptografia ou controle de acesso de dados sensíveis em qualquer lugar do ecossistema, incluindo em repouso, em trânsito ou durante o processamento. |
| I8 Falta de Gerenciamento de Dispositivos | Falta de suporte de segurança em dispositivos implantados em produção, incluindo gerenciamento de ativos, gerenciamento de atualizações, descomissionamento seguro, monitoramento de sistemas e capacidades de resposta. |
| I9 Configurações Padrão Inseguras | Dispositivos ou sistemas enviados com configurações padrão inseguras ou com falta de capacidade de tornar o sistema mais seguro ao restringir operadores de modificar configurações. |
Existem vários métodos para começar a hackear o IoTGoat.
Para aqueles que desejam extrair o sistema de arquivos, analisar configurações e binários estaticamente, baixe a versão mais recente do firmware pré-compilado em https://github.com/scriptingxss/IoTGoat/releases. Consulte a Metodologia de Teste de Segurança de Firmware da OWASP para ajudar na identificação de vulnerabilidades.
Para testes web dinâmicos e análise de tempo de execução de binários, a maneira mais rápida de começar é baixar o último "IoTGoat-x86.vmdk" (VMware) e criar uma máquina virtual personalizada usando a imagem de disco do IoTGoat. Consulte o Guia de Teste de Segurança Web e os projetos ASVS da OWASP para orientação adicional sobre identificação de vulnerabilidades em aplicações web.
Emule o firmware com ferramentas de código aberto (ex.: Firmadyne e FAT) que utilizam QEMU para virtualizar o IoTGoat localmente.
Use o firmware IoTGoat-raspberry-pi2-sysupgrade.img para gravar em um Raspberry Pi 2 (BRCM2708 & BRCM2709).
O OpenWrt pode construir muitas plataformas e placas de CPU diferentes. Construir a partir da fonte dá aos usuários a flexibilidade de gravar o IoTGoat em hardware OpenWrt suportado. Certifique-se de ter 10-15 GB de espaço em disco disponível, pelo menos 4 GB de RAM e uma distribuição Linux suportada, como Ubuntu 18.04. Siga os passos abaixo para começar a construir firmware personalizado.
Faça tudo como um usuário normal, não use o usuário root ou sudo ao construir!
$ git clone https://github.com/scriptingxss/IoTGoat.git
$ cd IoTGoat/OpenWrt/openwrt-18.06.2/
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ make menuconfig # select your preferred configuration for the toolchain, target system & firmware packages.
$ make # Build your firmware with make. This will download all sources, build the cross-compile toolchain and then cross-compile the Linux kernel & all chosen applications for your target system.
A primeira compilação levará algum tempo para ser concluída e variará de acordo com a conexão de internet fornecida para baixar a toolchain. Após uma compilação bem-sucedida, o firmware compilado será colocado no diretório IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/ dependendo do alvo selecionado no menuconfig. Por exemplo, o firmware IoTGoat Raspberry Pi 2 estará localizado no diretório IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709. Os arquivos de configuração de compilação do IoTGoat estão disponíveis para as plataformas x86 (.config-x86) e Raspberry Pi 2 (.config-rpi).
| I10 Falta de Endurecimento Físico | Falta de medidas de endurecimento físico, permitindo que potenciais atacantes obtenham informações sensíveis que podem ajudar em um futuro ataque remoto ou assumir o controle local do dispositivo. |