Backdoor Android em nível de firmware via libandroid_runtime Zygote Injection
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Visão geral
A adulteração na cadeia de suprimentos de /system/lib[64]/libandroid_runtime.so pode sequestrar android.util.Log.println_native de modo que todo app forked a partir do Zygote execute código do atacante. O backdoor Keenadu adiciona uma única chamada dentro de println_native que dispara um dropper nativo. Como todos os processos de apps executam esse código, os limites do sandbox do Android e as permissões por app são efetivamente contornados.
Rota do dropper: patch nativo → RC4 → DexClassLoader
- Entrada hookada: chamada extra dentro de
println_nativepara__log_check_tag_count(injected static liblibVndxUtils.a). - Armazenamento do payload: blob criptografado com RC4 embutido no
.so, drop para/data/dalvik-cache/arm[64]/system@framework@vndx_10x.jar@classes.jar. - Carregar & executar:
DexClassLoadercarrega o jar e invocacom.ak.test.Main.main. Runtime logs usam tagAK_CPP(artefato de triagem). - Anti-análise: aborta em apps de sistema Google/Sprint/T-Mobile ou se arquivos kill-switch existirem.
- Divisão de papéis do Zygote:
- Em
system_server→ instanciaAKServer. - Em qualquer outro app → instancia
AKClient.
Backdoor client/server baseado em Binder
AKServer(rodando emsystem_server) envia broadcasts protegidos:com.action.SystemOptimizeService→ interface binder para clientes.com.action.SystemProtectService→ interface binder para módulos baixados.AKClient(dentro de cada app) recebe a interface via broadcast e realiza uma transaçãoattach, passando um wrapper IPC para que o servidor possa carregar DEX arbitrário dentro do processo do app atual.- Operações privilegiadas expostas (via
SystemProtectService): conceder/revogar qualquer permissão para qualquer pacote, recuperar geolocalização e exfiltrar informações do dispositivo. Isso centraliza o bypass de privilégios enquanto ainda executa código em apps alvo escolhidos (Chrome, YouTube, launcher, apps de compras, etc.).
Estágios C2, criptografia e gating
- Descoberta de host: decodificar Base64 → descompactar gzip → descriptografar AES-128-CFB com a chave
MD5("ota.host.ba60d29da7fd4794b5c5f732916f7d5c"), IV"0102030405060708". - Registro da vítima: coleta IMEI/MAC/modelo/SO, criptografa com a chave
MD5("ota.api.bbf6e0a947a5f41d7f5226affcfd858c"), POST para/ak/api/pts/v4com paramsm=MD5(IMEI)en=w|m(tipo de rede). O campodatana resposta é cifrado da mesma forma. - Atraso de ativação: o C2 entrega módulos somente após ~2,5 meses desde um “tempo de ativação” na requisição, dificultando detonações em sandbox.
- Container de módulo (proprietário):
struct KeenaduPayload {
int32_t version;
uint8_t padding[0x100];
uint8_t salt[0x20];
KeenaduChunk config; // size + data
KeenaduChunk payload; // size + data
KeenaduChunk signature;// size + data
} __packed;
- Integridade: MD5 file check + DSA signature (only operator with private key can issue modules).
- Descriptografia: AES-128-CFB, key
MD5("37d9a33df833c0d6f11f1b8079aaa2dc" + salt), IV"0102030405060708".
Persistência & dicas forenses
- Inserção na cadeia de suprimentos: biblioteca estática maliciosa
libVndxUtils.alinked intolibandroid_runtime.sodurante a compilação (e.g.,vendor/mediatek/proprietary/external/libutils/arm[64]/libVndxUtils.a). - Auditoria de firmware: firmware images ship as Android Sparse
super.img; uselpunpack(or similar) to extract partitions and inspectlibandroid_runtime.sofor extra calls inprintln_native. - Artefatos no dispositivo: presença de
/data/dalvik-cache/arm*/system@framework@vndx_10x.jar@classes.jar, logcat tagAK_CPP, ou broadcasts protegidos nomeadoscom.action.SystemOptimizeService/com.action.SystemProtectServiceindicam comprometimento.
Referências
Tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.


