在苹果的封闭系统世界,钥匙串是macOS、iOS及其衍生产品watchOS和tvOS的核心和最安全的组件之一。钥匙串旨在保护用户最有价值的隐私信息,这包括对身份验证令牌、加密钥匙、信用卡数据等的保护。通常来讲,终端用户是非常熟悉钥匙串常用的一个特定功能的:存储各种密码的能力,这包括网站(Safari和第三方网络浏览器)、邮件账户、社交网络、即时通讯工具、银行账户以及几乎所有其他所有内容的密码,某些记录(如Wi-Fi密码)是要通过系统访问的,而某些记录只能通过各自的应用程序访问。iOS 12进一步开发了密码自动填写功能,允许用户在许多第三方应用程序中使用存储在Safari中的密码。
如果可以访问保存在钥匙串中的信息,则可以获得设备所有者管理的所有内容的钥匙,其中就包括在线帐户、银行数据、在线购物、社交信息等等。
不过,苹果却为开发人员提供了完整的钥匙串服务文档,并在iOS安全指南中提供了更多详细信息。
在本文中,我们收集了目前所有的关于访问和解密钥匙串的方法。
方法一: 交互式(使用iOS设置)
你是否尝试过打开“设置”→“密码和帐户” →“网站和应用密码”? 要访问该设置,即使设备已解锁,你也必须输入屏幕锁定密码或通过Touch ID或面部识别码进行身份验证。
此时,你将能够以交互方式浏览存储密码列表。 不过,不要高兴太早,交互的内容是无法轻易被导出的。要导出必须得要特定密码,你必须将其复制到剪贴板或通过AirDrop发送,另外无法一次导出多个密码。AirDrop是苹果公司iOS和Mac OS系统下的一个用于短距离无线传输数据的功能。它发布自苹果2013年的WWDC大会上,最早支持的iOS设备为iPhone 5,目前其在国内的官方名称为隔空投送。
在iOS设置中浏览密码时,你很快就会发现缺少某些东西。比如,你的iPhone上安装了Facebook或Twitter应用程序吗?如果安装了,你就能在设置中看到你的Facebook或Twitter密码吗?当让不可能,除非你在Safari中使用过其中的密码(例如,单点登录),否则你将无法在iOS设置中看到这些密码。原因就是,这些类型的密码不会被各自的应用程序保存,这些应用程序使用的是身份验证令牌。
如上所示,信用卡的数据会被保存在以下位置:“设置”→“Safari” →“自动填写”→“保存信用卡”。
出于某些原因,iOS不允许查看或编辑Wi-Fi密码。不过,你可以在macOS中做到这一点。
方法一小结
· 复杂性:相对简单;
· 优点:无需额外的软件工具;
· 缺点:需要访问物理设备(解锁);逐个复制粘贴(不能同时导出所有记录);仅限网站密码和信用卡;
方法2:macOS钥匙串工具
如果除了iPhone之外你还有一台Mac,并且你的密码通过iCloud同步(稍后会详细介绍),则你可以使用Mac上内置的Keychain Access(钥匙串访问)工具。“钥匙串访问”是一款 macOS 应用,可以储存您的密码和帐户信息,并减少必须记住和管理的密码数量。
访问网站、电子邮件帐户、网络服务器或其他受密码保护的项目时,你可以选取记住密码或存储密码。如果你选取存储密码,它将会存储在你的钥匙串中,这样就可不必记住或每次都输入密码了。
钥匙串访问工具也还是每次显示一个条目,你每次都必须输入钥匙串密码。值得庆幸的是,在较新版本的Macbook上,你可以使用Touch ID代替密码。
方法二小结
· 复杂性:简单;
· 优点:无需额外的软件;所有钥匙串数据都可用;
· 缺点:需要访问与Mac同步的iCloud;逐个复制粘贴(每次都必须输入钥匙串密码);
方法3:解密完整的macOS 钥匙串
你可以使用Elcomsoft Phone Digger自动提取所有这些密码,而不是手动浏览记录并逐个导出密码。你需要从正在分析的Mac中复制用户和系统钥匙串文件。为了解密用户钥匙串,你将必须使用用户的密码。系统钥匙串可通过管理员权限访问的钥匙文件进行解密。
方法三小结
· 复杂性:中等;
· 优点:所有钥匙串数据(用户和系统钥匙串)都可用;
· 缺点:需要访问与Mac同步的iCloud;
· 注意:必须用到用户登录和钥匙串密码。
方法4:从加密的iTunes备份中提取钥匙串
如果你可以访问iPhone,则可以创建一个受密码保护的iTunes备份。 “密码保护”部分是绝对必需的。如果你不设置密码,或者在没有密码的情况下分析现有备份,则无法访问钥匙串。要查看钥匙串,就必须将备份加载到Elcomsoft Phone Breaker并使用“Explore keychain”功能。你可以注意到许多钥匙串项目未被解密,这是因为这些钥匙串记录具有更高的保护等级,并且只能由创建它们的设备访问(解密需要一个特定于硬件的密匙)。
这还不是唯一棘手的问题,如果你不知道现有备份的备份密码,那么破解它并不容易。虽然我们过去常常看到iOS 4-10.1每秒数万个密码的恢复速度,但iOS 11和12等最新版本的iOS使用强大的GPU将这个数字降低到每秒几百个密码。但是,如果你的设备本身运行ios11或ios12,只需使用“重置所有设置”命令重置备份密码即可。注意,这将删除Wi-Fi密码,但不会删除存储在钥匙串中的用户密码。
方法四小结
· 复杂性:中等;
· 优点:只需要iTunes备份(使用已知密码)或设备本身;
· 缺点:使用此方法破解iOS 10.2版本以上的密码几乎是不可能的;并非所有记录都可以解密;
· 注意:对于iOS 11以上的版本,可以重置备份密码(但Wi-Fi密码会被删除)。
方法5:越狱和物理获取
这是所有方法中最复杂但最强大的,如果你有一个可以越狱的设备,你将能够解密所有钥匙串记录,包括具有最高保护等级的记录。在撰写本文时,iOS版本(包括iOS 11.3.1)都存在越狱的情况,只要使用Elcomsoft iOS取证工具包,一切不成问题。如果你成功安装了越狱程序(在这些版本上安装并不容易),剩下的就只是点击几下操作而已。
iPhone解锁设备制造商Grayshift的GrayKey设备允许从非越狱的iPhone中提取钥匙串,以及文件系统的副本。价格不但非常昂贵(为15万美元),而且目前只能在美国、加拿大、英国、澳大利亚和新西兰等特定国家的特定机构中使用。不过它也仅适用于有限的iOS版本(由于某些原因,兼容性列表是保密的)。
方法五小结
· 复杂性:很难;
· 优点:允许访问全部的钥匙串记录;
· 缺点:需要访问解锁设备;且必须成功越狱;
· 注意:GrayKey允许对iOS 11.4的钥匙串进行提取,可能还有一些iOS 12的版本(没有越狱也是可以的),但仅限于几个国家地执法部门,费用很贵。
方法6:iCloud 钥匙串
从iOS 7开始,钥匙串可以通过iCloud与其他设备同步。这对解密密码是个好消息,因为iCloud提取不需要访问设备本身。但是,你必须得用到用户的Apple ID和密码,以及来自第二个身份验证因素的一次性代码(除非你在已信任的设备上执行提取)。此外,你还需要注册到苹果的“Trusted Circles”中的iOS或macOS设备的屏幕锁定密码或系统密码。
不过,目前许多钥匙串项目还未同步到iCloud。苹果在设置iCloud 钥匙串一文写道:
“iCloud 钥匙串会自动记录一些内容,所以不需要人工记录。”
iCloud 钥匙串会自动填写你的信息,例如你在任何设备上登陆过的Safari用户名和密码、信用卡、Wi-Fi网络和社交网站。除了密码同步外,一些应用程序(例如Facebook和LinkedIn至少)还同步身份验证令牌。令牌比密码更难使用,你不能手动使用它们来访问所需的网站或应用程序。但是,令牌在某种程度上优于密码,因为使用它们可以绕过第二个身份验证因素(如果使用2FA)。
iCloud钥匙串可以通过Elcomsoft Phone Breaker获得,你可以用它来浏览本地(iTunes)的钥匙串。下载的钥匙串看起来就像iTunes备份中的钥匙串,不过记录的数量将有所不同,因为一些记录将丢失。不过,你可能会看到一些本地备份中没有看到的额外记录。
方法六小结
· 复杂性:中等;
· 优点:不需要访问设备;可以从所有同步设备访问钥匙串数据;
· 缺点:需要iCloud凭证(包括第二个因素)和设备密码,以及没有2FA的帐户的iCloud安全代码;许多记录不可用;
· 注意:如果满足所有要求,你还可以在iCloud和与iCloud同步的健康数据中访问iMessage。
总结:通过钥匙串解密的好处
即使你不是在执法部门工作,在许多情况下,你也可能需要访问钥匙串数据。如果你是为执法部门工作,你就会更清楚这些数据的重要性。
如果你重置了设备,则钥匙串将被完全删除而无法恢复。如果你碰巧只有一个iTunes备份却忘了设置密码,那么你就永远无法对密码进行解密。在这种情况下,使用iCloud钥匙串可能是你唯一的希望。
如果你重置设备上的网络设置,则会删除Wi-Fi密码。如果你有大量已保存的网络,请务必事先保存。
如果你成功地提取了钥匙串,那么接下来你可能想要做的是从钥匙串中发现的密码生成一个词汇表或字典。这个词汇表或字典在攻击设备或帐户所有者的其他数据(文档、数据库或系统)的密码时非常有效,尤其是在使用分布式密码恢复时。