固件级 Android Backdoor via libandroid_runtime Zygote Injection
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。
概述
对 /system/lib[64]/libandroid_runtime.so 的供应链篡改可以劫持 android.util.Log.println_native,从而使 所有由 Zygote 派生的应用都执行攻击者代码。Keenadu backdoor 在 println_native 内添加了单个调用来驱动本地 dropper。由于所有应用进程都会运行这段代码,Android 沙箱边界和每个应用的权限实际上被绕过。
Dropper path: native patch → RC4 → DexClassLoader
- Hooked entry: 在
println_native内额外调用__log_check_tag_count(注入的静态库libVndxUtils.a)。 - Payload storage: RC4-decrypt 的 blob 嵌入在
.so中,写入到/data/dalvik-cache/arm[64]/system@framework@vndx_10x.jar@classes.jar。 - Load & execute:
DexClassLoader加载该 jar 并调用com.ak.test.Main.main。运行时日志使用标签AK_CPP(triage artifact)。 - Anti-analysis: 在 Google/Sprint/T-Mobile 的系统应用中或存在 kill-switch 文件时会中止。
- Zygote role split:
- 在
system_server中 → 实例化AKServer。 - 在任何其他应用中 → 实例化
AKClient。
Binder-based client/server backdoor
AKServer(在system_server中运行)发送受保护的广播:com.action.SystemOptimizeService→ 提供给客户端的 binder 接口。com.action.SystemProtectService→ 提供给下载模块的 binder 接口。AKClient(位于每个应用内)通过广播接收该接口并执行一次attach事务,传递一个 IPC 包装器,使服务器能够在“当前应用进程”内加载任意 DEX。- 暴露的特权操作(通过
SystemProtectService):授予/撤销任意包的任意权限、检索地理位置、以及外传设备信息。这将特权绕过集中化,同时仍在选定目标应用(Chrome、YouTube、launcher、购物应用等)中执行代码。
C2 staging, crypto, and gating
- Host discovery: Base64 → gzip → 使用密钥
MD5("ota.host.ba60d29da7fd4794b5c5f732916f7d5c")和 IV"0102030405060708"进行 AES-128-CFB 解密。 - Victim registration: 收集 IMEI/MAC/model/OS,用密钥
MD5("ota.api.bbf6e0a947a5f41d7f5226affcfd858c")加密,POST 到/ak/api/pts/v4,参数m=MD5(IMEI)和n=w|m(网络类型)。响应中的data采用相同方式加密。 - Activation delay: C2 仅在请求中的 “activation time” 约 2.5 个月后才提供模块,从而使沙箱触发失效。
- Module container (proprietary):
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;
- 完整性:MD5 文件校验 + DSA 签名(只有持私钥的操作员可以发布模块)。
- 解密:AES-128-CFB,密钥
MD5("37d9a33df833c0d6f11f1b8079aaa2dc" + salt),IV"0102030405060708"。
持久化与取证提示
- 供应链植入:恶意静态库
libVndxUtils.a在构建期间被链接到libandroid_runtime.so(例如,vendor/mediatek/proprietary/external/libutils/arm[64]/libVndxUtils.a)。 - 固件审计:固件镜像以 Android Sparse
super.img发布;使用lpunpack(或类似工具)提取分区并检查libandroid_runtime.so中println_native的额外调用。 - 设备上痕迹:存在
/data/dalvik-cache/arm*/system@framework@vndx_10x.jar@classes.jar、logcat 标签AK_CPP,或受保护的广播名为com.action.SystemOptimizeService/com.action.SystemProtectService表示已被入侵。
References
Tip
学习和实践 AWS 黑客技术:
HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)
学习和实践 Azure 黑客技术:
HackTricks Training Azure Red Team Expert (AzRTE)
支持 HackTricks
- 查看 订阅计划!
- 加入 💬 Discord 群组 或 Telegram 群组 或 在 Twitter 🐦 上关注我们 @hacktricks_live.
- 通过向 HackTricks 和 HackTricks Cloud GitHub 仓库提交 PR 来分享黑客技巧。


