基于 OpenWrt 的刻意不安全的固件,用于动手实践的物联网安全培训。提供映射到 OWASP IoT Top 10 的漏洞挑战,适用于静态和动态分析。

IoTGoat 项目是一个基于 OpenWrt 的刻意不安全的固件,由 OWASP 维护,旨在作为教育平台,培训软件开发人员和安全专业人员测试物联网设备中常见的漏洞。漏洞挑战基于下面列出的 OWASP 物联网十大风险(IoT Top 10),以及项目贡献者留下的“彩蛋”。如需漏洞挑战列表,请参阅 IoTGoat 挑战 wiki 页面。
| OWASP IoT Top 10 2018 | 描述 |
|---|---|
| I1 弱口令、可猜测或硬编码的密码 | 使用容易被暴力破解、公开可用或不可更改的凭据,包括固件或客户端软件中允许未经授权访问已部署系统的后门。 |
| I2 不安全的网络服务 | 设备本身运行的不必要或不安全的网络服务,尤其是暴露在互联网上的服务,这些服务会破坏信息的机密性、完整性/真实性或可用性,或允许未经授权的远程控制。 |
| I3 不安全的生态系统接口 | 设备之外生态系统中不安全的 Web、后端 API、云或移动接口,可能导致设备或其相关组件被攻破。常见问题包括缺乏身份验证/授权、加密缺失或强度不足,以及缺乏输入和输出过滤。 |
| I4 缺乏安全更新机制 | 缺乏安全更新设备的能力。这包括设备上缺乏固件验证、缺乏安全交付 (传输中未加密)、缺乏防回滚机制,以及缺乏因更新导致的安全变更通知。 |
| I5 使用不安全或过时的组件 | 使用已弃用或不安全的软件组件/库,可能导致设备被攻破。这包括对操作系统平台的不安全定制,以及使用来自受感染供应链的第三方软件或硬件组件 |
| I6 隐私保护不足 | 存储在设备上或生态系统中的用户个人信息被不安全、不恰当或未经许可地使用。 |
| I7 不安全的数据传输和存储 | 生态系统中任何位置对敏感数据缺乏加密或访问控制,包括静态、传输中或处理过程中 |
| I8 缺乏设备管理 | 对部署在生产环境中的设备缺乏安全支持,包括资产管理、更新管理、安全退役、系统监控和响应能力。 |
| I9 不安全的默认设置 | 设备或系统以不安全的默认设置出厂,或缺乏通过限制操作员修改配置来使系统更安全的能力。 |
| I10 缺乏物理加固 | 缺乏物理加固措施,使潜在攻击者能够获取敏感信息,这些信息可帮助发起未来的远程攻击或对设备进行本地控制。 |
有几种方法可以开始破解 IoTGoat。
对于希望提取文件系统、静态分析配置和二进制文件的用户,请从 https://github.com/OWASP/IoTGoat/releases 下载最新的预编译固件版本。请参阅 OWASP 的固件安全测试方法论以帮助识别漏洞。
对于动态 Web 测试和二进制运行时分析,最快的入门方法是下载最新的“IoTGoat-x86.vmdk”(VMware),并使用 IoTGoat 磁盘镜像创建自定义虚拟机。在虚拟机设置中选择以下操作系统详细信息:Type: Linux、Version: Linux 2.6 / 3.x / 4.x (32-bit) 和 Enable PAE/NX。.vmdk 和 .vdi 均已在最新的 VirtualBox 版本(2020 年 4 月)中针对 Windows 10、Ubuntu 18.04 LTS 和 MacOS Mojave 进行了测试。有关识别 Web 应用程序漏洞的其他指导,请参阅 OWASP 的 Web 安全测试指南和 ASVS 项目
使用开源工具(例如 Firmadyne、ARM-X Framework 和 FAT)模拟固件,这些工具利用 QEMU 在本地虚拟化 IoTGoat。
使用 IoTGoat-raspberry-pi2-sysupgrade.img 固件刷写到 Raspberry Pi 2 (BRCM2708 & BRCM2709) 上。
使用 Docker 设置在容器化环境中运行 IoTGoat。更多详情请参阅 Docker 设置指南。
有关更多详细信息和屏幕截图,请参阅快速入门页面。
OpenWrt 可以构建许多不同的 CPU 平台和开发板。从源码构建使用户可以灵活地将 IoTGoat 刷写到受支持的 OpenWrt 硬件上。请确保至少有 10-15GB 磁盘空间、4GB 内存以及一个受支持的 Linux 发行版,如 Ubuntu 18.04。使用以下步骤开始构建自定义固件。
$ 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.
首次构建需要一些时间才能完成,具体时间取决于下载工具链时的互联网连接状况。构建成功完成后,编译好的固件将根据在 menuconfig 中选择的目标放置在以下目录中:IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/。例如,IoTGoat Raspberry Pi 2 固件将位于 IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709 目录中。IoTGoat 构建配置文件可用于 x86 (.config-x86) 和 Raspberry Pi 2 (.config-rpi) 平台。



