﻿﻿{"id":1469,"date":"2025-10-28T13:27:46","date_gmt":"2025-10-28T12:27:46","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/rooter-une-camera-de-securite-avec-un-mp3\/"},"modified":"2025-10-28T13:27:46","modified_gmt":"2025-10-28T12:27:46","slug":"rooter-une-camera-de-securite-avec-un-mp3","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/rooter-une-camera-de-securite-avec-un-mp3\/","title":{"rendered":"Rooter une cam\u00e9ra de s\u00e9curit\u00e9 avec un MP3"},"content":{"rendered":"<p>L\u2019histoire du jour est sign\u00e9e Luke M, un hacker qui a d\u00e9couvert comment rooter une cam\u00e9ra avec\u2026 du son !<\/p>\n<p>L\u2019appareil en question est une cam\u00e9ra chinoise de la marque Yi qui utilise une fonctionnalit\u00e9 appel\u00e9e \u201cSonic Pairing\u201d pour faciliter la configuration WiFi. Comme \u00e7a, au lieu de gal\u00e9rer \u00e0 taper votre mot de passe WiFi sur une interface minuscule avec vos gros doigts boudin\u00e9s, vous jouez simplement un petit son depuis votre t\u00e9l\u00e9phone et c\u2019est ce son qui contient votre cl\u00e9 WiFi encod\u00e9s en modulation de fr\u00e9quence. La cam\u00e9ra \u00e9coute, d\u00e9code, et se connecte.<\/p>\n<p>Magique, non ?<\/p>\n<p>Sauf que cette fonctionnalit\u00e9 marqu\u00e9e en \u201cbeta\u201d dans l\u2019app Yi IoT contient deux bugs magnifiques : une stack overflow local et un global overflow. En gros, en fabriquant un fichier audio malveillant avec les bons patterns, Luke a pu injecter du code arbitraire dans la cam\u00e9ra, ce qui lui permet d\u2019obtenir un shell root qui se lance via la commande <code>telnetd<\/code> avec les identifiants par d\u00e9faut. Tout \u00e7a, sans acc\u00e8s physique\u2026 juste la lecture d\u2019un wav ou d\u2019un MP3.<\/p>\n<p>Pour arriver \u00e0 ses fins, Luke a utilis\u00e9<br \/>\n<a href=\"https:\/\/frida.re\/\">Frida<\/a><br \/>\n, un framework de hooking que j\u2019adore, capable d\u2019intercepter les fonctions natives de l\u2019app. Cela lui a permis de remplacer les donn\u00e9es l\u00e9gitimes attendues par l\u2019app par son propre payload.<\/p>\n<p>Le premier bug (stack overflow) n\u2019\u00e9tant pas suffisant seul, Luke a d\u00fb utiliser un autre bug (<br \/>\n<a href=\"https:\/\/korben.info\/doom-camera-iot-securite-vulnerabilites.html\">un out-of-bounds read via DOOM<\/a><br \/>\n) pour leaker un pointeur et contourner l\u2019<br \/>\n<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Address_space_layout_randomization\">ASLR<\/a><br \/>\n. Mais le second bug (global overflow) est bien plus int\u00e9ressant puisqu\u2019il lui permet directement de faire une injection de commande via <code>system()<\/code> lors du pairing, sans avoir besoin d\u2019autre chose.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/camera-hack-sonic-pairing-root-shell\/camera-hack-sonic-pairing-root-shell-2.png\" alt=\"\" loading=\"lazy\"><\/p>\n<p><em>Voici la waveform utilis\u00e9e par le second exploit<\/em><\/p>\n<p>Et comme la cha\u00eene que vous pouvez envoyer via le son peut faire jusqu\u2019\u00e0 128 bytes c\u2019est largement suffisant pour un <code>telnetd<\/code> ou n\u2019importe quelle commande shell. Notez que pour que l\u2019exploit marche, le <code>bind_key<\/code> doit commencer par \u2018CN\u2019, ce qui force un path exploitable et, en bonus fait causer la cam\u00e9ra en chinois ^^.<\/p>\n<p>Apr\u00e8s faut savoir que ce hack amusant ne fonctionne que si la cam\u00e9ra n\u2019est pas encore connect\u00e9e au cloud. Donc c\u2019est pas tr\u00e8s utile pour attaquer des cam\u00e9ras d\u00e9j\u00e0 d\u00e9ploy\u00e9es mais \u00e7a illustre bien le probl\u00e8me de tout cet IoT pas cher avec des tas de features \u201cpratiques\u201d comme ce \u201cSonic Pairing\u201d qui finissent par \u00eatre catastrophique dans la pratique.<\/p>\n<p>Voil\u00e0\u2026 si vous voulez les d\u00e9tails techniques complets avec les waveforms et le code d\u2019exploit, foncez lire \u00e7a sur<br \/>\n<a href=\"https:\/\/pagedout.institute\/\">Paged Out! #7<\/a><br \/>\n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>L\u2019histoire du jour est sign\u00e9e Luke M, un hacker qui a d\u00e9couvert comment rooter une cam\u00e9ra avec\u2026 du son ! L\u2019appareil en question est une cam\u00e9ra chinoise de la marque Yi qui utilise une fonctionnalit\u00e9 appel\u00e9e \u201cSonic Pairing\u201d pour faciliter la configuration WiFi. Comme \u00e7a, au lieu de gal\u00e9rer \u00e0 taper votre mot de passe WiFi sur une interface minuscule avec vos gros doigts boudin\u00e9s, vous jouez simplement un petit son depuis votre t\u00e9l\u00e9phone et c\u2019est ce son qui contient votre cl\u00e9 WiFi encod\u00e9s en modulation de fr\u00e9quence. La cam\u00e9ra \u00e9coute, d\u00e9code, et se connecte. Magique, non ? Sauf que cette fonctionnalit\u00e9 marqu\u00e9e en \u201cbeta\u201d dans l\u2019app Yi IoT contient deux bugs magnifiques : une stack overflow local et un global overflow. En gros, en fabriquant un fichier audio malveillant avec les bons patterns, Luke a pu injecter du code arbitraire dans la cam\u00e9ra, ce qui lui permet d\u2019obtenir un shell root qui se lance via la commande telnetd avec les identifiants par d\u00e9faut. Tout \u00e7a, sans acc\u00e8s physique\u2026 juste la lecture d\u2019un wav ou d\u2019un MP3. Pour arriver \u00e0 ses fins, Luke a utilis\u00e9 Frida , un framework de hooking que j\u2019adore, capable d\u2019intercepter les fonctions natives de l\u2019app. Cela lui a permis de remplacer les donn\u00e9es l\u00e9gitimes attendues par l\u2019app par son propre payload. Le premier bug (stack overflow) n\u2019\u00e9tant pas suffisant seul, Luke a d\u00fb utiliser un autre bug ( un out-of-bounds read via DOOM ) pour leaker un pointeur et contourner l\u2019 ASLR . Mais le second bug (global overflow) est bien plus int\u00e9ressant puisqu\u2019il lui permet directement de faire une injection de commande via system() lors du pairing, sans avoir besoin d\u2019autre chose. Voici la waveform utilis\u00e9e par le second exploit Et comme la cha\u00eene que vous pouvez envoyer via le son peut faire jusqu\u2019\u00e0 128 bytes c\u2019est largement suffisant pour un telnetd ou n\u2019importe quelle commande shell. Notez que pour que l\u2019exploit marche, le bind_key doit commencer par \u2018CN\u2019, ce qui force un path exploitable et, en bonus fait causer la cam\u00e9ra en chinois ^^. Apr\u00e8s faut savoir que ce hack amusant ne fonctionne que si la cam\u00e9ra n\u2019est pas encore connect\u00e9e au cloud. Donc c\u2019est pas tr\u00e8s utile pour attaquer des cam\u00e9ras d\u00e9j\u00e0 d\u00e9ploy\u00e9es mais \u00e7a illustre bien le probl\u00e8me de tout cet IoT pas cher avec des tas de features \u201cpratiques\u201d comme ce \u201cSonic Pairing\u201d qui finissent par \u00eatre catastrophique dans la pratique. Voil\u00e0\u2026 si vous voulez les d\u00e9tails techniques complets avec les waveforms et le code d\u2019exploit, foncez lire \u00e7a sur Paged Out! #7 .<\/p>\n","protected":false},"author":1,"featured_media":1470,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-1469","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1469","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=1469"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/1469\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/1470"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=1469"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}