BLACK HAT USA Konferenz. Wie ein Hollywood-Hacker Überwachungskameras einsetzt. Teil 1

Ich bin Greg Heffner, und dies ist ein Gespräch darüber, wie ein Hollywood-Hacker Überwachungskameras einsetzt. Einige von Ihnen wissen vielleicht oder auch nicht, dass bei der Erstveröffentlichung meiner Arbeit zu diesem Thema ein Artikel im Reuters-Internetportal erschien.



Für mich als Redner war es wirklich toll. Das Problem war jedoch, dass in dem Artikel betont wurde, dass ich für eine bestimmte Institution mit einem dreistelligen Namen gearbeitet habe, über den es in letzter Zeit nur sehr wenige Notizen in der Presse gab. Außerdem gingen sie so weit, dass sie behaupteten, ich hätte bei BlackHat meine Arbeit für diese Drei-Buchstaben-Agentur vorgestellt. Diese Veröffentlichung führte zu einigen sehr interessanten Telefonanrufen meines früheren Arbeitgebers.

Glücklicherweise haben wir Leute, die meine Anrufe beantworten, also haben sie sie angeschrien, nicht mich, aber ich musste die Leute immer noch beruhigen und am Ende konnte ich den ehemaligen Arbeitgeber davon überzeugen, dass manchmal Leute auch im Internet sind falsch.

Um ganz klar zu sein, werde ich erklären, dass es im heutigen Gespräch nicht um eine Arbeit geht, die ich jemals für ehemalige Arbeitgeber geleistet habe, sondern darum, was ich für meinen derzeitigen Arbeitgeber tue. Ich arbeite als Vollzeit-Schwachstellenanalysator für Tactical Network Solutions, unterrichte auch Schulungen zu eingebetteten Geräten und beschäftige mich von Zeit zu Zeit mit dem Hacken von drahtlosen Geräten.

Heute werde ich über die Sicherheit von Überwachungskameras oder vielmehr über das Fehlen dieser Sicherheit sprechen. Anfang der Vergangenheit, 2011, begann ich mich mit dem Thema Sicherheit der Firmware von Kameras zu befassen, die mit dem Überwachungsnetzwerk verbunden sind, und entdeckte viele interessante Dinge.

Ich werde die "Zero Day" -Drohung beiseite legen und darüber sprechen, wenn ich dazu komme. Zuerst werde ich Ihnen zeigen, wie ich im Stil eines echten Hollywood-Hackers die von mir entdeckten Schwachstellen ausnutzen kann.

Als ich anfing, Überwachungskameras zu studieren, und ich muss sagen, dass ich viele eingebaute Geräte studiert habe, aber keine Kameras, wollte ich mit etwas Einfachem beginnen, das mir sicherlich einen Sieg garantieren würde. Ich habe mich für D-Link entschieden, weil sie nie enttäuschen.



Ich habe mich für die DCS-7410 entschieden, deren Preis bei rund 900 US-Dollar liegt. Dies ist eine der teuersten wetterfesten D-Link-Überwachungskameras für den Außen- und Nachtbetrieb. Wie die anderen Kameras, über die wir heute sprechen werden, verfügt sie über eine Verwaltungsschnittstelle und unterstützt den Zugriff auf den Videostream über das Internet auf einen Webserver. Die Stromversorgung erfolgt über ein Netzwerk (PoE). Dies macht es zu einem sehr attraktiven Ziel für einen Angreifer.

Insbesondere verwendet diese Kamera Lighttpd II, einen Open-Source-Webserver, der bei eingebetteten Geräten nicht häufig verwendet wird. Die Entwickler haben eine vernünftige Konfiguration und Regeln erstellt, die den Zugriff auf das beschränken, was über den Webserver erreicht werden kann.

Auf der nächsten Folie sehen Sie, dass Sie über Administratorrechte verfügen müssen, wenn Sie etwas im Administratorverzeichnis cgi / admin abrufen möchten. Wenn Sie etwas in das Videoverzeichnis aufnehmen möchten, können Sie ein beliebiger Benutzer sein, müssen jedoch autorisiert sein. Sie haben Einträge und Anmelderegeln für jedes einzelne Verzeichnis in der Weboberfläche, mit Ausnahme des Verzeichnisses cgi-bin.





Die meisten Kamera-CGI-Skripte befinden sich im CGI-geschützten Verzeichnis. Ein unsicheres cgi-bin-Verzeichnis enthält nur eine Datei, rtpd.cgi. Hierbei handelt es sich um ein Bash-Shell-Skript, mit dem das Transportprotokoll der RTP-Kamera in Echtzeit gestartet und gestoppt wird.



Das Skript rtpd.cgi weist jedoch einen schwerwiegenden Fehler auf. Es analysiert die Abfrageparameter, indem alle kaufmännischen Und-Zeichen in der Zeichenfolge $ QUERY_STRING durch Leerzeichen ersetzt werden, und erhält dann das Ergebnis mit der Funktion eval:



Wenn Sie also nur die Kamera anhalten möchten, senden Sie einfach eine Anfrage: rtpd.cgi? Action = stop. Bei bestimmungsgemäßer Verwendung ändert die folgende HTTP-Anforderung den Namen? Aktion, deren Wert auf die Position "Start" gesetzt wird:

$ wget http://192.168.1.101/cgi-bin/rtpd.cgi?action=start 

Da die Daten in $ query_string von der eval-Methode blind ausgeführt werden, kann ein Angreifer jeden Befehl ausführen, indem er ihn einfach als Teil der http GET-Parameter angibt:

 $ wget http://192.168.1.101/cgi-bin/rtpd.cgi?reboot 

Auf diese Weise kann der Hacker die Kamera neu starten. Es war tatsächlich schwierig für mich, diese Sicherheitsanfälligkeit zu kategorisieren, da es sich nicht einmal um eine Injektion von Befehlen handelt, wir nichts eingeben, sondern einfach zulassen, dass das Programm mit anderen Parametern ausgeführt wird. Ich habe diese Sicherheitsanfälligkeit "Ron Burgund" genannt, weil sie buchstäblich alles tut, was Sie in die Abfragezeichenfolge eingeben.



Ein Angreifer kann diese Sicherheitsanfälligkeit verwenden, um ein normales Kamera-Administratorkennwort vom NVRAM zu erhalten. Der folgende Befehl wird nach dem Neustart vom Kamera-Startskript ausgeführt und sendet Ihrem Browser eine Antwort dieser Art:



Jetzt haben Sie nicht nur Root-Zugriff, sondern werden nach Erhalt des Passworts auch Administrator, sodass Sie mit der Kamera und den Videos alles machen können.

Wie sich herausstellt, liebt D-Link, wie viele Hersteller, die Wiederverwendung von Code durch die Installation derselben Firmware, und dies ist bei vielen ihrer Produkte der Fall. Dies betrifft jedoch nicht nur D-Link-Produkte, da Trendnet und einige andere "Nicht-Marken" -Hersteller solcher Geräte eine ähnliche Vorgehensweise anwenden. Die Wiederverwendung von Code ist mittlerweile weit verbreitet, sowohl bei Herstellern derselben Marke als auch zwischen verschiedenen Marken. Diese Sicherheitsanfälligkeit ist in der Firmware vieler Kameramodelle enthalten, die in der Shodan Dork-Ressource für Schwachstellensammlungen für Computer indiziert sind.



Diese Sicherheitsanfälligkeit scheint einigen Leuten bekannt zu sein, und dies liegt wahrscheinlich daran, dass Core Security nach meiner Rede zu diesem Thema den Sicherheitsanfälligkeitsindex CVE-2013-1599 für diese Produkte festgelegt hat, der darauf hinweist, dass er nur in D-Link-Geräten vorhanden ist, ohne einen zu erwähnen von einem anderen Hersteller, der dieselbe Firmware in seinen Geräten verwendet. Selbst wenn einer der Hersteller diesen Fehler in der neuen Firmware-Version korrigiert, bleiben die meisten Geräte weitere 3 Jahre anfällig, da normalerweise niemand die Firmware rechtzeitig aktualisiert und einige nicht wissen, um was es sich handelt. Wie ich bereits sagte, sind D-Link-Produkte eines der günstigsten Angriffsziele. Schauen wir uns also Kameras von renommierteren Herstellern wie Cisco mit dem Modell PVC 2300 an. Dies ist eine IP-Kamera der Business-Klasse der Mittelklasse im Wert von 500 US-Dollar.



Derzeit verfügt es auch über einen Webserver und bietet eine Authentifizierung mithilfe einer Kennwortdatei im HTTP-Format.



Die meisten Benutzer sind mit diesem System vertraut. Sie installieren Ihre HTTP-Kennwortdatei oder genauer gesagt einen Link zu einer zentralisierten Kennwortdatei in einem Verzeichnis, das Sie mit einem Kennwort schützen möchten. Wenn Sie sich die Firmware ansehen, enthielt die Weboberfläche jedes Verzeichnisses eine .htpasswd-Kennwortdatei, mit Ausnahme eines Verzeichnisses, oamp, das sich unter / usr / local / www / oamp befindet.



Anstelle einer Kennwortdatei enthielt sie eine Reihe von XML-Dateien, die als Links zur Binärdatei oamp.cgi dienten. Mal sehen, was dieses CGI macht. Es stellt sich heraus, dass es eine Art Mini-API implementiert, die völlig unabhängig von allem anderen ist, was in der Weboberfläche ausgeführt wird.



Er erwartet, dass Sie nach bestimmten Aktionen gefragt werden, darunter das Herunterladen der Konfigurationsdatei, das Aktualisieren der Konfigurationsdatei, das Herunterladen der Firmware-Aktualisierungsdatei, das Aktualisieren der Firmware und vieles mehr. Die Entwickler waren nicht so dumm. Bevor Sie Ihre Anfrage ausführen, prüft oamp.cgi, ob Sie die richtige gültige Sitzungs-ID haben.



Wenn Sie keine gültige Sitzungskennung haben, können Sie nur ein Login eingeben.



Dies ist an sich interessant, da sie eine Authentifizierungsprüfung implementiert haben, die an keiner anderen Stelle in der Schnittstelle verwendet wird. Ich begann zu verstehen, wie sie die Eingabe steuern, dh die Anmeldung. Sie verlassen sich auf Ihren Benutzernamen und Ihr Passwort und keine Überraschungen mehr.





Und dann rufen sie die Funktion PRO_GetStr zweimal auf, und ich habe keine Ahnung, was sie bewirken. Aber ich weiß, dass der erste Aufruf dieser Funktion zwei Zeilen enthält - OAMP und den Benutzernamen L1_usr, und der zweite Aufruf - zwei weitere Zeilen, OAMP und das Kennwort L1_pwd.





Dann wird der erste Wert für Benutzer L1 zurückgegeben und mit dem Benutzernamen Benutzer L1_usr verglichen, der während der Authentifizierung angegeben wurde, und der zweite Wert der Zeichenfolge wird ebenfalls zurückgegeben - Kennwort Kennwort L1_usr, das mit dem Kennwort verglichen wird, das der Benutzer bei der Anmeldung eingegeben hat.





Vermutlich bieten dieser L1-Benutzername und dieses Kennwort unabhängig von den verwendeten Werten die richtige Anmeldung für diese OAMP-Schnittstelle. Der einzige andere Ort, den ich in der Firmware finden konnte und der wirklich mit dem Benutzernamen und dem Passwort des Benutzers verknüpft ist, ist in der Konfigurationsdatei.



Diese Werte sind in Geräten fest codiert, die während des Betriebs die Konfigurationsdatei des OAMP-Abschnitts verwenden. Sie sehen, dass der L1-Benutzeranmeldewert in der Zeile L1_admin und der Benutzerkennwortwert in der Zeile L1_51 festgelegt ist.

Und dies ist ein echtes Problem, da all diese OAMP-Schnittstelle und diese fest codierten Konten vollständig undokumentiert sind, sodass niemand weiß, dass sie vorhanden sind, außer denjenigen, die sich die Mühe gemacht haben, in die Firmware zu schauen. Natürlich wird der Administrator dies niemals tun.

Aber selbst wenn er davon erfahren hat, kann er diese Werte nicht ändern, da diese Kamera keine Administratoroberfläche enthält. Das Problem bei fest codierten geheimen Passwörtern besteht darin, dass sie dank der Verwendung von Hintertüren für kurze Zeit geheim bleiben.

Daher können wir diese Backdoor-Konten verwenden, um uns anzumelden und eine Sitzungs-ID zu erhalten. Nachdem wir diese Sitzungs-ID zusammen mit unseren Anforderungen senden können, können wir auch alle anderen von oamp.cgi unterstützten Aktionen aufrufen, einschließlich des Herunterladens der Einstellungskonfigurationsdatei.





Das Problem ist, dass, wenn Sie versuchen, es mit Base64 zu entschlüsseln, dies nicht funktioniert, Sie nur eine Menge Müll bekommen. Dies ist der Fall, wenn Base64 nicht Base64 ist.



Der Grund dafür wird offensichtlich, wenn Sie sich den endgültigen Base64-Code in der Binärdatei der PVC-2300-Firmware selbst ansehen. Hier wird die Basis für die Codierung erstellt, es wird jedoch eine nicht standardmäßige Base64-Schlüsselzeichenfolge verwendet, die bei der Analyse der Verschlüsselung und Entschlüsselung von Code 64 ermittelt wurde Mit Python ist es sehr einfach, eine Schlüsselzeichenfolge in einem Python Base64-Modul in eine benutzerdefinierte Schlüsselzeichenfolge zu ändern, wie auf der Folie gezeigt.



Mit ein paar Python-Zeichenfolgen können wir die Konfigurationsdatei einfach entschlüsseln und in einfachen Text umwandeln, wodurch wir Anmeldeoptionen unter der Anmeldung des Administrators erhalten.



Nachdem wir die Kontrolle über die Kamera erlangt haben, können wir den Serverraum sehen. Das Problem ist, dass das Anzeigen von Serverräumen die ersten 10 Sekunden wirklich erfasst, aber dann wird es eine ziemlich langweilige Aufgabe.



Daher kehrte ich zum Code zurück und begann, die Möglichkeit des Herunterladens von Firmware zu untersuchen. Dies ist tatsächlich sehr interessant, da Sie anstelle des Herunterladens der Firmware-Datei von der offiziellen Website auf das Gerät Ihre eigene URL angeben können. Das Gerät wird an diese Adresse gehen und die angeblich als Firmware geltende URL herunterladen.



Die Funktion system2 generiert einfach einen Befehl aus der Formatzeichenfolge und der URL, bevor die libc-Systemfunktion aufgerufen wird, mit der ein Angreifer über den Parameter url beliebige Shell-Befehle eingeben kann. Der Befehl des Angreifers wird mit Superuser-Rechten ausgeführt. Da die Überprüfung anhand des URL-Werts erfolgt, ist es sehr einfach, ihn mit dem folgenden Skript zu umgehen:

 $ wget --header=”sessionID: 57592414http://192.168.1.101/oamp/System.xml?action=loadFirmware&url=https://127.0.0.1:6 5534/;reboot; 

Danach wird der Computer unter dieser URL neu gestartet und Sie können einen beliebigen Befehl ausführen.



Diese Sicherheitsanfälligkeit wurde auf allen Firmware-Versionen von zwei Modellen von Cisco-Überwachungskameras getestet - PVC-2300 und WVC-2300, einer ähnlichen Kamera mit zwei Antennen. Zum Zeitpunkt dieses Schreibens hat Shodan mehr als 500 öffentliche und potenziell gefährdete IP-Kameras gezeigt, die Hotels, Serverräumen und Ingenieurbüros gehören, die Geräte für die Internationale Raumstation entwickeln.

Daher schützen D-Link und Cisco Überwachungskameras nicht ordnungsgemäß, obwohl Sie wissen, dass diese Kameras nicht das Hauptprodukt sind. Schauen wir uns daher Marken an, die sich speziell auf die Entwicklung und Herstellung von Überwachungskameras spezialisiert haben. Ich habe mich für IQ Invision entschieden, das teure hochauflösende Kameras wie die IQ 832n herstellt und mehr als 1000 US-Dollar pro Stück kostet, was überhaupt nicht billig ist.



Der Hauptgrund für mein Interesse ist, dass dies die Leute sind, die Kameras in dem Geschäftskomplex installieren, in dem ich arbeite. Es gab also persönliche Gründe dafür. Was bekommen Sie mit einer professionellen Überwachungskamera für tausend Dollar?
Standardmäßig liefern diese Kameras ein nicht authentifiziertes Videobild, und keine der umfangreichen Studien zur Kamerainstallation konnte diese Standardeinstellung ändern. Während die Verwaltungsschnittstelle kennwortgeschützt ist, bietet die Benutzeroberfläche Zugriff auf alle Kameraressourcen ohne Authentifizierung, wodurch ein weites Angriffsfeld entsteht.



Die Authentifizierungseinstellungen des Administrators können vom Administrator geändert werden. Versuchen Sie jedoch zu erraten, wie viele Administratoren ihre Kameras mit dem Internet verbunden haben, ohne die Standardeinstellungen zu ändern - fast alles. Die meisten Administratoren in unserem Komplex waren jedoch klug genug, um diese Einstellungen zu ändern, und ich begann zu überlegen, was ich sonst noch ohne Authentifizierung tun könnte. Es stellte sich heraus, dass ich frei auf die Seite zugreifen kann.



Es enthält eine ganze Reihe von Kameraeinstellungen, z. B. Fokuseinstellungen, die nicht so interessant sind wie Benutzernamen und Kennwörter. Interessanter war der Code hinter dieser oidtable.cgi-Seite. Wenn Sie diese Binärdatei zerlegen, sehen Sie, dass die Seite nur einen Parameter akzeptiert, grep, der zum Filtern der an die Seite oidtable.cgi zurückgegebenen Ergebnisse verwendet wird.



Nachdem überprüft wurde, ob der angegebene Parameterwert weniger als 32 Zeichen lang ist, platziert oidtable.cgi diesen Wert in der Befehlszeile und übergibt ihn an popen:





Was ich sah, ließ mich die „Gesichtspalme“ porträtieren und veranlasste mich, einige Teams zu injizieren.



Sie sehen, dass ich hier, genau wie im Fall von D-Link, den PS-Befehl ausführen und die Ausgabe an meinen Browser zurücksenden kann. Somit kann ich ohne Authentifizierung leicht beliebige Shell-Befehle eingeben, die als root ausgeführt werden. Die Prozesslisten zeigen, dass Netcat bereits in diesen Kameras installiert ist und Strich-E-Striche eingeben kann. Daher bin ich sicher, dass die meisten Leute hier interessantere Befehle zum Ausführen finden können als die Prozessliste. Mein Hauptziel war es jedoch, in das Admin-Panel zu gelangen, und ich fand heraus, wie es geht.

16:30 min

BLACK HAT USA Konferenz. Wie ein Hollywood-Hacker Überwachungskameras einsetzt. Teil 2


Vielen Dank für Ihren Aufenthalt bei uns. Gefällt dir unser Artikel? Möchten Sie weitere interessante Materialien sehen? Unterstützen Sie uns, indem Sie eine Bestellung aufgeben oder Ihren Freunden empfehlen, einen Rabatt von 30% für Habr-Benutzer auf ein einzigartiges Analogon von Einstiegsservern, das wir für Sie erfunden haben: Die ganze Wahrheit über VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s von $ 20 oder wie teilt man den Server? (Optionen sind mit RAID1 und RAID10, bis zu 24 Kernen und bis zu 40 GB DDR4 verfügbar).

VPS (KVM) E5-2650 v4 (6 Kerne) 10 GB DDR4 240 GB SSD 1 Gbit / s bis Dezember kostenlos, wenn Sie für einen Zeitraum von sechs Monaten bezahlen, können Sie hier bestellen.

Dell R730xd 2 mal günstiger? Nur wir haben 2 x Intel Dodeca-Core Xeon E5-2650v4 128 GB DDR4 6 x 480 GB SSD 1 Gbit / s 100 TV von 249 US-Dollar in den Niederlanden und den USA! Lesen Sie mehr über den Aufbau eines Infrastrukturgebäudes. Klasse mit Dell R730xd E5-2650 v4 Servern für 9.000 Euro für einen Cent?

Source: https://habr.com/ru/post/de427367/


All Articles