
An Android HW Attestation demo
本仓库是 Quarkslab 文章 的配套代码,该文章介绍 Android 硬件密钥认证(hardware Key Attestation),本仓库用于对其进行说明。
这是一个小型的端到端概念验证(proof of concept),展示了一种简单的绕过方式:已 root 手机上的分析人员通过将认证中继到第二台干净设备,从而绕过后端的硬件认证检查。整个过程没有任何伪造。由未经修改的设备生成、且绑定到后端自身 nonce 的真实认证链,会被转发以替代已 root 设备被拒绝的认证链。
适用范围与伦理。 这是面向安全研究的教育材料。它使用明文 HTTP,并刻意禁用了安全检查(各处均标有“仅限演示”标记)。请仅在可信的本地网络中,针对你自己的设备和自己的后端运行。
已 root 设备的 Keystore 认证会报告引导加载程序(bootloader)已解锁,因此后端会拒绝它。分析人员并不攻击加密机制,而是拦截应用自身的认证调用,并为同一个挑战(challenge)实时换入从干净设备获取的认证链。
该 hook 会替换演示应用中的 KeystoreAttestation.generateAttestedKey(challenge),并且从不调用本机 Keystore,因此已 root 设备的认证链永远不会被生成。中继的认证链是真实的,能够通过后端的 verified boot 和硬件背书检查。
| 组件 | 路径 | 作用 | 运行位置 |
|---|---|---|---|
| 演示客户端 | apps/QuarkslabAttestationDemo/ | 目标应用。请求 nonce、执行认证、将认证链发送到后端。由 Frida 进行 hook。 | 已 root 的分析设备 |
| 认证服务器 | apps/QuarkslabAttestationServer/ | 认证预言机(oracle)。为给定的 nonce 生成真实的认证链。不校验任何内容。 | 干净、未经修改的设备 |
| 插桩(Instrumentation) | instrumentation/ | Frida agent(即 hook)以及将 nonce 中继到干净设备的控制器。 | 分析人员工作站 + 已 root 设备 |
| 后端 | backend/ | 依赖方(relying party)。签发 nonce 并校验认证链。 | 设备可访问到的任意机器 |
每个组件都有自己的 README 介绍完整细节;本文件将它们串联在一起。
frida-server 17.16.4,并已安装演示应用。backend/requirements.txt)。./gradlew assembleDebug)。instrumentation/_agent.js)已提交,因此重新构建是可选的。按以下顺序启动各个部分。
后端。 在设备都能访问到的机器上:
cd backend
pip install -r requirements.txt
python3 attestation_backend.py # listens on 0.0.0.0:8080
干净设备。 构建并安装认证服务器应用,然后打开它,点击 START SERVER,记下它显示的 URL,例如 http://192.168.1.42:8080。
已 root 设备。 启动 frida-server,构建并安装演示应用,打开它,然后输入后端地址(host:port)。
两个应用都可以从 Android Studio 构建,也可以在命令行中使用 Gradle wrapper 构建(./gradlew assembleDebug,JDK 17-21);详见每个应用的 README。
中继。 在工作站上:
cd instrumentation
python3 control.py --host <clean-device-ip> --port 8080
控制器会启动演示应用、安装 hook,然后恢复其运行。
触发。 在演示应用中点击 RUN ATTESTATION。后端返回 有效(valid):中继的认证链报告引导加载程序已锁定。
阴性对照。 停止 control.py,再次点击 RUN ATTESTATION。演示应用现在会发送已 root 设备自身的认证链,后端会拒绝它。这正是中继所要绕过的检查。
重新构建 agent(仅当你修改 agent/agent.ts 时才需要):
cd instrumentation
nvm use # Node 22 from .nvmrc
npm install
npm run build # regenerates _agent.js
apps/
QuarkslabAttestationDemo/ target client app (Android Studio project)
QuarkslabAttestationServer/ clean-device attestation oracle (Android Studio project)
instrumentation/ Frida agent + relay controller
backend/ Python attestation validator
LICENSE MIT
版权所有 © 2026 Quarkslab。基于 MIT 许可证授权。参见 LICENSE。
本仓库对 Quarkslab 文章 进行说明。