Hackning av Google Chromecast

Innan vi börjar har jag startat en ny slackgrupp för hackning. Vi välkomnar alla från nybörjare till avancerade att gå med. Jag kommer att vara på varje dag för att svara på frågor, göra CTFs och prata om coola hacks. Om du gillar att hacka och letar efter likasinnade människor gå med nedan:

NEW Hacking Group Slack Channel

Introduktion

Det är den 2 januari 2019 och som jag alltid gör kollade jag mitt nyhetsflöde och märkte en artikel om hur någon illasinnad hacker attackerade chromcast vilket resulterade i att deras TV tvingades att återge oönskat innehåll (nyhetsartikel).

Detta väckte mitt intresse så jag gav mig ut för att ta reda på hur hackaren åstadkom detta.

Tekniska detaljer

Enligt internet är definitionen av chromecast en adapter för strömmande media från Google som gör det möjligt för användare att spela upp online-innehåll som videoklipp och musik på en digital-tv.

I samband med att jag skriver det här inlägget är detta ett hett ämne, så jag tänkte att jag kunde hitta lite mer information på sociala medier (twitter). Efter 5 minuters grävande hittade jag följande twitterinlägg som pekade mig i rätt riktning.

Nu kan jag skicka en POST-förfrågan till VulnWebSite.com:8008/apps/Youtube med en JSON-kropp som innehåller datan {’v’:’VIDEO_ID_HERE’}. Så i princip är sårbarheten här att vem som helst som skickar en postförfrågan till din chromcast-enhet kan få din TV att spela upp en youtube-video. Allt detta är oautentiserat.

Nästan försökte jag leta efter API-dokumentationen men kunde inte vad jag ville. Jag stötte då på den inofficiella API-dokumentationen som lagts upp av någon annan (API-dokumentation). Jag hittade också annan dokumentation som anges nedan.

  • chromecast python script
  • chromecast urls list

Efter att ha läst dokumentationen hade jag en mycket bättre uppfattning om hur enheten fungerade och jag visste i stort sett hur hackaren hade genomfört attacken.

Angreppet

Så först måste vi skapa något slags fingeravtryck för att identifiera chromecast-enheter som har denna API-slutpunkt exponerad. Detta kan enkelt göras genom att skicka en GET-förfrågan till slutpunkten /setup/eureka_info som är dokumenterad här(device-info API documentation). Detta returnerar ett json-objekt som innehåller byggversionen, enhetsinformation, offentlig nyckel med mera. Detta är samma api-slutpunkt som shodan.io använder för att ta fingeravtryck av chromcast-enheter.

När vi nu kan identifiera chromcast-enheter behöver vi bara skicka youtube-nyttolasten till slutpunkten ”/apps/YouTube” som vi upptäckte tidigare. Efter det kommer användarens TV att tvingas spela upp vilken video som helst som du vill att den ska spela upp. Du kan också göra andra saker, t.ex. lista de omgivande åtkomstpunkterna och bluetooth-enheterna eller något annat som anges i API-dokumentationen. Allt detta kan naturligtvis göras oautentiserat.

Universal Plug and Play

Den här attacken är enkel och nästan vem som helst kan genomföra den med denna kunskap. Vad som gör saken värre är att chromecast använder sig av Universal Plug and Play (UPnP). Om du inte vet vad UPnP gör så slår det i princip en hel rakt igenom din brandvägg. Detta innebär att chromecast-enheten använder UPnP för att öppna port 8008 på din router och vidarebefordra all trafik till chromecast-enheten. Om din router har UPnP aktiverat, vilket de flesta gör som standard, kommer din chromecast-enhet att öppna sig själv för internet. Detta innebär att vem som helst kommer att kunna styra din chromecast-enhet och TV:n som den är ansluten till från internet utan autentisering.

Slutsats

Jag är övertygad om att google verkligen är ett fantastiskt företag. De gör mycket för att skydda oss varje dag och de skyddar även andra företag och enheter tack vare project zero. Det spelar ingen roll hur duktig du är, något går bara igenom. Det händer hela tiden. Google har redan nämnt att de kommer att skicka ut en uppdatering inom de närmaste veckorna. Det är förmodligen bäst att blockera UPnP helt och hållet eftersom det finns många andra IOT-enheter som kan vara sårbara. Tänk på det om en Google-enhet är sårbar för en oautentiserad API-exploit hur många andra enheter är det?

Leave a Reply