Hacking Google Chromecast

Prima di iniziare ho iniziato un nuovo gruppo slack dedicato all’hacking. Diamo il benvenuto a tutti, dai principianti agli avanzati. Sarò presente ogni giorno per rispondere a domande, fare CTF e parlare di hack interessanti. Se ti piace l’hacking e stai cercando persone che la pensano come te, unisciti qui sotto:

NEW Hacking Group Slack Channel

Introduzione

Its 2 gennaio 2019 e come faccio sempre stavo controllando il mio feed di notizie e ho notato un articolo su come alcuni hacker malintenzionati attaccano chromcast che ha portato la loro TV ad essere costretta a rendere contenuti indesiderati (articolo di notizie).

Questo ha suscitato il mio interesse, così ho iniziato a scoprire come l’hacker ha realizzato questo.

Dettagli tecnici

Secondo internet la definizione di chromecast è un adattatore di streaming media di Google che permette agli utenti di riprodurre contenuti online come video e musica su una televisione digitale.

Al momento di scrivere questo post questo è un argomento caldo così ho pensato che avrei potuto trovare qualche dettaglio in più sui siti di social media (twitter). Dopo 5 minuti di scavi ho scoperto il seguente post su twitter che mi ha indicato la giusta direzione.

Così posso inviare una richiesta POST a VulnWebSite.com:8008/apps/Youtube con un corpo JSON contenente i dati {‘v’:’VIDEO_ID_HERE’}. Quindi fondamentalmente la vulnerabilità qui è che chiunque invii una richiesta POST al vostro dispositivo chromcast può far riprodurre alla vostra TV un video di youtube. Questo è tutto non autenticato.

Poi ho tentato di cercare la documentazione API ma non potevo quello che volevo. Poi mi sono imbattuto nella documentazione API non ufficiale postata da qualcun altro (documentazione API). Ho trovato anche altra documentazione elencata di seguito.

  • chromecast python script
  • chromecast urls list

Dopo aver letto la documentazione avevo un’idea molto migliore di come funzionava il dispositivo e sapevo praticamente come l’hacker aveva portato a termine l’attacco.

L’attacco

Per prima cosa dobbiamo creare una sorta di impronta digitale per identificare i dispositivi chromecast che hanno questo endpoint API esposto. Questo può essere fatto facilmente inviando una richiesta GET all’endpoint /setup/eureka_info che è documentato qui (documentazione API device-info). Questo restituirà un oggetto json contenente la versione della build, le informazioni sul dispositivo, la chiave pubblica e altro. Questo è lo stesso endpoint api che shodan.io usa per identificare i dispositivi chromcast.

Ora che possiamo identificare i dispositivi chromcast tutto quello che dobbiamo fare è inviare il payload di youtube all’endpoint “/apps/YouTube” che abbiamo scoperto prima. Dopo di che la TV degli utenti sarà costretta a riprodurre qualsiasi video si voglia riprodurre. Potete anche fare altre cose come elencare gli access point circostanti e i dispositivi bluetooth o qualsiasi altra cosa elencata nella documentazione API. Tutto questo può essere fatto senza autenticazione, naturalmente.

Universal Plug and Play

Questo attacco è semplice e quasi chiunque può farlo armato di queste conoscenze. Ciò che peggiora le cose è che chromecast fa uso di Universal Plug and Play (UPnP). Se non sapete cosa fa l’UPnP, fondamentalmente perfora il vostro firewall. Questo significa che il dispositivo chromecast fa uso di UPnP per aprire la porta 8008 sul vostro router e inoltra tutto il traffico al dispositivo chromecast. Se il vostro router ha l’UPnP abilitato, cosa che fanno quasi tutti per default, il vostro dispositivo chromecast si aprirà a internet. Questo significa che chiunque sarà in grado di controllare il vostro dispositivo chromecast e la TV a cui è collegato da internet senza autenticazione.

Conclusione

Credo fortemente che Google sia davvero una grande azienda. Fanno molto per proteggerci ogni giorno e proteggono anche altre aziende e dispositivi grazie al progetto zero. Non importa quanto tu sia bravo, qualcosa sfugge. Succede di continuo. Google ha già accennato al fatto che spingerà un aggiornamento nelle prossime settimane. Probabilmente è meglio bloccare completamente UPnP perché ci sono molti altri dispositivi IOT che potrebbero essere vulnerabili. Pensateci, se un dispositivo di Google è vulnerabile a un exploit API non autenticato, quanti altri dispositivi lo sono?

Leave a Reply