
Преднамеренно небезопасная прошивка на основе OpenWrt для практического обучения безопасности IoT. Содержит уязвимости, соответствующие OWASP IoT Top 10 для статического и динамического анализа.

Проект IoTGoat представляет собой заведомо небезопасную прошивку на основе OpenWrt, поддерживаемую OWASP как платформа для обучения разработчиков программного обеспечения и специалистов по безопасности тестированию распространенных уязвимостей в устройствах IoT. Задачи по поиску уязвимостей основаны на OWASP IoT Top 10, приведенном ниже, а также на «пасхальных яйцах» от участников проекта. Список задач по поиску уязвимостей см. на странице вики-странице IoTGoat.
| OWASP IoT Топ-10 2018 | Описание |
|---|---|
| I1 Слабые, угадываемые или жестко закодированные пароли | Использование легко подбираемых, общедоступных или неизменяемых учетных данных, включая бэкдоры в прошивке или клиентском ПО, которые предоставляют несанкционированный доступ к развернутым системам. |
| I2 Небезопасные сетевые службы | Ненужные или небезопасные сетевые службы, работающие на самом устройстве, особенно те, которые доступны из интернета, нарушающие конфиденциальность, целостность/подлинность или доступность информации или позволяющие несанкционированное удаленное управление. |
| I3 Небезопасные интерфейсы экосистемы | Небезопасные веб-интерфейсы, внутренние API, облачные или мобильные интерфейсы в экосистеме вне устройства, которые позволяют скомпрометировать устройство или связанные с ним компоненты. Распространенные проблемы включают отсутствие аутентификации/авторизации, отсутствие или слабое шифрование, а также отсутствие фильтрации ввода и вывода. |
| I4 Отсутствие безопасного механизма обновления | Отсутствие возможности безопасного обновления устройства. Это включает отсутствие проверки прошивки на устройстве, отсутствие безопасной доставки (незашифрованной при передаче), отсутствие механизмов защиты от отката и отсутствие уведомлений об изменениях безопасности из-за обновлений. |
| I5 Использование небезопасных или устаревших компонентов | Использование устаревших или небезопасных программных компонентов/библиотек, которые могут привести к компрометации устройства. Это включает небезопасную настройку платформ операционных систем и использование сторонних программных или аппаратных компонентов из скомпрометированной цепочки поставок. |
| I6 Недостаточная защита конфиденциальности | Личная информация пользователя, хранящаяся на устройстве или в экосистеме, которая используется небезопасно, ненадлежащим образом или без разрешения. |
| I7 Небезопасная передача и хранение данных | Отсутствие шифрования или контроля доступа к конфиденциальным данным в любом месте экосистемы, включая хранение, передачу или обработку. |
| I8 Отсутствие управления устройствами | Отсутствие поддержки безопасности на устройствах, развернутых в производственной среде, включая управление активами, управление обновлениями, безопасное вывод из эксплуатации, мониторинг систем и возможности реагирования. |
| I9 Небезопасные настройки по умолчанию | Устройства или системы, поставляемые с небезопасными настройками по умолчанию или не имеющие возможности сделать систему более безопасной, ограничивая операторов в изменении конфигураций. |
Существует несколько способов начать взлом IoTGoat.
Для тех, кто хочет извлечь файловую систему, проанализировать конфигурации и бинарные файлы статически, загрузите последний предварительно скомпилированный релиз прошивки с https://github.com/OWASP/IoTGoat/releases. Обратитесь к Методологии тестирования безопасности прошивки от OWASP для помощи в выявлении уязвимостей.
Для динамического веб-тестирования и анализа времени выполнения бинарных файлов самый быстрый способ начать — загрузить последний «IoTGoat-x86.vmdk» (VMware) и создать пользовательскую виртуальную машину с использованием образа диска IoTGoat. Выберите следующие детали операционной системы: Type: Linux, Version: Linux 2.6 / 3.x / 4.x (32-bit) и включите Enable PAE/NX в настройках виртуальной машины. Как .vmdk, так и .vdi были протестированы в последней версии VirtualBox (апрель 2020) для Windows 10, Ubuntu 18.04 LTS и MacOS Mojave. Обратитесь к проектам OWASP Web Security Testing Guide и ASVS для дополнительных рекомендаций по выявлению уязвимостей веб-приложений.
Эмулируйте прошивку с помощью инструментов с открытым исходным кодом (например, Firmadyne, ARM-X Framework и FAT), которые используют QEMU для виртуализации IoTGoat локально.
Используйте прошивку IoTGoat-raspberry-pi2-sysupgrade.img для прошивки на Raspberry Pi 2 (BRCM2708 & BRCM2709).
Дополнительные сведения и скриншоты см. на странице Начало работы.
OpenWrt может собирать под множество различных платформ CPU и плат. Сборка из исходного кода дает пользователям гибкость для прошивки IoTGoat на поддерживаемое оборудование OpenWrt. Убедитесь, что доступно 10-15 ГБ дискового пространства, не менее 4 ГБ ОЗУ и поддерживаемый дистрибутив Linux, такой как Ubuntu 18.04. Используйте следующие шаги для начала сборки пользовательской прошивки.
Делайте все как обычный пользователь, не используйте root или sudo при сборке!
$ 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.
Первая сборка займет некоторое время и будет варьироваться в зависимости от предоставленного интернет-соединения для загрузки инструментария. После успешного завершения сборки скомпилированная прошивка будет помещена в каталог 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 Отсутствие физической защиты | Отсутствие мер физической защиты, позволяющее потенциальным злоумышленникам получить конфиденциальную информацию, которая может помочь в будущей удаленной атаке или получить локальный контроль над устройством. |
Используйте настройку Docker для запуска IoTGoat в контейнерной среде. Обратитесь к руководству по настройке Docker для получения дополнительной информации.