iOS的iTunes备份探究

iPhone手机由于其流畅的界面UI,简约的工业化设计和前沿的智能化思想成为越来越多用户首选的智能手机。苹果的iOS一直是以流畅、安全著称的,本文从iOS的iTunes备份的角度对iOS的安全性进行了探究。

操作系统是否安全,最重要的是看用户的数据是否安全,iOS对文件实施了分层级的保护措施,将用户的数据分为四个层级:

iOS文件数据保护层级:

Class A(全面保护):

数据保护最为严格的级别,系统解锁后才能解密的密钥并且在锁定后丢弃该密钥。

Class B(未打开文件保护)

数据保护较为严格的级别,通过密钥包中的Class Key进行协商生成公私钥,文件一旦解锁后,即使系统锁屏仍然可以访问,直到文件句柄被关闭。

Class C(首次认证前保护)

数据保护较为严格的级别,在系统启动时第一次输入密码时解锁解密的密钥,并且在系统关闭时丢弃密钥。

Class D(无数据保护)

没有指定数据保护,但这不意味着文件没有加密保护,对于没有设置数据保护的其他所有文件,iOS中用一个DKey(Device Key)进行保护。该Key设备唯一并且保存在闪存的可安全擦除区域。

所以,可以看出,除了最后一个层级极少的数据不需要输入屏幕密码以外,其他的数据都是需要屏幕密码才能解密的。如果没有屏幕密码的话,就算将手机越狱,也只能得到极少的用户数据。


iTunes备份

iTunes备份可以备份部分手机数据,但是需要先解锁屏幕,也就是需要屏幕密码作为一个前提,当我们点击“信任此电脑”时,会在电脑里生成一个名为lockdown的文件,如果能够在之前已经信任的电脑上去得到这个文件,那么就可以跳过屏幕锁获取备份。

Lockdown文件的位置:

Mackos:/private/var/db/lockdown

Windows7—10: C:/programData/Apple/Lockdown

获得的备份文件分为两部分,一部分是用户数据里一部分是相关信息,但是具体的结构iOS10以前和以后是有区别的,这里我们主要看看iOS10及其以后的系统:

文件夹打开后可以看到

文件夹就是备份得到的用户数据,下面的四个文件是相关的信息文件,他们分别包含如下信息:

Info.plist: 包含设备信息、UDID、设备名称、iOS版本、ICCID、设备的产品序列号、应用程序的列表、已同步应用程序列表、同步时间、备份所使用的iTunes版本等。

Mainfest.plist: 包含所有应用程序的名称、版本及安装时间,该备份数据对应设备的名称、iOS版本、ICCID和最后同步时间等。

Manifest.mbdb\Manifest.db: 包含备份文件的域、文件\文件夹的绝对路径、文件大小、时间属性(iOS10及其以后使用Manifest.mbdb文件替换Manifest.mbdb)

Manifest.db由Files和Properties两张表组成,记录了文件哈希值、域、路径等信息。

Status.plist: 包含备份状态、时间、是否为全备份等。

可以看到备份得到的用户数据文件夹是两个数字或者字符组成的,而里面的文件是一长串的数字和字母,不具备可读性,不知道哪个是通话记录,哪个是短信,那么这些文件夹的名称和文件的名称是怎么来的呢?

以短信的iTunes备份文件的文件名为例子:

SHA1(域-文件路径和名称)=文件名

SHA1(HomeDomain-Library/SMS/sms.db)=3d0d7e5fb2ce288813306e4d4636395e047a3dw8

(而且由于所有的苹果手机短信的域和文件路径都是相同的,所以所有的苹果手机iTunes备份的短信文件名都是3d0d7e5fb2ce288813306e4d4636395e047a3dw8,除此之外还有通讯录和通话记录备份文件名也是所有苹果手机都是一样的)

上文提到Manifest.db文件,这个文件是特别重要的一个文件,它里面包含了备份文件的域、文件\文件夹的绝对路径等信息,如果用sqlite软件打开的话,能看到两个表,其中Files这个表里就包含了用户数据文件名和相应的域和文件路径。所以直接从这里就能拿到相应文件的文件名。

这时候再看文件夹也就能看懂了,它把文件名开头两个字符相同的文件放在了一个文件夹里,比如文件夹f1,里面的文件全是以f1开头的。

猜你喜欢

转载自www.cnblogs.com/P201721440036/p/12450882.html