CiberLab
Logotipo Ciência Embarcada Ciência Embarcada
Relatório técnico de análise de artefato

Android.Vo1d

Backdoor em TV boxes Android sem certificação e a botnet de 1,6 milhão de aparelhos que vive de proxy e de fraude publicitária

O Vo1d vive na partição de sistema de TV boxes baratas baseadas em AOSP, fora do ecossistema certificado do Google, e transforma o aparelho em proxy residencial e em mão de obra de fraude publicitária. Chegou a 1,59 milhão de aparelhos em 226 países, com cerca de um quarto deles no Brasil. Inventarie as TV boxes da sua rede, isole-as, bloqueie os indicadores da seção 11 e troque o aparelho, porque não há limpeza confiável sem acesso root.

Objeto analisado Android.Vo1d
Severidade avaliada Alta
Classificação TLP:CLEAR
Base de evidência OSINT verificado
Data de emissão 15 de outubro de 2026
Versão 1.0

00Sumário

  1. 01Sumário executivo
  2. 02Identificação do objeto analisado
  3. 03Contexto técnico: TV box, AOSP e certificação
  4. 04Primeira geração: o backdoor de 2024
  5. 05Segunda geração: a cadeia de 2025
  6. 06Comando e controle e criptografia
  7. 07Monetização: proxy e fraude publicitária
  8. 08Alcance e vitimologia
  9. 09Detecção
  10. 10Mitigação e resposta
  11. 11Indicadores de comprometimento
  12. 12Limitações da análise
  13. 13Referências
Achado central

O Vo1d não explora o usuário: ele já vem na caixa, ou chega por firmware não oficial, e se instala onde nenhum antivírus de aplicativo alcança, a partição de sistema [1]. O aparelho continua tocando vídeo normalmente, enquanto vende a conexão de internet do dono como proxy e executa cliques de fraude publicitária [2]. A vítima não perde dado nenhum, e por isso nunca percebe: quem sofre é quem recebe o tráfego fraudulento e quem fica com o IP do aparelho nos registros de ataque.

01Sumário executivo

Este relatório perfila o Android.Vo1d, backdoor para aparelhos Android sem certificação do Google, em duas gerações. A primeira foi descrita pela Doctor Web em 12 de setembro de 2024, com cerca de 1,3 milhão de aparelhos em 197 países [1]. A segunda foi descrita pela XLab, da Qi An Xin, em 27 de fevereiro de 2025, com pico de 1.590.299 aparelhos ativos em 19 de janeiro de 2025 e centenas de sementes de um algoritmo de geração de domínios de comando [2]. A XLab trata a segunda como uma nova variante da mesma botnet, não como uma ameaça diferente [2].

1,3 mi aparelhos infectados na primeira geração, em 197 países [1]
1,59 mi pico de bots ativos por dia na segunda geração, em 19/01/2025 [2]
~25% dos bots estão no Brasil, o maior país da botnet [2]
256 sementes do algoritmo de geração de domínios, em 8 grupos [2]

O aparelho infectado é uma TV box barata, montada sobre o AOSP (Android Open Source Project), sem a certificação Play Protect. O Google afirma que o Vo1d não roda em aparelhos certificados vendidos como Android TV [3] [4]. O vetor de infecção da primeira geração continua desconhecido: a Doctor Web aponta como hipóteses um malware intermediário que obtém root por vulnerabilidades do sistema ou firmware não oficial com root embutido [1].

A segunda geração troca o simples backdoor por uma plataforma. Baixa módulos criptografados, esconde o servidor de comando atrás de uma lista de domínios gerados por algoritmo e protege as ordens com uma chave RSA de 2.048 bits, de modo que um pesquisador que registre um dos domínios não consegue emitir comando [2]. Os módulos baixados transformam o aparelho em proxy e em executor de fraude publicitária [2].

Avaliamos a severidade como alta. O dano individual a cada dono de TV box é baixo, mas o conjunto é grande, está concentrado no Brasil, esconde a origem de ataques de terceiros e não tem correção possível de dentro do aparelho. A seção 09 trata de caça na rede e no próprio aparelho, e a seção 10 de contenção e substituição.

02Identificação do objeto analisado

Natureza da evidência

Não houve submissão a sandbox nem análise de amostra por esta equipe. Todo o conteúdo técnico é inteligência de fonte aberta, extraída das referências [1] a [5] e conferida contra o texto original de cada uma. Não trate os indicadores abaixo como prova pericial de um incidente local. Eles servem para orientar caça e resposta, e cada achado precisa ser confirmado no seu próprio ambiente.

Tabela 1. Ficha da família
CampoValor
NomeAndroid.Vo1d, grafado Vo1d (com o algarismo 1) pela XLab [1] [2]
ClasseBackdoor e botnet de proxy e de fraude publicitária
PlataformaAndroid sem certificação, em TV boxes baseadas em AOSP [1] [3]
Primeira geraçãoDoctor Web, 12 de setembro de 2024, com relatos de usuários desde agosto de 2024 [1]
Segunda geraçãoXLab, 27 de fevereiro de 2025, com rastreio desde 28 de novembro de 2024 [2]
Vetor de infecçãoDesconhecido [1]. Firmware com root embutido ou malware intermediário são hipóteses
PersistênciaScripts de inicialização e binário substituído na partição de sistema, mais um aplicativo disfarçado de serviço do Google [1] [2]
Canal de C2Domínios gerados por algoritmo, criptografia RSA e XXTEA modificado [2]
Atribuiçãon/d

A Doctor Web nomeia cada componente com um sufixo numérico. Isso importa porque o nome genérico Android.Vo1d não casa com a consulta feita pelo sufixo [1] [5]:

Tabela 2. Nomes de detecção da Doctor Web
NomeComponenteFunção
Android.Vo1d.1/system/xbin/vo1d, ou daemonsu modificadoInicia e controla o Vo1d.3, baixa e executa arquivos por ordem do C2 [1].
Android.Vo1d.3/system/xbin/wdInstala e executa o Vo1d.5, monitora diretórios e instala os APKs que encontrar [1].
Android.Vo1d.5/data/google/daemonDaemon cifrado embutido no corpo do wd [1] [5].
Android.Vo1d.1.origincom.google.android.servicesVariante empacotada como aplicativo, listada no repositório de IOCs [5].
Sobre o nome "Vo1d.2"

A análise da Doctor Web cita as detecções Vo1d.1, Vo1d.3 e Vo1d.5, e não menciona Vo1d.2 nem Vo1d.4 [1]. Não encontramos publicação que descreva um componente com o nome Android.Vo1d.2. Por isso este relatório não atribui comportamento a esse nome. Quando o termo "segunda geração" aparece, ele se refere à variante de 2025 descrita pela XLab [2], que é identificada pela data e pelos indicadores, não por sufixo de detecção.

03Contexto técnico: TV box, AOSP e certificação

Três conceitos explicam por que o Vo1d existe em escala e por que ele é difícil de remover.

AOSP e Android TV certificado
O AOSP é o código aberto do Android. Qualquer fabricante pode compilá-lo, mas só a versão certificada pelo Google leva o Play Protect, as atualizações de segurança do Google e o rótulo Android TV. O Google afirma que as TV boxes infectadas rodam builds modificados do AOSP, apresentados como Android TV, e que nenhum aparelho Android TV certificado foi afetado [3] [4].
Partição de sistema e root
O Vo1d grava arquivos em /system, o que exige acesso de escrita ao sistema, ou seja, root [1]. Aplicativos comuns não conseguem isso. Quando o root é entregue de fábrica ou por firmware não oficial, o malware é gravado onde a limpeza do usuário não chega.
Algoritmo de geração de domínios (DGA)
Um DGA calcula, a partir de uma semente, uma lista de nomes de domínio que o malware tenta contatar. O operador registra só alguns deles, quando precisa. Bloquear uma lista fixa de domínios não basta, porque o próximo lote ainda nem foi registrado [2].
Antivírus de aplicativo não resolve

A Doctor Web informa que o Dr.Web para Android limpa o aparelho apenas se houver acesso root [1]. Em TV box sem root fornecido ao usuário, um aplicativo de segurança instalado depois enxerga o problema, mas não consegue remover o arquivo da partição de sistema. Não trate "instalei um antivírus" como resposta ao incidente: a medida que funciona é a substituição do aparelho, descrita na seção 10.

04Primeira geração: o backdoor de 2024

4.1Como foi descoberta

Em agosto de 2024, usuários de TV boxes relataram à Doctor Web que o antivírus detectava mudanças nos arquivos de sistema do aparelho. Os arquivos alterados eram install-recovery.sh e daemonsu, e apareciam arquivos novos, entre eles /system/xbin/vo1d e /system/xbin/wd [1].

4.2Componentes e persistência

A Doctor Web descreve três mecanismos independentes de autoinício para o componente wd, de modo que um deles sobrevivendo já garanta o relançamento após reiniciar o aparelho [1]:

O Vo1d.1 relança o Vo1d.3 quando preciso e baixa e executa arquivos por ordem do servidor de comando. O Vo1d.3 também baixa e executa arquivos, e monitora diretórios definidos para instalar qualquer APK que apareça neles. O Vo1d.5 roda sob o Vo1d.3, e a fonte não detalha sua função além disso [1].

4.3Aparelhos citados

A Doctor Web listou três modelos de TV box com infecção confirmada, e adverte que as versões declaradas podem estar erradas, pois alguns aparelhos parecem rodar Android 7.1 [1]:

Tabela 3. Modelos de TV box citados pela Doctor Web
ModeloVersão declarada
R4Android 7.1.2, build R4 Build/NHG47K
TV BOXAndroid 12.1, build TV BOX Build/NHG47K
KJ-SMART4KVIPAndroid 10.1, build KJ-SMART4KVIP Build/NHG47K
O número de versão não protege nem condena

Os três modelos declaram versões de Android que vão da 7.1 à 12.1, mas compartilham o mesmo identificador de build NHG47K, e a fonte indica que a versão exibida pode ser falsa [1]. Não conclua que uma TV box que anuncia Android 12 está atualizada, e não procure o modelo na lista acima como única prova de risco. O critério que vale é a ausência de certificação Play Protect [3].

4.4Como o aparelho foi infectado

A Doctor Web não conseguiu determinar o vetor. Apresenta duas hipóteses: um malware intermediário que explora vulnerabilidades do sistema para obter root, ou firmware não oficial já com root embutido [1]. Uma terceira via, citada por veículo de imprensa, é a pré-instalação por fabricantes em acordo com grupos de malware ou por software de serviços de streaming duvidosos [4]. Nenhuma das três foi comprovada pelas fontes.

05Segunda geração: a cadeia de 2025

5.1Linha do tempo da descoberta

A XLab reconstruiu a evolução da variante a partir de sinais de rede e de amostras. Os marcos principais são estes [2]:

Tabela 4. Marcos da variante de 2025
DataEvento
3 de novembro de 2024Registro do domínio ttss442, que depois entra no top 55.000 do ranking Tranco.
28 de novembro de 2024A XLab identifica o IP 38.46.218.36 distribuindo o baixador jddx, com zero detecções no VirusTotal.
15 de dezembro de 2024Uma semente de DGA ausente das 256 conhecidas é identificada.
2 de janeiro de 2025A XLab captura e decifra um comando de download e execução, com um carregador de DEX.
14 de janeiro de 2025Os bots ativos por dia saltam de cerca de 810.000 para 1,52 milhão.
19 de janeiro de 2025Pico de 1.590.299 bots ativos.
22 de janeiro de 2025Queda de cerca de 1,43 milhão para 780.000.
27 de fevereiro de 2025Publicação do relatório, com cerca de 800.000 bots ativos.

5.2Estágios da cadeia

A XLab descreve a cadeia em cinco estágios encadeados, do baixador à lógica de negócio [2]:

Tabela 5. Estágios da cadeia de infecção de 2025
EstágioO que faz
1. Baixador s63Decifra a configuração, pede um servidor de download redundante (comando 0x10) e depois o payload (comando 0x11). Baixa o pacote ts01 de 38.46.218.36:9999.
2. Pacote ts01Reúne cv, install.sh, vo1d e x.apk. O install.sh inicia o cv.
3. Componente cvRemove componentes antigos do Vo1d, inicia o novo, instala e inicia o x.apk e reporta o estado do aparelho a catmore88.com. Baixa o payload d2 se o MD5 divergir.
4. Aplicativo x.apkUsa o nome de pacote com.google.android.gms.stable, que imita o Google Play Services. Persiste no evento BOOT_COMPLETED, carrega liblogs.so e copia test para /data/system/startup.
5. Carregador de DEX e família MzmessDecifra um esqueleto de DEX com XXTEA modificado e restaura o bytecode dos métodos. Baixa o SDK de dcsdk.100ulife.com ou de domínios dc16888888.com e recebe a lista de plugins.
O disfarce é o nome do pacote

O pacote com.google.android.gms.stable difere do verdadeiro com.google.android.gms só pelo sufixo [2]. Uma revisão de aplicativos que procure por "gms" na lista, sem comparar o nome inteiro, o aprova. Compare o nome exato do pacote contra o legítimo, e trate qualquer variação como suspeita em TV box sem certificação.

5.3Limpeza das versões antigas

O componente cv remove os componentes de infecções anteriores antes de instalar os novos [2]. Isso tem duas consequências para quem caça, ambas inferências desta equipe a partir do comportamento descrito: um aparelho infectado pela primeira geração pode ter sido atualizado em silêncio para a segunda, e a ausência dos arquivos de 2024 não prova que o aparelho esteja limpo.

06Comando e controle e criptografia

6.1Domínios gerados por algoritmo

O algoritmo de geração de domínios é o mesmo descrito pela Doctor Web, mas com muito mais sementes: de quatro ou cinco na versão antiga, para 32 nesta variante, e 256 sementes identificadas em oito grupos nas amostras [2]. O algoritmo usa só os cinco primeiros bytes de cada semente e suporta os domínios de topo net, com e top. O topo xyz, embutido no código, não é usado [2]. Cada semente gera 220 ou 500 domínios.

Além do DGA, um redirecionador embutido devolve o endereço real do C2. A XLab cita pxleo5fbca7141b5[.]com e, como exemplo de endereço resolvido, 52.14.24.94:81. O servidor de comando central atende em vários portos: 55500, 55501, 55502, 55503 e 55600, e o porto 55560 mostrou grandes oscilações de volume [2].

6.2Cifras e formato das mensagens

As mensagens do baixador seguem o formato tamanho:comando:corpo, com 4 bytes de tamanho e 1 byte de comando. A configuração e as strings usam um cabeçalho de 3 bytes: o XOR dos bytes do cabeçalho dá o tamanho do corpo, e os dois primeiros bytes são as chaves de XOR. A XLab observa que o mesmo esquema aparece no Bigpanzi, mas considera isso insuficiente para ligar as duas famílias [2].

A criptografia de payload é um XXTEA padrão com uma única alteração: o deslocamento lógico à direita é trocado por um deslocamento aritmético. A XLab chama a variação de asr_xxtea e aponta que a chave XXTEA publicada pela Doctor Web estava errada [2]. As chaves públicas RSA estão embutidas no código, com expoente 65537, em dois conjuntos, um em little-endian e outro em big-endian, usados para embrulhar a chave do payload e proteger o C2.

Registrar o domínio não dá o controle

Como a ordem para os bots exige assinatura RSA, quem registra um domínio do DGA, inclusive um pesquisador ou uma operação de derrubada, vê as conexões dos bots, mas não consegue enviar comando [2]. Isso torna o sinkhole (desvio de domínio) bom para medir a botnet e inútil para desativá-la. Não planeje a resposta contando com a derrubada de domínios.

6.3Chaves recuperadas pela XLab

Tabela 6. Chaves de cifra citadas pela XLab [2]
UsoValor
Configuração e resposta (XXTEA)b6d5c945d61a7364
Chave do payload, obtida por RSA (XXTEA)041db10bf25d4722
Payload do Vo1dfPNH830ES23QOPIM
Carregador de DEXd99202323077ee9e
Mzmess, tráfego de C2 (AES-256-ECB)DE252F9AC7624D723212E7E70972134D
Popa (AES-ECB)eeorahrabcap286!
Mensagem de check-in no redirecionadorDD CC BB AA

07Monetização: proxy e fraude publicitária

O SDK Mzmess recebe do servidor uma lista de plugins e a executa. A XLab descreve quatro, que formam o modelo de negócio da botnet [2].

Tabela 7. Plugins descritos pela XLab
PluginFunçãoComportamento descrito
popaProxyEmbute nove C2 e busca mais em um endereço do Google Drive. Registra-se em /devicereg no porto 5002 e usa TCP com SSL, com oito tipos de mensagem, entre eles registro, ping e abertura de túnel.
jaguarProxyBiblioteca nativa libjaguar.so. Registra-se por GET em um distribuidor e recebe o proxy no porto 21001, com formato JSON binário próprio, cinco comandos e seis ações de proxy.
lxhwdgChamadas remotasUsa WSS no porto 2345 para chamar funções remotas. O C2 estava fora do ar na análise.
spiritFraude publicitáriaExecuta tarefas em JavaScript, busca a lista por HTTP cifrado com RSA em moyu88.xyz e simula cliques e visualizações.

O efeito do proxy é que o tráfego de quem aluga a botnet sai pelo IP residencial do dono da TV box, misturando-se ao tráfego doméstico comum e escondendo a origem de atividade maliciosa [2]. A XLab propõe, como hipótese, um ciclo de aluguel e devolução: durante o aluguel os bots deixam a rede principal e a contagem cai, e na devolução voltam e a contagem sobe. Essa seria a explicação dos saltos súbitos, como o da Índia, que foi de 3.901 para 217.771 bots em três dias [2].

O aluguel é hipótese, não observação

A XLab apresenta o ciclo de aluguel como suspeita para explicar as oscilações, sem ter visto a transação [2]. Este relatório adota a hipótese como a melhor explicação disponível, e não deve ser citado como prova de que a botnet seja vendida como serviço.

08Alcance e vitimologia

Entre 1 e 15 de fevereiro de 2025, a XLab mediu a participação de cada país nos bots ativos. O Brasil lidera com folga [2]:

Tabela 8. Participação por país nos bots ativos, de 1 a 15 de fevereiro de 2025
PaísParticipação
Brasil24,97%
África do Sul13,60%
Indonésia10,54%
Argentina5,27%
Tailândia3,40%
China3,13%
Marrocos2,79%
Filipinas2,22%
Alemanha2,17%
Malásia2,14%

Na primeira geração, os países com mais infecções, segundo a Doctor Web, foram Brasil, Marrocos, Paquistão, Arábia Saudita, Rússia, Argentina, Equador, Tunísia, Malásia, Argélia e Indonésia [1]. O Brasil aparece à frente nas duas medições, ainda que as ordens dos demais países difiram. A XLab registra também que a China passou de poucos bots para cerca de 20.000 ativos depois que o domínio .com de uma semente foi registrado, em 18 de janeiro de 2025, e que a contagem chegou perto de 50.000 mais tarde [2].

Por que o Brasil importa neste caso

Cerca de um quarto de uma botnet de 1,6 milhão de aparelhos significa algo na casa de centenas de milhares de TV boxes brasileiras, em residências, comércio e, possivelmente, em redes corporativas [2]. O risco para uma organização não é a perda de dados, e sim o IP dela aparecer como origem de ataques e de fraude, e o tráfego da TV box cruzar a mesma rede de sistemas internos.

O Google afirma que o Vo1d não afeta aparelhos Android TV certificados pelo Play Protect, e que roda apenas em TV boxes com builds modificados do AOSP vendidos como se fossem Android TV [3] [4]. Para o comprador, a distinção é difícil de verificar na loja, porque a embalagem e o menu do aparelho usam o nome Android TV sem a certificação.

09Detecção

A caça vai do mais barato e abrangente para o mais caro e específico. As duas primeiras vias não exigem tocar no aparelho suspeito, o que importa porque ele pode estar comprometido de forma que não responde com honestidade.

Sobre as regras deste relatório

A regra Suricata, a consulta KQL e os comandos das seções 9.2 a 9.4 foram escritos por esta equipe a partir dos indicadores e do comportamento descritos nas fontes, e não de execução de amostra. Nenhum foi validado contra tráfego real ou contra um aparelho infectado. Trate cada um como ponto de partida a ajustar e medir no seu ambiente antes de ativar alerta.

9.1Inventário de TV boxes

Antes de caçar infecção, descubra quais aparelhos existem. A TV box raramente consta no inventário de ativos. Procure no DHCP, no ARP e no controlador de rede sem fio por aparelhos com fabricante de TV box, nome de host genérico ou de modelo, e sem certificação. Rede de visitantes, salas de reunião, recepção e áreas de convivência concentram esse tipo de equipamento.

9.2DNS e rede

O bot consulta nomes gerados por algoritmo e fala com servidores por portos fora do padrão. Procure, na origem de cada TV box, consultas aos domínios da seção 11 e conexões para a faixa de portos 55500 a 55503, 55560 e 55600.

Microsoft Sentinel, KQLDerivada de [2], não validada
let dominios = dynamic(["ssl8rrs2.com","ttekf42.com","ttss442.com","works883.com",
  "csskkjw.com","catmore23.com","synntre.com","csok997.com","conannt.com",
  "qocoll.com","haveits.com","remoredo.com","catmos99.com","catmore88.com",
  "works883.xyz","ssl87362.com","wowokeys.com","meiboot.com","bitemores.com"]);
let ips = dynamic(["38.46.218.36","38.46.218.37","38.46.218.38","38.46.218.39",
  "3.146.93.253","3.132.75.97"]);
DnsEvents
| where Name has_any (dominios)
| summarize Consultas=count() by ClientIP, Name
| union (
    CommonSecurityLog
    | where DestinationIP in (ips) or DestinationPort in (55500,55501,55502,55503,55560,55600)
    | summarize Sessoes=count() by SourceIP, DestinationIP, DestinationPort
  )

9.3Regras de rede e de DNS

SuricataDerivada de [2] [5], não validada
# 1. Consulta DNS a dominio de C2 conhecido do Vo1d
alert dns $HOME_NET any -> any any (
  msg:"CIBERLAB VO1D CONSULTA DNS C2 CONHECIDO";
  dns.query; pcre:"/(^|\.)(ttss442|ttekf42|works883|ssl8rrs2|csskkjw|catmore23|catmore88|synntre|csok997|conannt|qocoll|haveits|remoredo|catmos99|ssl87362|wowokeys|meiboot|bitemores)\.(com|xyz)$/i";
  classtype:trojan-activity; priority:1;
  sid:9000201; rev:1;
)

# 2. Saida para o servidor de download do estagio 1
alert tcp $HOME_NET any -> [38.46.218.36,38.46.218.37,38.46.218.38,38.46.218.39] 9999 (
  msg:"CIBERLAB VO1D DOWNLOAD DO PACOTE TS01";
  flow:to_server; classtype:trojan-activity; priority:1;
  sid:9000202; rev:1;
)
Lista de domínios é só retrospectiva

Os domínios acima vêm de amostras já capturadas, e o DGA produz muitos outros que ainda não foram registrados [2]. Use a regra para caça retroativa e para confirmar infecção, e não como único controle preventivo. O sinal mais durável é a TV box fazendo consultas DNS em volume para nomes que não resolvem, o que o DGA produz por construção.

9.4Inspeção do aparelho

Com depuração USB ou de rede habilitada, e apenas em aparelho isolado, verifique a presença dos artefatos listados pela Doctor Web e pela XLab. A ausência deles não prova que o aparelho está limpo, pelo motivo da seção 5.3.

adb shellDerivada de [1] [2] [5], não validada
# arquivos da primeira geracao
ls -l /system/xbin/vo1d /system/xbin/wd /data/google/daemon
ls -l /system/bin/debuggerd /system/bin/debuggerd_real
grep -l "wd" /system/etc/install-recovery.sh /system/xbin/daemonsu 2>/dev/null

# artefatos da segunda geracao
pm list packages | grep -i "com.google.android.gms.stable"
ls -l /data/system/startup
Não confie na resposta de um aparelho comprometido

Um aparelho com root comprometido pode mentir ao ls e ao pm. O resultado negativo vale como indício, e o positivo vale como confirmação. A evidência mais confiável continua a ser o tráfego observado por um ponto fora do aparelho, como o DNS e o firewall da seção 9.2.

10Mitigação e resposta

10.1Contenção imediata

10.2Erradicação

10.3Avaliação de alcance

O dano do Vo1d é sobretudo externo, mas a TV box esteve na mesma rede que outros equipamentos e pode ter dado visibilidade a ela. Revise registros de abuso do período em busca de ataques que partiram do IP da organização, e verifique se a TV box estava na mesma sub-rede de estações, impressoras e câmeras. O plugin lxhwdg executa chamadas remotas de função, e a XLab não descreve o alcance delas porque o C2 estava fora do ar [2].

10.4Prevenção estrutural

Tabela 9. Controles recomendados
ControleAplicação
Compra por certificaçãoExija Android TV com Play Protect de revendedor reconhecido. Desconfie de preço muito abaixo do mercado, de "TV box desbloqueada" e de aparelho com nome de modelo genérico [2] [3].
Rede separada para IoTColoque TV boxes, câmeras e demais aparelhos sem gerência em uma VLAN sem rota para sistemas internos [2].
Saída filtradaA TV box precisa de poucos destinos. Permita só o que o serviço de vídeo usa e bloqueie portos altos como 55500 a 55503, 55560 e 55600 e consultas DNS externas fora do resolvedor da organização.
Resolvedor DNS com reputaçãoUse resolvedor que bloqueie domínios recém-registrados e de baixa reputação, o que corta parte do tráfego do DGA.
Atualização e fonte oficialInstale firmware e atualizações do fabricante e evite aplicativos fora da loja oficial e firmware de terceiros [1] [2].
Acesso remoto desligadoDesative recursos de acesso remoto quando não usados, e desconecte o aparelho quando ocioso [2].

10.5Mapeamento MITRE ATT&CK

As técnicas abaixo são da matriz Mobile do ATT&CK. Foram conferidas uma a uma em attack.mitre.org, e os nomes reproduzem o oficial de cada página [6]. A primeira tabela cobre da instalação à evasão:

Tabela 10. Técnicas ATT&CK, parte 1: persistência, execução e evasão
TécnicaNomeRelação com o caso
T1398Boot or Logon Initialization ScriptsEntradas em install-recovery.sh e daemonsu [1].
T1624.001Event Triggered Execution: Broadcast ReceiversPersistência do x.apk no evento BOOT_COMPLETED [2].
T1655.001Masquerading: Match Legitimate Name or LocationPacote com.google.android.gms.stable imitando o Google Play Services [2].
T1407Download New Code at RuntimeCarregador de DEX e plugins baixados em tempo de execução [2].
T1544Ingress Tool TransferBaixador que obtém o pacote ts01 e payloads cifrados [2].

A segunda tabela cobre comando e controle e impacto:

Tabela 11. Técnicas ATT&CK, parte 2: comando e controle e impacto
TécnicaNomeRelação com o caso
T1637.001Dynamic Resolution: Domain Generation Algorithms256 sementes de DGA em oito grupos [2].
T1437.001Application Layer Protocol: Web ProtocolsRegistro e tarefas por HTTP, WSS e TCP com SSL [2].
T1521.001Encrypted Channel: Symmetric CryptographyXXTEA modificado e AES no tráfego e nos payloads [2].
T1521.002Encrypted Channel: Asymmetric CryptographyRSA de 2.048 bits na proteção das ordens e na chave do payload [2].
T1604Proxy Through VictimPlugins popa e jaguar fazem o aparelho funcionar como proxy [2].
T1643Generate Traffic from VictimPlugin spirit gera cliques e visualizações fraudulentas [2].

11Indicadores de comprometimento

Todos os indicadores abaixo vêm das fontes citadas [1] [2] [5], porque não houve análise local. Domínios, endereços e URLs aparecem desarmados de propósito e não devem ser transformados em link clicável. Primeiro estão os que vieram de análise de amostra, depois os de infraestrutura de plugins.

11.1Rede

Tabela 12. IOCs de rede
TipoIndicadorSeveridadeContexto e ação
Domíniossl8rrs2[.]com, ttekf42[.]com, ttss442[.]com, works883[.]com, csskkjw[.]com, catmore23[.]com, synntre[.]com, csok997[.]com, conannt[.]com, qocoll[.]com, haveits[.]com, remoredo[.]com, catmos99[.]comCríticaC2 do Vo1d [2]. Bloquear e alertar
Domíniossl87362[.]com, wowokeys[.]comAltaBaixadores [2]. Bloquear e alertar
IPv438[.]46[.]218[.]36, 38[.]46[.]218[.]37, 38[.]46[.]218[.]38, 38[.]46[.]218[.]39CríticaBaixadores, o primeiro serve o ts01 no porto 9999 [2]. Bloquear e alertar
Domínioworks883[.]xyz, catmore88[.]comAltaReporte de estado do aparelho [2]. Bloquear e alertar
IPv43[.]146[.]93[.]253, 3[.]132[.]75[.]97AltaServidores centrais de C2, portos 55500 a 55503 e 55600 [2]. Bloquear e alertar
Domíniopxleo5fbca7141b5[.]comAltaRedirecionador embutido que devolve o C2 real [2]. Bloquear e alertar
Domíniomeiboot[.]com, bitemores[.]com, 6f33933ce4a5c0e1b32fea736a61351a[.]comAltaServidores da primeira geração, lista da Doctor Web [5]. Bloquear e alertar
Domíniodcsdk[.]100ulife[.]com, dcsdkos[.]dc16888888[.]com, 8[.]219[.]89[.]234MédiaSDK Mzmess [2]. Bloquear e monitorar
Domíniogmslb[.]net, phonemesh[.]org, linkmob[.]org, peercon[.]org, phonegrid[.]org, safernetwork[.]io, lbk-sol[.]com, sklstech[.]com, kyc-holdings[.]comMédiaC2 do plugin popa [2]. Bloquear e monitorar
Domíniojaguar-distributor[.]syslogcollector[.]com, g[.]sxim[.]me, reg[.]sxim[.]me, ref[.]sxim[.]meMédiaDistribuidor do jaguar e C2 do lxhwdg [2]. Bloquear e monitorar
Domíniotask[.]mymoyu[.]shop, task[.]moyu88[.]xyz, task1[.]ziyemy[.]shop, task2[.]ziyemy[.]shop, adstat[.]moyu88[.]xyz, adstat[.]ziyemy[.]shop, adstat2[.]ziyemy[.]shop, adstat[.]ad3g[.]com, update[.]ad3g[.]com, spiritlib[.]cyouMédiaTarefas e relatórios da fraude publicitária [2]. Bloquear e monitorar
IPv438[.]61[.]8[.]11 a 38[.]61[.]8[.]14, 38[.]61[.]8[.]31, 38[.]61[.]8[.]33, 69[.]28[.]62[.]38 a 69[.]28[.]62[.]42, 69[.]28[.]62[.]48 a 69[.]28[.]62[.]52, 69[.]28[.]62[.]60, 69[.]28[.]62[.]61, 128[.]1[.]71[.]243, 156[.]236[.]118[.]27, 156[.]236[.]118[.]48MédiaProxies do jaguar [2]. Bloquear e monitorar
PortaTCP 55500, 55501, 55502, 55503, 55560, 55600AltaPortos de C2 da segunda geração [2]. Alertar sobre TV box

11.2Artefatos no aparelho

Tabela 13. IOCs de host na TV box
TipoIndicadorSeveridadeContexto e ação
Arquivo/system/xbin/vo1dCríticaAndroid.Vo1d.1 [1]. Tratar como infecção
Arquivo/system/xbin/wdCríticaAndroid.Vo1d.3 [1]. Tratar como infecção
Arquivo/data/google/daemonCríticaAndroid.Vo1d.5 [5]. Tratar como infecção
Arquivo/system/bin/debuggerd_realAltaCópia do script que substituiu o debuggerd [1]. Conferir o conteúdo
Arquivoinstall-recovery.sh, daemonsuAltaAlterados com entrada que inicia o wd [1]. Conferir o conteúdo
Pacotecom.google.android.gms.stableCríticaAplicativo da segunda geração, imita o Google Play Services [2]. Tratar como infecção
Pacotecom.google.android.servicesAltaVariante Vo1d.1.origin [5]. Conferir e remover
Arquivo/data/system/startup/testAltaCopiado pelo x.apk [2]. Conferir
Bibliotecaliblogs.so, libjaguar.soMédiaCarregadas pelo x.apk e pelo plugin jaguar [2]. Apoio à triagem

11.3Hashes

Tabela 14. MD5 de amostras da segunda geração, segundo a XLab [2]
ArtefatoMD5Ação
jbf01a692df9deb5e8db620e4fb7e687836Caça retroativa
jemde8f69efdb29cdf5fd12dd7b74584696Caça retroativa
jfz456e14aa644bd31d85e0fe6f78d8fc15Caça retroativa
jhz30da72fda6d0f5e3972272332d7fc47bCaça retroativa
jddxfc7dc3c5306d6a508023160953168a16Caça retroativa
jeex53493b07fe423b1dbdc789803cbac7c1Caça retroativa
jtxx2d6d91c5988dcab2eb4dab1ec55cfbb9Caça retroativa
s639e116f9ad2ff072f02aa2ebd671582a5Caça retroativa
vo1db447aaf52c1efad388612f8220969c35Caça retroativa
ts01 (cifrado)6bb3258b688f81dfd03128bccf18823bCaça retroativa
ts01 (decifrado)d9126d936d505b9fa9a8278fda1daaaeCaça retroativa
p6332 (cifrado)0c454831bdb679bdd083c5a7cc785733Caça retroativa
p7332 (cifrado)bb6b9aec7d4bfa524c7c5117257e4d78Caça retroativa
p8232 (cifrado)6168dafc5a1d297cf33b26b65db315ccCaça retroativa
p8932 (cifrado)4f4d5e37feda9e9556c816c100e1de30Caça retroativa
Tabela 15. SHA-1 de amostras da primeira geração, segundo a Doctor Web [5]
DetecçãoSHA-1
Android.Vo1d.1f3732871371819532416cf2ec03ea103a3d61802
675f9a34f6f8dc887e47aa85fffda41c178eb186
637c491d29eb87a30d22a7db1ccb38ad447c8de8
9a8b7a85742330970e067f2b80ada9e295b0e035
42def5b7eb8b1bcc727739cca98efe42c022a3f6
4b1135c6cade7e17548982338bfa9382e3c234f0
Android.Vo1d.38399c41b0d24c30391d7fba6b634ba29c0440007
ccf8c0cb83160a20fa4c89b028fb63884f7b6a86
e5b16486eebd6c6f7c45197f530e854a4f1373dd
cd3c8d0ca99400c86e7e4943e85669f291c52a74
51bd967bd7d59a8a9db8083094603a9d10e61ded
3e941c34af4e07496f515c35eddaff145e06c42a
0b3c8113e996ac4e08552761731f9f97b8f0f6a2
2d2ceddafbce5afe79e3424ebc32dea4d5dff1fe
0d51c034a6deda4d2db21c5852b8ceb8a1e1c68b
51d17a5a1950db3236c9db3249ab0dcb03223d11
9dcc109ac2c5f873ece422aed0687ba21d594e9b
e05c1338426a07a49eb3491e08abbc3f96b047b3
e5406ae7482c0062cedafbd118a493ab8b7fe530
c53a76845a78ec9b613442a208b5b2ea8fbecc91
Android.Vo1d.5e34c6a13ccbecf7560d4cb8a32872b8aabd5f8db
825df85d82a3de5e4bf6347dcba47e3ec48dbd52
3e21821a1e6edb684f3931d685b908d4a8df3f19
6707cbb2b4e09911c4ada7e24c05e4fbd66a7851
b1cf85aaf1a355677534ea12c19b034c656804ec
89788eabef15303c142fff33dfd560e619595ae5
ed975255eba30345de74936e24b9b3090f26ed7e
182939085a9aa1d6f0e60da31b200cd644522748
3ce81fbb1d968e01e970c4c673a7eeb61c247c85
436f200abfc0db4ae6138b0b2f1ab67af57ca506
0c7f9f33a40a6028dbef416b2385876c87f1bd48
df71b68c4172ef7f23949c643550c40d0f81fa83
6e06d0decf5e211183a751b206dd533f91c13b22
b6a00590a3b0b175fa2ec910744875dd5be995ac
Android.Vo1d.1.origin7f87f9f059a58eb830d59af5bcb29c612b2a6ccf
9fcdfb9cadabe12283a002755a27a4a68a101949
25f93476cb8dc6a7f727a88ece0c5a0c19157c0b
3a4d90b9911e7e582cf3279b15f2f822a5bb2823
b315be9d64e22960f6072aac60538b13d50da054
618b98eb97f38ffa7b384b0932fd4b92c8877f60
b474c279da7b08fd64f92b0781e2663bf6cbb4b6
Onde esses hashes casam, e onde não casam

Os binários do Vo1d vivem na partição de sistema de uma TV box, e não em estações Windows ou em celulares com antivírus corporativo. Um EDR corporativo não os verá, e a varredura de disco do parque de estações devolverá vazio sem que isso diga algo sobre a rede [1]. Use os hashes em amostras recuperadas do próprio aparelho e em consultas a plataformas de amostras. Os payloads cifrados mudam a cada compilação, e um hash isolado envelhece rápido [2].

12Limitações da análise

13Referências

  1. [1] Doctor Web. Void captures over a million Android TV boxes. Descrição da primeira geração, publicada em 12 de setembro de 2024. Origem das detecções Vo1d.1, Vo1d.3 e Vo1d.5, dos caminhos de arquivo, dos três mecanismos de persistência, dos modelos afetados, dos países e das hipóteses de infecção. https://news.drweb.com/show/?i=14900
  2. [2] Fonte primária. XLab, Qi An Xin. Long Live The Vo1d Botnet: New Variant Hits 1.6 Million TV Globally. Análise da segunda geração, publicada em 27 de fevereiro de 2025. Origem da linha do tempo, da cadeia de estágios, do DGA, da criptografia, dos plugins, da distribuição por país, das chaves, dos hashes MD5 e da lista de indicadores de rede. https://blog.xlab.qianxin.com/long-live-the-vo1d_botnet/
  3. [3] BleepingComputer. Vo1d malware botnet grows to 1.6 million Android TVs worldwide. Reportagem de 27 de fevereiro de 2025, atualizada com a declaração do Google. Sustenta que os aparelhos infectados não são certificados pelo Play Protect e a divergência na data do pico. https://www.bleepingcomputer.com/news/security/vo1d-malware-botnet-grows-to-16-million-android-tvs-worldwide/
  4. [4] heise online. New version of Vo1d botnet on hundreds of thousands of devices with Android TV. Reportagem de 2 de março de 2025. Registra a posição do Google de que o Vo1d só roda em builds modificados do AOSP, a monetização por proxy e fraude e as hipóteses de pré-instalação. https://www.heise.de/en/news/New-version-of-Vo1d-botnet-on-hundreds-of-thousands-of-devices-with-Android-TV-10300915.html
  5. [5] Doctor Web. Android.Vo1d, lista de indicadores de comprometimento. Repositório oficial da Doctor Web com os SHA-1 das detecções Vo1d.1, Vo1d.3, Vo1d.5 e Vo1d.1.origin, o caminho /data/google/daemon e quatro domínios da primeira geração. https://github.com/DoctorWebLtd/malware-iocs/blob/master/Android.Vo1d/README.adoc
  6. [6] MITRE ATT&CK, matriz Mobile. Páginas oficiais das técnicas citadas nas tabelas 10 e 11, conferidas pelo nome oficial. A matriz é reorganizada com o tempo, e identificadores devem ser reconferidos antes de uso em cobertura. https://attack.mitre.org/techniques/T1398/

Android.Vo1d, relatório técnico de análise de artefato. Versão 1.0, emitida em 15 de outubro de 2026.
CiberLab, uma iniciativa do Ciência Embarcada.
Classificado TLP:CLEAR: distribuição livre, sem restrição de compartilhamento.