首页
社区
课程
招聘
[原创]Key Attestation 密钥认证流程和饶过思路
发表于: 2023-12-7 19:20 19585

[原创]Key Attestation 密钥认证流程和饶过思路

2023-12-7 19:20
19585

官方文档介绍: 1dfK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6L8%4g2J5j5$3g2Q4x3X3g2S2L8X3c8J5L8$3W2V1i4K6u0W2j5$3!0E0i4K6u0r3k6r3!0U0M7#2)9J5c8Y4y4W2j5%4g2J5K9i4c8&6i4K6u0r3k6X3g2S2N6s2g2J5k6i4y4Q4x3V1k6C8k6i4W2K6N6r3!0J5k6g2)9J5c8X3q4@1N6r3g2K6N6r3q4@1K9h3!0F1i4@1g2r3i4@1u0o6i4K6S2o6

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

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

9abK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6$3N6X3t1J5x3o6j5H3i4K6u0r3d9$3g2&6b7i4c8@1k6i4y4@1j5i4c8A6L8$3^5`.

功能入口 29cK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6$3N6X3t1J5x3o6j5H3i4K6u0r3d9$3g2&6b7i4c8@1k6i4y4@1j5i4c8A6L8$3&6Q4x3V1k6T1L8r3!0T1i4K6u0r3L8h3q4K6N6r3g2J5i4K6u0r3j5i4m8H3i4K6u0r3M7%4u0U0i4K6u0r3L8h3q4A6L8W2)9J5c8X3A6S2N6X3q4Q4x3V1k6A6L8#2)9J5c8X3N6A6N6r3S2#2j5W2)9J5c8Y4k6$3j5U0t1H3y4U0m8Q4x3V1k6C8k6i4W2S2N6s2c8W2M7%4c8S2N6r3W2G2L8W2)9J5c8X3S2G2L8h3g2Q4x3V1k6t1L8$3#2W2g2X3W2W2N6@1#2G2k6r3g2D9i4K6u0W2K9%4b7`. doAttestation方法:

格式规范文档: 2faK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6L8%4g2J5j5$3g2Q4x3X3g2S2L8X3c8J5L8$3W2V1i4K6u0W2j5$3!0E0i4K6u0r3k6r3!0U0M7#2)9J5c8Y4y4W2j5%4g2J5K9i4c8&6i4K6u0r3k6X3g2S2N6s2g2J5k6i4y4Q4x3V1k6C8k6i4W2K6N6r3!0J5k6g2)9J5c8X3q4@1N6r3g2K6N6r3q4@1K9h3!0F1i4K6t1K6j5i4c8@1k6i4y4@1j5i4c8A6L8$3&6Q4x3X3c8W2P5s2c8W2L8Y4y4A6L8$3^5`.

简单看下解析extension的内容

解析后部分数据

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

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

参考 7f2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6U0K9r3W2@1k6i4u0G2L8h3q4F1i4K6u0r3f1r3I4S2P5f1W2F1N6r3g2Y4M7X3W2@1P5f1k6A6P5l9`.`. 大佬写的插件进行学习,对大佬拙劣的模仿。

将证书文件移动/data/local/tmp 下,并提供读权限;

代码入口在cpp/main.cpp


[招生]系统0day安全-IOT设备漏洞挖掘(第6期)!

最后于 2023-12-8 10:41 被pareto编辑 ,原因: 调整图片
收藏
免费 7
支持
分享
最新回复 (16)
雪    币: 4166
活跃值: (31191)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2023-12-8 10:26
1
雪    币: 6171
活跃值: (1838)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
3
RootOfTrust这部分信息在bootloader的启动过程中就被设置进TEE了,用TEE的证书签发时,就包含了这部分信息,且存放在证书的extension中,这里面包含了设备BL状态和启动状态等信息,因为校验的是链上的所有证书(通常3个),这部分信息是无法篡改的,因此这部分,针对本地的证书链校验,hook掉证书的verify就可以了,没必要替换证书,因为人家真的把证书传上服务器(目前是有的)去校验是不是谷歌的证书的话,即便通过,也存在相应的检测点
2023-12-11 10:15
1
雪    币: 69
活跃值: (360)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
4
试了一下,没有生效呢, 设备还是unlock
2023-12-11 10:17
0
雪    币: 69
活跃值: (360)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
思路比较简单,替换到整条证书链为一个正常设备的证书链?   正常的证书怎么获取到呢?
2023-12-11 10:28
0
雪    币: 458
活跃值: (2801)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
跟大师傅沟通下 ,目前unlock 只是针对key attesation ,还有challenge 码的问题需要解决,还会做进一步研究强化功能
2023-12-11 10:49
0
雪    币: 458
活跃值: (2801)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
7
私聊 我看看问题呢
2023-12-11 10:50
0
雪    币: 458
活跃值: (2801)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
8
pedies 试了一下,没有生效呢, 设备还是unlock
私信下 看看问题
2023-12-11 10:51
0
雪    币: 458
活跃值: (2801)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
9
月落之汀 RootOfTrust这部分信息在bootloader的启动过程中就被设置进TEE了,用TEE的证书签发时,就包含了这部分信息,且存放在证书的extension中,这里面包含了设备BL状态和启动状态等 ...

是的 也可以

最后于 2023-12-11 14:42 被pareto编辑 ,原因:
2023-12-11 10:53
0
雪    币: 458
活跃值: (2801)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
10
pedies 试了一下,没有生效呢, 设备还是unlock
或者直接提issue
2023-12-11 11:08
0
雪    币: 199
活跃值: (936)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
月落之汀 RootOfTrust这部分信息在bootloader的启动过程中就被设置进TEE了,用TEE的证书签发时,就包含了这部分信息,且存放在证书的extension中,这里面包含了设备BL状态和启动状态等 ...
师傅,如果上传。有思路解决么
2023-12-13 00:01
0
雪    币: 458
活跃值: (2801)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
12
zpazz 师傅,如果上传。有思路解决么[em_35]
利用一个安全的中间人提供证书,
2023-12-13 10:15
0
雪    币: 6171
活跃值: (1838)
能力值: ( LV4,RANK:156 )
在线值:
发帖
回帖
粉丝
13
zpazz 师傅,如果上传。有思路解决么[em_35]
理论上你能搞到TEE的私钥(RSA和ECC两组)才行,这个是生产的时候就已经被厂家写进去的,而且大概是10k设备用一组(谷歌是这么说的,实际不清楚),没那么简单就可以读出来,不过有些设备TEE本身就有问题,就是取不到的,还有个办法就是楼主说的中间人了,给另外一台环境一致的设备代签就可以了
2023-12-13 11:38
0
雪    币: 225
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
14
月落之汀 RootOfTrust这部分信息在bootloader的启动过程中就被设置进TEE了,用TEE的证书签发时,就包含了这部分信息,且存放在证书的extension中,这里面包含了设备BL状态和启动状态等 ...
可以通过自定义rom 解决把。直接修改bl状态为lock可以么
2023-12-30 17:38
0
雪    币: 757
活跃值: (1757)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
pedies 思路比较简单,替换到整条证书链为一个正常设备的证书链? 正常的证书怎么获取到呢?
有思路了嘛,大佬
2024-11-21 16:23
0
雪    币: 0
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16

看起来没问题,实则还是没办法绕过去:

1,hook掉证书的verify就可以了,没必要替换证书,因为人家真的把证书传上服务器(目前是有的)去校验是不是谷歌的证书的话,即便通过,也存在相应的检测点 --------------------------》 都是在服务器验证,谁还在本地校验,服务器校验完成后结果就保存在服务器端。本地hook了没啥用,就如hook微信修改余额,只能骗骗人而已,真正的钱还是那么多。

2, 用中间代理人,看起来可以,但还是不行, 在证书链返回的数据中,Software Enforced Authorization List: 中Attestation Application ID: 里面有Package Infos和Signature Digests 这个是调用app的签名,也就是作为中间人在正常手机中获取证书链的app的签名要与google的app一样,又只能hook Google app或正常手机中hook包签名信息,这样又要破坏正常手机,就成了死循环。

目前也在寻找其它合适解决办法,还没有其它思路讨论呢

最后于 2024-12-11 10:54 被mb_dmfadzfi编辑 ,原因:
2024-12-11 10:40
1
雪    币: 458
活跃值: (2801)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
17
兄弟们 G
2024-12-12 18:08
0
游客
登录 | 注册 方可回帖
返回