
IoTGoat — это намеренно небезопасная прошивка, основанная на OpenWrt.

Проект IoTGoat — это специально незащищенная прошивка на основе OpenWrt, поддерживаемая OWASP, чтобы обучать пользователей тестированию наиболее распространенных уязвимостей в IoT-устройствах. Проблемы уязвимости основаны на OWASP IoT Top 10, перечисленном ниже, а также на "пасхальных яйцах" от участников проекта. Список заданий по уязвимостям см. на странице вики IoTGoat challenges.
| OWASP IoT Top 10 2018 | Описание |
|---|---|
| I1 Слабые, угадываемые или жестко заданные пароли | Использование легко подбираемых, общедоступных или неизменяемых учетных данных, включая бэкдоры в прошивке или клиентском ПО, которые предоставляют несанкционированный доступ к развернутым системам. |
| I2 Небезопасные сетевые службы | Ненужные или небезопасные сетевые службы, работающие на самом устройстве, особенно те, которые доступны из интернета, нарушающие конфиденциальность, целостность/подлинность или доступность информации, или допускающие несанкционированное удаленное управление. |
| I3 Небезопасные интерфейсы экосистемы | Небезопасные веб-, внутренние API, облачные или мобильные интерфейсы в экосистеме вне устройства, которые позволяют скомпрометировать устройство или связанные с ним компоненты. Типичные проблемы включают отсутствие аутентификации/авторизации, отсутствие или слабое шифрование, а также отсутствие фильтрации ввода и вывода. |
| I4 Отсутствие безопасного механизма обновления | Отсутствие возможности безопасного обновления устройства. Это включает отсутствие проверки прошивки на устройстве, отсутствие безопасной доставки (незашифрованная передача), отсутствие механизмов защиты от отката и отсутствие уведомлений об изменениях безопасности из-за обновлений. |
| I5 Использование небезопасных или устаревших компонентов | Использование устаревших или небезопасных программных компонентов/библиотек, которые могут привести к компрометации устройства. Это включает небезопасную настройку платформ операционных систем и использование сторонних программных или аппаратных компонентов из скомпрометированной цепочки поставок. |
| I6 Недостаточная защита конфиденциальности | Личная информация пользователя, хранящаяся на устройстве или в экосистеме, которая используется небезопасно, неправильно или без разрешения. |
| I7 Небезопасная передача и хранение данных | Отсутствие шифрования или контроля доступа к конфиденциальным данным в любом месте экосистемы, включая хранение, передачу или обработку. |
| I8 Отсутствие управления устройствами | Отсутствие поддержки безопасности на устройствах, развернутых в производстве, включая управление активами, управление обновлениями, безопасное выведение из эксплуатации, мониторинг систем и возможности реагирования. |
| I9 Небезопасные настройки по умолчанию | Устройства или системы, поставляемые с небезопасными настройками по умолчанию, или отсутствие возможности сделать систему более безопасной путем ограничения операторов от изменения конфигураций. |
Существует несколько способов начать взлом IoTGoat.
Для тех, кто хочет извлечь файловую систему, проанализировать конфигурации и бинарные файлы статически, загрузите последнюю предварительно скомпилированную версию прошивки с https://github.com/scriptingxss/IoTGoat/releases. Обратитесь к методологии тестирования безопасности прошивок OWASP для выявления уязвимостей.
Для динамического тестирования веб-приложений и анализа работы бинарных файлов самый быстрый способ начать — загрузить последнюю версию "IoTGoat-x86.vmdk" (VMware) и создать собственную виртуальную машину, используя образ диска IoTGoat. Обратитесь к проектам OWASP Web Security Testing Guide и ASVS за дополнительными рекомендациями по выявлению уязвимостей веб-приложений.
Эмулируйте прошивку с помощью инструментов с открытым исходным кодом (например, Firmadyne и FAT), которые используют QEMU для виртуализации IoTGoat локально.
Используйте прошивку IoTGoat-raspberry-pi2-sysupgrade.img для прошивки на Raspberry Pi 2 (BRCM2708 и BRCM2709).
OpenWrt может собирать прошивки для многих различных платформ и плат. Сборка из исходников дает пользователям гибкость в прошивке IoTGoat на поддерживаемом оборудовании OpenWrt. Убедитесь, что доступно 10–15 ГБ дискового пространства, не менее 4 ГБ оперативной памяти и поддерживаемый дистрибутив Linux, такой как Ubuntu 18.04. Выполните следующие шаги, чтобы начать сборку собственной прошивки.
Делайте всё как обычный пользователь, не используйте root или sudo при сборке!
$ 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.
Первая сборка займет некоторое время и будет варьироваться в зависимости от предоставленного интернет-соединения для загрузки инструментария. После успешной сборки скомпилированная прошивка будет помещена в следующую директорию IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/ в зависимости от цели, выбранной в menuconfig. Например, прошивка IoTGoat для Raspberry Pi 2 будет находиться в директории IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709. Файлы конфигурации сборки IoTGoat доступны для платформ x86 (.config-x86) и Raspberry Pi 2 (.config-rpi).
| I10 Отсутствие физической защиты | Отсутствие мер физической защиты, позволяющее потенциальным злоумышленникам получить конфиденциальную информацию, которая может помочь в будущей удаленной атаке или получить локальный контроль над устройством. |