Conférence DEFCON 27. Buttplug: True Penetration Testing. Partie 1

Les analystes estiment qu'il existe actuellement environ 10 milliards d'appareils du monde de l'Internet des objets (IoT). Parfois, ces appareils gagnent leur place sur le marché, grimpant littéralement les culs humains. Il s'est avéré que les puces radio bon marché et de faible puissance ne sont pas seulement idéales pour la domotique - elles changent également la façon dont les gens interagissent avec les jouets sexuels. Dans ce rapport, nous allons plonger dans le monde de la télévision dildonique, la technologie du sexe à distance dans laquelle les sensations tactiles, thermiques et autres sont transmises entre partenaires via une ligne de communication bidirectionnelle. L'orateur vous dira que la sécurité des jouets sexuels électroniques électroniques Buttplug peut être opposée à un attaquant qui trouve et exploite des vulnérabilités à chaque niveau de la pile. En fin de compte, cela permet aux sextoys eux-mêmes d'être compromis,et les appareils auxquels ils se connectent.



Un pirate avec le surnom de smea, ou Smealum, a commencé sa carrière en tant que développeur de jeux vidéo pour des consoles de jeux telles que Nintendo DS, en essayant simultanément de les casser. À un moment donné, les consoles ont acquis de sérieux systèmes de sécurité et Smea est passé de logiciels locaux à des techniques de développement pour les casser. Smea est connu pour son «travail» sur Nintendo 3DS et Wii U, bien qu'il ait également contribué au développement d'exploits pour les navigateurs Web et les piles de virtualisation les plus populaires. Probablement, maintenant, il s'est intéressé à percer des plugs anaux «intelligents».

Bonjour à tous, je suis Smia, et aujourd'hui nous allons parler de la façon de casser un plug de démarrage. C'est un objet que je tiens dans ma main, je ne sais pas si vous l'avez déjà vu, personnellement je ne le sais pas. Mais au cours des 2 dernières années, j'ai rencontré de nombreux représentants intéressants de l'industrie de l'IoT, alors maintenant le tour de cette chose est venu. Vous vous demandez peut-être comment vous pouvez casser un bootplag, car ce n'est qu'un morceau de silicone qui doit être inséré quelque part, et vous conviendrez qu'il n'y a pas beaucoup d'endroits pour cela.

En fait, cela ne nécessite aucune électronique. Mais au cours des dernières années, voire des décennies, une nouvelle industrie d'appareils électroniques appelée teledildonika est apparue. L'origine de ce terme est montrée sur la diapositive: le mot grec "tele" signifie "de loin", et l'anglais "gode" ne signifie rien de plus qu'un gode. J'ai essayé de trouver l'origine du mot gode, mais personne ne sait d'où il vient. Mais c'est compréhensible, non? L'idée est que vous voulez faire des jouets sexuels qui peuvent être contrôlés à distance.

Il existe plusieurs scénarios pour cela. Je veux juste vous expliquer comment cela fonctionne, car tout le monde n'est pas familier avec de tels appareils. Ainsi, vous prenez le bootplag, l'insérez où cela est nécessaire et pouvez le contrôler à distance où vous voulez - depuis votre téléphone, ordinateur portable, etc. Il s'agit du premier scénario appelé "jeu solo". Le deuxième scénario que j'ai appelé "multijoueur local" - c'est lorsque vous transférez le contrôle de cette chose à quelqu'un d'autre. C'est une chose assez réelle qui est souvent annoncée - vous pouvez, par exemple, aller dans un bar avec elle et personne ne saura à quel point c'est amusant. Mais techniquement, cela crée un nouveau vecteur d'attaque, car vous donnez le contrôle de l'appareil à un étranger, et ici le modèle de menace change vraiment.

Le troisième scénario, «multijoueur à distance», est similaire au deuxième, seulement maintenant vous autorisez une autre personne à contrôler l'appareil via Internet. N'oubliez pas que cette personne peut être un étranger.



Pour beaucoup, avoir des relations sexuelles à distance semble assez cool et amusant, et je ne vais pas en plaisanter. Certains utilisent la télédildonie pour gagner leur vie, et le scénario 3B est appelé «multijoueur payant à distance». Par conséquent, le fait que j'essaie de casser le plug anal n'est pas seulement un divertissement - cela donne une certaine justification à mes études de pénétration.



Beaucoup de gens, je ne sais pas comment les appeler - garçons, filles - offrent un divertissement sexuel dynamique sur Internet, permettant à d'autres personnes de contrôler leurs jouets sexuels pour de l'argent. L'entreprise qui produit ces mégots a un brevet pour le concept de déduction des bénéfices lors de l'utilisation de ses produits pour des jeux sexuels sur Internet. Dans ce scénario, pour des déductions de 5 $, vous avez le droit de placer un lien, par exemple, sur Twitter, pour donner à quelqu'un la possibilité de gérer votre bootplag pendant une durée limitée. Puisque les gens comptent sur ces jouets comme outils pour gagner de l'argent, à mon avis, il est très important de considérer leur sécurité.

Examinons les scénarios qui intéressent les attaquants. Le premier est un piratage local, lorsqu'un attaquant qui se trouve à portée de l'appareil intercepte le contrôle via une communication sans fil. Il y a eu beaucoup de recherches sur cette méthode de piratage, donc nous ne serons pas coincés avec notre attention dessus.



Techniquement, une telle intervention peut être considérée comme un abus sexuel, donc qu'elle soit légale ou non, n'essayez pas de le faire. Selon le scénario suivant, un attaquant fait la même chose, mais à distance, via Internet. Comme je l'ai déjà dit, si vous gagnez comme ça, vous pourriez très bien fournir à un étranger - un attaquant un accès à distance à votre sextoy.

Cela signifie qu'un pirate peut compromettre vos jouets sexuels «intelligents» ou appareils connexes, bref, vous faire du mal, et c'est tout à fait légal, puisque vous-même vous y avez donné accès. Pour un pirate, c'est une option plus intéressante, nous allons donc y rester un peu plus longtemps.



Le troisième scénario est le contraire - l'attaquant lui-même utilise le plug-in de démarrage pour prendre le contrôle d'un ordinateur ou d'un téléphone et pirater des périphériques situés du côté de l'utilisateur qui participe à distance à des jeux avec le plug-in. Les gens ne comprennent pas que c'est un vrai risque, mais vous imaginez probablement à quel point les plug anal peuvent être insidieux (rires dans le hall). Nous explorons également ce scénario.



Maintenant que vous avez une idée du monde de la télédildonie, voyons à quoi il ressemble dans la pratique. Sur la diapositive, vous voyez un modèle de gode appelé Lovense Hush, et plus tard je vous montrerai une démo avec cette chose en ondes. Il s'agit du premier modèle de gode-télédildonique au monde, un plug anal qui peut être contrôlé depuis votre téléphone ou votre ordinateur. Il existe des applications pour IoS et Android pour ce boot-plag, vous pouvez le contrôler à partir d'un ordinateur exécutant Mac OS et Windows. Les applications mobiles prennent en charge des fonctionnalités sociales telles que le chat, le partage de texte, d'images, de vidéos et le contrôle des jouets avec des amis ou des inconnus.



Pour Windows, vous devez utiliser une clé USB spéciale, que je montrerai plus tard, car maintenant ce plug-in de démarrage est connecté à mon ordinateur. La clé de lecteur flash électronique a été développée par la même société, «Lovens», un fabricant d'un plug-in de démarrage qui a créé son propre écosystème de godes «intelligents» et prend environ 5 $ de commission pour une session sur Internet.



La diapositive suivante montre ma vision d'une attaque sur une prise de démarrage à l'aide d'une application PC. Il existe une connexion BLE (BlueTooth Low Energy) entre la prise de démarrage et la clé USB, la clé est connectée à l'ordinateur de l'utilisateur, qui à son tour est connecté à Internet. Le scénario n ° 1 est utilisé par un attaquant sur la section de clé USB de connexion de démarrage, c'est-à-dire que la connexion BLE est attaquée. En fait, il n'y a aucune protection, de sorte que tout étranger peut prendre le contrôle de ce jouet. L'année dernière, il y a eu une discussion sérieuse sur un outil appelé BTLE Jack, qui vous permet d'attaquer avec succès une telle connexion.



Le scénario n ° 2 consiste à attaquer une section de la connexion Internet de l'ordinateur d'un utilisateur. Le troisième scénario est une tentative de piratage dans l'un des trois sites: BLE, USB, Internet. Il est probable qu'il existe un projet de plug-in ouvert ... vous pouvez rire, c'était une blague. Alors, par où commencer nos «vrais tests de pénétration»?



Je n'ai trouvé aucun code ni binaire pour le gode et le dongle lui-même, mais il existe des fichiers d'application binaires pour les appareils mobiles et un ordinateur disponibles en téléchargement sur Internet. J'ai installé ces fichiers sur mon ordinateur et commencé à travailler dessus. Sur la diapositive suivante, vous voyez l'interface de l'application pour gérer le plug-in de démarrage. Au centre de l'écran, il y a un curseur pour régler la vibration du jouet, et à gauche se trouve le panneau de commande avec des boutons - accès au compte, mode de contrôle sur le réseau local, mode de télécommande via Internet. Afin de comprendre la structure de l'application, il vous suffit de lire un peu de code JavaScript déroutant.



Je n'aime pas JavaScript, mais ce qui est bien c'est la présence d'un tas de noms de variables et de noms de champs d'objets, et tout cela est parfaitement rétro-conçu. Déposez simplement le code dans Beautifier et découvrez comment cela fonctionne. Une fois que vous faites cela, vous pouvez commencer à comprendre le fonctionnement de la clé électronique.



Découvrant qu'il ne s'agit que d'un port série pour la connexion via USB, j'ai commencé à flairer le trafic entre la clé et l'application. Faites attention aux lignes à droite de la diapositive - tout d'abord, j'ai remarqué que les messages entre le dongle et l'application étaient au format texte JSON. Pour le code JavaScript, cela est familier, mais pour une clé USB, qui est un microcontrôleur 32 bits, l'intégration de l'analyseur JSON semble étrange ... Pour nous, c'est très pratique, car les analyseurs JSON contiennent généralement des bogues de firmware qui peuvent être utilisés.



Cependant, trouver des bogues sans le code clé lui-même est une tâche fastidieuse, mais depuis que j'ai le code d'application, j'ai commencé à chercher un mécanisme pour mettre à jour le firmware de la clé USB et j'ai rapidement trouvé ce que je voulais - l'URL du nœud de mise à jour. Il s'est avéré que le firmware n'était pas crypté ou signé de quelque façon que ce soit, alors je viens de le télécharger et j'ai obtenu un binaire pour analyse.



Ensuite, j'ai commencé l'ingénierie inverse et attiré l'attention sur 2 choses. Tout d'abord, il existe 2 gestionnaires de commandes pour le port USB série. Le premier utilise des commandes simples telles que la réinitialisation ou le type d'appareil, le second utilise des commandes telles que DFU pour mettre à jour le firmware de l'appareil, afin que nous ayons la possibilité d'envoyer ces commandes et de mettre à jour le firmware.



Après avoir examiné l'analyseur JSON, qui nous intéresse le plus, j'ai découvert le bogue attendu - la fonction parseJsonString. Il a juste besoin d'allouer une copie de la chaîne d'origine dans un nouveau tampon et de travailler avec des choses comme les séquences d'échappement. Lors du calcul de la longueur du nouveau tampon, il ne correspond pas à la longueur réelle utilisée.



Cette fonction fonctionne comme ceci: elle prend en charge une séquence d'échappement de 5 paramètres U au lieu, comme prévu, de les égaler à 0. Grâce à cela, nous pouvons éviter une chaîne terminée par un caractère nul et rendre la longueur de la première chaîne calculée incorrecte.



Cette petite animation montre ce qui se passe ici. La barre oblique inverse avant U signifie que 6 caractères doivent être supprimés. Ensuite, la fonction saute à travers le terminateur nul, ce qui est un problème. Ensuite, le processus continue, tous les caractères sont copiés et tombent dans le tampon avec une longueur de seulement 6 octets. Ici, le deuxième problème apparaît - le risque de débordements de tampon. C'est génial, mais nous ne savons toujours pas comment fonctionne le matériel du dongle.



Nous savons avec certitude qu'elle n'a pas de randomisation de l'espace d'adressage ASLR, elle n'a pas de pile de cookies, mais il est possible que la clé ait une protection telle que la prévention de l'exécution des données DEP ou la protection XN qui empêche l'exécution de code en mémoire, à l'exception de la région .text.

La clé est équipée d'une puce SoC NRF51822 avec un processeur Cortex M0, sans protection DEP, qui est très populaire pour les appareils BLE et équipée d'un tas de contacts de débogage. Par conséquent, il est assez simple de se connecter à cette clé en y soudant quelques éléments et en effectuant le débogage via l'interface de débogage et de clignotement des puces SWD si elle n'est pas désactivée dans les paramètres d'usine. En se connectant via SWD, nous pouvons vider le contenu du tas.

Il s'avère qu'il n'est utilisé que pour l'analyseur JSON, ce qui n'est pas très cool, mais le tas contient des métadonnées. Alors, que peut-on gâcher ici? Bien sûr, tas de métadonnées! De cette façon, nous créons un exploit pour l'analyseur JSON.



Un tas n'est qu'une liste gratuite. Si vous regardez ce code, vous pouvez voir que chaque distribution a sa propre longueur et son propre pointeur. Si vous utilisez un dépassement de tampon, vous pouvez gâcher la longueur et la position du pointeur suivant, ce qui vous permet de contrôler l'emplacement de la prochaine distribution. En y copiant une nouvelle ligne, vous pouvez facilement organiser des données arbitraires dans un endroit arbitraire. Tout cela peut être fait lorsque le débogueur est connecté.



Sur le côté droit de la diapositive, vous voyez une pile qui est réinitialisée et complètement remplacée avec seulement 8 caractères. Cela nous donne l'exécution du code de la clé USB, ce qui est plutôt cool.
Je me suis souvenu que, malheureusement, ce dongle dispose d'un mode de mise à jour d'urgence du firmware DFU. Je m'attendais à ce que, par analogie avec le piratage des consoles de jeux, ce mode serve à authentifier la mise à jour de toutes les manières possibles. Il s'avère que la DFU utilise ici le calcul de somme de contrôle CRC16 classique, qui, si vous comprenez la cryptographie, n'est pas une authentification d'aucune sorte. Je ne pense pas qu'ils voulaient vraiment utiliser l'authentification dans ce cas, très probablement ils ont juste décidé que peu de gens seraient intéressés à exécuter le code de clé USB pour la prise de démarrage. Cependant, cela m'a intéressé.



Pour le moment, j'avais 2 façons différentes d'exécuter du code sur cet appareil, mais se disputer avec l'analyseur JSON, sur lequel j'ai passé beaucoup de temps, s'est avéré peu efficace en raison de la présence du mode DFU. Plus tard, nous considérerons cette méthode avec la vulnérabilité existante de l'analyseur. Jusqu'à présent, je me suis davantage intéressé à savoir s'il était possible de simplement modifier le fichier main.bin, recalculer son CRC16 et l'intégrer à l'aide du programme inclus dans l'application Lovense Remote. Il s'est avéré que c'était possible.
En conséquence, nous avons obtenu une clé USB qui a été compromise à l'aide d'une application PC, et c'était certainement la partie la plus facile à casser. Ayant pris le contrôle de la clé, j'ai commencé à chercher un moyen d'exécuter du code sur le plug boot lui-même.



Pour ce faire, je me suis tourné vers le "matériel" de notre sextoy - probablement il y avait aussi un débogueur dessus, et ça valait le coup d'oeil. Après avoir examiné la prise de démarrage, j'ai trouvé une puce plus sérieuse, avec une grande quantité de mémoire flash et de RAM et un processeur Cortex M4 plus puissant.

J'ai facilement compris ce qui manquait et ce qui se trouvait à bord du bootplag. Il n'y a pas de DEP, comme sur un dongle, en haut il y a des fils menant à la batterie, ensuite le port de charge, les contacts du moteur du vibreur, plusieurs plots de contact pour le débogage et une antenne Bluetooth. Ainsi, grâce à la présence de SWD, l'appareil peut facilement être reflasher.



Vous voyez ce qui s'est passé - je n'ai pas d'actionnaire, mais dans le sac il y aura toujours un tas de plugs pour les expériences. Ensuite, j'ai commencé l'ingénierie inverse et le débogage du bootplag, en réinitialisant le firmware d'origine. Il n'y avait pas d'analyseurs JSON, seulement des commandes simples, mais en grand nombre.

Je pensais que si le mode de mise à jour du firmware du dongle était si dangereux, il est possible qu'il existe des vulnérabilités. Il s'est avéré comme ça. À la suite de la recherche DFU, j'ai trouvé 2 choses: le gestionnaire de commandes DFU normal et la ligne DfuTarg dans le secteur de démarrage. Ce DfuTarg est utilisé de la même manière que l'identifiant du plugin de démarrage LVS-Z00, c'est-à-dire qu'il est similaire au chargeur de démarrage DFU pour BLE. Par conséquent, en mode DFU, le journal de démarrage est reconnu comme un périphérique sous le nom DfuTarg, et cet identifiant unique peut être utilisé pour rechercher le périphérique.
Donc, si vous lui envoyez exactement la même commande DFU que nous avons envoyée à la clé, le bootplag passera en mode de mise à jour du firmware de l'appareil. Pour le flashage, vous pouvez utiliser les outils propriétaires du fabricant du microcircuit Nordic Semiconductor - nRF Toolbox.



À l'aide d'un renifleur matériel, vous pouvez visualiser les paquets BLE dans Wireshark.



J'ai envoyé un court message "bonjour de la fiche", et cela signifie que vous pouvez exécuter le code sur le batplag sans aucun piratage, et ce n'est pas une vulnérabilité, mais juste une sorte de conception de développeur qui vous permet de reflasher l'appareil. Peut-être que la communauté open source aimerait cette solution. L'essentiel est que toute personne qui peut se connecter à votre plug-in de démarrage peut exécuter son propre code dessus, et c'est déjà une chose assez dangereuse. Dans ce cas, le pirate doit se trouver dans la zone de la connexion locale, c'est-à-dire être suffisamment proche du jouet sexuel pour en prendre le contrôle via un dongle compromis et un canal BLE. Dans le même temps, vous pouvez utiliser le dongle lui-même ou tout autre appareil BLE.



La question est, que peut-on vraiment faire avec le plug-in de démarrage, avoir la possibilité d'exécuter son propre code dessus? J'ai quelques idées. La première - prendre le contrôle de cette chose, vous pouvez créer un bootplag de ransomware. Vous pouvez modifier son firmware pour que l'utilisateur ne puisse pas activer le mode DFU jusqu'à ce que vous lui fournissiez une certaine clé, ou vous désactivez simplement la fonction de vibration et demandez 50 dollars pour déverrouiller cet appareil utile.



Pour beaucoup, cela servira comme une sorte de vaccin contre l'utilisation de ces jouets. La deuxième idée est de transformer le bootplag en arme. Il a une batterie assez puissante qui alimente le moteur du vibrateur, on peut dire que 80% du contenu du plug boot est une batterie. Vous vous souvenez probablement de ce qui s'est passé avec les smartphones Samsung Galaxy Note - ils viennent d'exploser (rires), il est donc probable que cela puisse se produire avec des plugs. Je ne sais pas quelle est la probabilité de son explosion, mais si vous avez beaucoup de jouets sexuels avec un moteur, vous devriez y penser. L'équipe de développement affirme que ces choses sont absolument sûres, malgré la présence de nombreuses pièces mobiles. Mais si tel est le cas, la fonction de sécurité de l'appareil est codée par logiciel, pas par matériel.Dans ce cas, l'exécution de code malveillant peut avoir des conséquences désastreuses.

Les jouets sexuels équipés d'une pompe à air sont également dangereux. Ils ont également un moteur assez puissant avec une batterie, vous devez donc également y faire attention.
Enfin, la dernière idée est un plug-in de combat hostile. Hostile, non pas dans le sens où il est capable de vous faire sauter le cul, mais dans le fait qu'il peut servir de moyen pour pirater le reste de vos appareils. Par conséquent, nous considérerons la prise de bataille du point de vue de son hostilité, qui est assurée par l'exécution de code malveillant.

Essayons de savoir s'il est possible d'exécuter du code dans l'application pour le plug-in de démarrage en considérant comment il traite les messages entrants.



À gauche, vous voyez un rappel en JavaScript, et à droite comment il interagit avec l'application via le port série. Le rappel est placé dans une chaîne, puis traité par un tas de fonctions différentes.

La première fonction est de trouver la clé, elle traite les messages d'initialisation provenant de la clé. La deuxième fonction est activée («Données»), une fonction de traitement qui accepte un paquet JSON entrant, dont la longueur, en passant, ne peut pas dépasser 32 caractères. Ensuite, l'analyse et tout le reste est fait. En fait, il n'y a pas de traitement sérieux ici - juste une demande est faite pour l'état de l'appareil, vérifiant la charge de la batterie et les frais généraux similaires.

La dernière fonction est beaucoup plus intéressante - je l'appelle le journal de débogage, bien qu'il n'ait en fait aucun nom dans le vrai code. Cette fonction enregistre tout ce qui entre dans le périphérique via le port série et réinitialise ces lignes sur la console qui, si nécessaire, affiche un message d'erreur. De plus, cette fonction crée un nouvel élément DOM en tant qu'élément HTML et jette tout ce contenu reçu via le port série dans ce HTML. Je ne suis pas développeur Web, mais je pense que c'est une grave vulnérabilité XSS.

Donc, si vous contrôlez le dongle, vous pouvez envoyer n'importe quoi via le port série, forçant l'application à interpréter cela comme du HTML. C'est le problème, car HTML a la capacité de créer un nouveau code JavaScript dans une application installée sur votre ordinateur, c'est-à-dire qu'il peut le compromettre. La question est de savoir quels logiciels malveillants peuvent être inventés, sachant que seuls 32 caractères sont autorisés à la fois.

22:00 min

Conférence DEFCON 27. Plug anal: véritable test de pénétration. Partie 2


Un peu de publicité :)


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 recommandant à vos amis, le cloud VPS pour les développeurs à partir de 4,99 $ , un analogue unique de serveurs d'entrée de gamme que nous avons inventé pour vous: Toute la vérité sur VPS (KVM) E5-2697 v3 (6 cœurs) 10 Go DDR4 480 Go SSD 1 Gbit / s à partir de 19 $ ou comment diviser le serveur? (les options sont disponibles avec RAID1 et RAID10, jusqu'à 24 cœurs et jusqu'à 40 Go de DDR4).

Dell R730xd 2 fois moins cher au centre de données Equinix Tier IV à Amsterdam? Nous avons seulement 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV à partir de 199 $ aux Pays-Bas!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - à partir de 99 $! En savoir plus sur la création d'un bâtiment d'infrastructure. classe c utilisant des serveurs Dell R730xd E5-2650 v4 coûtant 9 000 euros pour un sou?

All Articles