
Firmware baseado em OpenWrt deliberadamente inseguro para treinamento prático de segurança IoT. Apresenta desafios de vulnerabilidades mapeados para o OWASP IoT Top 10 para análise estática e dinâmica.

O Projeto IoTGoat é um firmware deliberadamente inseguro baseado em OpenWrt e mantido pela OWASP como uma plataforma para educar desenvolvedores de software e profissionais de segurança sobre como testar vulnerabilidades comuns encontradas em dispositivos IoT. Os desafios de vulnerabilidade são baseados no OWASP IoT Top 10 listado abaixo, bem como em "ovos de páscoa" de contribuidores do projeto. Para uma lista de desafios de vulnerabilidade, consulte a página IoTGoat challenges wiki.
| OWASP IoT Top 10 2018 | Descrição |
|---|---|
| I1 Senhas Fracas, Adivinháveis ou Codificadas | Uso de credenciais facilmente bruteforcíveis, 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 falta 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 mudanças 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 que o dispositivo seja comprometido. Isso inclui personalização insegura de plataformas de sistemas operacionais 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 a 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 falta de capacidade de tornar o sistema mais seguro restringindo os operadores de modificar as 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 o último lançamento de firmware pré-compilado em https://github.com/OWASP/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 binários em tempo de execução, 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. Selecione os seguintes detalhes do sistema operacional Tipo: Linux Versão: Linux 2.6 / 3.x / 4.x (32-bit) e ative PAE/NX nas configurações da máquina virtual. Tanto o .vmdk quanto o .vdi foram testados na versão mais recente do VirtualBox (abril de 2020) no Windows 10, Ubuntu 18.04 LTS e MacOS Mojave. Consulte o Guia de Teste de Segurança Web da OWASP e os projetos ASVS para orientações adicionais sobre identificação de vulnerabilidades em aplicações web.
Emule o firmware com ferramentas de código aberto (ex.: Firmadyne, ARM-X Framework e FAT) que utilizam QEMU para virtualizar o IoTGoat localmente.
Use o firmware IoTGoat-raspberry-pi2-sysupgrade.img para instalar em um Raspberry Pi 2 (BRCM2708 & BRCM2709).
Consulte a página Primeiros passos para obter detalhes adicionais e capturas de tela.
O OpenWrt pode compilar para muitas plataformas e placas de CPU diferentes. Compilar a partir do código fonte dá aos usuários a flexibilidade de instalar o IoTGoat em hardware suportado pelo OpenWrt. Certifique-se de ter 10-15 GB de espaço em disco disponível com pelo menos 4 GB de RAM e uma distribuição Linux suportada como Ubuntu 18.04. Use as seguintes etapas para começar a compilar firmware personalizado.
Faça tudo como um usuário normal, não use usuário root ou sudo ao compilar!
$ git clone https://github.com/OWASP/IoTGoat.git
$ cd IoTGoat/OpenWrt/openwrt-18.06.2/
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a
$ make menuconfig # selecione sua configuração preferida para toolchain, sistema alvo e pacotes de firmware.
$ make # Compile seu firmware com make. Isso baixará todas as fontes, compilará a toolchain de cross-compilação e então cross-compilará o kernel Linux e todas as aplicações escolhidas para seu sistema alvo.
A primeira compilação levará algum tempo para ser concluída e variará com base na conexão de internet fornecida para baixar a toolchain. Assim que a compilação for concluída com sucesso, o firmware compilado será colocado no seguinte diretório IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/ dependendo do alvo selecionado em menuconfig. Por exemplo, o firmware do IoTGoat para Raspberry Pi 2 estará localizado no seguinte 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 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 possíveis atacantes obtenham informações sensíveis que podem ajudar em um futuro ataque remoto ou assumir o controle local do dispositivo. |
Use a configuração Docker para executar o IoTGoat em um ambiente conteinerizado. Consulte o guia de configuração Docker para mais detalhes.