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).
![](https://miro.medium.com/max/60/0*vM2nP4pv9qa1huaQ.png?q=20)
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.
![](https://miro.medium.com/max/60/1*uic-CSn4maqdKlG39ZivKQ.png?q=20)
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