
Firmware basado en OpenWrt deliberadamente inseguro para formación práctica en seguridad de IoT. Incluye retos de vulnerabilidades mapeados al OWASP IoT Top 10 para análisis estático y dinámico.

El Proyecto IoTGoat es un firmware deliberadamente inseguro basado en OpenWrt y mantenido por OWASP como una plataforma para educar a desarrolladores de software y profesionales de la seguridad en las pruebas de vulnerabilidades que se encuentran comúnmente en los dispositivos IoT. Los retos de vulnerabilidad se basan en el OWASP IoT Top 10 que se indica a continuación, así como en los "huevos de pascua" de los colaboradores del proyecto. Para ver una lista de retos de vulnerabilidad, consulte la página wiki de retos de IoTGoat.
| OWASP IoT Top 10 2018 | Descripción |
|---|---|
| I1 Contraseñas débiles, adivinables o codificadas | Uso de credenciales fácilmente vulnerables por fuerza bruta, disponibles públicamente o inmutables, incluidos los backdoors en el firmware o el software cliente que otorgan acceso no autorizado a los sistemas implementados. |
| I2 Servicios de red inseguros | Servicios de red innecesarios o inseguros que se ejecutan en el propio dispositivo, especialmente aquellos expuestos a Internet, que comprometen la confidencialidad, integridad/autenticidad o disponibilidad de la información o permiten el control remoto no autorizado. |
| I3 Interfaces de ecosistema inseguras | Interfaces web, API de backend, de nube o móviles inseguras dentro del ecosistema, fuera del dispositivo, que permiten comprometer el dispositivo o sus componentes relacionados. Los problemas habituales incluyen la falta de autenticación/autorización, cifrado ausente o débil y la falta de filtrado de entrada y salida. |
| I4 Falta de mecanismo de actualización seguro | Falta de capacidad para actualizar el dispositivo de forma segura. Esto incluye la falta de validación del firmware en el dispositivo, la falta de entrega segura (sin cifrado en tránsito), la falta de mecanismos de protección contra la reversión y la falta de notificaciones sobre cambios de seguridad debidos a las actualizaciones. |
| I5 Uso de componentes inseguros u obsoletos | Uso de componentes o bibliotecas de software obsoletos o inseguros que podrían permitir que el dispositivo se vea comprometido. Esto incluye la personalización insegura de plataformas de sistemas operativos y el uso de componentes de software o hardware de terceros de una cadena de suministro comprometida. |
| I6 Protección de la privacidad insuficiente | Información personal del usuario almacenada en el dispositivo o en el ecosistema que se utiliza de forma insegura, inadecuada o sin permiso. |
| I7 Transferencia y almacenamiento de datos inseguros | Falta de cifrado o control de acceso de datos sensibles en cualquier parte del ecosistema, incluidos en reposo, en tránsito o durante el procesamiento. |
| I8 Falta de gestión de dispositivos | Falta de soporte de seguridad en los dispositivos desplegados en producción, incluida la gestión de activos, la gestión de actualizaciones, la descomisión segura, la monitorización de sistemas y las capacidades de respuesta. |
| I9 Configuraciones predeterminadas inseguras | Dispositivos o sistemas enviados con configuraciones predeterminadas inseguras o la falta de capacidad para hacer el sistema más seguro restringiendo a los operadores la modificación de configuraciones. |
Existen varios métodos para empezar a hackear IoTGoat.
Para los que buscan extraer el sistema de archivos, analizar configuraciones y binarios de forma estática, descargue la última versión del firmware precompilado desde https://github.com/OWASP/IoTGoat/releases. Consulte la Metodología de pruebas de seguridad de firmware de OWASP para ayudar a identificar vulnerabilidades.
Para pruebas web dinámicas y análisis de ejecución de binarios, la forma más rápida de empezar es descargar el último "IoTGoat-x86.vmdk" (VMware) y crear una máquina virtual personalizada con la imagen de disco de IoTGoat. Seleccione los siguientes detalles del sistema operativo Type: Linux Version: Linux 2.6 / 3.x / 4.x (32-bit) y active Enable PAE/NX en la configuración de la máquina virtual. Tanto el .vmdk como el .vdi se han probado en la última versión de VirtualBox (abril de 2020) para Windows 10, Ubuntu 18.04 LTS y MacOS Mojave. Consulte los proyectos Web Security Testing Guide y ASVS de OWASP para obtener orientación adicional sobre la identificación de vulnerabilidades en aplicaciones web.
Emule el firmware con herramientas de código abierto (por ejemplo, Firmadyne, ARM-X Framework y FAT) que aprovechan QEMU para virtualizar IoTGoat localmente.
Utilice el firmware para flashear en una Raspberry Pi 2 (BRCM2708 y BRCM2709).
Consulte la página Primeros pasos para obtener más detalles y capturas de pantalla.
OpenWrt puede compilar para muchas plataformas de CPU y placas diferentes. Compilar desde el código fuente ofrece a los usuarios la flexibilidad de flashear IoTGoat en hardware OpenWrt compatible. Asegúrese de disponer de 10-15 GB de espacio en disco, al menos 4 GB de RAM y una distribución de Linux compatible, como Ubuntu 18.04. Utilice los siguientes pasos para empezar a compilar firmware personalizado.
Haga todo como un usuario normal, ¡no use root ni sudo al 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 # 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.
La primera compilación tardará algún tiempo en completarse y variará según la conexión a Internet disponible para descargar la cadena de herramientas. Una vez que una compilación se complete con éxito, el firmware compilado se colocará en el siguiente directorio IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/ dependiendo del destino seleccionado en menuconfig. Por ejemplo, el firmware de IoTGoat para Raspberry Pi 2 se ubicará en el siguiente directorio IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709. Los archivos de configuración de compilación de IoTGoat están disponibles para las plataformas x86 (.config-x86) y Raspberry Pi 2 (.config-rpi).




| I10 Falta de endurecimiento físico | Falta de medidas de endurecimiento físico que permite a posibles atacantes obtener información sensible que puede ayudar en un futuro ataque remoto o tomar el control local del dispositivo. |
IoTGoat-raspberry-pi2-sysupgrade.imgUtilice la configuración de Docker para ejecutar IoTGoat en un entorno contenedorizado. Consulte la guía de configuración de Docker para obtener más detalles.