《iOS取证实战:调查、分析与移动安全》一2.5 与iTunes的交互

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 本节书摘来自华章出版社《iOS取证实战:调查、分析与移动安全》一书中的第2章,第2.5节,作者(美)Andrew Hoog Katie Strzempka,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.5 与iTunes的交互

用户可通过iTunes提供的各种功能来管理iPhone设备上的文件、应用程序、软件版本等。下面将讨论iTunes的主要特性。

2.5.1 设备同步

当iPhone连接到iTunes后,用户可启动iTunes软件与设备进行同步。根据用户的设置,这个过程将存储在iTunes上的所有应用程序、音乐、视频和图片等加载到设备上。在同步过程中,iTunes上的数据是优先的,设备上任何与iTunes不同的数据都会被删除。用户可以设置iTunes在每次设备连接时自动同步,或者设置必须由用户启动的手动同步。通过同步方式,由各公司开发的用户应用程序可以安装在设备上,但必须首先得到Apple的批准。MobileMe可与iTunes结合使用,可用来同步日程表、联系人、邮件账户等。

2.5.2 iPhone备份

将iPhone连接到电脑后,用户还可以选择创建iPhone备份。在同步、升级或还原过程中,自动备份会启动。根据用户机器运行的操作系统类型不同,备份文件存储在以下特定位置:
Windows XP:C:Documents and Settings<user name>Application DataApple ComputerMobileSyncBackup\
Windows Vista/Windows 7:C:Users<user name>AppDataRoamingApple ComputerMobileSyncBackup\
Macintosh:Users//Library/Application Support/MobileSync/Backup/
每个备份文件夹都包含多个文件。Status.plist文件提供了最新的同步/备份状态信息。Info.plist文件包含了设备的通用信息,包括设备名称、版本、国际移动设备标识码(International Mobile Equipment Identity,IMEI)、电话号码等。Manifest.plist文件包含了所有已备份文件列表,以及这些文件的修改时间和散列值。剩余的几个文件是.mddata文件和.mdinfo文件(对于iTunes 8.x以前的版本,这里是*.mdbackup文件)。所有的备份文件以其SHA1散列值命名。还有一些iPhone应用程序和设置的实际备份文件。直接打开这些文件是不可读的,因为它们被Apple称为二进制plist文件。为了查看备份文件的内容,需要使用特殊的软件或者以其他方式对文件进行转换。
在同步备份文件之前,iTunes允许用户输入密码来加密备份文件。加密备份极大地增加了数据恢复过程的困难程度—使用足够复杂的密码甚至可使数据恢复变得不可实现。然而,要注意这个选项不是必需的、不会提示选用,或者也不会作为默认设置,这点非常重要,因此我们就有理由假定很少有用户使用这个选项。
接下来是对加密和非加密备份文件的分析。
iOS 4发布之后,如果备份文件没有密码保护,keychain文件(包含用户名和密码数据)使用存储在iPhone上的硬件密钥加密。在打开的keychain数据库文件中,可以浏览到一些信息,但密码是加密的。
如果备份文件有密码保护,keychain文件使用软件密钥加密,其中软件密钥使用备份文件密码生成。这意味着,只有知道备份文件密码,才有可能获取到keychain文件中的加密数据。

2.5.3 iPhone还原

有两个不同的还原选项:使用已存在的备份文件还原,或者还原设备到出厂设置。前一种方法从备份文件中提取所有设置和应用程序数据,并将这些数据同步到设备中。后一种方法将移除设备中现有的文件系统,并把它还原到默认出厂设置。这两种还原方法都在iTunes中执行。理解两种还原方法的差异非常重要的,以免造成数据丢失。
一旦恢复出厂设置,用户就必须连接上iTunes重新激活设备(依照屏幕提示)。激活iPhone后,数据可以通过备份文件还原,或者像全新设备那样来设置。

2.5.4 iPhone iOS更新

Apple会不定期发布iPhone iOS升级版本,升级版本可能包含新的特性、修正早先版本的程序错误或增加安全性。用户可以选择保持当前操作系统或者升级到操作系统最新版本。通过iTunes可以非常简单地进行升级操作。

  1. 升级
    将电话连接到运行iTunes的计算机后,用户只要点击“Update”(升级)按钮(见图2-6),最新的软件就会升级到设备上。

iPhone包含两个磁盘分区,磁盘分区的更多细节将在后面的章节中讨论。其中包含用户数据的分区和包含固件的分区是分离的。固件升级开始后,最新的操作系统软件安装在固件分区。升级过程对取证依然有效,因为用户数据是隔离的,所以它们不会因为升级而改变。

image

  1. 降级
    因为某些原因,用户可能希望回退到iOS以前的版本。例如,升级之后又发现了新的安全漏洞。另外,一些3G的用户发现将设备升级到iOS v4.x后,设备在速度和性能方面都有所下降。站在取证审查员的立场上来看,降级设备对从设备中恢复数据非常重要。因为一些可用的取证工具只能运行在某些指定支持的版本上。如果型号和(或)固件当前的版本不支持,可能就需要通过降级设备来获得支持。不管是什么原因,降级到iOS以前的版本都是可选的。这个过程因设备而异,并且有些设备和操作系统也不支持该操作。

降级的操作步骤比较类似。第一步,下载用户希望降级到的旧版本的.ipsw(iPhone软件)文件。这些.ipsw文件可以在很多站点上找到,如www.iclarified.com。Apple公司并不会提供这些文件,因为他们的目标是确保所有的用户都运行在最新的固件升级版本上。一旦iPhone软件文件(.ipsw)下载完成并保存到用户的工作站中,就可以将iPhone连接到工作站上并运行iTunes。更新到指定的固件版本与更新到最新的固件版本不同,要更新到指定的固件版本,用户需要右键点击“update”(更新),然后选择指定的.ipsw文件的存储路径。这个过程在较早的模型中(3G(s)之前)是非常典型的。降级只会影响固件分区,而不会影响用户数据分区。笔者自己对这种情况做过内部测试,但是我们也必须认识到,以任何方式降级或修改设备,对证据来说仍是一个危险的操作过程。
对后面发布的型号来说,不使用高级技术步骤是不能成功降级的。这些型号包括iPhone 4和某些3GS的型号,3GS的型号取决于它们是什么时候发布的,是否包含了新的bootrom。Apple开始决定在固件版本中打标签,要求在升级/降级到不同的固件版本时,iTunes要先“获得允许”。据推测,这样做的原因是Apple希望能够保证用户始终运行在最新的软件版本上。在任何情况下,如果一台设备有降级的请求,iTunes会提示错误并且阻止更新。
Apple为了能够对文件还原进行验证,它会首先把SHSH blobs发送到它的服务器中进行确认。SHSH blobs,也称为ECID SHSH,是每个设备上独有的签名。Apple的服务器会检查这个签名,如果当前最新的iOS固件不能对这个特定的签名作出回应,Apple将不会确认这个文件,而会阻止iTunes进行还原操作(Asad, April 2010)。黑客联盟一直都在针对不同的版本提出突破这些阻碍的方法,但是这些方法实现起来都非常复杂,特别是当你对这些操作不熟悉的时候。
这些降级方法的基本思想就是“欺骗”iTunes,让它认为SHSH签名已经被确认了。iOS版本和型号的差异会使得操作步骤的细节有细微的差别,但是大体步骤是一致的。以下步骤是对这个过程的概要性描述:
1)保存当前设备和iOS版本的SHSH blobs;
2)修改“hosts”文件,让它和另一个服务器去交互,而不是和Apple的;
3)运行iTunes还原并选择旧的.ipsw文件;
4)如果需要,使用iRecovery、ReBoot或者其他工具来退出恢复模式。
上述步骤的实现还需要大量细节操作,而我们的例子只针对一个特定的型号和版本,要查看完整的逐步指导,请参考www.remondpie.com(Asad,July 2010)。

  1. 保存SHSH blobs
    降级成功的关键是,首先保存好设备和iOS版本特有的SHSH blobs。即使是同一台iPhone 3GS设备,运行在iOS 3.1.2和运行在iOS 3.1.3上的签名也是不同的。因此,在升级前,应确保在工作站或远端服务器中保存了这个SHSH blobs文件。该文件在随后的降级中会用到。如果没有保存这个文件,并且设备又进行了升级,就无法将固件版本回退到之前的版本了。

有很多开源工具都可用来做这件事情,如AutoSSH和Tiny Umbrella。在本例中,我们将会在Macintosh上运行Tiny Umbrella,以保存一个3GS(固件版本为4.0)的SHSH文件。(Tiny Umbrella软件同样也可以运行在Windows或者Linux平台。)
一旦这个软件下载完成并开始运行,用户应该将iPhone以普通模式连接到工作站。在本例中,设备型号和iOS版本要求iTunes的版本要在9.0以上。要确保你的iTunes版本可以支持你的设备。如果设备连接到计算机之后,Tiny Umbrella上Save My SHSH(保存我的SHSH)按钮是灰色的,那么你很可能运行了错误的iTunes版本。一旦设备成功连接上了iTunes,就可以在Tiny Umbrella的下拉列表框中查看设备名称、型号和固件版本。确认所选设备正确后,单击Save My SHSH按钮,如图2-7所示。
为了保证保存的文件是正确的,可以在应用中单击Display SHSHs(显示SHSH)按钮来进行查看。如图2-8所示,用户能够查看到设备型号、固件版本和序列号。

image

  1. 修改主机文件
    在这个步骤中,我们将会修改工作站中的主机文件,把Apple的验证服务器的IP地址改为Cydia的服务器地址。

在Mac上,可以通过在Finder中选择Go(前往),然后选择Go to Folder(前往文件夹)(见图2-9)来找到主机文件。输入“/etc/”(完整的路径是/private/etc,并且是一个隐藏文件夹),一旦打开了这个文件夹,就应该可以看到主机文件了。
在Windows上,主机文件的位置是在C:WindowsSystem32driversetchosts目录下。

image

在Linux工作站上,主机文件的位置是根目录(root)下的/etc文件夹。
你在本机的运行权限可能会导致你不能直接访问和修改主机文件。最好的做法是复制此文件到桌面并修改,然后再把它保存到原来的位置上。使用文本编辑器打开主机文件,并添加如下内容(见图 2-10):74.208.105.171 gs.apple.com。

image

在Linux上,操作会有些不同,需要通过命令行实现,在终端窗口中输入如下命令:
image

然后参考之前章节描述的步骤(见图2-11)来编辑这个文件。按“Ctrl+O”键来保存修改。按“Ctrl+X”键退出nano编辑器。

image

添加的这几行内容会让iTunes相信它是连接到Apple的服务器去进行设备签名验证的,但实际上却是由Cydia的服务器来进行的验证。一旦这个验证的过程完成了,iTunes就会允许我们完成降级操作。
注意:修改主机文件
我们能够通过修改系统的主机文件把流量从Apple的服务器重定向到其他外部服务器,以此帮助我们降级固件。但是不要忘记,一旦降级过程完成,要注释掉或者删除这些添加的内容。

  1. 恢复.ipsw文件
    此时,你应该已经保存了SHSH blobs,修改了“主机”文件,并下载了想降级到的固件版本所配套的.ipsw文件。打开iTunes,确保iTunes的版本能够支持当前的设备版本,并将设备连接到了工作站上。右键单击“恢复”(Restore)按钮(在Mac上,按住alt/option按键,然后点击界面上的“恢复”按钮),浏览下载到机器中的ipsw文件来开始降级。
  2. 退出恢复模式
    一旦降级过程完成了,设备就会处在恢复模式(Recovery mode)。退出恢复模式的标准操作是,同时按住“Home”和“Power”键直到出现Apple的标志。如果设备意外陷入恢复模式循环(Recovery Mode Loop),可以使用RecBoot或者iRecovery来协助退出此模式。

2.5.5 应用商店

默认情况下,iPhone会预装一些应用。这些应用包括了一些最常见的应用,如短消息、日历、照片、天气等。用户可以通过应用商店(即App Store,也是iPhone默认预装的)下载新的应用来满足自己个性化的需求。
应用商店中iPhone的应用分类包含游戏、音乐、旅游等。为了登录到应用商店,用户必须先创建一个登录账号,或者使用已有的iTunes用户ID和密码。应用程序在设备上是非常容易安装的,当安装的应用有新版本时,应用商店甚至还可以向用户推送消息。

2.5.6 MobileMe

MobileMe是Apple提供的一项包含很多功能的服务,例如可以在不同的Apple设备间同步电子邮件、通讯录和日历。MobileMe保存了用户所有的数据,会自动将这些数据推送到多台彼此同步的设备上。用户还能使用Gallery和iDisk特性来存储图片、视频和其他文件。iDisk提供了20GB的远程数据存储能力,允许来自任何计算机、iPhone/iPad或iPod Touch的访问。
通过MobileMe还可获得另一个工具,它能够帮助用户定位遗失或被盗的iPhone。使用“查找我的iPhone”功能,用户可以用其MobiledMe账号登录,通过全球定位系统(GPS)展示遗失设备的大致位置。只要“查找我的iPhone”在设备的系统设置中开启了,此项功能就可奏效。除了GPS定位,机主还能给此遗失设备发送消息来让别人知道该如何与机主取得联系。除此之外,在设备被盗的情况下,用户还能远程设置密码或远程擦除数据。
所有这些功能全部能在站点me.com中查看到。

相关文章
|
1月前
|
安全 Android开发 数据安全/隐私保护
深入探讨iOS与Android系统安全性对比分析
在移动操作系统领域,iOS和Android无疑是两大巨头。本文从技术角度出发,对这两个系统的架构、安全机制以及用户隐私保护等方面进行了详细的比较分析。通过深入探讨,我们旨在揭示两个系统在安全性方面的差异,并为用户提供一些实用的安全建议。
|
3月前
|
开发工具 Android开发 Swift
安卓与iOS开发环境对比分析
在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统无疑是主角。它们各自拥有独特的特点和优势,为开发者提供了不同的开发环境和工具。本文将深入浅出地探讨安卓和iOS开发环境的主要差异,包括开发工具、编程语言、用户界面设计、性能优化以及市场覆盖等方面,旨在帮助初学者更好地理解两大平台的开发特点,并为他们选择合适的开发路径提供参考。通过比较分析,我们将揭示不同环境下的开发实践,以及如何根据项目需求和目标受众来选择最合适的开发平台。
51 2
|
1月前
|
监控 算法 iOS开发
深入探索iOS函数调用栈:符号化与性能调优实战
在iOS开发中,理解函数调用栈对于性能调优和问题排查至关重要。函数调用栈记录了程序执行过程中的函数调用顺序,通过分析调用栈,我们可以识别性能瓶颈和潜在的代码问题。本文将分享iOS函数调用栈的基本概念、符号化过程以及如何利用调用栈进行性能调优。
35 2
|
3月前
|
安全 Android开发 数据安全/隐私保护
探索安卓与iOS的安全性差异:技术深度分析与实践建议
本文旨在深入探讨并比较Android和iOS两大移动操作系统在安全性方面的不同之处。通过详细的技术分析,揭示两者在架构设计、权限管理、应用生态及更新机制等方面的安全特性。同时,针对这些差异提出针对性的实践建议,旨在为开发者和用户提供增强移动设备安全性的参考。
145 3
|
2月前
|
开发工具 Android开发 Swift
安卓与iOS开发环境的差异性分析
【10月更文挑战第8天】 本文旨在探讨Android和iOS两大移动操作系统在开发环境上的不同,包括开发语言、工具、平台特性等方面。通过对这些差异性的分析,帮助开发者更好地理解两大平台,以便在项目开发中做出更合适的技术选择。
|
3月前
|
安全 Linux Android开发
探索安卓与iOS的安全性差异:技术深度分析
本文深入探讨了安卓(Android)和iOS两个主流操作系统平台在安全性方面的不同之处。通过比较它们在架构设计、系统更新机制、应用程序生态和隐私保护策略等方面的差异,揭示了每个平台独特的安全优势及潜在风险。此外,文章还讨论了用户在使用这些设备时可以采取的一些最佳实践,以增强个人数据的安全。
|
4月前
|
Java 开发工具 Android开发
安卓与iOS开发环境对比分析
【8月更文挑战第20天】在移动应用开发的广阔天地中,Android和iOS两大平台各自占据着重要的位置。本文将深入探讨这两种操作系统的开发环境,从编程语言到开发工具,从用户界面设计到性能优化,以及市场趋势对开发者选择的影响。我们旨在为读者提供一个全面的比较视角,帮助理解不同平台的优势与挑战,并为那些站在选择十字路口的开发者提供有价值的参考信息。
104 17
|
3月前
|
IDE 开发工具 Android开发
安卓与iOS开发环境对比分析
本文将探讨安卓和iOS这两大移动操作系统在开发环境上的差异,从工具、语言、框架到生态系统等多个角度进行比较。我们将深入了解各自的优势和劣势,并尝试为开发者提供一些实用的建议,以帮助他们根据自己的需求选择最适合的开发平台。
52 1
|
4月前
|
开发框架 Android开发 Swift
安卓与iOS应用开发对比分析
【8月更文挑战第20天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。本文将深入探讨这两大操作系统在开发环境、编程语言、用户界面设计、性能优化及市场分布等方面的差异和特点。通过比较分析,旨在为开发者提供一个宏观的视角,帮助他们根据项目需求和目标受众选择最合适的开发平台。同时,文章还将讨论跨平台开发框架的利与弊,以及它们如何影响着移动应用的开发趋势。
|
4月前
|
安全 搜索推荐 Android开发
安卓与iOS应用开发的对比分析
【8月更文挑战第20天】在移动应用开发领域,安卓和iOS两大平台各领风骚。本文通过深入探讨两者的开发环境、编程语言、用户界面设计、应用市场及分发机制等方面的差异,揭示了各自的优势和挑战。旨在为开发者提供决策支持,同时帮助理解为何某些应用可能优先选择在一个平台上发布。
48 2