Puerta trasera de Android a nivel firmware vía libandroid_runtime Zygote Injection
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Descripción general
La manipulación de la cadena de suministro de /system/lib[64]/libandroid_runtime.so puede secuestrar android.util.Log.println_native de modo que todas las apps forked desde Zygote ejecuten código del atacante. La puerta trasera Keenadu añade una única llamada dentro de println_native que impulsa un dropper nativo. Dado que todos los procesos de apps ejecutan este código, los límites del sandbox de Android y los permisos por app se eluden efectivamente.
Dropper path: native patch → RC4 → DexClassLoader
- Entrada hookeada: llamada extra dentro de
println_nativea__log_check_tag_count(librería estática inyectadalibVndxUtils.a). - Almacenamiento del payload: blob embebido en el
.soy desencriptado con RC4, volcado a/data/dalvik-cache/arm[64]/system@framework@vndx_10x.jar@classes.jar. - Carga y ejecución:
DexClassLoadercarga el jar e invocacom.ak.test.Main.main. Los logs en tiempo de ejecución usan la etiquetaAK_CPP(artefacto de triage). - Anti-análisis: aborta en apps de sistema de Google/Sprint/T-Mobile o si existen archivos de kill-switch.
- División de roles de Zygote:
- En
system_server→ instanciarAKServer. - En cualquier otra app → instanciar
AKClient.
Puerta trasera cliente/servidor basada en Binder
AKServer(ejecutándose ensystem_server) envía broadcasts protegidos:com.action.SystemOptimizeService→ interfaz binder para clientes.com.action.SystemProtectService→ interfaz binder para módulos descargados.AKClient(dentro de cada app) recibe la interfaz vía broadcast y realiza una transacciónattach, entregando un wrapper IPC para que el servidor pueda cargar DEX arbitrario dentro del proceso de la app actual.- Operaciones privilegiadas expuestas (via
SystemProtectService): otorgar/revocar cualquier permiso para cualquier paquete, obtener geolocalización, y exfiltrar información del dispositivo. Esto centraliza el bypass de privilegios mientras se sigue ejecutando código en apps objetivo seleccionadas (Chrome, YouTube, launcher, apps de compras, etc.).
Preparación C2, crypto y gating
- Descubrimiento de host: Base64 → gzip → AES-128-CFB desencriptado con la clave
MD5("ota.host.ba60d29da7fd4794b5c5f732916f7d5c"), IV"0102030405060708". - Registro de la víctima: recopila IMEI/MAC/modelo/SO, encripta con la clave
MD5("ota.api.bbf6e0a947a5f41d7f5226affcfd858c"), POST a/ak/api/pts/v4con paramsm=MD5(IMEI)yn=w|m(tipo de red). La respuestadataestá encriptada de forma idéntica. - Retraso de activación: el C2 sirve módulos solo después de ~2.5 meses desde un “activation time” en la petición, lo que frustra detonaciones en sandbox.
- Contenedor de módulos (propietario):
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;
- Integridad: verificación de archivo MD5 + firma DSA (solo el operador con la clave privada puede emitir módulos).
- Descifrado: AES-128-CFB, clave
MD5("37d9a33df833c0d6f11f1b8079aaa2dc" + salt), IV"0102030405060708".
Persistencia & consejos forenses
- Ubicación en la cadena de suministro: biblioteca estática maliciosa
libVndxUtils.aenlazada enlibandroid_runtime.sodurante la compilación (por ejemplo,vendor/mediatek/proprietary/external/libutils/arm[64]/libVndxUtils.a). - Auditoría de firmware: las imágenes de firmware se entregan como Android Sparse
super.img; uselpunpack(o similar) para extraer particiones e inspeccionarlibandroid_runtime.soen busca de llamadas adicionales enprintln_native. - Artefactos en el dispositivo: la presencia de
/data/dalvik-cache/arm*/system@framework@vndx_10x.jar@classes.jar, el tag de logcatAK_CPP, o broadcasts protegidos llamadoscom.action.SystemOptimizeService/com.action.SystemProtectServiceindican compromiso.
Referencias
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


