+32 479670903

ChromeCasts hacken voor de fun

doorPablo Brusseel|januari 11, 2019|0reacties
ChromeCasts hacken voor de fun

Een tijdje geleden hebben twee hackers genaamd HackerGiraffe en j3ws3r een heleboel Google Chromecasts “gehacked” om PewDiePie’s (Felix Kjellberg) YouTube kanaal te promoten.

De “hack” was eigenlijk slechts een misbruikte functionaliteit van Google ChromeCasts die met port forwarding open stonden naar het internet. Iedereen die zo’n ChromeCast te pakken krijgt kan via poort 8008 allerhande HTTP-requests versturen om de ChromeCast te besturen.

Terwijl dit alles gedocumenteerde functionaliteit is kan men zich wel afvragen waarom Google geen enkele vorm van authenticatie heeft geïmplementeerd in hun casting-protocol.

Wat kan er fout gaan?

Hier zijn enkele beschikbare functies in de ChromeCasts die we kunnen misbruiken met het gebruik van een cURL commando:

  • Een YouTube video naar keuze afspelen
  • De naam van het toestel veranderen
  • WiFi access points scannen
  • De ChromeCast opnieuw opstarten
  • Het toestel terug naar febrieksinstellingen zetten
  • Informatie krijgen over het toestel (Taal, verbonden SSID, …)

De Commandos

Hier zijn enkele commandos die je kan gebruiken om de ChromeCast te besturen. Laten we beginnen met het scannen naar WiFi access points in de buurt van de ChromeCast. We “pipen” de output naar mjson.tool om de output wat mooier voor te stellen. Je kunt dit gerust uit het commando halen.

curl http://{CHROMECAST_IP}:8008/setup/scan_results | python -mjson.tool

Om de naam van de ChromeCast te veranderen kun je dit doen:

curl -X POST -H "Content-Type: application/json" -d '{"name": "{SOME_NAME}"}' http://{CHROMECAST_IP}:8008/setup/set_eureka_info -v

De ChromeCast Exploitation Kit

Om het probleem wat meer aandacht te geven (en ook gewoon omdat ik het leuk vond), heb ik een kleine tool geschreven om dit hele proces te vergemakkelijken. Op die manier hoeven we al die URL’s en JSON niet meer te onthouden.

De ChromeCast Exploitation Kit of in het kort CCEK, is een simpel Python script dat gebruikt kan worden om met de ChromeCasts te praten door middel van de command line. Geen authenticatie nodig. Zo kun je bijvoorbeeld zeggen:

CCEK.py -t {CHROMECAST_IP} -a play -v dQw4w9WgXcQ

Het bovenstaande commando speelt Rick Astley’s Never Gonna Give You Up af op de gekozen ChromeCast, een echte klassieker!

Hoeveel mensen zijn getroffen?

Een snelle zoekopdracht op Shodan.io toont ons dat vele ChromeCasts al getroffen zijn door hackers. Hier zie je een ChromeCast in Duffel, België wiens naam veranderd werd naar HACKED_BY_@HACKERGIROX.

Hoe kun je jezelf beschermen?

Ten eerste zie ik geen enkele reden om een ChromeCast open te zetten naar het internet, die toegeng sluit je dus best ook af. Log in op je router en zet port forwarding af naar de ChromeCast. Als je voor de een of andere reden dan toch je ChromeCast wil openen naar het internet, stel dan een IP WhiteList in op je Firewall.

Ten tweede denk ik dat het een goed idee zou zijn moest Google een vorm van authenticatie instellen op de nieuwe versies van de ChromeCast firmware. Zo kan niemand acties uitvoeren op de ChromeCast zonder toestemming, ook al zijn deze personen verbonden met het lokale netwerk.