Hacking Google Chromecast

Mielőtt elkezdenénk, indítottam egy új slack csoportot, amely a hackelésnek van szentelve. Szeretettel várunk mindenkit a kezdőtől a haladóig, hogy csatlakozzon. Én leszek a mindennapi válaszolni kérdésekre, csinál CTF-ek, és beszélgetni cool hacks. Ha szereted a hackelést és hasonló gondolkodású embereket keresel, csatlakozz az alábbiakban:

ÚJ Hacking Group Slack Channel

Bemutatkozás

2019. január 2. van, és ahogy mindig is szoktam, ellenőriztem a hírfolyamomat, és észrevettem egy cikket arról, hogy néhány rosszindulatú hacker megtámadta a Chromcastot, ami azt eredményezte, hogy a TV-jük kénytelen volt nem kívánt tartalmakat megjeleníteni (Hír cikk).

Ez felkeltette az érdeklődésemet, így elindultam felfedezni, hogyan érte el ezt a hacker.

Technikai részletek

Az internet szerint a chromecast definíciója a Google streaming média adaptere, amely lehetővé teszi a felhasználók számára, hogy online tartalmakat, például videókat és zenét játsszanak le egy digitális televízión.

A bejegyzés írásakor ez egy forró téma, ezért gondoltam, hogy a közösségi oldalakon(twitter) találok néhány további részletet. 5 perc ásás után felfedeztem az alábbi twitter bejegyzést, amely a helyes irányba mutatott.

Neat így tudok küldeni egy POST kérést a VulnWebSite.com:8008/apps/Youtube címre egy JSON testtel, amely tartalmazza az adatokat {‘v’:’VIDEO_ID_HERE’}. Tehát alapvetően a sebezhetőség itt az, hogy bárki, aki post kérést küld a chromcast eszközre, ráveheti a tévét, hogy lejátsszon egy youtube videót. Ez az egész nem hitelesített.

Következő Megpróbáltam megkeresni az API dokumentációt, de nem tudtam, amit akartam. Aztán rábukkantam a valaki más által közzétett nem hivatalos API dokumentációra (API documentation). Találtam más, alább felsorolt dokumentációt is.

  • chromecast python script
  • chromecast urls list

A dokumentáció elolvasása után már sokkal jobban tudtam, hogyan működik az eszköz, és nagyjából tudtam, hogyan hajtotta végre a hacker a támadást.

A támadás

Először tehát létre kell hoznunk valamilyen ujjlenyomatot, hogy azonosítsuk azokat a chromecast eszközöket, amelyeknek ez az API végpontja ki van téve. Ezt könnyen megtehetjük egy GET-kérés elküldésével a /setup/eureka_info végpontra, amely itt dokumentálva van(device-info API dokumentáció). Ez egy json objektumot fog visszaadni, amely tartalmazza a build verziót, az eszközinformációt, a nyilvános kulcsot és egyebeket. Ez ugyanaz az api végpont, amit a shodan.io használ a chromcast eszközök ujjlenyomatvételéhez.

Most, hogy azonosítani tudjuk a chromcast eszközöket, már csak a youtube payloadot kell elküldenünk a korábban felfedezett “/apps/YouTube” végpontra. Ezután a felhasználó tévéje kénytelen lesz lejátszani azt a videót, amit szeretnénk, hogy lejátsszon. Más dolgokat is tehetünk, például felsorolhatjuk a környező hozzáférési pontokat és bluetooth eszközöket, vagy bármit, ami az API dokumentációban szerepel. Mindezt természetesen hitelesítés nélkül is megtehetjük.

Universal Plug and Play

Ez a támadás egyszerű, és szinte bárki meg tudja csinálni ezzel a tudással felvértezve. A helyzetet tovább rontja, hogy a chromecast az Universal Plug and Play (UPnP) szolgáltatást használja. Ha nem tudod, mit csinál az UPnP, akkor alapvetően egy egészet üt át a tűzfalon. Ez azt jelenti, hogy a chromecast eszköz az UPnP segítségével megnyitja a 8008-as portot az útválasztón, és továbbítja az összes forgalmat a chromecast eszközre. Ha az útválasztója engedélyezi az UPnP-t, ami alapértelmezés szerint a legtöbb routerben megvan, akkor a chromecast eszköz megnyitja magát az internet felé. Ez azt jelenti, hogy bárki képes lesz arra, hogy a chromecast eszközt és a hozzá csatlakoztatott TV-t az internetről, hitelesítés nélkül vezérelje.

Következtetés

Mélyen hiszek abban, hogy a google valóban egy nagyszerű vállalat. Sokat tesznek azért, hogy mindennap megvédjenek minket, és a project zero projektnek köszönhetően más cégeket és eszközöket is védenek. Nem számít, hogy mennyire jó vagy, néhány dolog csak kicsúszik a résen. Ez mindig megtörténik. A Google már említette, hogy az elkövetkező hetekben frissítést fognak tolni. Valószínűleg a legjobb, ha teljesen blokkolja az UPnP-t, mivel sok más IOT-eszköz is sebezhető. Gondolj bele, ha egy Google eszköz sebezhető egy nem hitelesített API exploit hány más eszköz van?

Leave a Reply