Hacking Google Chromecast

Hvor vi går i gang, har jeg startet en ny slack-gruppe dedikeret til hacking. Vi byder alle fra nybegyndere til avancerede velkommen til at deltage. Jeg vil være på hver dag svare på spørgsmål, lave CTF’er og snakke om fede hacks. Hvis du nyder at hacke og leder efter ligesindede, så tilmeld dig nedenfor:

NEW Hacking Group Slack Channel

Introduktion

Det er 2. januar 2019, og som jeg altid gør, tjekkede jeg mit nyhedsfeed og bemærkede en artikel om, hvordan nogle ondsindede hackere angreb chromcast, hvilket resulterede i, at deres tv blev tvunget til at gengive uønsket indhold (Nyhedsartikel).

Dette vakte min interesse, så jeg satte mig for at opdage, hvordan hackeren opnåede dette.

Tekniske detaljer

I henhold til internettet er definitionen af chromecast en streaming media adapter fra Google, der gør det muligt for brugere at afspille online indhold som videoer og musik på et digitalt fjernsyn.

På det tidspunkt, hvor jeg skriver dette indlæg, er dette et varmt emne, så jeg tænkte, at jeg kunne finde nogle flere detaljer på sociale medier (twitter). Efter 5min gravearbejde fandt jeg følgende twitter-indlæg, som pegede mig i den rigtige retning.

Nu kan jeg sende en POST-anmodning til VulnWebSite.com:8008/apps/Youtube med en JSON-korpus, der indeholder dataene {‘v’:’VIDEO_ID_HERE’}. Så grundlæggende er sårbarheden her, at enhver, der sender en postanmodning til din chromcast-enhed, kan få dit tv til at afspille en youtube-video. Dette er alt sammen uautentificeret.

Næste jeg forsøgte at kigge efter API-dokumentationen, men kunne ikke hvad jeg ønskede. Jeg stødte derefter på den uofficielle API-dokumentation, der er offentliggjort af en anden person (API-dokumentation). Jeg fandt også anden dokumentation, der er anført nedenfor.

  • chromecast python script
  • chromecast urls list

Efter at have læst dokumentationen havde jeg en meget bedre idé om, hvordan enheden fungerede, og jeg vidste stort set, hvordan hackeren havde gennemført angrebet.

Angrebet

Så først skal vi skabe en slags fingeraftryk for at identificere chromecast-enheder, der har dette API-endpoint eksponeret. Dette kan nemt gøres ved at sende en GET-forespørgsel til /setup/eureka_info endpointet, som er dokumenteret her(device-info API dokumentation). Dette vil returnere et json-objekt, der indeholder build-versionen, enhedsoplysninger, offentlig nøgle og meget mere. Dette er det samme api endpoint, som shodan.io bruger til at tage fingeraftryk af chromcast-enheder.

Nu, hvor vi kan identificere chromcast-enheder, er alt, hvad vi skal gøre, at sende youtube payload til “/apps/YouTube”-endpointet, som vi opdagede tidligere. Herefter vil brugernes tv blive tvunget til at afspille den video, som du ønsker, at det skal afspille. Du kan også gøre andre ting som f.eks. liste over de omkringliggende adgangspunkter og bluetooth-enheder eller andet, der er anført i API-dokumentationen. Alt dette kan naturligvis gøres uautentificeret.

Universal Plug and Play

Dette angreb er simpelt, og næsten alle kan udføre det bevæbnet med denne viden. Hvad der gør tingene værre er, at chromecast gør brug af Universal Plug and Play (UPnP). Hvis du ikke ved, hvad UPnP gør, slår det dybest set et hul lige igennem din firewall. Det betyder, at chromecast-enheden gør brug af UPnP til at åbne port 8008 på din router og videresender al trafik til chromecast-enheden. Hvis din router har UPnP aktiveret, hvilket de fleste routere gør som standard, vil din chromecast-enhed åbne sig selv for internettet. Det betyder, at alle vil kunne styre din chromecast-enhed og det tv, den er tilsluttet, fra internettet uden at være autentificeret.

Konklusion

Jeg tror fuldt og fast på, at google virkelig er en stor virksomhed. De gør en masse for at beskytte os hver dag, og de beskytter også andre virksomheder og enheder takket være project zero. Uanset hvor god man er, slipper nogle ting bare igennem. Det sker hele tiden. Google har allerede nævnt, at de vil skubbe en opdatering inden for de kommende uger. Det er nok bedst at blokere UPnP fuldstændigt, da der er mange andre IOT-enheder, som kan være sårbare. Tænk over det, hvis en Google-enhed er sårbar over for en uautentificeret API-udnyttelse, hvor mange andre enheder er det så?

Leave a Reply