Hacking Google Chromecast

Než začneme, založil jsem novou skupinu na Slacku věnovanou hackingu. Vítáme všechny od začátečníků po pokročilé, aby se přidali. Budu na ní každý den odpovídat na otázky, dělat CTF a mluvit o skvělých hacích. Pokud vás baví hackování a hledáte podobně smýšlející lidi, připojte se níže:

NOVÝ kanál hackerské skupiny na Slacku

Úvod

Je 2. ledna 2019 a jako vždy jsem kontroloval svůj zpravodajský kanál a všiml si článku o tom, jak nějaký škodlivý hacker napadl Chromcast, což mělo za následek, že jejich televize byla nucena vykreslovat nežádoucí obsah (článek ve zprávách).

To mě zaujalo, a tak jsem se vydal zjistit, jak toho hacker dosáhl.

Technické podrobnosti

Podle internetu je definice chromecastu streamovací mediální adaptér od společnosti Google, který umožňuje uživatelům přehrávat online obsah, jako jsou videa a hudba, na digitální televizi.

V době psaní tohoto příspěvku je to horké téma, takže jsem si řekl, že bych mohl najít nějaké další podrobnosti na sociálních sítích(twitter). Po 5min pátrání jsem objevil následující příspěvek na twitteru, který mě nasměroval správným směrem.

Takže můžu poslat POST požadavek na VulnWebSite.com:8008/apps/Youtube s tělem JSON obsahujícím data {‚v‘:’VIDEO_ID_HERE‘}. Zranitelnost zde tedy v podstatě spočívá v tom, že kdokoli, kdo odešle požadavek post na vaše zařízení chromcast, může přimět televizor k přehrávání videa z youtube. To vše bez ověření.

Dále jsem se pokusil vyhledat dokumentaci API, ale nemohl jsem najít to, co jsem chtěl. Pak jsem narazil na neoficiální dokumentaci API, kterou zveřejnil někdo jiný (dokumentace API). Našel jsem také další dokumentaci uvedenou níže.

  • chromecast python script
  • chromecast urls list

Po přečtení dokumentace jsem měl mnohem lepší představu o tom, jak zařízení funguje, a v podstatě jsem věděl, jak hacker útok provedl.

Útok

Nejprve tedy musíme vytvořit nějaký otisk prstu, abychom identifikovali zařízení chromecast, která mají tento koncový bod API vystavený. To lze snadno provést odesláním požadavku GET na koncový bod /setup/eureka_info, který je zdokumentován zde(dokumentace API device-info). To vrátí objekt json obsahující verzi sestavení, informace o zařízení, veřejný klíč a další údaje. Jedná se o stejný koncový bod api, který shodan.io používá k otiskování zařízení chromcast.

Teď, když můžeme identifikovat zařízení chromcast, stačí poslat payload youtube na koncový bod „/apps/YouTube“, který jsme objevili dříve. Poté bude uživatelův televizor nucen přehrát jakékoliv video, které chcete, aby přehrál. Můžete také dělat další věci, například vypsat okolní přístupové body a zařízení bluetooth nebo cokoli jiného, co je uvedeno v dokumentaci API. To vše lze samozřejmě provést neautentizovaně.

Univerzální Plug and Play

Tento útok je jednoduchý a může ho provést téměř každý, kdo je vyzbrojen těmito znalostmi. Horší je, že Chromecast využívá funkci Universal Plug and Play (UPnP). Pokud nevíte, co UPnP dělá, v podstatě prorazí celou bránu firewall. To znamená, že zařízení chromecast využívá UPnP k otevření portu 8008 na vašem směrovači a předává veškerý provoz do zařízení chromecast. Pokud má váš router povolenou funkci UPnP, což většina routerů ve výchozím nastavení má, zařízení chromecast se samo otevře internetu. To znamená, že kdokoli bude moci ovládat zařízení chromecast a televizor, ke kterému je připojeno, z internetu bez ověření.

Závěr

Pevně věřím, že společnost google je opravdu skvělá. Dělá toho hodně pro naši každodenní ochranu a díky projektu zero chrání i další společnosti a zařízení. Bez ohledu na to, jak jste dobří, něco vám prostě proklouzne mezi prsty. Stává se to pořád. Společnost Google se již zmínila, že v příštích týdnech vydá aktualizaci. Pravděpodobně bude nejlepší úplně zablokovat UPnP, protože existuje mnoho dalších IOT zařízení, která by mohla být zranitelná. Přemýšlejte o tom, že pokud je zařízení Google zranitelné vůči neověřenému zneužití API, kolik dalších zařízení je zranitelných?

Leave a Reply