作者:Tony,主攻方向:iOS、Android、windows逆向分析。
iOS提权
钥匙串实战
信息时代每个人或多或少都会有一堆账号密码信息,比如常见的应用,微信、支付宝、微博、抖音、12306等。在账号安全性方面,应用开发商通常建议用户把密码设置复杂些。

更要命的是,基本上每个网络账号密码基本是一样的。这让苹果操碎了心,从97年苹果就开始在电脑系统上引入叫钥匙串的概念,iPhone从iOS 3也加入该工具。

钥匙串(KeyChain),简单地说就是一个密码管理系统,它可以存储多种数据,如密码(wifi账号密码、邮箱账号密码、i0S备份密码等),私钥,电子证书和加密笔记等。这些数据在机身和备份中的存储结构是不一致的。

存储路径:/private/var/Keychains/keychain-2.db,以sqlite的格式存储。

机身存储路径

sqlite存储格式
存储路径:/KeyChainDomain/keychain-backup.plist,以plist的格式存储。

备份存储路径

plist存储格式
钥匙串的应用很广,除了三方App,苹果自身也在使用。我们以iOS备份密码为切入点,简单讲解苹果设备端的备份程序(BackupAgent2)如何存取钥匙串。
BackupAgent2是iOS设备端备份程序,它一般和iTunes的AppleMobileBackup.exe进行通信,我们常见的备份、加密、还原等操作都需要用到它。

iTunes备份功能

挂载BackupAgent2
存,即将备份密码写入钥匙串中,这个功能在设置备份密码时会用到。通过提权提取的备份密码我们知道钥匙串元素包含BackupAgent、BackupPassword等字符串,于是我们在IDA中搜索,即可定位到addLocalBackupPassword存操作函数。

备份密码

写入钥匙串
取,即将备份密码从钥匙串中取出,该功能在更改备份密码时会调用到。具体操作步骤同上

验证钥匙串项
目前龙信iOS提权和钥匙串支持列表如下:
| 设备 | iPhone5S, iPhone6,iPhone6P,iPhoneSE, iPhone6S,iPhone6SP,iPhone7,iPhone7P, iPhone8,iPhone8P,iPhone X,iPhone XR,iPhone XS,iPhone XS Max,iPhone 11,iPhone 11 Pro,iPhone 11 Pro Max, iPhone SE2, iPhone 12, iPhone 12 Pro |
||
| iOS版本 | 镜像 | 备份 | 备份密码 |
| 9.0-14.3 | ✔ | ✔ | ✔ |
| 14.4-15.0 | ✔ | ||
同一设备,提权和加密备份的钥匙串解析对比如下:

提权设备钥匙串解析

加密备份钥匙串解析
以上就是本期苹果iOS提权之钥匙串的全部技术知识了, 感谢大家观看,我们下期见。
苏州龙信不忘初心,以专业的技术水准为各级行政执法部门打击违法犯罪活动提供更快速全面的技术问题解决方案。
如有需要请联系我们或您所在地我们的合作伙伴。


