保护iPhone备份

今天,我想谈谈与保护备份,绕过此保护(递归)和防止绕过保护(双递归)有关的iOS鲜为人知的功能。 锦上添花的简短说明将使您可以绕过针对备份保护旁路的保护(例如,三阶递归),以及有助于防止绕过备份保护旁路的保护的建议(出色的四阶递归-我认为赢得了勋章!)。

备份保护:一切都很简单


iOS备份系统-真正脱颖而出。 在BlackBerry 10中,我们在本地备份方面看到了类似的情况,但是该系统已失效,并且BlackBerry从未进入云。 (顺便说一句,在BlackBerry 10 OS中,备份始终被加密,密钥始终存储在云中-用户的BlackBerry ID或公司网络中)。 备份到“云”和Windows Phone 8.1以及Windows 10移动版中是相当不错的-但是这些系统现在已经死了,并且其中从来没有本地备份。

iOS的唯一竞争对手是Android系统,其备份专门在云中创建(我们将忽略adb backup命令:此命令实际保存的数据比进入云的数据还要少)。 是的,某些技巧将有助于获取更多数据,但是Android中的备份远非理想。

作为本文的一部分,我们主要对本地备份感兴趣。 我之前在我们的博客上写过关于他们内容的文章 。 例如,可以在iTunes应用程序中创建它们,但不仅可以在其中创建:许多第三方应用程序(包括我们自己的iOS Forensic Toolkit)在连接到iPhone时会创建它的备份副本。 顺便说一句,使用Toolkit,即使在屏幕被锁定且锁定代码未知的情况下,有时也可以将备份从电话中拔出(为此使用锁定文件)。

备份副本是一种方便,通用且非常简单的方法,用于从受良好保护的(并通过加密的方式)存储设备中提取数据的新副本。 几乎所有最有趣的事情都属于备份:大多数应用程序的数据,以及使用用户在Safari浏览器和第三方应用程序中保存的密码登录的信息,以及Wi-Fi密码,时钟备份以及有关用户活动(步骤,心跳)的数据在给定的时间点)。 归入备份和对犯罪调查至关重要的许多其他方面。

如果知道锁码,为什么需要备份?

经常有人问我们一个问题(确切地说,它们是“声明”):如果已知锁码,那么为什么需要备份副本? 我可以在iPhone本身上看到所有内容吗?

不,不是全部。 即使知道了锁码,也无法在iPhone本身上查看所有有趣的数据。 iPhone备份了许多数据,甚至超出了用户的意愿。 用户甚至可能不知道该数据存在! 例如,这适用于Safari浏览器的历史记录-在电话本身或在iCloud中,您可以查看最近30天的历史记录,并且整个使用过程中的整个历史记录都属于备份(如果用户未手动清除历史记录)。 顺便说一句,呼叫历史完全相同:在“电话”应用程序中,它仅在最近30天可见,并且有关所有呼叫的信息都保存在备份副本中。 仅此一项就足以使执法机构搜寻备份,但这还不是全部。 用户可以在即时消息传递程序中删除某些消息-您将不会在设备屏幕上看到它们; 同时,SQLite格式的数据库可能会长时间包含已删除的记录-直到启动定期垃圾回收程序为止。 重要的事情是分析,搜索,导出数据,包括删除的数据(第一个警察要求是“用户在那个日期和那个日期在哪里”,尝试有兴趣地回答这个问题,手里拿着手机并检测这将花费多少时间,并且分析备份中的数据将在一秒钟之内给出答案。)还有很少的事情-例如,联系人的添加日期或日历上创建事件的日期,这些在用户界面中不可见。

同时,在攻击者的手中,后援变成了对抗用户的武器。 钥匙串中的登录名和密码使您可以“劫持”帐户,访问用户的信件和金钱。 为防止这种情况,Apple允许用户设置备份密码。

如果设置了密码,则将使用基于该密码生成的强密钥对整个备份进行加密。 加密在设备内部进行; 如果设置了密码,那么未加密的数据就不会离开手机。 因此,无论使用哪种备份程序,结果都是相同的:加密备份。

在相对较新版本的iOS(10.2和更高版本)中,本地备份的加密是如此强大,以至于即使使用Nvidia GTX 1080 GPU的硬件加速,我们也无法获得每秒超过一百个密码的搜索速度。 因此,即使仅使用了7个字符的简单密码(医院平均值),正面攻击也无济于事。 但是,即使您的手机具有很强的加密密码,如果您知道密码或有锁定,也可以提取照片和媒体文件。

在iOS 10.2和iOS 11之前的版本中,冗长而复杂的备份密码是绝对的保护; 在没有较早版本的系统的情况下,没有先输入旧密码就无法删除或更改密码的方法。 在iOS 11中,情况已经改变。

第一次递归:将密码重置为备份


我已经写了关于如何使用锁定代码在iOS 11、12和13中完成的操作。 除其他外,在这些版本的iOS中,可以使用屏幕锁定代码来重置备份密码。 现在,如果攻击者了解了屏幕锁定代码,则可以将密码重置为本地备份,将手机连接到计算机并提取所有数据,还可以解密钥匙串中的所有密码。

Apple网站提供有关如何继续重置备份密码的详细说明

在iOS 11或更高版本中,您可以通过重置密码来创建设备的加密备份。 为此,请按照下列步骤操作:

  1. 在您的iOS设备上,选择设置>常规>重置。
  2. 点击“重置所有设置”,然后输入iOS密码。
  3. 请按照说明进行重置。 这不会影响用户数据或密码,但会重置设置,例如显示屏亮度,主屏幕上的程序位置和墙纸。 用于加密备份的密码也将被删除。 (在括号中:此时,设备将要求您输入屏幕锁定代码)。
  4. 将设备重新连接到iTunes并创建一个新的加密备份。
  5. 您不能使用以前创建的加密备份,但可以使用iTunes备份当前数据并设置新的备份密码。

在装有iOS 10或更早版本的设备上,无法重置密码。

第二次递归:我们保护自己免受试图重置备份密码的攻击


攻击者只需输入屏幕锁定代码即可轻松绕过您最复杂,最长的密码,这真是令人惊讶。 但是,您可以尝试保护自己免受这种祸害。 这里的保护机制将是家长控制限制(iOS 11)或屏幕时间密码(iOS 12和13)。 为简单起见,我将确切描述iOS 12。

假设您的iPhone落入了攻击者的手中。 假设攻击者成功地监视了您的锁定代码; 现在,他正试图将手机从云端解开,同时合并数据副本,以从钥匙串访问密码。 您可以借助“屏幕时间”密码来保护自己免受事件发展的影响。 您可以在Apple文章“在儿童的iPhone,iPad和iPod touch设备上使用家长控制”中了解有关控制屏幕时间的更多信息。 现在,我们对该系统的另一种可能性很感兴趣:防止手机重置用于备份的密码。

奇怪的是,限制为本地iOS备份重置密码的能力非常简单:您所需要做的就是设置“屏幕时间”密码。 该密码的复杂度很低:唯一可用的选项是4位PIN码。 然而,这种保护通常是相当可靠的。 由于此密码很少使用,并且与设备锁定代码不同,因此不会意外被窃取。 在极少数情况下,如果您想更改设置或禁用限制,则需要此代码。 您可以通过将随机代码写在家里的一张纸上来设置随机代码-这将是完全安全的。

如果我现在尝试重置密码以进行备份会怎样? 第一步没有什么区别:系统将询问设备锁定密码。 但此后,将要求另外输入4位数字的“屏幕时间”密码。 这种安全措施不仅能够抵制好奇心,而且还可以保护iPhone免受严重的黑客攻击。

递归三:如何找出屏幕时间的密码


屏幕时间密码存储在设备本身上。 不可能在合理的时间内拾起它:输入尝试之间的逐渐延迟会保护10,000个组合的较小空间。 在几次失败的尝试之后,系统将通过引入1、5、15和60分钟的逐步延迟来限制枚举屏幕时间密码的速度。 在尝试10次失败之后,可以在不超过前一个小时的一个小时内进行每次后续尝试; 重新启动设备将无助于加快该过程。 因此,可以在416天内选出所有10,000个组合。

但是,还有更多有趣的方法。 我会立即进行预订:第一个仅在未设置或未知备份副本密码的情况下有效,第二个可以越狱iPhone(即,其上的iOS版本比iOS 12.2更新)。 对于在最新版本的iOS(今天为12.4)上运行且备份密码未知的iPhone,目前尚无法找到“屏幕时间”的密码(目前)。


方法1:从备份中提取

在iOS 7-11中,此密码(在此处称为“限制”)被存储为散列。 该算法相对健壮(pbkdf2-hmac-sha1,但是迭代次数相对较小)。 假设此密码始终仅包含4位数字,则在计算机上完整搜索哈希值需要花费几秒钟的时间。 哈希本身存储在文件com.apple.restrictionspassword.plist中,该文件属于备份文件。 因此,如果我们具有以下一种,则可以打开“限制”密码:

  • 没有密码备份
  • 用密码备份,再加上密码

在iOS 12中(此处是“屏幕时间”或“屏幕时间”的密码)以明文形式存储。 不,安全性没有恶化:密码已移至钥匙串。 尽管如此,“屏幕时间”密码的保护级别已分配为最低级别:它与设备无关。 最低保护级别是有意分配的。 这样做是为了在从备份还原新iPhone时,自动设置“屏幕时间”密码(因此Apple关闭了通过创建备份,重置设备然后从备份还原来删除“屏幕时间”密码的可能性)。 具有较高保护级别的钥匙串记录不会最终出现在备份中,也不会最终出现,而是由设备的硬件密钥保护(也就是说,它们只能还原到同一设备)。

要获取屏幕时间密码,您需要:

  • 用密码和密码备份

方法2:通过越狱

显然,只有在未设置或未知备份密码的情况下,第一种方法才有效。 如果设置了备份密码,但是未知,那么找出“屏幕时间”密码的唯一剩余方法就是访问钥匙串。 对于旧版本的iOS,您需要文件系统的副本。

对于iOS 7-11,您需要:

  • EIFT(需要越狱)或GrayKey(不需要越狱,设备锁定代码就足够了,但是产品本身仅对某些国家的执法机构可用)拍摄的文件系统的图像

对于iOS 12:

  • EIFT或GrayKey开采的钥匙串

有必要这样做吗? 我不确定:如果可以安装越狱功能,那么首先,无需中间人就可以提取所有密码作为备份。 其次,您可以通过解密钥匙串找到备份的密码:备份的密码(就像“屏幕时间”的密码一样)存储在其中。 但是,如果目标是消除屏幕时间的限制,则此方法非常合适。

还有一件事

有趣的是,“屏幕时间”密码也存储在iCloud云中,但前提是您启用了双重身份验证并激活了“屏幕时间”选项“跨设备共享”。 密钥本身不属于Cloud Keychain,而是单独存储(与恢复对加密FileVault 2卷的访问的密钥大致相同)。 当前没有机制可以从iCloud中提取并查看它。 我们正在努力; 计划在秋天发布最新版本的Elcomsoft Phone Breaker,该版本将具有此功能(如果iOS 13发行版的存储机制没有任何变化;则有可能出现这种情况:iOS 13已经更改了此密码的存储位置)。

无论如何,要从iCloud中提取“屏幕时间”密码,您将需要以下所有条件:

  • Apple ID(iCloud)用户的用户名和密码
  • 设备屏幕锁定代码
  • 访问第二个身份验证因素(如果知道锁定码,则是设备本身;但是,只要拥有受信任的电话号码的SIM卡就足够了)

但是,我们没有通过重置设备然后从“云”备份中还原来检查这种情况,因此,如果我在iCloud中创建备份,重置iPhone并从云中恢复,则无法确定是否激活了“屏幕时间”密码。 此外,在从备份还原同一iPhone或新设备的情况下,系统的行为可能会有所不同。

第四次递归,最后:如何保护对“屏幕时间”密码的访问


所以我们到了最后一点。 如果您的目标是尽可能地保护设备安全,那么确保既未重置也不识别“屏幕时间”密码,则符合您的利益。 与上一部分一样,我有两个消息:好消息和坏消息。

好消息是,保护屏幕时间密码不受一般人甚至专业人士的攻击非常简单:只需为备份副本设置一个长而安全的密码,然后在退出后立即安装最新版本的iOS即可使设备保持最新状态。 新版本的iOS越狱不会马上出现。 从发布iOS更新到出现可行的越狱之间,有时需要几个月的时间。

您可能会担心将被盗设备(具有攻击者已知的阻止代码)放置在架子上等待越狱的情况。 但是,在此处,“查找我的iPhone”门户中创建的标准“擦除[设备]”会有所帮助。 事实是,要安装越狱,您必须先对IPA文件签名,然后直接在iPhone本身上确认数字签名。 数字签名已在Apple服务器上验证; 也就是说,攻击者将必须允许被盗的iPhone联机。 目前,擦除设备的命令很可能会起作用。

攻击者可以使用特殊的路由器配置解决此问题,在该配置中,将拒绝访问负责“查找我的iPhone”功能的节点。 此外,他们可以使用开发人员证书代替越狱证书来签署越狱证书,该证书不需要iPhone联机以确认数字签名。
坏消息是,无论您多么努力,都无法保护iPhone免受GrayKey或UFED Premium系统的访问:他们的开发人员能够绕过大多数iPhone的安全机制。 如果知道屏幕锁定代码,那么这些组合系统的用户将能够访问文件系统并解密钥匙串,而不会遇到任何特殊问题。 另一方面,这些联合体仅提供给执法机构,绝不在任何国家/地区提供(例如,它们不提供给俄罗斯)。 几乎没有将它们掌握在攻击者手中。 因此,您不太可能面临这种危险。

Source: https://habr.com/ru/post/zh-CN463083/


All Articles