
Absichtlich unsichere OpenWrt-basierte Firmware für praxisnahes IoT-Sicherheitstraining. Bietet Schwachstellen-Challenges, die auf die OWASP IoT Top 10 abgestimmt sind, für statische und dynamische Analyse.

Das IoTGoat-Projekt ist eine absichtlich unsichere Firmware, die auf OpenWrt basiert und von OWASP als Plattform gepflegt wird, um Softwareentwickler und Sicherheitsexperten beim Testen häufig vorkommender Schwachstellen in IoT-Geräten zu schulen. Die Schwachstellen-Herausforderungen basieren auf den unten aufgeführten OWASP IoT Top 10 sowie auf „Easter Eggs“ von Projektmitwirkenden. Eine Liste der Schwachstellen-Herausforderungen finden Sie auf der Seite IoTGoat challenges wiki.
| OWASP IoT Top 10 2018 | Beschreibung |
|---|---|
| I1 Schwache, erratbare oder hartcodierte Passwörter | Verwendung von leicht bruteforcierbaren, öffentlich verfügbaren oder unveränderbaren Zugangsdaten, einschließlich Hintertüren in Firmware oder Client-Software, die unbefugten Zugriff auf bereitgestellte Systeme gewähren. |
| I2 Unsichere Netzwerkdienste | Unnötige oder unsichere Netzwerkdienste, die auf dem Gerät selbst laufen, insbesondere solche, die dem Internet ausgesetzt sind und die Vertraulichkeit, Integrität/Authentizität oder Verfügbarkeit von Informationen gefährden oder unbefugte Fernsteuerung ermöglichen. |
| I3 Unsichere Ökosystem-Schnittstellen | Unsichere Web-, Backend-API-, Cloud- oder Mobil-Schnittstellen 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 -Hardwarekomponenten aus einer kompromittierten Lieferkette. |
| I6 Unzureichender Schutz der Privatsphäre | Persönliche Daten des Benutzers, die auf dem Gerät oder im Ökosystem gespeichert und unsicher, unsachgemäß oder ohne Erlaubnis verwendet werden. |
| I7 Unsicherer Datentransfer und unsichere Speicherung | Fehlende Verschlüsselung oder Zugriffskontrolle für sensible Daten überall im Ökosystem, einschließlich im Ruhezustand, bei der Übertragung oder während der Verarbeitung. |
| I8 Fehlen von Geräteverwaltung | Fehlende Sicherheitsunterstützung für in Produktion eingesetzte Geräte, einschließlich Asset-Management, Update-Management, sicherer 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 Hacken von IoTGoat zu beginnen.
Für alle, die das Dateisystem extrahieren und Konfigurationen und Binärdateien statisch analysieren möchten, laden Sie die neueste vorkompilierte Firmware-Version von https://github.com/OWASP/IoTGoat/releases herunter. Siehe OWASPs Firmware Security Testing Methodology zur Unterstützung bei der Identifizierung von Schwachstellen.
Für dynamische Webtests und binäre Laufzeitanalyse ist der schnellste Einstieg, die neueste "IoTGoat-x86.vmdk" (VMware) herunterzuladen und eine benutzerdefinierte virtuelle Maschine mit dem IoTGoat-Datenträgerabbild zu erstellen. Wählen Sie die folgenden Betriebssystemdetails Type: Linux Version: Linux 2.6 / 3.x / 4.x (32-bit) und aktivieren Sie Enable PAE/NX in den Einstellungen der virtuellen Maschine. Sowohl die .vmdk als auch die .vdi wurden mit der neuesten VirtualBox-Version (April 2020) für Windows 10, Ubuntu 18.04 LTS und MacOS Mojave getestet. Siehe die Projekte Web Security Testing Guide und ASVS von OWASP für weitere Hinweise zur Identifizierung von Webanwendungsschwachstellen.
Emulieren Sie die Firmware mit Open-Source-Tools (z. B. Firmadyne, ARM-X Framework und FAT), die QEMU nutzen, um IoTGoat lokal zu virtualisieren.
Verwenden Sie die Firmware , um ein Raspberry Pi 2 (BRCM2708 & BRCM2709) zu flashen.
Weitere Details und Bildschirmaufnahmen finden Sie auf der Seite Getting started.
OpenWrt kann viele verschiedene CPU-Plattformen und Boards erstellen. 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 Speicherplatz, mindestens 4 GB RAM und eine unterstützte Linux-Distribution wie Ubuntu 18.04 verfügbar sind. Verwenden Sie die folgenden Schritte, um mit dem Erstellen benutzerdefinierter Firmware zu beginnen.
Führen Sie alles als normaler Benutzer aus, verwenden Sie beim Erstellen nicht root oder 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.
Der erste Build benötigt etwas Zeit und hängt von der bereitgestellten Internetverbindung zum Herunterladen der Toolchain ab. Nach erfolgreichem Abschluss des Builds wird die kompilierte Firmware je nach dem in menuconfig ausgewählten Ziel im folgenden Verzeichnis abgelegt: IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/. Beispielsweise befindet sich die IoTGoat-Raspberry-Pi-2-Firmware im folgenden Verzeichnis: IoTGoat/OpenWrt/openwrt-18.06.2/bin/targets/brcm2708/bcm2709. Die IoTGoat-Build-Konfigurationsdateien sind für x86- (.config-x86) und Raspberry-Pi-2- (.config-rpi) Plattformen verfügbar.




| I10 Fehlen physischer Härtung | Fehlen physischer Härtungsmaßnahmen, die es potenziellen Angreifern ermöglicht, sensible Informationen zu erlangen, die bei einem zukünftigen Remote-Angriff helfen oder eine lokale Kontrolle des Geräts ermöglichen. |
IoTGoat-raspberry-pi2-sysupgrade.imgVerwenden Sie das Docker-Setup, um IoTGoat in einer containerisierten Umgebung auszuführen. Weitere Einzelheiten finden Sie im Docker-Setup-Leitfaden.