
IoTGoat 项目是一个基于 OpenWrt 的故意制造不安全的固件,由 OWASP 维护,旨在教育用户如何测试 IoT 设备中最常见的漏洞。漏洞挑战基于下面列出的 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/scriptingxss/IoTGoat/releases 下载最新的预编译固件版本。参考 OWASP 的 固件安全测试方法论 以帮助识别漏洞。
对于动态 Web 测试和二进制运行时分析,最快的方法是下载最新的 "IoTGoat-x86.vmdk" (VMware),并使用 IoTGoat 磁盘镜像创建自定义虚拟机。参考 OWASP 的 Web 安全测试指南 和 ASVS 项目,以获取识别 Web 应用程序漏洞的额外指导。
使用 IoTGoat-raspberry-pi2-sysupgrade.img 固件刷写到 Raspberry Pi 2(BRCM2708 和 BRCM2709)。
OpenWrt 可以构建许多不同的 CPU 平台和开发板。从源码构建使用户能够灵活地在受支持的 OpenWrt 硬件上刷写 IoTGoat。确保拥有 10-15GB 磁盘空间、至少 4GB RAM 以及受支持的 Linux 发行版,例如 Ubuntu 18.04。使用以下步骤开始构建自定义固件。
$ 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 # 选择您偏好的工具链、目标系统和固件包配置。
$ make # 使用 make 构建您的固件。这将下载所有源代码,构建交叉编译工具链,然后为目标系统交叉编译 Linux 内核和所有选定的应用程序。
首次构建需要一些时间才能完成,具体时间取决于提供的互联网连接以下载工具链。构建成功完成后,编译好的固件将根据 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)平台。