首页
社区
课程
招聘
[原创]利用root权限盗用AndroidKeystore中其他APP的密钥
发表于: 2017-11-22 13:02 8400

[原创]利用root权限盗用AndroidKeystore中其他APP的密钥

2017-11-22 13:02
8400

弄这个主要是为了篡改QQ的计步数据文件files/step.info,之前这个文件是加密的,但是密钥是写在代码里,后来QQ改变了方法,使用签名files/stepSign.infostep.info进行校验。盗用QQ的step_info密钥可以篡改step.info并生成相应的签名文件stepSign.info步数修改器

把结论写在前面。
在AndroidKeystore中,每个APP有自己的密钥命名空间,APP1中的TestKey和APP2中的TestKey是不同的。在/data/misc/keystore/user_x/目录下有各个APP的密钥条目,如10174_USRPKEY_step_info,其中前面的10174是APP的UID,step_info是密钥的别名(alias)。在root的手机上,通过文件的复制,更改密钥条目文件的UID,就可以盗用其他APP的密钥条目。

首先介绍一下什么是AndroidKeystore

详情请参考Android密钥库系统

列出条目

签署数据

验证数据

AndroidKeystore的数据存储在/data/misc/keystore/user_x/目录下。

.masterkey是AndroidKeystore的主密钥。10174_USRCERT_step_info10174_USRPKEY_step_info是APP(QQ)生成的密钥和证书,其中10174是APP的UID,step_info是密钥的别名(alias)。

AndroidKeystore和其他Android服务一样,分为Java层和native层,其native层主要在/platform/system/security/keystore/keystore.cpp中实现。

首先AndroidKeystore利用/dev/urandom获取随机性。

AndroidKeystore的初始化函数如下:

初始化的整个过程是:1. generateMasterKey函数利用/dev/urandom随机生成mMasterKeymSalt;2. writeMasterKey函数根据pw(解锁密码?)和mSalt生成一个AES加密密钥,对mMasterKeymSalt进行加密;3. setupMasterKeys函数根据mMasterKey设置mMasterKeyEncryptionmMasterKeyDecryption。也就是这个mMasterKey是用来加密或解密APP生成或者导入的密钥。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 1759
活跃值: (2334)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
2
2020-6-2 16:24
0
游客
登录 | 注册 方可回帖
返回
//