pareto 发表于 2023-12-26 12:59

Key Attestation 密钥认证流程和饶过思路

本帖最后由 pareto 于 2023-12-28 10:34 编辑

# bypassKeyAttestation


## Key Attestation 密钥认证

官方文档介绍: https://source.android.com/docs/ ... eystore/attestation,

个人理解,硬件提供加密功能,同时该硬件模块也会反映设备的软硬件的安全环境。

不想自己实现一套代码的,可以直接用开源的:

https://github.com/vvb2060/KeyAttestation

功能入口 https://github.com/vvb2060/KeyAt ... me/HomeViewModel.ktdoAttestation方法:

### 获取证书链


### 解析证书链


### 对证书链进行校验



### 解析extension,获取设备的状态


格式规范文档: https://source.android.com/docs/ ... testation-extension

简单看下解析extension的内容

解析后部分数据

```agsl
Attest version: Keymaster version 4.1
Attest security: StrongBox
Verified boot Key: AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= (base64)
Device locked: false
Verified boot state: Unverified

//Hash for boot
//Hashtree metadata for system
//Hashtree metadata for vendor
Verified boot hash: nDqAWissOCsw+aWEm7cEcAkCvQngEE+ypQ75UWakxt4= (base64)
```

## 饶过手段

思路比较简单,替换到整条证书链为一个正常设备的证书链即可:

1. 可以通过hook java层代码
2. 写一个magisk插件 https://github.com/doom-man/bypasskeyattestation



hook java层已经比较熟练了,由于后续期望强化对异常设备的检测,大多对抗检测的工具又是走magisk插件实现的,打算用magisk插件实现一遍。

参考 https://github.com/chiteroman/PlayIntegrityFix 大佬写的插件进行学习,对大佬拙劣的模仿。



### 准备证书


将证书文件移动/data/local/tmp 下,并提供读权限;
### 注入目标进程

代码入口在cpp/main.cpp


### 替换证书链

CustomKeyStoreSpi.java

替换后效果

## 结语

我认为设备异常判定,即使各大厂商去自研解决方案,也应该去学习了解系统层面提供的安全检测手段 和 官方在用的判定方案。

Hmily 发表于 2023-12-26 15:50

图片没问题了,网址好像之前格式丢失了完整的,可能还要编辑一下。

Jutean 发表于 2023-12-28 13:45

学习了可以的

xfj1021 发表于 2024-1-6 13:46

收藏一下,学习!!

eijop252023 发表于 2024-1-8 15:48

学习一下,6666

zhangsf123 发表于 2024-1-17 23:00

不错,可以学习一下。

vae666 发表于 2024-11-21 17:02

大佬,怎么不继续发了
页: [1]
查看完整版本: Key Attestation 密钥认证流程和饶过思路