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.
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.
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].
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.
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.
| Campo | Valor |
|---|---|
| Nome | Android.Vo1d, grafado Vo1d (com o algarismo 1) pela XLab [1] [2] |
| Classe | Backdoor e botnet de proxy e de fraude publicitária |
| Plataforma | Android sem certificação, em TV boxes baseadas em AOSP [1] [3] |
| Primeira geração | Doctor Web, 12 de setembro de 2024, com relatos de usuários desde agosto de 2024 [1] |
| Segunda geração | XLab, 27 de fevereiro de 2025, com rastreio desde 28 de novembro de 2024 [2] |
| Vetor de infecção | Desconhecido [1]. Firmware com root embutido ou malware intermediário são hipóteses |
| Persistência | Scripts 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 C2 | Domínios gerados por algoritmo, criptografia RSA e XXTEA modificado [2] |
| Atribuição | n/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]:
| Nome | Componente | Função |
|---|---|---|
| Android.Vo1d.1 | /system/xbin/vo1d, ou daemonsu modificado | Inicia e controla o Vo1d.3, baixa e executa arquivos por ordem do C2 [1]. |
| Android.Vo1d.3 | /system/xbin/wd | Instala e executa o Vo1d.5, monitora diretórios e instala os APKs que encontrar [1]. |
| Android.Vo1d.5 | /data/google/daemon | Daemon cifrado embutido no corpo do wd [1] [5]. |
| Android.Vo1d.1.origin | com.google.android.services | Variante empacotada como aplicativo, listada no repositório de IOCs [5]. |
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.
Três conceitos explicam por que o Vo1d existe em escala e por que ele é difícil de remover.
/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.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.
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].
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]:
wd em install-recovery.sh, que o sistema executa na partida, ou o arquivo criado do zero quando não existia;daemonsu;/system/bin/debuggerd por um script que lança o wd, com uma cópia em /system/bin/debuggerd_real. Em um dos casos, essa cópia era do próprio script, e o debuggerd original já não existia.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].
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]:
| Modelo | Versão declarada |
|---|---|
| R4 | Android 7.1.2, build R4 Build/NHG47K |
| TV BOX | Android 12.1, build TV BOX Build/NHG47K |
| KJ-SMART4KVIP | Android 10.1, build KJ-SMART4KVIP Build/NHG47K |
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].
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.
A XLab reconstruiu a evolução da variante a partir de sinais de rede e de amostras. Os marcos principais são estes [2]:
| Data | Evento |
|---|---|
| 3 de novembro de 2024 | Registro do domínio ttss442, que depois entra no top 55.000 do ranking Tranco. |
| 28 de novembro de 2024 | A XLab identifica o IP 38.46.218.36 distribuindo o baixador jddx, com zero detecções no VirusTotal. |
| 15 de dezembro de 2024 | Uma semente de DGA ausente das 256 conhecidas é identificada. |
| 2 de janeiro de 2025 | A XLab captura e decifra um comando de download e execução, com um carregador de DEX. |
| 14 de janeiro de 2025 | Os bots ativos por dia saltam de cerca de 810.000 para 1,52 milhão. |
| 19 de janeiro de 2025 | Pico de 1.590.299 bots ativos. |
| 22 de janeiro de 2025 | Queda de cerca de 1,43 milhão para 780.000. |
| 27 de fevereiro de 2025 | Publicação do relatório, com cerca de 800.000 bots ativos. |
A XLab descreve a cadeia em cinco estágios encadeados, do baixador à lógica de negócio [2]:
| Estágio | O que faz |
|---|---|
1. Baixador s63 | Decifra 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 ts01 | Reúne cv, install.sh, vo1d e x.apk. O install.sh inicia o cv. |
3. Componente cv | Remove 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.apk | Usa 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 Mzmess | Decifra 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 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.
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.
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].
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.
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.
| Uso | Valor |
|---|---|
| Configuração e resposta (XXTEA) | b6d5c945d61a7364 |
| Chave do payload, obtida por RSA (XXTEA) | 041db10bf25d4722 |
| Payload do Vo1d | fPNH830ES23QOPIM |
| Carregador de DEX | d99202323077ee9e |
| Mzmess, tráfego de C2 (AES-256-ECB) | DE252F9AC7624D723212E7E70972134D |
| Popa (AES-ECB) | eeorahrabcap286! |
| Mensagem de check-in no redirecionador | DD CC BB AA |
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].
| Plugin | Função | Comportamento descrito |
|---|---|---|
| popa | Proxy | Embute 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. |
| jaguar | Proxy | Biblioteca 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. |
| lxhwdg | Chamadas remotas | Usa WSS no porto 2345 para chamar funções remotas. O C2 estava fora do ar na análise. |
| spirit | Fraude publicitária | Executa 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].
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.
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]:
| País | Participação |
|---|---|
| Brasil | 24,97% |
| África do Sul | 13,60% |
| Indonésia | 10,54% |
| Argentina | 5,27% |
| Tailândia | 3,40% |
| China | 3,13% |
| Marrocos | 2,79% |
| Filipinas | 2,22% |
| Alemanha | 2,17% |
| Malásia | 2,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].
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.
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.
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.
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.
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.
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
)
# 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;
)
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.
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.
# 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
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.
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].
| Controle | Aplicação |
|---|---|
| Compra por certificação | Exija 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 IoT | Coloque TV boxes, câmeras e demais aparelhos sem gerência em uma VLAN sem rota para sistemas internos [2]. |
| Saída filtrada | A 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ção | Use 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 oficial | Instale firmware e atualizações do fabricante e evite aplicativos fora da loja oficial e firmware de terceiros [1] [2]. |
| Acesso remoto desligado | Desative recursos de acesso remoto quando não usados, e desconecte o aparelho quando ocioso [2]. |
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:
| Técnica | Nome | Relação com o caso |
|---|---|---|
| T1398 | Boot or Logon Initialization Scripts | Entradas em install-recovery.sh e daemonsu [1]. |
| T1624.001 | Event Triggered Execution: Broadcast Receivers | Persistência do x.apk no evento BOOT_COMPLETED [2]. |
| T1655.001 | Masquerading: Match Legitimate Name or Location | Pacote com.google.android.gms.stable imitando o Google Play Services [2]. |
| T1407 | Download New Code at Runtime | Carregador de DEX e plugins baixados em tempo de execução [2]. |
| T1544 | Ingress Tool Transfer | Baixador que obtém o pacote ts01 e payloads cifrados [2]. |
A segunda tabela cobre comando e controle e impacto:
| Técnica | Nome | Relação com o caso |
|---|---|---|
| T1637.001 | Dynamic Resolution: Domain Generation Algorithms | 256 sementes de DGA em oito grupos [2]. |
| T1437.001 | Application Layer Protocol: Web Protocols | Registro e tarefas por HTTP, WSS e TCP com SSL [2]. |
| T1521.001 | Encrypted Channel: Symmetric Cryptography | XXTEA modificado e AES no tráfego e nos payloads [2]. |
| T1521.002 | Encrypted Channel: Asymmetric Cryptography | RSA de 2.048 bits na proteção das ordens e na chave do payload [2]. |
| T1604 | Proxy Through Victim | Plugins popa e jaguar fazem o aparelho funcionar como proxy [2]. |
| T1643 | Generate Traffic from Victim | Plugin spirit gera cliques e visualizações fraudulentas [2]. |
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.
| Tipo | Indicador | Severidade | Contexto e ação |
|---|---|---|---|
| Domínio | 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 | Crítica | C2 do Vo1d [2]. Bloquear e alertar |
| Domínio | ssl87362[.]com, wowokeys[.]com | Alta | Baixadores [2]. Bloquear e alertar |
| IPv4 | 38[.]46[.]218[.]36, 38[.]46[.]218[.]37, 38[.]46[.]218[.]38, 38[.]46[.]218[.]39 | Crítica | Baixadores, o primeiro serve o ts01 no porto 9999 [2]. Bloquear e alertar |
| Domínio | works883[.]xyz, catmore88[.]com | Alta | Reporte de estado do aparelho [2]. Bloquear e alertar |
| IPv4 | 3[.]146[.]93[.]253, 3[.]132[.]75[.]97 | Alta | Servidores centrais de C2, portos 55500 a 55503 e 55600 [2]. Bloquear e alertar |
| Domínio | pxleo5fbca7141b5[.]com | Alta | Redirecionador embutido que devolve o C2 real [2]. Bloquear e alertar |
| Domínio | meiboot[.]com, bitemores[.]com, 6f33933ce4a5c0e1b32fea736a61351a[.]com | Alta | Servidores da primeira geração, lista da Doctor Web [5]. Bloquear e alertar |
| Domínio | dcsdk[.]100ulife[.]com, dcsdkos[.]dc16888888[.]com, 8[.]219[.]89[.]234 | Média | SDK Mzmess [2]. Bloquear e monitorar |
| Domínio | gmslb[.]net, phonemesh[.]org, linkmob[.]org, peercon[.]org, phonegrid[.]org, safernetwork[.]io, lbk-sol[.]com, sklstech[.]com, kyc-holdings[.]com | Média | C2 do plugin popa [2]. Bloquear e monitorar |
| Domínio | jaguar-distributor[.]syslogcollector[.]com, g[.]sxim[.]me, reg[.]sxim[.]me, ref[.]sxim[.]me | Média | Distribuidor do jaguar e C2 do lxhwdg [2]. Bloquear e monitorar |
| Domínio | task[.]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[.]cyou | Média | Tarefas e relatórios da fraude publicitária [2]. Bloquear e monitorar |
| IPv4 | 38[.]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[.]48 | Média | Proxies do jaguar [2]. Bloquear e monitorar |
| Porta | TCP 55500, 55501, 55502, 55503, 55560, 55600 | Alta | Portos de C2 da segunda geração [2]. Alertar sobre TV box |
| Tipo | Indicador | Severidade | Contexto e ação |
|---|---|---|---|
| Arquivo | /system/xbin/vo1d | Crítica | Android.Vo1d.1 [1]. Tratar como infecção |
| Arquivo | /system/xbin/wd | Crítica | Android.Vo1d.3 [1]. Tratar como infecção |
| Arquivo | /data/google/daemon | Crítica | Android.Vo1d.5 [5]. Tratar como infecção |
| Arquivo | /system/bin/debuggerd_real | Alta | Cópia do script que substituiu o debuggerd [1]. Conferir o conteúdo |
| Arquivo | install-recovery.sh, daemonsu | Alta | Alterados com entrada que inicia o wd [1]. Conferir o conteúdo |
| Pacote | com.google.android.gms.stable | Crítica | Aplicativo da segunda geração, imita o Google Play Services [2]. Tratar como infecção |
| Pacote | com.google.android.services | Alta | Variante Vo1d.1.origin [5]. Conferir e remover |
| Arquivo | /data/system/startup/test | Alta | Copiado pelo x.apk [2]. Conferir |
| Biblioteca | liblogs.so, libjaguar.so | Média | Carregadas pelo x.apk e pelo plugin jaguar [2]. Apoio à triagem |
| Artefato | MD5 | Ação |
|---|---|---|
| jbf | 01a692df9deb5e8db620e4fb7e687836 | Caça retroativa |
| jem | de8f69efdb29cdf5fd12dd7b74584696 | Caça retroativa |
| jfz | 456e14aa644bd31d85e0fe6f78d8fc15 | Caça retroativa |
| jhz | 30da72fda6d0f5e3972272332d7fc47b | Caça retroativa |
| jddx | fc7dc3c5306d6a508023160953168a16 | Caça retroativa |
| jeex | 53493b07fe423b1dbdc789803cbac7c1 | Caça retroativa |
| jtxx | 2d6d91c5988dcab2eb4dab1ec55cfbb9 | Caça retroativa |
| s63 | 9e116f9ad2ff072f02aa2ebd671582a5 | Caça retroativa |
| vo1d | b447aaf52c1efad388612f8220969c35 | Caça retroativa |
| ts01 (cifrado) | 6bb3258b688f81dfd03128bccf18823b | Caça retroativa |
| ts01 (decifrado) | d9126d936d505b9fa9a8278fda1daaae | Caça retroativa |
| p6332 (cifrado) | 0c454831bdb679bdd083c5a7cc785733 | Caça retroativa |
| p7332 (cifrado) | bb6b9aec7d4bfa524c7c5117257e4d78 | Caça retroativa |
| p8232 (cifrado) | 6168dafc5a1d297cf33b26b65db315cc | Caça retroativa |
| p8932 (cifrado) | 4f4d5e37feda9e9556c816c100e1de30 | Caça retroativa |
| Detecção | SHA-1 |
|---|---|
| Android.Vo1d.1 | f3732871371819532416cf2ec03ea103a3d61802 675f9a34f6f8dc887e47aa85fffda41c178eb186 637c491d29eb87a30d22a7db1ccb38ad447c8de8 9a8b7a85742330970e067f2b80ada9e295b0e035 42def5b7eb8b1bcc727739cca98efe42c022a3f6 4b1135c6cade7e17548982338bfa9382e3c234f0 |
| Android.Vo1d.3 | 8399c41b0d24c30391d7fba6b634ba29c0440007 ccf8c0cb83160a20fa4c89b028fb63884f7b6a86 e5b16486eebd6c6f7c45197f530e854a4f1373dd cd3c8d0ca99400c86e7e4943e85669f291c52a74 51bd967bd7d59a8a9db8083094603a9d10e61ded 3e941c34af4e07496f515c35eddaff145e06c42a 0b3c8113e996ac4e08552761731f9f97b8f0f6a2 2d2ceddafbce5afe79e3424ebc32dea4d5dff1fe 0d51c034a6deda4d2db21c5852b8ceb8a1e1c68b 51d17a5a1950db3236c9db3249ab0dcb03223d11 9dcc109ac2c5f873ece422aed0687ba21d594e9b e05c1338426a07a49eb3491e08abbc3f96b047b3 e5406ae7482c0062cedafbd118a493ab8b7fe530 c53a76845a78ec9b613442a208b5b2ea8fbecc91 |
| Android.Vo1d.5 | e34c6a13ccbecf7560d4cb8a32872b8aabd5f8db 825df85d82a3de5e4bf6347dcba47e3ec48dbd52 3e21821a1e6edb684f3931d685b908d4a8df3f19 6707cbb2b4e09911c4ada7e24c05e4fbd66a7851 b1cf85aaf1a355677534ea12c19b034c656804ec 89788eabef15303c142fff33dfd560e619595ae5 ed975255eba30345de74936e24b9b3090f26ed7e 182939085a9aa1d6f0e60da31b200cd644522748 3ce81fbb1d968e01e970c4c673a7eeb61c247c85 436f200abfc0db4ae6138b0b2f1ab67af57ca506 0c7f9f33a40a6028dbef416b2385876c87f1bd48 df71b68c4172ef7f23949c643550c40d0f81fa83 6e06d0decf5e211183a751b206dd533f91c13b22 b6a00590a3b0b175fa2ec910744875dd5be995ac |
| Android.Vo1d.1.origin | 7f87f9f059a58eb830d59af5bcb29c612b2a6ccf 9fcdfb9cadabe12283a002755a27a4a68a101949 25f93476cb8dc6a7f727a88ece0c5a0c19157c0b 3a4d90b9911e7e582cf3279b15f2f822a5bb2823 b315be9d64e22960f6072aac60538b13d50da054 618b98eb97f38ffa7b384b0932fd4b92c8877f60 b474c279da7b08fd64f92b0781e2663bf6cbb4b6 |
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].
lxhwdg estava com o C2 fora do ar na análise [2], e sua capacidade real de chamadas remotas é desconhecida./data/google/daemon e quatro domínios da primeira geração.
https://github.com/DoctorWebLtd/malware-iocs/blob/master/Android.Vo1d/README.adoc
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.