von Jakob Kunzmann

IoTGoat ist eine absichtlich verwundbare Software, wie sie beispielsweise auf Routern zu finden ist. Enthalten sind die am häufigsten beobachteten Schwachstellen von IoT-Geräten. Das Projekt dient dazu, das Bewusstsein für diese Schwachstellen zu erhöhen, um zukünftige Generationen von IoT-Geräten und -Netzwerken sicherer zu machen. In diesem Artikel werden sowohl das Projekt allgemein als auch einige der Schwachstellen vorgestellt.

Abbildung 1: IoTGoat

Die Non-Profit-Organisation Open Web Application Security Project (OWASP) ist vor allem durch die Zusammenstellung der „OWASP Top 10“, einer Liste der häufigsten Sicherheitslücken in Webanwendungen, bekannt geworden.

Die Arbeit von OWASP geht jedoch darüber hinaus: Zum einen erstellt die Organisation Standards, Richtlinien und Anleitungen zu unterschiedlichen sicherheitsrelevanten Themen, zum anderen beschäftigt sie sich mit der Entwicklung bzw. Sammlung von Tools, die zur Überprüfung und Verbesserung von Sicherheitsmechanismen in Applikationen genutzt werden können. [1]

Unter den Tools erlangte vor allem die Webanwendung «Juice Shop» Bekanntheit, eine Shop-Anwendung, die eine Vielzahl gängiger Sicherheitslücken enthält. Die Open-Source-Software dient als Trainingsplattform oder Demoanwendung für Awareness-Schulungen. Dabei werden sowohl simple Angriffe wie das Erraten von schwachen Passwörtern (z.B. dem berühmten «123456») abgedeckt als auch anspruchsvollere Schwachstellen wie Blind SQL-Injections.

Da der Themenbereich des Internet of Things (IoT) in den letzten Jahren verstärkt in den Fokus von Sicherheitsforschern und Kriminellen geraten ist, hat OWASP nun auch hierzu eine Umgebung analog zum «Juice Shop» entwickelt. Dabei handelt es sich um eine Software, wie sie beispielsweise auf Routern oder anderen Geräten mit vergleichsweise schwacher Hardwareausstattung zu finden ist. Diese auf OpenWrt [2] basierende Firmware enthält die häufigsten im IoT auffindbaren Sicherheitslücken (vergleiche dazu: OWASP IoT Top 10 – Teil 1 und OWASP IoT Top 10 – Teil 2).

Im Folgenden wird kurz auf den generellen Umfang von IoTGoat eingegangen. Zusätzlich werden zwei der enthaltenen Schwachstellengruppen vorgestellt.

Die als «Challenges» bezeichneten Verwundbarkeiten lauten:

  • No 1: Weak, Guessable, or Hardcoded Passwords
  • No 2: Insecure Network Services
  • No 3: Insecure Ecosystem Interfaces
  • No 4: Lack of Secure Update Mechanism
  • No 5: Use of Insecure or Outdated Components
  • No 6: Insufficient Privacy Protection
  • No 7: Insecure Data Transfer and Storage
  • No 8: Lack of Device Management
  • No 9: Insecure Default Settings
  • No 10: Lack of Physical Hardening [3]

Jede der Challenges enthält dabei mehrere Beispiele für die jeweilige Verwundbarkeit.

IoTGoat wird über verschiedene Dateien veröffentlicht: [4]

  • vorkompilierte Firmware
  • als Festplatte einer virtuellen Maschine
  • Disk-Image-Datei für Raspberry Pi

Dabei sind die unterschiedlichen Release-Dateien für verschiedene Anwendungszwecke ausgelegt. So soll die Version, die als vorkompilierte Firmware vorliegt, für Analysen von Konfigurationsdateien und einzelnen Softwarekomponenten gewählt werden.

Um einen klassischen Penetration Test durchzuführen, kann eine als VMware-Image vorbereitete Version zum Einsatz kommen. Nach dem Importieren und Starten des über GitHub bereitgestellten Abbilds kann das initiale Interface über die automatisch zugeteilte IP über einen Browser aufgerufen werden:

Abbildung 2: Web-Login von IoTGoat

Das Webinterface stellt die erste Möglichkeit für einen Angriff dar. Für diesen Angriffsvektor ist eine vorhergehende Analyse der Firmware erforderlich. Das Passwort für das Webinterface ist in der Firmware hartcodiert – ein Beispiel, das auch häufig in der Realität anzutreffen ist. Anstatt für alle Geräte einer Produktionscharge sichere Passwörter zu generieren, wird einmalig ein Passwort gesetzt. Die Firmware wird dann auf alle Geräte gleichermaßen aufgespielt. Teilweise wird der Benutzer darauf hingewiesen, das Passwort bei der ersten Verwendung zu ändern. Ist dieser Wechsel jedoch optional und nicht fest vorgeschrieben, bleibt ein großer Teil der Geräte verwundbar für diese Art von Angriffen.

Der Initialaufwand ist also vergleichsweise hoch, da mittels Analysetools nach Passwörtern in der Firmware gesucht werden muss. Bei aktuelleren Geräten wird hier auch häufiger eine Verschlüsselung eingesetzt bzw. Passwörter werden nur als Hash abgespeichert. Erlangt ein Angreifer physischen Zugriff auf das Gerät, können die Passwörter jedoch auch in diesem Fall mit etwas höherem Aufwand extrahiert werden.
Trotz des relativ hohen Aufwands kann sich diese Art von Angriff oft als lohnend erweisen, da Zugangsdaten zu einer Vielzahl an identischen Geräten gewonnen werden.

Doch nicht nur Webinterfaces werden auf diese Art schlecht abgesichert. Anstatt den Initialaufwand für das Ermitteln von Passwörtern selbst zu betreiben, wird meist auf bereits bekannte Listen zurückgegriffen.

Eine solche kritische Schwachstelle ist über den SSH-Zugang der IoTGoat-Firmware zu entdecken. Für die Ausnutzung wird anfangs der Benutzername benötigt. Oft werden Standard-Benutzernamen nicht geändert, somit kann häufig von Namen wie «root» oder «admin» ausgegangen werden.

Abbildung 3: Passwd-Datei von IoTGoat

Für einen Angriff über SSH kann z.B. der Benutzer «iotgoatuser» verwendet werden. Anhand einer gängigen Passwortliste können verschiedene Anmeldedaten mittels automatisierter Tools ausprobiert werden. Im Bereich IoT liefert die Passwortliste des Mirai-Botnets eine hohe Trefferquote. Die Liste steht auf GitHub zum Download zur Verfügung: https://github.com/securing/mirai_credentials/blob/master/mirai_creds.txt

Anhand dieser Liste können nun mit Brute-Force-Tools wie Hydra oder Medusa automatisierte Anmeldeversuche unternommen werden. Diese Tools führen automatisiert mithilfe der bereitgestellten Passwortliste eine Vielzahl an Anmeldeversuchen durch. Ist einer der Zugänge aktiv, meldet das Tool diesen Versuch. Im Beispiel von IoTGoat wird durch die nur 62 Zeilen lange Passwortliste das korrekte Passwort rasch entdeckt; nachfolgend die Ausgabe von Hydra: [5]
[DATA] attacking ssh://192.168.157.128:22/
[22][ssh] host: 192.168.157.128 login: iotgoatuser password: 7u**********
1 of 1 target successfully completed, 1 valid password found

Mit diesem Passwort kann man sich nun per SSH auf das System verbinden:

Abbildung 4: Erfolgreicher SSH-Login

Somit kann diese Schwachstelle mithilfe von leicht zugänglichen Tools und sehr geringem Zeitaufwand ausgenutzt werden.

Die nächste in diesem Beitrag vorgestellte Gruppe an Verwundbarkeiten deckt den Punkt «Insecure Ecosystem Interfaces», unsichere Schnittstellen, aus den OWASP IoT Top 10 ab.

In IoTGoat ist als Beispiel dazu unter anderem über das Webinterface eine Entwicklerseite zugänglich, auf der Diagnosedaten dargestellt werden und die bestimmte Managementfunktionen anbietet. Problematisch dabei ist der Zugriffsschutz dieser Seite. So wird lediglich ein Benutzerlogin benötigt. Eine einfache Kenntnis des Pfades der Seite ist anschließend ausreichend, um auf die Managementkonsole zugreifen zu können. Durch die spezielle Managementfunktion erhält man dadurch eine Shell-Umgebung, was einer Kompromittierung des Servers gleichkommt.

Abbildung 5: Unsichere Managing-Schnittstelle

Hier ist der entsprechende Pfad (cgi-bin/luci/admin/iotgoat/cmdinject) initial mit vertretbarem Zeitaufwand auch nur wieder per Analyse der Firmware aufzufinden. Doch auch in diesem Fall gilt, dass dieser Aufwand pro Hersteller bzw. Produkt nur einmalig betrieben werden muss. Die aufgefundenen Pfade werden meist rasch zu Listen zusammengefasst und von Angreifern veröffentlicht.

Neben dieser Webschnittstelle zeigt IoTGoat auch die Gefahren eines weniger offensichtlichen Managing-Zugangs: ein nicht benötigter geöffneter Port 5515. Versucht man nun, sich mit diesem Port zu verbinden, hat man Zugriff auf das System erlangt:
nc -nv 192.168.157.128 5515
Connection to 192.168.157.128 port 5515 [tcp/*] succeeded!
[***]Successfully Connected to IoTGoat's Backdoor[***]

Es gibt zahlreiche Beispiele für derartige Backdoors. So gibt es verschiedene Fälle, in denen namhafte Netzwerkausrüster Updates für Router, Switches oder Firewalls bereitstellen mussten, da solche Zugänge entdeckt wurden.

Viele der von IoTGoat aufgezeigten Schwachstellen sind in dieser Form auch in der Realität anzutreffen. Da jedoch der Fokus unter anderem auch auf Challenges gesetzt ist, die von Anfängern lösbar sind, gestalten sich tatsächlich auffindbare Lücken bzw. Angriffe in der Regel etwas komplexer oder sind nur durch Kombination von mehreren Schwachstellen ausnutzbar.

Als Analogon zur IoTGoat-Backdoor auf dem Managing-Port ist z.B. eine Schwachstelle in Routern eines bekannten Netzwerkausrüsters zu nennen, bei dem die Ausnutzung erst durch eine Analyse der Firmware möglich wurde. Hier mussten hartcodierte Zugangsdaten ausgelesen werden, mit denen man sich im Anschluss mit dem Managing-Port verbinden konnte. IoTGoat zeigt jedoch nur einen unverschlüsselten Zugang ohne notwendige Authentifizierung.

Fazit

Durch die verschiedenen Ebenen an möglichen Angriffen ist IoTGoat zum einen für Sicherheitsforscher empfehlenswert, da auch komplexere Analysemöglichkeiten und Angriffe vorgestellt werden. Zum anderen kann es auch für Privatanwender ein lohnenswertes Tool darstellen. Beschäftigt man sich beispielsweise mit dem Themengebiet Hausautomatisierung, wird anhand einfacher Challenges auf die kritischsten potenziellen Konfigurationsfehler eingegangen. Trotz der leichten Abstraktion und Vereinfachung von Lücken werden Schwachstellen aufgezeigt, die so auch im Alltag bei Penetration Tests von Webseiten und insbesondere bei IoT-Anwendungen auftreten.

Über den Autor

Jakob Kunzmann schloss sein Studium im Fach Angewandte Informatik mit Schwerpunkt Embedded Systems an der Technischen Hochschule Deggendorf ab. In seiner Bachelorarbeit entwickelte er eine verschlüsselte VoIP-Anwendung und benutzte hier erstmals Penetration-Testing-Methoden. In seiner Masterarbeit beschäftigte sich Jakob Kunzmann mit Netzwerkprotokollen zur Nutzerauthentifizierung und -verwaltung. Seit August 2018 ist er bei der Oneconsult als Penetration Tester angestellt. Er ist Offensive Security Certified Professional (OSCP), zertifizierter OSSTMM Professional Security Tester (OPST) und Certified Red Team Operator (CRTO).

Über Oneconsult

Die Oneconsult-Unternehmensgruppe ist seit 2003 Ihr renommierter Schweizer Cyber Security Services Partner mit Büros in der Schweiz und Deutschland und 2000+ weltweit durchgeführten Security-Projekten.

Erhalten Sie kompetente Beratung vom inhabergeführten und herstellerunabhängigen Cyber Security-Spezialisten mit 40+ hochqualifizierten Cyber Security Experten, darunter zertifizierte Ethical Hacker / Penetration Tester (OPST, OPSA, OSCP, OSCE, GXPN), IT-Forensiker (GCFA, GCFE, GREM, GNFA), ISO Security Auditoren (ISO 27001 Lead Auditor, ISO 27005 Risk Manager, ISO 27035 Incident Manager) und dedizierte IT Security Researcher, um auch Ihre anspruchsvollsten Herausforderungen im Informationssicherheitsbereich zu bewältigen. Gemeinsam gehen wir Ihre externen und internen Bedrohungen wie Malware-Infektionen, Hacker-Attacken und APT sowie digitalen Betrug und Datenverlust mit Kerndienstleistungen wie Penetration Tests / Ethical Hacking, APT Tests unter Realbedingungen und ISO 27001 Security Audits an. Bei Notfällen können Sie rund um die Uhr (24 h x 365 Tage) auf die Unterstützung des Digital Forensics & Incident Response (DFIR) Expertenteams von Oneconsult zählen.

www.oneconsult.com