Amir Etemadi: Ich begrüße alle und begrüße die Präsentation von GTVHacker „Hack alles: 20 Geräte in 45 Minuten“. Wir sind seit 2010 die Entwickler der ursprünglichen Google TV-Produkte sowie von Produkten wie Chromecast, Roku und Nest und veröffentlichen Exploits für alle Google TV-Geräte.

Also wer sind wir? Ich bin ein Forschungswissenschaftler bei Accuvant Labs, der von GTVHacker gegründet wurde. CJ ist Teamleiter und Sicherheitsforscher und fungiert gelegentlich auch als Technologieentwickler. Hans Nielsen ist Senior Security Consultant bei Matasano, während Mike Baker Firmware entwickelt und Mitbegründer von OpenWRT ist.
Unsere Gruppe besteht aus 8 Mitgliedern, darunter Gynophage. Derzeit beschäftigt er sich mit DefCon CTF, Jay Freeman, dem Erfinder von Cydia, dem Studenten Coa Hoang und Tom Dwenger, dem größten Spezialisten für APK und allem, was mit Java zu tun hat.
Warum haben wir uns entschieden, uns in Geräte zu hacken, warum nicht in Software, die wir auch nicht mögen? Sie wissen, wenn ein Gerät veraltet ist, sein Lebensende erreicht, wird es einfach auf eine Mülldeponie geworfen. Tatsächlich töten alte Geräte, und dies hat keinen Sinn, wie dies bei Logitech Revue der Fall war.
Wir geben weggeworfenen Geräten neues Leben und bemühen uns auch immer, das Produkt zu verbessern, ihm mehr Funktionen zu geben, und wenn wir es können, tun wir es. Wir beantworten gerne technische Herausforderungen, wissen Sie, es ist wie Rätsel, die Sie gerne lösen.
Das Studieren ist natürlich ein erstaunlicher Prozess, aber das Wesentliche dieser Präsentation kann in Worten ausgedrückt werden:
"Du hast eine Wurzel!"

Im Wesentlichen lässt uns das „Hacken von 20 Geräten in 45 Minuten“, dh während der Präsentation, nicht viel Zeit, um jedes Gerät im Detail zu betrachten. Daher zeige ich Ihnen eine Präsentation der Geräte, die direkt nach der Präsentation in unser Wiki aufgenommen werden. Wir werden Ihnen die technischen Details, Ausrüstungsdiagramme und alles, was wir können, vorstellen, da es ziemlich schwer zu lesen ist. Am unteren Rand der Folie sehen Sie einen Link, den Sie nach der Präsentation verwenden können, um Zugriff auf alle während dieser Demonstration gezeigten Dinge zu erhalten. Und jetzt gebe ich meinem Kollegen das Wort, der Sie über die „Aussicht auf Angriffe“ informiert.
Hans Nielsen: Es gibt unendlich viele Möglichkeiten, Geräte dieser Art anzugreifen. Am Beispiel dieser 20 Geräte werden wir heute drei Hauptmethoden des Hackens betrachten.
Der erste ist die Verwendung von Debug-Ports, die sich in den Geräten selbst befinden. Die zweite Methode: Wir können serielle Schnittstellen oder EMMC-Speicherkarten verwenden. Dies ist eine veraltete Version von SD-Karten, um eine Verbindung zum Gerät herzustellen und den Speicher zu ändern. Die dritte Methode besteht darin, direkten Zugriff auf das Betriebssystem zu erhalten, mit dem Sie eine ganze Reihe von Befehlen über die Befehlszeile implementieren können, um die häufigsten Fehler in der Unterhaltungselektronik zu verursachen.
Sprechen wir also über UART - einen universellen asynchronen Transceiver. Es wird von Entwicklern zum Debuggen von Geräten verwendet und trägt keine funktionale Last mehr. Dies ist eine sehr einfache Schnittstelle - ein Draht dient zum Senden, der andere zum Empfangen und der dritte dient als Masse.

Sie fragen mich, wie alt ich bin - ich antworte, ich bin 27 Jahre alt, danke für deine Frage! Hier wird also ein sehr einfaches Datenaustauschprotokoll verwendet, und der Port selbst arbeitet mit einer Spannung unterschiedlicher Pegel, beispielsweise 1,8 V, 3,3 V oder 5 V, und ist ein serieller Port, ähnlich den USB-Ports in einem Computer.
Sie haben also mehrere kostenlose Adapter, mit denen Sie mit Ihren eigenen Geräten spielen können, und ich hoffe, Sie profitieren so viel wie möglich davon. Wie können Sie UART verwenden?
Stellen Sie sich ein bestimmtes Gerät vor - das MFP Epson Artisan 700/800. Es ist sowohl ein Drucker als auch ein Scanner und ein Kopierer, die als Netzwerkdrucker verwendet werden können. Es wird von Linux 2.6.21 - arm1 gesteuert. Was kann man damit machen? Wenn Sie das Gehäuse öffnen, sehen Sie die Leiterplatte, auf der sich 4 Kontakte befinden: Empfang, Übertragung, Erdung, Stromversorgung. Dies ist eine klassische UART-Verbindungsoption.

Nachdem wir hier unseren Debug-Port angeschlossen hatten, wurde ein Konsolenmenü mit Druckereinstellungen angezeigt.

Wir können den Drucker neu starten, die Einstellungen zurücksetzen, einen beliebigen Shell-Befehl ausführen und alle Befehle ausführen, die wir im Allgemeinen benötigen. Viel Spaß beim Spielen mit unserem Drucker.
Das zweite Gerät ist eine Belkin WeMo Smart Socket mit Internetsteuerung. Sie können mit einem Mobiltelefon Ihre Kaffeemaschine und andere Haushaltsgeräte über das Internet einschalten und werden häufig von verschiedenen Personen verwendet.

Dies ist ein eher kleines Gerät, daher ist das Lesen der Notation auf der Leiterplatte ziemlich schwierig. Aber wir haben die Kontakte von Empfänger und Sender gefunden und UART mit ihnen verbunden. Danach meldete das Internet, dass das Gerät gepatcht wurde, aber dies stimmte nicht. Es stellte sich heraus, dass wir nur 2 Sekunden Zeit hatten, um einen Befehl einzugeben. Danach wurde das Gerät automatisch neu gestartet.

Zum richtigen Zeitpunkt gelang es uns, einen Befehl einzugeben, der das Neustart-Skript "tötete". Danach konnten wir mit diesem Smart Socket alles tun, was wir wollten.
Das dritte Gerät war die Greenwave Reality Smart Lamp, ein Konkurrent von Phillips Hue, der das ZigBee-Netzwerkprotokoll der obersten Ebene verwendet. Es wurde viel darüber gesagt. Komisch, dass es einen PowerPC-Mikroprozessor verwendet. Während des Startvorgangs stellt diese Lampe einen SSH-Server bereit, von dem wir kein Kennwort hatten.

Als wir den Fall öffneten, fanden wir auch Kontakte für UART. Dieses Gerät war mit einem universellen Open-Boot-U-Boot-Bootloader ausgestattet, der Linux lädt und ausführt. Mit diesem Bootloader können Sie alles tun - das Gerät neu flashen, die Befehlszeile des Kernels ändern. Sie können das Booten von Linux mit einer Vielzahl von Optionen begleiten, um beispielsweise die Größe des Gerätespeichers zu ermitteln. Wir haben es geschafft, Root-Rechte zu erhalten, indem wir die Bootloader-Befehlszeile geändert haben. Dazu haben wir uns über UART verbunden, das bin / sh-Modul in die Kernel-Befehlszeile eingefügt und sind so in die Bootloader-Shell gegangen.

Um das Gerät in Zukunft sicher verwenden zu können, haben wir das thinkgreen-Kennwort geknackt, um auf Root-Rechte zuzugreifen.
Das vierte Gerät ist File Transporter, ein Flash-Laufwerk, mit dem Daten über das Netzwerk übertragen werden können. Dies ist eine Art tragbare "Cloud", die eine große Festplatte des klassischen HDD-Formats mit einer Kapazität von 1 TB zum Speichern von Dateien verwendet. Sie können es mit Ihrem Heimnetzwerk verbinden und auf Dateien auf verschiedenen Heimgeräten zugreifen.

Diese "Dateiübertragung" ist seit kurzem auf dem Markt und ist ein ziemlich normaler Gerätetyp unter Linux. Dies ist eine ziemlich lustige Sache, und nachdem wir das Gehäuse entfernt haben, haben wir leicht einen Adapter zum Anschließen von UART gefunden.

Auch hier wurde der U-Boot-Bootloader verwendet, so dass wir wie im vorherigen Fall über die Kernel-Kommandozeile Root-Rechte erhalten konnten. Dies gab uns die Möglichkeit, das Root-Passwort zu ändern und Zugriff auf das Gerät zu erhalten.

Das fünfte Gerät war der Vizio CoStar LT Netzwerk-Mediaplayer Modell ISV-B11. Es bietet Zugriff auf den CoStar-Kanal, der früher Teil des Google TV-Netzwerks war. Dieser Media Player wird über das Internet oder über einen HDMI-Ausgang mit anderen Geräten verbunden.

Es mag lustig sein, dass Google TV nicht mehr existiert, aber es gibt immer noch unsere Gruppe namens GTVHacker. In der oberen linken Ecke der Leiterplatte kennzeichnen weiße Buchstaben den klassischen Anschluss zum Anschließen von UART über 4 Stifte hintereinander. Hier hatten wir einige Schwierigkeiten mit der Kommunikation mit dem Kernel, da wir nach dem Anschließen des „USB-Flash-Laufwerks“ die Meldung „Unverständliches Dateisystem auf einem Flash-Laufwerk“ erhielten. Wir haben es auf FAT32 umformatiert, woraufhin die Meldung "Ich kann fs.sys nicht finden" angezeigt wurde. Es sah verdächtig aus, also haben wir einige Nachforschungen angestellt.
Infolgedessen wurde der Schluss gezogen, dass Sie beim Booten beide Dateien auf dem USB-Flash-Laufwerk haben müssen - fs.sys und safe-kernel.img1. Die erste Datei ist ein U-Boot-Skript-Image-Downloader, der beliebige U-Boot-Befehle enthält, die beim Booten ausgeführt werden. Wir haben die gleiche Technik angewendet wie beim Hacken des vorherigen Geräts. Die Änderung der Kernel-Befehlszeile gab uns die Möglichkeit, uns in den Kernel zu hacken und Root-Rechte zu erlangen. Um einen völlig neuen Kernel herunterzuladen, können Sie eine Kombination dieser beiden Dateien verwenden, die sich auf einem Flash-Laufwerk befinden, das einfach eine Verbindung zum UART herstellt.
Staples Connect, das Linksys Zonoff-Modell, war das sechste Gerät, das wir gehackt haben. Dies ist ein weiteres kleines Hausautomationszentrum, ein Hub, der Heimgeräte verschiedener Marken und Typen miteinander kommuniziert. Es ist mit einem Wi-Fi-Modul und einem USB-Anschluss zum Anschließen einer Festplatte ausgestattet und basiert auf der Verwendung von Cloud-Technologie.
Auf der Leiterplatte fanden wir einen Block mit Kontaktbuchsen. Wir haben die Pins des 29/30-NAND-Speichers kurzgeschlossen, wodurch beim Laden der U-Boot-Umgebung und beim Neustart des Geräts ein Fehler aufgetreten ist. Beim Festlegen des Standardzeitlimits haben wir den Befehl setenv bootargs "console = ttyS0,115200 init = / bin / sh [...]" ausgeführt und die Root-Konsole gestartet. Durch Hinzufügen der Zeile # dropbear - d 222 konnten wir den U-Boot ändern, speichern und bearbeiten. Für den Zugriff auf das Stammverzeichnis wurde das Oemroot-SSH-Kennwort verwendet, das wir relativ leicht knacken konnten. Und jetzt möchte ich Ihnen CJ vorstellen.

CJ Jerez: Ich möchte mit Ihnen über nichtflüchtige Speicherkarten im eMMC-Format sprechen - Embedded MultiMedia Card. Sie basieren auf einem Standard-SD-Speicherkartenchip. Dies ist eine ziemlich coole Sache, die ein Flash-Modul und einen Flash-Controller enthält. In diesem Fall müssen Sie sich keine Gedanken über zusätzliche magische Teile machen.

Eine normale Speicherkarte enthält zusätzliche Bits, die Fehler behandeln und Fehlerkorrekturcode enthalten. Diese Funktion ist für Entwickler gedacht. Die eMMC-Speicherkarte verwendet ein reguläres Dateisystem und der Zugriff darauf erfolgt über einen billigen Multimedia-Kartenleser, der sowohl normale SD-Karten als auch eMMC gleich gut liest. Da diese Karte strukturell ein oberflächenmontierter BGA-Chip ist, sind ihre Ergebnisse Lötkugeln, die auf der Rückseite des Pads abgelagert sind. Um mit einer solchen Karte arbeiten zu können, müssen Sie diese Kontakte identifizieren, dh wir brauchten bestimmte Bälle, um den Debugger zu verbinden.
Um die erforderlichen Kontakte zu finden, haben wir zunächst das Design der Platine, alle Arten von Aufklebern, Etiketten unter den Widerständen, die Verfolgung des gedruckten Substrats und die Kontakte auf der anderen Seite der Platine untersucht. Dann nutzten wir die Intuition und die logische Analyse und zogen danach einfach den Chip heraus und stellten sicher, dass er nicht funktionierte. Wir konnten diese Karte an den MMC-Leser anschließen und die Einstellungen zurücksetzen.
Lassen Sie uns nun über unser 7. Gerät sprechen, dies ist eine Amazon Fire TV-Set-Top-Box mit Fernbedienung.

Es ist mit einem 4-Kern-Snapdragon 600-Prozessor mit 1,7 GHz und einem 8-GB-eMMC-Speicherlaufwerk ausgestattet und wird von einer modifizierten Version von Android 4.2.2 namens Fire OS 3.0 gesteuert.
Nachdem wir den Koffer geöffnet hatten, suchten wir nach der eMMC-Pinbelegung und zerstörten während der Suche ein Gerät, weil wir einen der Kontakte brachen, als wir den eMMC-Chip herauszogen, sodass wir an der zweiten Kopie der Set-Top-Box arbeiten mussten.

Links auf der Folie wird die Position der eMMC-Kontakte angezeigt, rechts UART-Kontakte bei 1,8 V.
Nachdem wir diese Set-Top-Box erfolgreich geknackt hatten, nahmen wir Gerät Nummer 8 auf - Hisense Android TV, ein Smart-TV mit Android. Dies ist eine Art Google TV, das umbenannt wurde. Es verwendet einen der neuesten Prozessoren, den 4-Kern Marvell MV88DE3108. Auf der DefCon-Konferenz im letzten Jahr haben wir gezeigt, wie das Booten im abgesicherten Modus für Prozessoren dieser Linie aufgrund eines kleinen Fehlers in ihrer Firmware umgangen werden kann.

Die nächste Folie zeigt, wie die Kontakte nach einer Verbindung zum Debugger suchen. Sie sind klein genug, aber wir mussten den Flash-Speicherchip nicht herausziehen.

Ich musste ein ziemlich umfangreiches Verfahren für dieses Gerät durchführen - mounten Sie zuerst den Abschnitt mit den Werkseinstellungen „factory_settings“ mit dem Befehl / dev / mmcblk0p3, der zwischen den Downloads gespeichert wurde, und verwenden Sie dann den guten alten Modus # chmod 4755 su. Sie können das Programm auch verwenden, um Super-Root-Rechte zu erhalten SU. Darüber hinaus können Sie über die Android-Debug-Bridge „ADB“ das Betriebssystem ändern, das dem ursprünglichen Android sehr ähnlich ist.
Also mach weiter. Sagen Sie niemals: "Gerät X kann nicht gehackt werden." Im Jahr 2011 veröffentlichte der USPS-Postdienst einen Werbespot, in dem festgestellt wurde, dass "der Kühlschrank nicht geknackt werden kann". Dieses Unternehmen hat sich als führend in der Kühlschranksicherheit positioniert. Ein Video dazu kann hier auf YouTube angesehen
werden . Ich nahm es als Herausforderung. Ich hatte nicht die zusätzlichen 3.000 US-Dollar, um diese Aussage auf dem neuen Kühlschrank zu testen, aber in der Müllkippe finden Sie alles, einschließlich Teile der weggeworfenen Kühlschränke. Ich habe es geschafft, die elektronische Befüllung des LG Smart Refrigerator, Modell LFX31995ST, mit einem etwas veralteten Android 2.3-Betriebssystem zu erhalten. Dies ist das neunte Gerät, das knacken konnte.

Das „Gehirn“ des Kühlschranks kontrollierte das Einfrieren, die Lebensmitteltemperatur, die Eisherstellung und den Trinkwasserverbrauch, und das Gerät selbst war mit einem Wi-Fi-Modul, einem USB-Anschluss und einer SD-Speicherkarte ausgestattet.
Auf der Leiterplatte befanden sich UART-Kontakte, mit denen Sie die Root-Konsole und den eMMC-Chip herunterladen konnten. Dies ermöglichte es, das System wie im Fall von Fire TV zu mounten, den Android-Standard-Bootloader einzulegen und die Superuser-Binärdatei herunterzuladen. Wie sich herausstellte, war der Parameter ro.secure = 0, dh das Gerät hatte bereits Superuser-Zugriff. Wahrscheinlich waren sich die Entwickler sicher, dass niemand diese Gelegenheit nutzen würde.
Dann haben wir angefangen, Befehle einzugeben. Ich stelle fest, dass Sie den vom Benutzer eingegebenen Daten niemals vertrauen und niemals Shell-Befehle verwenden sollten. Die Eingabe des Befehls ls% s mit dem Parameter "; reboot" ergab das Ergebnis von ls; reboot, wonach das System erfolgreich neu gestartet wurde.
Exponat Nr. 10, das die Hacking-Fähigkeiten perfekt demonstrierte, war das Vizio Smart TV, Modell VF552XVT, das auf der Smart Power-Serie BCM97XXX Yahoo Powered Smart TV basiert. Trotz der Tatsache, dass diese Plattform veraltet ist, ist sie immer noch weit verbreitet.

Dies ist einer der neuesten Fernseher mit LED-Hintergrundbeleuchtung, der deutlich dünner als LCD-Modelle ist.
Die Befehlszeileninjektion erfolgt hier über ein Wi-Fi-Passwort, eine modernere Version des UART-Debuggers über einen USB-Anschluss.

Wenn Sie den Wi-Fi-Modus einstellen, können Sie das Menü aufrufen und eine Verbindung zum Wi-Fi-Zugangspunkt herstellen. Wenn Sie die auf der Folie angezeigten Befehle eingeben können, erhalten Sie Zugriff auf das Stammverzeichnis des Systems.
Zu diesem Zweck haben wir einen USB-UART-Adapter verwendet und dann eine Zeichenfolge mit mehreren Zeichen eingegeben, die dem Kernel mitteilte, wohin Daten gesendet werden sollen. Nach ein paar Minuten erhielten wir einen Dateneingabefehler und gaben dann einen langen Bash 2-Befehl ein. Dies bedeutete, dass alle von diesem Gerät kommenden Daten an die Shell und alle Shell-Daten an das Gerät gesendet werden sollten. So konnten wir Root-Rechte über USB UART erhalten.
Gerät Nr. 11 war der Sony BDP-S5100 Blu-ray-Player mit einem MTK 8500-Prozessor unter OC Linux. Es ist mit Wi-Fi ausgestattet, Zugriff auf Online-Filmbetrachtungsdienste Netflix, VUDU und so weiter.

Ein weiterer Blu-ray-Player auf demselben Chipsatz ist das Gerät Nummer 12, das LG BP530, mit ähnlicher Funktionalität.

Wir haben festgestellt, dass beide Geräte denselben Chipsatz-Firmware-Fehler aufweisen, der die Verwendung von SDKs unterstützt.
Wenn Sie eine leere Datei mit dem Namen "vudu.txt" in einen Ordner mit dem Namen "vudu" auf dem USB-Stick legen und einen Exploit "vudu.sh" erstellen, der die folgenden Zeilen enthält:
mount –t overlayfs –o overlayfs /etc/passwd echo "root::0:0:root:/root:/bin/sh" > /etc/passwd /mnt/rootfs_normal/usr/sbin/telnetd
Dann können Sie Folgendes tun.
Wenn Sie den VUDU-Dienst starten, wird das Shell-Skript als Superuser ausgeführt, und Sie können die Verbindung über das Telnet-Netzwerk frei verwenden. Dies ist mit allen Playern des MTK 8500-Chipsatzes möglich, einschließlich des nächsten Geräts mit der Nummer 13 - dem Panasonic DMP-BDT230 Blu-ray-Player.

Es ist sehr einfach. Die nächste Folie zeigt eine Leiterplatte mit fast gleichem Layout für alle genannten Spieler. Es gibt einen Konsolenausgang 115200 8n1, an den Sie einen UART anschließen können. Dies war sehr wichtig für uns, da wir den oben genannten Fehler beim Debuggen erkennen konnten. Es gibt jedoch eine andere Möglichkeit, die Befehlszeile über das Bildschirmmenü über die Root-Konsole einzufügen, da der Name des Netzwerkordners vor der Verwendung nicht überprüft wird.

Auf diese Weise können Sie nach eigenem Ermessen Superuser-Rechte erwerben und alle Funktionen der Geräte verwalten.

24:10 min
DEFCON-Konferenz 22. GTVHacker Group. Alles hacken: 20 Geräte in 45 Minuten. Teil 2Vielen 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?