Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
android-hardware-attestation-demo — An Android HW Attestation demo | Kitploit
工具/GitHubGitHub/quarkslab/android-hardware-attestation-demo
Android SecurityAuthentication & AuthorizationMobile App PentestingMobile SecurityHardware SecurityLearning & Education
GitHubquarkslab/android-hardware-attestation-demo

android-hardware-attestation-demo

An Android HW Attestation demo

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
39516天前尚未审核

Android 硬件认证绕过 — 演示

本仓库是 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 介绍完整细节;本文件将它们串联在一起。

先决条件

  • 两台实体设备。 认证需要真实硬件;模拟器返回的是软件背书的认证链,后端会拒绝。
    • 一台已 root 的“分析”设备,运行 frida-server 17.16.4,并已安装演示应用。
    • 一台干净、未经修改的设备,安装了认证服务器应用(引导加载程序已锁定,使用 StrongBox 或 TEE)。
  • 同一网络上一台用于运行后端的机器(Python 3,依赖项见 backend/requirements.txt)。
  • JDK 17-21,用于构建两个 Android 应用,可以从 Android Studio 构建,也可以在命令行中使用 Gradle wrapper 构建(./gradlew assembleDebug)。
  • 仅当你需要重新构建 Frida agent 时,才需要工作站上安装 Node 20 或 22 LTS。编译好的 agent(instrumentation/_agent.js)已提交,因此重新构建是可选的。
  • 这三者(设备与后端)之间必须在网络上能够相互访问。

端到端运行

按以下顺序启动各个部分。

  1. 后端。 在设备都能访问到的机器上:

    root@kitploit:~
    cd backend
    pip install -r requirements.txt
    python3 attestation_backend.py      # listens on 0.0.0.0:8080
    
  2. 干净设备。 构建并安装认证服务器应用,然后打开它,点击 START SERVER,记下它显示的 URL,例如 http://192.168.1.42:8080。

  3. 已 root 设备。 启动 frida-server,构建并安装演示应用,打开它,然后输入后端地址(host:port)。

    两个应用都可以从 Android Studio 构建,也可以在命令行中使用 Gradle wrapper 构建(./gradlew assembleDebug,JDK 17-21);详见每个应用的 README。

  4. 中继。 在工作站上:

    root@kitploit:~
    cd instrumentation
    python3 control.py --host <clean-device-ip> --port 8080
    

    控制器会启动演示应用、安装 hook,然后恢复其运行。

  5. 触发。 在演示应用中点击 RUN ATTESTATION。后端返回 有效(valid):中继的认证链报告引导加载程序已锁定。

  6. 阴性对照。 停止 control.py,再次点击 RUN ATTESTATION。演示应用现在会发送已 root 设备自身的认证链,后端会拒绝它。这正是中继所要绕过的检查。

重新构建 agent(仅当你修改 agent/agent.ts 时才需要):

root@kitploit:~
cd instrumentation
nvm use          # Node 22 from .nvmrc
npm install
npm run build    # regenerates _agent.js

仓库结构

root@kitploit:~
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 文章 进行说明。

下载工具