本文由小茆同学编译,由陈裕铭、Roe校对,转载请注明。
树莓派4的一款开源软件被设计用来为侧载、签名和验证提取代理提供防火墙功能,该提取代理可在各种苹果设备上提供强大的文件系统镜像和钥匙串解密功能。这项开发旨在解决取证专家在使用普通和开发者Apple账户侧载提取代理时面临的日益严峻的安全挑战。
注意:2021年6月6日之前创建的旧版开发者账户可免于验证过程。如果您使用的是这些账户之一,则无需防火墙即可运行提取代理。
TL&DR
低级提取iOS和iPadOS设备需要将提取代理(一个重要的应用程序)侧载到被调查的设备上。包括提取代理在内的每个侧载应用程序都必须使用特定于设备的唯一数字签名进行签署。在iPhone或iPad上启动新的侧载应用程序时,系统会提示用户验证数字签名,要求设备与苹果服务器建立联系。不过,必须注意的是,将设备连接到互联网会带来远程阻止或删除其内容的风险,特别当它如果是证据的一部分。
此前,我们推荐的解决方案是将用于签署侧载应用程序的Apple ID注册到苹果开发者计划,这样就可以验证数字签名,而无需设备与在线服务器联系。遗憾的是,由于苹果方面最近的更新,即使是与新开发者账户相关的数字签名,现在也必须通过苹果服务器进行验证。因此,这重新带来了以前只适用于非开发者账户的潜在风险。考虑到这些变化,我们开发了一种基于树莓派 4和开源软件的解决方案,通过将设备连接限制在证书验证所需的服务器上,最大限度地降低了风险。
提取代理的重要性和checkm8的衰落
提取代理是我们自行研发的小型iOS应用程序,用于在接受调查的苹果设备上实现低级文件系统提取和钥匙串解密。一旦安装到设备上,提取代理就会尝试提升其权限级别,以突破沙盒,获得对文件系统和相关加密密钥的完全访问权限,从而访问和解密钥匙串记录。
提取代理的重要性不容小觑,尤其是随着时间的推移,checkm8的适用性越来越小。由于兼容checkm8的设备越来越少,需要重置密码才能访问信息的需求越来越多,重要证据面临丢失的风险。checkm8和iOS 16之间的兼容性差距已经达到了临界水平,而iOS 17安装在更少的存在checkm8漏洞的设备上。虽然checm8仍是一种出色的提取方法,但显然有必要采用一种新方法。
基于代理的低级提取正逐渐成为可行的替代方法。在硬件方面,提取代理支持所有iPhone和iPad型号,包括最新版本。不过,需要注意的是,对各种iOS版本的支持永远不会是完备的,在支持最新版本时需要进行大量的追赶。
安装提取代理是一项挑战
对取证专家来说,艰巨的挑战不在于使用,而在于提取代理的安装过程。由于提取代理不被App Store接受,专家们必须借助侧载将代理安装到设备上。侧载需要使用一组Apple ID凭据来签署要安装的.ipa文件。理想情况下,需要一个苹果开发者账户,最好是旧版本的。不过,即使使用开发者账户也并非没有问题。
首先,设备注册更新指出,根据苹果公司的指南,只有前十台设备会立即添加到开发者计划中,而随后的添加则会面临长达三天的延迟。这意味着提取代理无法立即签名和部署。此外,对于2021年6月6日之后创建的开发者账户,授权配置文件的在线验证也发生了变化,详情请参见授权配置文件更新。
与以前的做法不同,现在的验证需要连接到在线服务器来验证数字签名:
2021年6月6日之后创建的新Apple Developer Program会员资格要求iOS、iPadOS和tvOS的开发和临时签名应用程序在首次启动时向PPQ服务签到。您的设备必须连接到互联网,以验证用于签署应用程序的证书。如果您的设备安装了防火墙,请确保防火墙的配置允许连接到https://ppq.apple.com。如果设备无法成功连接,应用程序可能无法启动。如果您的应用程序在限制性很强的网络环境中运行,或者您需要临时离线构建,可以使用其他工作流程。
与更新中所述不同,验证在humb.apple.com上进行(而非 ppq.apple.com,在非开发者账户上用于类似目的),其动态IP每五分钟变化一次。值得注意的是,这种验证在首次启动代理或任何其他已签名和上传的应用程序时进行。
经过这些更新后,开发者账户用于侧载提取代理的整体效用大大降低,标准账户的吸引力再次提升。虽然标准账户限制每周只能使用三台设备,但必要时创建一个新的Apple ID可以规避这一限制。另一方面,开发者账户在最初的十台设备之后会面临延迟,而且现在在代理启动期间需要进行在线验证。因此,为这两类账户找到防火墙功能的解决方案至关重要。
开发者账户的优势
尽管开发者账户面临诸多挑战,但相比于普通的非开发者Apple ID,它们仍具有一定优势。首先,也是最重要的一点,只有使用开发者账户Windows用户才能侧载提取代理。我们为使用普通的非开发者Apple ID安装提取代理而开发的侧载程序需要Mac。最后,2021年6月6日之前创建的旧版开发者账户可以免于验证过程。对于这些账户,你不需要防火墙解决方案。
可能替代方案
如果您没有树莓派,也许可以用其他方法设置防火墙。我们已经发布了一种方法,可以有效地将Mac变成防火墙。虽然这种方法不需要额外的硬件,但与基于树莓派的解决方案相比,它更为复杂,可靠性也更低。
另一种方法是在路由器上设置防火墙,并尝试配置白名单。不过,这可能并不容易。即使你知道ppq.apple.com解析的所有地址(只有几个),humb.apple.com解析的地址范围也要大得多。只有极少数具有标准固件的路由器允许白名单功能,尤其是基于域名而非IP的白名单功能。或者你也可以尝试使用OpenWRT等其他固件。
最后,iOS 17可能会为某些地区的用户提供另一种选择。据9to5mac报道,去年的一份报告显示,苹果公司正在努力允许iOS 17的侧载功能,但到目前为止,第一个测试版尚未实现。我们正翘首以待欧盟新规的结果。
将树莓派4用作防火墙
我们基于Mac的解决方案推出已有一段时间,但其使用可能比较复杂,而且容易出错(更不用说Windows用户无法使用)。重要的是要意识到被调查设备连接互联网所带来的风险,极端情况是远程锁定或远程擦除,而另一种情况则是不必要的数据同步,这可能会导致重大变化,并危及从此类设备获取的证据的可采性。
为了解决这些问题,我们推出了一款新的开源软件,将树莓派 4变为防火墙。通过将Pi盒的一端连接到路由器,另一端连接到手机,该解决方案可在签名和验证过程中提供更高的安全性,该软件可在GitHub上的公共仓库中找到。
最后,我们的解决方案应适用于任何使用普通或开发者帐户签名的其他侧载应用程序,包括替代代理。
为了降低远程篡改iPhone设备的风险,我们需要限制其联机连接。理想情况下,iPhone只能连接到一个证书验证服务器,所有其他通信都将被终止。为此,我们为树莓派 4开发了一个开源软件。本文详细阐述了如何将树莓派 4设置为用于侧载提取代理的防火墙。
前提条件
您需要以下硬件:
1. 树莓派 4或更新的版本(例如树莓派 4 Model B)
2. microSD卡
3. Lightning转以太网适配器
4. USB转以太网适配器
将树莓派设置为功能性防火墙的指南
首先,从GitHub下载固件镜像-Elcomsoft/eiftpi,并使用诸如balenaEtcher的软件将其烧录到SD卡中。您可以从此链接下载balenaEtcher:https://etcher.balena.io/。然后按照以下步骤进行操作:
1.将SD卡插入计算机
2.启动balenaEtcher,并选择下载/编译的固件镜像(eiftpi.img)
3.将SD卡选为目标驱动器
4.单击“Flash!”按钮,将固件镜像写入SD卡
5.完成此过程后,从计算机中取出SD卡。
您需要在树莓派上安装两个网络接口。一个接口将连接到互联网,另一个连接iPhone。连接iPhone需要一个Lightning转以太网适配器。
· 我们建议使用USB-A转以太网适配器将树莓派连接到互联网。
· 或可通过Wi-Fi将树莓派连接到互联网。
重点:iPhone必须连接到内置的以太网端口。
注意:我们特意使用有线连接,并且不建议在iPhone上启用WiFi,因为这可能会导致设备意外连接到不同的已知网络,从而增加远程擦除的风险。
为了使设置更简洁、可靠,请使用两个有线连接。这就是您需要USB转以太网适配器的原因。
如果您想将树莓派连接到Wi-Fi,请按照以下步骤操作:
· 使用以太网将树莓派连接到Mac。(注意:如果您的MacBook没有以太网端口,则需要一个USB-C转以太网或USB-A转以太网适配器。)
· 在Mac上打开终端,并输入以下命令:
· 密码是“Elcomsoft”(不带引号)。
· 登录后,运行以下命令配置Wi-Fi:
sudo nmtui
· 通过nmtui界面,您可以轻松连接到Wi-Fi网络。
您现在已经使用固件设置了树莓派。将Pi连接到网络(通过以太网或Wi-Fi),并使用数据线将您的iPhone连接到Pi。注意:我们建议首先使用测试iPhone,以确保互联网访问受到限制,只能访问ppq.apple.com、humb.apple.com和elcomsoft.com。
结论
我们共享了具有防火墙功能的树莓派 4开源软件,旨在确保iOS生态系统中的提取代理的侧载安全。checkm8的局限性以及开发者账户的复杂性要求采取新的方法确保数据安全性。通过采用开源解决方案并提供替代方案,我们致力于提升取证专家能力,并提高提取代理在保护有价值信息方面的有效性。
参考链接:
https://blog.elcomsoft.com/2023/06/open-sourcing-raspberry-pi-software-for-firewall-functionality-secure-sideloading-of-extraction-agent/