Conférence DEFCON 22. GTVHacker Group. Hackez tout: 20 appareils en 45 minutes. Partie 1

Amir Etemadi: Je souhaite la bienvenue à tous et bienvenue à la présentation de GTVHacker «Hack tout: 20 appareils en 45 minutes». Nous sommes les créateurs des produits Google TV originaux depuis 2010, ainsi que de produits tels que Chromecast, Roku et Nest, et nous publions également des exploits pour tous les appareils Google TV.



Alors qui sommes nous Je suis chercheur à Accuvant Labs, créé par GTVHacker, CJ est un chef d'équipe et chercheur en sécurité, et agit également occasionnellement en tant que développeur de technologies. Hans Nielsen est consultant senior en sécurité pour Matasano, tandis que Mike Baker développe un firmware et est co-fondateur d'OpenWRT.

Il y a 8 membres dans notre groupe, y compris Gynophage, en ce moment il est engagé dans une chose appelée DefCon CTF, Jay Freeman, créateur de Cydia, étudiant Coa Hoang et Tom Dwenger, le plus grand spécialiste de l'APK et tout ce qui concerne Java.

Alors, pourquoi avons-nous décidé de pirater des appareils, pourquoi pas des logiciels que nous n'aimons pas non plus? Vous savez, lorsqu'un appareil devient obsolète, arrive en fin de vie, il est simplement jeté dans une décharge. En fait, les anciens appareils tuent, et cela ne sert à rien, comme cela s'est produit avec Logitech Revue.

Nous donnons une nouvelle vie aux appareils jetés, et nous nous efforçons toujours d'améliorer le produit, de lui donner plus de fonctionnalités et si nous pouvons le faire, nous le faisons. Nous aimons relever des défis techniques, vous savez, c'est comme des énigmes que vous aimez résoudre.

Étudier, bien sûr, est un processus étonnant, mais l'essence de cette présentation peut être exprimée en mots:

"Vous avez une racine!"



Essentiellement, «pirater 20 appareils en 45 minutes», c'est-à-dire pendant la présentation, ne nous laisse pas beaucoup de temps à consacrer en détail à chaque appareil. Par conséquent, je vais vous montrer une vitrine d'appareils qui iront dans notre Wiki juste après la présentation. Nous vous présenterons les détails techniques, les schémas d'équipement, tout ce que nous pouvons, car c'est assez difficile à lire. Au bas de la diapositive, vous voyez un lien, vous pouvez l'utiliser après la présentation pour accéder à toutes les choses présentées lors de cette démonstration. Et maintenant, je donne la parole à mon collègue qui vous parlera de la «perspective d'attaques».

Hans Nielsen: Il existe un nombre infini de façons d'attaquer des appareils de ce type. Aujourd'hui, à partir de l'exemple de ces 20 appareils, nous considérerons 3 principales méthodes de piratage.

Le premier est l'utilisation de ports de débogage situés dans les appareils eux-mêmes. La deuxième méthode - nous pouvons utiliser des ports série ou des cartes mémoire EMMC, il s'agit d'une version obsolète des cartes SD pour se connecter à l'appareil et modifier le stockage. La troisième méthode consiste à obtenir un accès direct au système d'exploitation, ce qui vous permet d'implémenter tout un tas de commandes via la ligne de commande pour provoquer les erreurs d'électronique grand public les plus courantes.

Parlons donc de l'UART - un émetteur-récepteur asynchrone universel. Il est utilisé par les développeurs pour déboguer l'équipement et ne supporte plus aucune charge fonctionnelle. Il s'agit d'une interface très simple - un fil sert à la transmission, l'autre à la réception et le troisième sert de masse.



Ils me demandent quel âge j'ai - je réponds, j'ai 27 ans, merci pour votre question! Donc, ici, un protocole d'échange de données très simple est utilisé, et le port lui-même fonctionne avec une tension de différents niveaux, par exemple 1,8 V, 3,3 V ou 5 V et est un port série, similaire aux ports USB d'un ordinateur.

Vous disposez donc de plusieurs adaptateurs gratuits qui vous permettent de jouer avec vos propres appareils, et j'espère que vous en tirerez le plus d'avantages possible. Alors, comment pouvez-vous utiliser UART?

Considérons un périphérique spécifique - le MFP Epson Artisan 700/800, c'est à la fois une imprimante, un scanner et un copieur, qui peut être utilisé comme imprimante réseau. Il est contrôlé par Linux 2.6.21 - arm1. Que peut-on en faire? Si vous ouvrez le boîtier, vous pouvez voir la carte de circuit imprimé sur laquelle se trouvent 4 contacts: réception, transmission, mise à la terre, alimentation. Il s'agit d'une option de connexion UART classique.



Après avoir connecté notre port de débogage ici, nous avons vu un menu de la console des paramètres de l'imprimante.



Nous pouvons redémarrer l'imprimante, réinitialiser les paramètres, exécuter une commande shell arbitraire, exécuter toutes les commandes dont nous avons besoin, en général, s'amuser avec notre imprimante.

Le deuxième appareil est une prise intelligente Belkin WeMo avec contrôle Internet. Il vous permet d'utiliser un téléphone mobile pour allumer votre cafetière et d'autres appareils électroménagers via Internet et est largement utilisé par différentes personnes.



C'est un appareil assez petit, donc lire la notation sur la carte de circuit imprimé est assez difficile. Mais nous avons trouvé les contacts du récepteur et de l'émetteur et leur avons connecté l'UART. Après cela, Internet a signalé que l'appareil avait été corrigé, mais ce n'était pas vrai. Il s'est avéré que nous n'avions que 2 secondes pour entrer une commande, après quoi l'appareil redémarrait automatiquement.



Au bon moment, nous avons réussi à entrer une commande qui «a tué» le script de redémarrage, après quoi nous pouvions faire tout ce que nous voulions avec cette prise intelligente.

Le troisième appareil était la lampe intelligente Greenwave Reality, un concurrent de Phillips Hue, qui utilise le protocole réseau de haut niveau ZigBee, beaucoup a été dit à ce sujet. C'est drôle qu'il utilise un microprocesseur PowerPC. Au démarrage, cette lampe fournit un serveur SSH à partir duquel nous n'avions pas de mot de passe.



Lorsque nous avons ouvert le dossier, nous avons également trouvé des contacts pour l'UART. Cet appareil était équipé d'un chargeur de démarrage universel à démarrage ouvert qui charge et exécute Linux. En utilisant ce chargeur de démarrage, vous pouvez faire n'importe quoi - reflasher le périphérique, changer la ligne de commande du noyau. Vous pouvez accompagner le démarrage de Linux avec une variété d'options, par exemple, vous permettant de connaître la quantité de mémoire de l'appareil. Nous avons réussi à obtenir les droits root en modifiant la ligne de commande du chargeur de démarrage. Pour ce faire, nous nous sommes connectés via UART, avons inséré le module bin / sh dans la ligne de commande du noyau, et sommes donc allés dans le shell du chargeur de démarrage.



Afin d'utiliser l'appareil en toute sécurité à l'avenir, nous avons craqué le mot de passe thinkgreen pour accéder aux droits root.

Le quatrième appareil est File Transporter, un lecteur flash avec la possibilité de transférer des données sur le réseau. Il s'agit d'une sorte de «cloud» portable qui utilise un grand disque dur au format HDD classique d'une capacité de 1 To pour stocker des fichiers. Vous pouvez le connecter à votre réseau domestique et accéder aux fichiers sur divers appareils domestiques.



Ce «transfert de fichiers» est apparu récemment sur le marché et est un type d'appareil assez standard fonctionnant sous Linux. C'est une chose plutôt amusante, et après avoir retiré le boîtier, nous avons facilement trouvé un adaptateur pour connecter UART.



Le chargeur de démarrage U-boot a également été utilisé ici, de sorte que, comme dans le cas précédent, nous avons pu obtenir les droits root en utilisant la ligne de commande du noyau. Cela nous a donné la possibilité de changer le mot de passe root et d'accéder à l'appareil.



Le cinquième appareil était le lecteur multimédia réseau Vizio CoStar LT modèle ISV-B11. Il donne accès à la chaîne CoStar, qui faisait partie du réseau Google TV. Ce lecteur multimédia se connecte à d'autres appareils via Internet ou par câble via une sortie HDMI.



Il peut sembler drôle que Google TV n'existe plus, mais il y a toujours notre groupe appelé GTVHacker. Ainsi, dans le coin supérieur gauche de la carte de circuit imprimé, les lettres blanches indiquent le connecteur classique pour connecter l'UART à partir de 4 broches d'affilée. Ici, nous avons eu quelques difficultés à communiquer avec le noyau, car après avoir branché le «lecteur flash», nous avons reçu le message «« système de fichiers incompréhensible sur un lecteur flash ». Nous l'avons reformaté en FAT32, après quoi un message est apparu: «Je ne trouve pas fs.sys». Cela semblait suspect, alors nous avons fait des recherches.

En conséquence, il a été conclu que lors du démarrage, vous devez avoir les deux fichiers sur le lecteur flash USB - fs.sys et safe-kernel.img1. Le premier fichier est un téléchargeur d'images de script U-Boot qui contient des commandes U-Boot arbitraires qui sont exécutées au démarrage. Nous avons utilisé la même technique que lors du piratage de l'appareil précédent. La modification de la ligne de commande du noyau nous a donné l'occasion de pirater le noyau et d'obtenir des privilèges root. Pour télécharger un tout nouveau noyau, vous pouvez utiliser une combinaison de ces deux fichiers situés sur un lecteur flash qui se connecte simplement à l'UART.

Staples Connect, le modèle Linksys Zonoff, était le sixième appareil que nous avons piraté. Il s'agit d'un autre petit centre domotique, un hub qui communique entre des appareils domestiques de différentes marques et types. Il est équipé d'un module Wi-Fi et d'un port USB pour connecter un disque dur et est basé sur l'utilisation de la technologie cloud.
Sur le circuit imprimé, nous avons trouvé un bloc avec des prises de contact. Nous avons raccourci les broches de la mémoire NAND 29/30, en raison de laquelle une erreur s'est produite lors du chargement de l'environnement U-Boot et du redémarrage de l'appareil. En définissant le délai par défaut, nous avons exécuté la commande setenv bootargs "console = ttyS0,115200 init = / bin / sh [...]", nous avons démarré dans la console racine. En ajoutant la ligne # dropbear - d 222, nous avons pu modifier, enregistrer et éditer le U-Boot. Pour accéder à la racine, le mot de passe oemroot SSH a été utilisé, que nous avons réussi à craquer relativement facilement. Et maintenant, je veux vous présenter CJ.



CJ Jerez: Je veux vous parler des cartes mémoire non volatiles au format eMMC - Embedded MultiMedia Card. Ils sont basés sur une puce de carte mémoire SD standard. C'est une chose assez cool qui comprend un module flash et un contrôleur flash. Dans ce cas, vous n'avez pas à vous soucier de bits magiques supplémentaires.



Une carte mémoire standard contient des bits supplémentaires qui gèrent les erreurs et contiennent un code de correction d'erreurs; cette fonction est destinée aux développeurs. La carte mémoire eMMC utilise un système de fichiers classique, et l'accès à celui-ci se fait via un lecteur de carte multimédia bon marché, qui lit à la fois les cartes SD ordinaires et eMMC. Étant donné que cette carte est structurellement une puce BGA montée en surface, ses conclusions sont des billes de soudure déposées à l'arrière du tampon. Pour travailler avec une telle carte, vous devez identifier ces contacts, c'est-à-dire que nous avions besoin de certaines boules pour connecter le débogueur.

Pour trouver les contacts nécessaires, nous avons d'abord examiné la conception de la carte, toutes sortes d'autocollants, d'étiquettes sous les résistances, le traçage du substrat imprimé et les contacts de l'autre côté de la carte. Ensuite, nous avons profité de l'intuition et de l'analyse logique, et après cela, nous avons juste retiré la puce et nous sommes assurés qu'elle ne fonctionnait pas. Nous avons pu connecter cette carte au lecteur MMC et réinitialiser les paramètres.

Parlons maintenant de notre 7ème appareil, il s'agit d'un décodeur Amazon Fire TV avec télécommande.



Il est équipé d'un processeur Snapdragon 600 à 4 cœurs 1,7 GHz et d'un lecteur de mémoire eMMC de 8 Go, et est contrôlé par une version modifiée d'Android 4.2.2 appelée Fire OS 3.0.

Après avoir ouvert le boîtier, nous avons commencé à chercher le brochage eMMC, et pendant la recherche, nous avons ruiné un appareil, car nous avons rompu l'un des contacts lorsque nous avons retiré la puce eMMC, nous avons donc dû travailler sur la deuxième copie du boîtier décodeur.



Sur la gauche sur la diapositive montre l'emplacement des contacts eMMC, sur la droite - contacts UART Ă  1,8 V.

Après avoir réussi à casser ce décodeur, nous avons pris l'appareil numéro 8 - Hisense Android TV, un téléviseur intelligent fonctionnant sous Android, c'est une sorte de Google TV, qui a été rebaptisé. Il utilise l'un des derniers processeurs, le Marvell MV88DE3108 à 4 cœurs. Lors de la conférence DefCon de l'année dernière, nous avons montré comment contourner le démarrage en mode sans échec pour les processeurs de cette ligne en raison d'une petite erreur dans leur micrologiciel.



La diapositive suivante montre à quoi ressemblent les contacts pour connecter un débogueur. Ils sont assez petits, mais nous n'avons pas eu besoin de retirer la puce de mémoire flash.



J'ai dû faire une procédure assez complète pour cet appareil - montez d'abord la section des paramètres d'usine «factory_settings» en utilisant la commande / dev / mmcblk0p3, qui a été enregistrée entre les téléchargements, puis utilisez le bon ancien mode # chmod 4755 su, vous pouvez également utiliser le programme pour obtenir les droits super root SU. De plus, via le pont de débogage Android «ADB», vous pouvez modifier le système d'exploitation, qui est très similaire à l'Android d'origine.
Alors, continuez. Ne dites jamais: «Le périphérique X ne peut pas être piraté.» En 2011, le service postal USPS a publié une publicité qui déclarait que "le réfrigérateur ne peut pas être fissuré". Cette entreprise s'est positionnée comme un leader de la sécurité des réfrigérateurs. Une vidéo à ce sujet peut être visionnée sur YouTube ici . Je l'ai pris comme un défi. Je n'avais pas les 3 000 $ supplémentaires pour tester cette déclaration sur le nouveau réfrigérateur, mais dans la décharge, vous pouvez trouver n'importe quoi, y compris des pièces des réfrigérateurs jetés. J'ai réussi à obtenir le remplissage électronique du réfrigérateur intelligent LG, modèle LFX31995ST, exécutant un système d'exploitation Android 2.3 légèrement obsolète. Il s'agit du neuvième appareil qui a pu se fissurer.



Le «cerveau» du réfrigérateur contrôlait la congélation, la température des aliments, la fabrication de glace, la consommation d'eau potable, et l'appareil lui-même était équipé d'un module Wi-Fi, d'un port USB et d'une carte mémoire SD.

Sur la carte de circuit imprimé se trouvaient des contacts UART, vous permettant de télécharger la console racine et la puce eMMC. Cela a permis de monter le système, comme dans le cas de Fire TV, d'insérer le chargeur de démarrage Android et de télécharger le binaire superutilisateur. Il s'est avéré que le paramètre ro.secure = 0, c'est-à-dire que l'appareil avait déjà un accès superutilisateur. Probablement, les développeurs étaient sûrs que personne ne saisirait même cette opportunité.

Ensuite, nous avons commencé à taper des commandes. Je note que vous ne devez jamais faire confiance aux données que l'utilisateur entre et ne jamais utiliser de commandes shell. La saisie de la commande ls% s avec le paramètre «; reboot» a donné le résultat de ls; reboot, après quoi le système a redémarré avec succès.

La pièce n ° 10, qui a parfaitement démontré les capacités de piratage, était la Vizio Smart TV, modèle VF552XVT, qui est basée sur la série de téléviseurs intelligents BCM97XXX Yahoo Powered Smart TV. Malgré le fait que cette plate-forme soit obsolète, elle est encore largement utilisée.



Il s'agit de l'un des derniers téléviseurs à rétroéclairage LED, nettement plus fin que les modèles LCD.

L'injection de ligne de commande se fait ici via un mot de passe Wi-Fi, qui est une version plus moderne du débogueur UART via un port USB.



Si vous définissez le mode Wi-Fi, vous pouvez accéder au menu et vous connecter au point d'accès Wi-Fi. Si vous parvenez à saisir les commandes affichées sur la diapositive, vous aurez accès à la racine du système.

Pour ce faire, nous avons utilisé un adaptateur USB UART, puis entré une chaîne de plusieurs caractères qui indiquait au noyau où envoyer les données. Après quelques minutes, nous avons reçu une erreur de saisie de données, puis entré une longue commande bash 2, ce qui signifiait que toutes les données provenant de cet appareil devaient être envoyées au shell, et toutes les données du shell devaient être envoyées à l'appareil. Ainsi, nous avons pu obtenir les droits root via USB UART.

L'appareil n ° 11 était le lecteur Blu-ray Sony BDP-S5100 avec un processeur MTK 8500 exécutant OC Linux. Il est équipé d'une connexion Wi-Fi, d'un accès aux services de visualisation de films en ligne Netflix, VUDU, etc.



Un autre lecteur Blu-ray sur le même chipset est l'appareil numéro 12, le LG BP530, avec des fonctionnalités similaires.



Nous avons constaté que ces deux appareils ont la même erreur de microprogramme du chipset qui prend en charge l'utilisation des SDK.

Si vous placez un fichier vide appelé «vudu.txt» dans un dossier appelé «vudu» sur la clé USB, et créez un exploit «vudu.sh» contenant les lignes suivantes:

mount –t overlayfs –o overlayfs /etc/passwd echo "root::0:0:root:/root:/bin/sh" > /etc/passwd /mnt/rootfs_normal/usr/sbin/telnetd 

Ensuite, vous pouvez effectuer les opérations suivantes.

Lancez le service VUDU, il exécutera le script shell en tant que superutilisateur, et vous pourrez utiliser librement la connexion via le réseau Telnet. Cela peut être fait avec tous les lecteurs du chipset MTK 8500, y compris le prochain appareil au numéro 13 - le lecteur Blu-ray Panasonic DMP-BDT230.



C'est très simple. La diapositive suivante montre une carte de circuit imprimé ayant presque la même disposition pour tous les joueurs mentionnés. Il existe une sortie console 115200 8n1 à laquelle vous pouvez connecter un UART. C'était très important pour nous, car cela nous a permis de détecter l'erreur ci-dessus pendant le débogage. Cependant, il existe une autre possibilité d'injecter la ligne de commande via la console racine à l'aide du menu à l'écran, car le nom du dossier réseau n'est pas vérifié avant utilisation.



Ainsi, vous pouvez obtenir des droits de superutilisateur et gérer toutes les capacités des appareils à votre discrétion.



24:10 min

Conférence DEFCON 22. GTVHacker Group. Hackez tout: 20 appareils en 45 minutes. 2e partie


Merci de rester avec nous. Aimez-vous nos articles? Vous voulez voir des matériaux plus intéressants? Soutenez-nous en passant une commande ou en le recommandant à vos amis, une réduction de 30% pour les utilisateurs Habr sur un analogue unique de serveurs d'entrée de gamme que nous avons inventés pour vous: Toute la vérité sur VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbps à partir de 20 $ ou comment diviser le serveur? (les options sont disponibles avec RAID1 et RAID10, jusqu'à 24 cœurs et jusqu'à 40 Go de DDR4).

VPS (KVM) E5-2650 v4 (6 cœurs) 10 Go DDR4 240 Go SSD 1 Gbit / s jusqu'en décembre gratuitement en payant pour une période de six mois, vous pouvez commander ici .

Dell R730xd 2 fois moins cher? Nous avons seulement 2 x Intel Dodeca-Core Xeon E5-2650v4 128 Go DDR4 6x480 Go SSD 1 Gbps 100 TV à partir de 249 $ aux Pays-Bas et aux États-Unis! Pour en savoir plus sur la création d'un bâtiment d'infrastructure. classe utilisant des serveurs Dell R730xd E5-2650 v4 coûtant 9 000 euros pour un sou?

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


All Articles