
IoTGoat ist eine absichtlich unsichere Firmware, die auf OpenWrt basiert.

Das IoTGoat-Projekt ist eine absichtlich unsichere Firmware basierend auf OpenWrt und wird von OWASP betrieben, um Nutzer darin zu schulen, die häufigsten Schwachstellen in IoT-Geräten zu testen. Die Sicherheitsherausforderungen basieren auf dem unten aufgeführten OWASP IoT Top 10 sowie auf „Ostereiern" von Projektbeiträgern. Eine Liste der Sicherheitsherausforderungen finden Sie auf der IoTGoat-Challenges-Wiki-Seite.
| OWASP IoT Top 10 2018 | Beschreibung |
|---|---|
| I1 Schwache, erratbare oder hartcodierte Passwörter | Verwendung von leicht bruteforcebaren, öffentlich verfügbaren oder unveränderbaren Anmeldeinformationen, einschließlich Hintertüren in Firmware oder Clientsoftware, die unbefugten Zugriff auf bereitgestellte Systeme ermöglichen. |
| I2 Unsichere Netzwerkdienste | Nicht benötigte oder unsichere Netzwerkdienste, die auf dem Gerät selbst laufen, insbesondere solche mit Internetzugang, die die Vertraulichkeit, Integrität/Authentizität oder Verfügbarkeit von Informationen gefährden oder unbefugte Fernsteuerung ermöglichen. |
| I3 Unsichere Ökosystemschnittstellen | Unsichere Web-, Backend-API-, Cloud- oder Mobilschnittstellen im Ökosystem außerhalb des Geräts, die eine Kompromittierung des Geräts oder seiner zugehörigen Komponenten ermöglichen. Häufige Probleme sind fehlende Authentifizierung/Autorisierung, fehlende oder schwache Verschlüsselung sowie fehlende Ein- und Ausgabefilterung. |
| I4 Fehlen eines sicheren Update-Mechanismus | Fehlende Möglichkeit, das Gerät sicher zu aktualisieren. Dazu gehören fehlende Firmware-Validierung auf dem Gerät, fehlende sichere Zustellung (unverschlüsselt während der Übertragung), fehlende Anti-Rollback-Mechanismen und fehlende Benachrichtigungen über Sicherheitsänderungen durch Updates. |
| I5 Verwendung unsicherer oder veralteter Komponenten | Verwendung veralteter oder unsicherer Softwarekomponenten/-bibliotheken, die eine Kompromittierung des Geräts ermöglichen könnten. Dazu gehören unsichere Anpassungen von Betriebssystemplattformen und die Verwendung von Drittanbieter-Software oder -Hardware aus einer kompromittierten Lieferkette. |
| I6 Unzureichender Schutz der Privatsphäre | Personenbezogene Daten des Benutzers, die auf dem Gerät oder im Ökosystem gespeichert und unsicher, unangemessen oder ohne Erlaubnis verwendet werden. |
| I7 Unsichere Datenübertragung und -speicherung | Fehlende Verschlüsselung oder Zugriffskontrolle für sensible Daten im gesamten Ökosystem, einschließlich im Ruhezustand, während der Übertragung oder während der Verarbeitung. |
| I8 Fehlendes Gerätemanagement | Fehlende Sicherheitsunterstützung für in der Produktion eingesetzte Geräte, einschließlich Asset-Management, Update-Management, sichere Außerbetriebnahme, Systemüberwachung und Reaktionsfähigkeiten. |
| I9 Unsichere Standardeinstellungen | Geräte oder Systeme, die mit unsicheren Standardeinstellungen ausgeliefert werden oder denen die Möglichkeit fehlt, das System sicherer zu machen, indem Betreiber daran gehindert werden, Konfigurationen zu ändern. |
Es gibt mehrere Methoden, um mit dem Hacking von IoTGoat zu beginnen.
Für diejenigen, die das Dateisystem extrahieren und Konfigurationen sowie Binärdateien statisch analysieren möchten, laden Sie die neueste vorkompilierte Firmware-Version von https://github.com/scriptingxss/IoTGoat/releases herunter. Beachten Sie die Firmware Security Testing Methodology von OWASP, um Schwachstellen zu identifizieren.
Für dynamische Webtests und Laufzeitanalyse von Binärdateien ist der schnellste Weg, die neueste „IoTGoat-x86.vmdk" (VMware) herunterzuladen und eine benutzerdefinierte virtuelle Maschine mit dem IoTGoat-Disk-Image zu erstellen. Konsultieren Sie die Projekte Web Security Testing Guide und ASVS von OWASP für weitere Anleitungen zur Identifizierung von Webanwendungsschwachstellen.
Emulieren Sie die Firmware mit Open-Source-Tools (z. B. Firmadyne und FAT), die QEMU nutzen, um IoTGoat lokal zu virtualisieren.
Verwenden Sie die Firmware IoTGoat-raspberry-pi2-sysupgrade.img, um sie auf einem Raspberry Pi 2 (BRCM2708 & BRCM2709) zu flashen.
OpenWrt kann viele verschiedene CPU-Plattformen und Boards unterstützen. Das Erstellen aus dem Quellcode gibt Benutzern die Flexibilität, IoTGoat auf unterstützter OpenWrt-Hardware zu flashen. Stellen Sie sicher, dass 10-15 GB Festplattenspeicher und mindestens 4 GB RAM verfügbar sind, sowie eine unterstützte Linux-Distribution wie Ubuntu 18.04. Verwenden Sie die folgenden Schritte, um mit dem Erstellen benutzerdefinierter Firmware zu beginnen.
$ 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.
Der erste Build wird einige Zeit in Anspruch nehmen und je nach Internetverbindung für den Download des Toolchains variieren. Nach erfolgreichem Build wird die kompilierte Firmware im folgenden Verzeichnis abgelegt: IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/ abhängig vom in menuconfig ausgewählten Ziel. Zum Beispiel befindet sich die IoTGoat-Firmware für Raspberry Pi 2 im folgenden Verzeichnis: IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709. IoTGoat-Build-Konfigurationsdateien sind für x86 (.config-x86) und Raspberry Pi 2 (.config-rpi) Plattformen verfügbar.
| I10 Fehlende physikalische Härtung | Fehlende physikalische Härtungsmaßnahmen, die es potenziellen Angreifern ermöglichen, sensible Informationen zu erlangen, die bei einem späteren Fernangriff helfen oder eine lokale Kontrolle des Geräts ermöglichen. |