Hacking Google Chromecast

Antes de começarmos, eu comecei um novo grupo de slacking dedicado ao hacking. Damos as boas vindas a todos, desde principiantes a avançados, para se juntarem a nós. Eu estarei respondendo perguntas diariamente, fazendo CTFs, e falando sobre hackers legais. Se você gosta de hacking e está procurando por pessoas com a mesma mente, entre abaixo:

NOVO Hacking Group Slack Channel

Introduction

Its 2 de Janeiro de 2019 e como eu sempre faço, eu estava checando meu feed de notícias e notei um artigo sobre como alguns hackers maliciosos atacaram o chromcast, o que resultou em sua TV sendo forçados a renderizar conteúdo indesejado (News Article).

>

>

Este pico de interesse foi o que me despertou o interesse, por isso, comecei a descobrir como o hacker conseguiu isso.

Detalhes técnicos

De acordo com a internet a definição de chromecast é um adaptador de mídia streaming do Google que permite aos usuários reproduzir conteúdo online como vídeos e músicas em uma televisão digital.

Na hora de escrever este post este é um tópico quente, então achei que poderia encontrar mais alguns detalhes em sites de mídia social (twitter). Após 5min de escavação descobri o seguinte post no twitter que me apontou na direção certa.

Neat para que eu possa enviar um pedido de POST para VulnWebSite.com:8008/apps/Youtube com um corpo JSON contendo os dados {‘v’:’VIDEO_ID_HERE’}. Então basicamente a vulnerabilidade aqui é que qualquer um que envie um pedido de postagem para o seu dispositivo de chromcast pode fazer sua TV reproduzir um vídeo do youtube. Isto é tudo não autenticado.

Próximo eu tentei procurar pela documentação da API mas não consegui o que eu queria. Encontrei então a documentação não oficial da API postada por outra pessoa (documentação da API). Eu também encontrei outra documentação listada abaixo.

  • chromecast python script
  • chromecast urls list

Após ler a documentação eu tinha uma idéia muito melhor de como o dispositivo funcionava e eu praticamente sabia como o hacker tinha feito o ataque.

O Ataque

Então primeiro precisamos criar algum tipo de impressão digital para identificar os dispositivos cromecast que têm este endpoint da API exposto. Isto pode ser feito facilmente enviando um pedido de GET para o endpoint /setup/eureka_info que está documentado aqui(device-info API documentation). Isto irá retornar um objeto json contendo a versão de construção, informações do dispositivo, chave pública, e mais. Este é o mesmo endpoint api que o shodan.io usa para imprimir dispositivos chromcast.

Agora que podemos identificar dispositivos chromcast tudo o que temos de fazer é enviar a carga útil do youtube para o endpoint “/apps/YouTube” que descobrimos anteriormente. Depois disso a TV dos usuários será forçada a reproduzir o vídeo que você quiser que seja reproduzido. Você também pode fazer outras coisas como listar os pontos de acesso e dispositivos bluetooth ao redor ou qualquer coisa listada na documentação da API. Isto tudo pode ser feito sem autenticação, claro.

Universal Plug and Play

Este ataque é simples e quase qualquer um pode fazer isto armado com este conhecimento. O que piora as coisas é que o chromecast faz uso do Plug and Play (UPnP) Universal Plug and Play. Se você não sabe o que o UPnP faz, ele basicamente perfura uma direita inteira através do seu firewall. Isto significa que o dispositivo chromecast faz uso do UPnP para abrir a porta 8008 em seu roteador e encaminha todo o tráfego para o dispositivo chromecast. Se o seu router tem o UPnP activado, tudo isto faz por defeito, o seu dispositivo de chromecast irá abrir-se para a internet. Isto significa que qualquer pessoa será capaz de controlar o seu dispositivo de chromecast e a TV à qual ele está conectado a partir da internet não autenticada.

Conclusion

Eu acredito firmemente que o google é realmente uma grande empresa. Eles fazem muito para nos proteger todos os dias e também protegem outras empresas e dispositivos graças ao projeto zero. Não importa o quão bom você é, algo simplesmente escorrega pelas rachaduras. Isso acontece o tempo todo. O Google já mencionou que eles estarão empurrando uma atualização nas próximas semanas. Provavelmente é melhor bloquear completamente o UPnP, pois há muitos outros dispositivos IOT que podem ser vulneráveis. Pense sobre isso se um dispositivo do Google é vulnerável a uma exploração não autenticada da API de quantos outros dispositivos são?

Leave a Reply