对于从事手机取证工作的人来说,iOS的keychain(钥匙串)数据想必大家都有所了解,根据苹果公司的介绍,iOS设备中的Keychain是一个安全的存储容器,可以用来为不同应用保存敏感信息比如用户名,密码,网络密码,认证令牌。简单来讲,keychain就是iOS的密码管理系统。
本文不去深究keychain的结构和原理,有兴趣的可以自行百度。引用互联网对于keychain的介绍,Keychain内部可以保存很多的信息。每条信息作为一个单独的keychain item,keychain item一般为一个字典,每条keychain item包含一条data和很多attributes。举个例子,一个用户账户就是一条item,用户名可以作为一个attribute , 密码就是data。
下面这张图片形象的说明了keychain(钥匙串)的意义,就好比一串钥匙,开启不同的锁。
如此核心的数据iOS系统必然不允许随便访问,keychain数据通过加密存储在SQLite数据库中,具体的存储位置是/private/var/Keychains/keychain-2.db。
在iTunes备份中,keychain数据库以plist文件保存(keychain-backup.plist),其内容同样被加密,需要解密才能还原数据。加密备份和不加密备份均可备份部分keychain数据,区别在于加密方式:未加密备份中,数据是基于每个iOS设备独有的硬件专用密钥来加密的。加密备份则使用备份密码进行加密。这也是为什么只有加密备份才能解析出keychain数据的原因所在。下图是使用盘古石手机取证分析系统分别解析同一部手机的加密和未加密的iTunes备份的keychain解析结果展示。
上图中对解析结果展开后我们能看到,加密的iTunes备份可以解析出连接过的WiFi密钥明文以及曾经登录过的苹果ID等。
盘古石手机取证系统使用备份提取方式对iOS设备进行提取时,为了能够解析keychain数据,针对未设置iTunes备份加密的设备,会采用强制备份加密方式进行提取,提取完毕后会取消备份密码。针对已设置iTunes备份加密的设备,则直接备份,解析时提示输入备份密码。(注:备份密码可通过盘古石手机取证分析系统直接提取备份密码明文)
虽然通过对iTunes的加密备份进行解析可以获取到部分keychain数据,但因为iOS对于keychain保护级别的不同,即使iTunes加密备份也无法备份完整keychain数据,那么要解析完整keychain数据,只能通过全盘文件系统提取的方式。
下面我们看如何通过盘古石手机取证分析系统实现keychain的完整解析。
盘古石手机取证分析系统在提取iOS设备全盘文件系统时,当提权成功后在进行数据传输前,提取端会弹出如下提示:
提示简单明了,就是告知操作人员,深度提取keychain的操作。一般我们会选择“确定”进行深度提取,但如果选择了“取消”会是什么情况呢?下图是选择深度和不选择深度提取后分别获得的keychain-2.db数据库,通过哈希比对发现,即便操作人员选择“取消”,软件依旧会提取keychain数据库,只不过部分数据无法解密而已。
我们针对选择深度提取Keychain和不选择深度提取Keychain两种方式对同一部手机进行了全盘数据提取,对解析结果进行了对比,见下图:
区别很直观,通过深度提取Keychain我们可以解析出浏览器保存的密码明文和备份密码的明文(测试手机设置了备份加密)。
总结一下,如果基于案情需要,使用盘古石手机取证分析系统提取和解析keychain数据,我们有以下几种方式可以选择,但不同方式提取的深度不同,解析出的数据也不同。操作人员可根据实际需要选择不同的方式。
提取和解析方式 | Keychain数据解析 |
iTunes不加密备份解析 | 无 |
iTunes加密备份解析 | 部分 |
备份提取(未设置备份密码) | 部分 |
备份提取(已设置备份密码) | 部分 |
全盘提取(不选择深度提取keychain) | 部分 |
全盘提取(深度提取keychain) | 完整 |
在条件允许的情况下,建议操作人员选择全盘提取+深度提取keychain,这样可以解析出完整的keychain数据。
来源:盘古石取证,作者:高涛
来源:51CTO
作者:电子物证
链接:https://blog.csdn.net/xCnhYKoHj3eK/article/details/100439180