Die Sicherheit der eigenen vier Wände liegt vielen Menschen am Herzen. Einige installieren sich deswegen „smarte Kameras“ als Instrument der Überwachung. Diese besitzen eine direkte Verbindung ins Internet und so ist man nur wenige Klicks davon entfernt, jederzeit auf den Video-Stream zugreifen zu können. Dieser Komfort erweist sich allerdings als Nachteil, wenn die Kamera Sicherheitslücken aufweist und Türchen für ungebetene Gäste offenlässt.
ESET-Forscher untersuchten das D-Link Smart Home Device DCS-2132L. Bei dieser Cloud-Kamera ist es ihnen nicht nur gelungen, Video-Streams abzufangen und anzusehen, sondern auch die Firmware des Geräts zu manipulieren.
Das wohl schwerwiegendste Problem der D-Link DCS-2132L Cloud-Kamera ist die unverschlüsselte Übertragung des Video-Streams. Eine unverschlüsselte Verbindung besteht sowohl zwischen der Kamera und der Cloud sowie zwischen Cloud und der Client-seitigen Viewer-App. Das bietet Man-in-Middle-Attacken (MitM) und Eindringlingen fruchtbaren Boden, um Opfer auszuspionieren.
Die Viewer-App und die Cloud-Kamera kommunizieren über einen Proxyserver an Port 2048 via TCP-Tunnel, der auf einem selbstgefertigten D-Link-Tunnelprotokoll aufbaut. Leider wird nur ein Teil des Datenverkehrs, der durch diesen Tunnel fließt, verschlüsselt. Dabei bleiben einige sensible Inhalte ungeschützt - wie etwa die Anforderung von IP- und MAC-Adressen der Kamera, Versionsinformationen, Video- und Audio-Streams und umfangreiche Kamera-Details.
Die Schwachstelle, die für dieses und die später beschriebenen Probleme verantwortlich ist, ist auf die Beschaffenheit von der request.c-Datei der Cloud-Kamera zurückzuführen. Die Datei ist ein Teil des benutzerdefinierten Open-Source Boa Webserver-Quellcodes von D-Link und verantwortlich für die HTTP-Requests. Alle HTTP-Anforderungen von 127.0.0.1 werden auf das Admin-Level gehoben, sodass ein potenzieller Angreifer vollen Zugriff auf das Gerät erhält.
Abfangen von Video- und Audio-Streams vom D-Link DCS-2132L
Ein MitM-Angreifer, der den Netzwerk-Traffic zwischen Viewer-App und Cloud oder zwischen Kamera und Cloud abgreift, kann den Datenstrom der TCP-Verbindung auf dem Serverport (Cloud) 2048 verwenden, um die HTTP-Anforderungen für die Video- und Audiopakete anzuzeigen. Die Pakete können dann jederzeit zusammengesetzt und abgespielt werden, um einen Echtzeit-Audio-/ Video-Stream zu erhalten. Die ESET-Forscher extrahierten für den Video-Stream die zwei Rohdaten-Formate: M-JPEG und H.264.
Es sind einige Schritte notwendig, um aus den Rohdaten einen Video-Stream zu rekonstruieren. Diese lassen sich aber beispielsweise durch ein Script automatisieren.
- Zunächst muss man den Datenverkehr identifizieren, der den Video-Stream darstellt. Der Traffic besteht aus mehreren Datenblöcken. Jeder Block weißt einen bestimmten Header und eine definierte Länge auf.
- Im nächsten Schritt trennt man die Daten-Teile von den Headern.
- Schließlich fügt man die Video-Teile zusammen.
Das Abspielen der auf diese Weise erhaltenen Videodateien kann etwas knifflig sein, da sie Rohdaten sind und sich nicht in einem Container-Dateiformat befinden. Einige Mediaplayer können jedoch trotzdem die unformatierten Formate verarbeiten. Dazu muss man sie mit den entsprechenden Kommandos ausführen (MPlayer kann M-JPEG-Dateien und VLC Player kann H.264-Dateien abspielen).
Mangelhaftes D-Link Plug-In
Ein anderes ernsthaftes Problem mit der D-Link Cloud-Kamera verbirgt sich im „mydlink services“ Web-Browser-Plug-In. Es ist eine Weise, wie den Usern die Viewer-App zur Verfügung gestellt wird. Die mobile App ist nicht Gegenstand der ESET-Untersuchung gewesen.
Das Web-Browser-Plug-In verwaltet die Erstellung des TCP-Tunnels und die Live-Videowiedergabe im Client-Browser. Zusätzlich ist es auch für die Weiterleitung von Anforderungen für die Video- und Audio-Data-Streams durch einen Tunnel verantwortlich, der an einem dynamisch generierten Port auf localhost hört.
Der Tunnel wird dem gesamten Betriebssystem zur Verfügung gestellt. Auf diese Weise kann jede Anwendung oder jeder User auf dem Computer relativ einfach auf die Weboberfläche hxxp://127.0.0.1:RANDOM_PORT/ der Kamera (nur während des Live-Streams) zugreifen.
Da von der localhost-IP-Adresse aus auf das Gerät zugegriffen wird, ist keine Autorisierung notwendig. HTTP-Anforderungen über 127.0.0.1 an den Webserver der Cloud-Kamera erhalten automatisch Admin-Privilegien.
Diese Schwachstelle erlaubt Angreifern auch die Überspielung der Firmware mit einer eigenen manipulierten Version.
Das folgende Video (englisch) demonstriert, wie man die Schwachstelle ausnutzen kann:
Zum Zeitpunkt der Erstellung dieses Artikels hatte D-Link das „mydlink services“ Plug-In-Problem erfolgreich gelöst.
Unerlaubter Firmware-Austausch am D-Link DCS-2132L
Obwohl D-Link das Plug-In gepatcht hat, bleibt die Sicherheitslücke im individuellen gefertigten D-Link Tunnel-Protokoll weiterhin bestehen.
Ein Cyberangreifer muss den Traffic im Tunnel ändern, um den Sicherheitsmangel ausnutzen zu können. Dazu wird eine GET-Anforderung des Video-Streams durch eine bestimmte POST-Anforderung ersetzt, ein gefälschtes Firmware-Update hochgeladen und auf der Cloud-Kamera ausgeführt.
Natürlich ist die Durchführung eines solchen Angriffs nicht trivial. Man muss alle Regeln des Tunnel-Protokolls befolgen und die Firmware-Datei in Blöcke mit bestimmten Headern und definierter Länge aufteilen.
Allerdings wird die Authentizität der Firmware-Binary während des Update-Prozesses nicht verifiziert. Eine individuelle Firmware mit einigen zusätzlichen „versteckten“ Funktionen wie für Krypto-Minern sowie Backdoors, Spionage-Software, Botnets oder Trojaner können auf das Gerät hochgeladen werden. Bösartige Angreifer sind außerdem in der Lage, die D-Link Cloud-Kamera zu „bricken“.
UPnP öffnet HTTP-Port ins Internet
D-Link DCS-2132L besitzt weitere beunruhigende, wenn auch kleinere Mangel. Das Gerät ist in der Lage, eigenständige Port-Weiterleitungen via Universal Plug and Play (UPnP) am Heim-Router vorzunehmen. Dadurch wird die HTTP-Schnittstelle an Port 80 für das Internet freigegeben und kann dann auch ohne die Zustimmung des Benutzers erfolgen – selbst dann, wenn die "UPnP-Präsentation" oder "UPnP-Portweiterleitung" in den Einstellungen deaktiviert sind.
Weshalb derart gefährliche Einstellungen in der D-Link Cloud-Kamera zulässig sind, ist unklar. Derzeit sind etwa 1600 D-Link DCS-2132L-Kameras mit freigegebenem Port 80 via Shodan auf der ganzen Welt zu finden – die meisten davon in den USA, Russland und Australien.
Der einfachste Weg der Risikominimierung ist das Deaktivieren von UPnP auf dem Heim-Router.
Fazit – Plug-In gepatcht, andere Probleme bestehen weiterhin
Im Zuge der verantwortungsvollen Offenlegung der Sicherheitslücken meldete ESET die Probleme am 22. August 2018 D-Link. Es wurde über unverschlüsselte Cloud-Kommunikation, unzureichende Cloud-Nachrichtenauthentifizierung und unverschlüsselte LAN-Kommunikation berichtet.
D-Link reagierte sofort und informierte ESET darüber, dass die genannten Schwachstellen an die D-Link Forschungs- und Entwicklungsteams weitergeleitet worden seien, außerdem versprachen sie Gegenmaßnahmen zu erarbeiten.
Seitdem wurden einige der Mangel beseitig. ESET-Tests zufolge ist das Plug-In „mydlink services“ nun ordnungsgemäß gesichert – andere Probleme bleiben aber bestehen. Bis zum Entstehungszeitpunkt dieses Artikels stammte die letzte aktualisierte D-Link DCS-2132L Firmware vom November 2016. Die Sicherheitslücken kann dieser Patch also noch nicht adressieren.
Die D-Link DCS-2132L Cloud-Kamera ist nach wie vor auf dem Markt erhältlich. Besitzern des Geräts wird empfohlen, Port 80 zu überprüfen und den Fernzugriff zu überdenken – zumindest, wenn es sich um sensible Bereiche zu Hause oder im Betrieb handelt.
Autoren: ESET Malware Researchers Milan Fránik und Miloš Čermák