编辑按

crownless:听了这个演讲,我们可以知道:1、云中存储了大量的敏感数据。不仅是通讯录和照片,你在什么时间去过哪它都知道。2、你以为你已经删除了云里的私人数据,其实它们还残留在云里。3、攻击者可以通过破解你的电脑密码(再复杂的密码也只要几天就可以暴力破解)来获得访问你云中数据的权限。所以,对待云,我们还是应当谨慎一些!

嘉宾介绍

程勋德,万兴首席安全架构师。《加密与解密(第4版)》联合作者,从事PC Android逆向工作8年。

程勋德讲师为大家讲解了iOS iCloud Google Cloud备份和同步机制、Token缓存机制、并讲解了数据获取技术难点,并提供了相应的解决方案。

最后实例讲解如果在未获得用户授权的情况下,获取iPhone存储在iCloud云备份中的数据,让大家了解到目前最新的智能手机取证技术。整个演讲过程风趣幽默,多次引发观众的热烈掌声,广受好评。

演讲具体内容

以下为速记全文:

大家好!我来自万兴科技,安全圈内万兴科技并不出名,因为我们比较低调,我们主要是一家消费类软件研发、销售及提供相应技术支持的公司,而且主要营收在海外。

但是我们公司自从去年上市之后就定下了要回归国内的战略,以前我们很低调,现在开始不低调了,低调太吃亏!

可能更多参与类似看雪这种技术交流中去,与安全专家直接面对面交流,了解当前和未来的一个安全方向,同时也提高一下公司知名度。

我今天的议题主要是讲云取证,比如怎样从iCloud云端把iPhone手机里的数据取出来,或者通过Google Cloud获取到Android手机以及Chrome Youtube等等的数据。

一、取证现状

以前一般取证有三种方式

第一种是直接用很底层硬件厂商提供的JTag调试接口进行数据读写,但是这种方式比较贵,一台德国的设备要十几万。另外也不是所有设备都有这接口,而且这几年就算能够读取到数据,还是有个问题,现在iPhone和Android都开启了全盘加密,导致读取到的数据价值也不大。

第二种物理读取,例如ipbox2盒子就能提取苹果手机的数据,通过物理方式把数据读取出来,但是这个读取出来也是全盘加密的,没什么用。

第三种普通读写,普通读写得有解锁密码才行,并且现在苹果手机、安卓手机普通读写,由于权限问题,有很多数据也读取不到。

二、云取证优缺点

今天讲讲云取证,除了这三种方法之外的新数据取证方法。我不是说前面的三种方式不行,其实云数据取证也有不少问题,只能在实际应用场景中,按照不同的需求,采用不同的方式,云取证可以作为一个有力补充。现如今icloud,Google Cloud等等云端上的数据越来越多,已经成为取证不可忽视的一块。

左侧列出来的是优点,云数据类型非常多,我不一一的讲了。但也有缺点,缺点就是现在云取证都开始开启二步验证,获取数据越来越困难,而且云取证接口是各个厂商自己定制的私有接口,导致协议都是不一样的。

三、移动云的生态系统

目前主流的手机要么是安卓、要么是苹果,这两家最大。我们万兴主要是做海外市场的,所以我们主要的关注点是iCloud和Google Cloud,国内可能有小米的、华为的、三星的,但我们目前就做了这两个云。我介绍一下它们之间的区别,可能有些人不是很熟悉。

iCloud开启同步、备份之后,你所有的数据都会上传到云端,包括联系人、收藏夹等等,你想到的数据它基本都传上去了。PC时代取证很容易,把硬盘拆下来,直接物理读取就能访问到数据。但是PC时代数据少,现在云数据取证,数据多了很多。iCloud就分为两大块,backup和Sync。

backup开启之后会将整个iOS设备的磁盘镜像到云端,这个镜像通过icloud.com是看不到的,只能大概看到是什么日期做了备份,没有web或者app能够看到备份的详细数据类型,其实它把你整个硬盘都备份到云端去了。

还有Sync同步,这个大家基本都有所了解,就是登陆到icloud.com上就能看到的数据,比如联系人,照片之类的。不过还有很多数据看不到,比如iMessage聊天记录,keyChain一类的。

总之,如果你用iPhone,在手机激活之后,并登陆iCloud帐号之后,里面默认已经包含了非常多的数据类型,会即时同步到iCloud的云端。

还有Google Cloud,由于国内大部分厂商都给它做了定制,导致Google Cloud在国内用处不是很大,但是在国外,Google Cloud是比较主流的移动数据同步云。

谷歌云的备份Backup数据种类较少,作用不大,但是同步的数据种类非常之多,只要你用谷歌系的APP,安卓手机也算、Chrome,youtube也算,历史位置信息等等,信息收集非常之详尽。

就拿历史位置信息来举例,收集的信息甚至包括了现在是在地铁中,还是在私家车,或者自行车上非常详细,这些数据被无关人员获取到的的话那基本相当于在网络中裸奔了。Google Cloud收集的数据,起码有五六十种以上的数据。分成好几类。

四、二步验证问题

获取云数据不得不提的一个问题是二步验证,iCloud和Google Cloud目前在登陆的时候都会弹出这个,避免不受信任的第三方登陆,不过如果我们取证时必须要想办法绕过这个步骤

目前我们的解决方案是从曾经登陆过的PC/Mac或者浏览器中提取历史记录,历史记录中保存了无需二步验证的Token,用这个保存的Token再去向云端发送请求,就不会有二步验证了。

大概取证的思路是怎样?首先iCloud和Google Cloud经过多年发展,有一套非常健全的安全机制和授权机制,如果直接硬怼iCloud或者Google Cloud是一件非常困难的事情,目前硬怼iCloud或者Google Cloud除了使用漏洞基本没有太好的办法,但是漏洞是可遇而不可求的,所以我们的思路看看能不能曲线救国。

人是社会化的动物,个人拥有的设备也不一定只有iPhone或者Android手机,常见的还有PC/Mac设备。如果我们能够从其他设备入手,会不会让事情变得简单?起码找到一种能够提取数据的方案。

五、如何解决授权问题

刚才说到云数据云取证,有一个无法绕过的问题是如何解决授权问题?如果按照正常的步骤,需要获取iCloud中的数据,除了有账户和密码之外,还需要有一台可信的设备,或者手机号,用户接手二步验证码,这个条件是比较苛刻的,在实际取证环境,受限于现场条件,要达到这个条件是很困难的。那么如何在无授权的情况下获取手机数据,只有解决了授权获取问题,才对取证有价值。

第一个方案是通过社会工程学获取到这些信息,不过今天我们主要是围绕技术交流,这个就不展开了。

第二个方案是从用户电脑PC/MAC上提取,如果曾经在PC/MAC有过登录的历史记录,通过提取历史记录中的token就可以绕过二步验证,并且获取到iCloud中的数据。

如果从这个方案入手,那就涉及到如何获取用户电脑密码和提取token的步骤,PC/MAC的电脑密码获取还是比较简单的,起码是一个可行的方案,提取token也有办法,通过逆向iTunes就可以得到如何提取token的办法。所以基本取证思路就有了。这里的核心环节就是获取PC/MAC的密码,这个步骤在PC时代取证是惯常做法,是行得通的。

简单说,Windows上通过提取SAM(Security Account Manager,简称SAM)是windows的口令文件进行哈希枚举暴力破解就可以,Mac上可以提取login keychain进行暴力破解就可以了。

通过hashcat进行暴力破解,再辅以彩虹表,10位数的数字,大小写字母,特殊字符组合的密码也可以在几分钟到几十分钟内就得到结果,如果位数更多,利用hashcat分布式密码破解,也可以在几天内得到结果。

六、基于iCloud、Google Cloud的典型应用

目前基于iCloud和Google Cloud的应用越来越多,大概分成3类就是 司法取证,数据恢复,以及家长控制。

怎么做?先打一个广告,我们公司drfone产品是做数据恢复的,卖得很好,但是不能说卖多少钱。很多厂商都在抄我们的。通过提取iCloud中的历史备份数据用于数据恢复,当然我们的dr.fone不止这一种数据恢复手段,同时我们在iCloud的基础上做了更多工作,给与用户更人性化的数据展示接口,一目了然管理iCloud云端中的数据。

还有司法取证,我们公司不是做专业取证的,但是有人整天琢磨怎么把用户的数据提取出来。

云端数据的司法取证,相较于其他的手段,还能拿到用户无法抵赖的时间相关数据,另外还能获取到曾经已经删除过的数据,比如今天7月20号,7月1号iPhone手机有一次同步记录,那么即使把7月20号的数据删除了,7月1号的也还在,例如微信聊天记录,以为删除了聊天记录,实际上,这个数据已经通过云端方式同步到Apple的云服务器去了,司法取证可以通过云数据来进行恢复。

另外还有家长监控,这个应用场景很适合我们现在说的云数据,一般家长监控是能够获取到目标手机的授权的,通过授权能够即时的观察到孩子的动向。从而能够更好的保护好孩子,免得走丢或者是,浏览一些色情暴力网站,家长也可以及时得到反馈并纠正。

七、实例讲解无密码获取icloud数据

通过以上的讲解,基本搞清楚了iCloud和Google Cloud是怎么回事,那么接下来我们来实例讲解一下,在实际场景中如果获取云端数据,拿到一台iPhone,上面有密码,怎样把iPhone的数据搞出来?硬怼的话怼不过去,所以我们得想办法,把战场拉到我们自己特别熟悉的一种方式。

手机上的数据不好提取,但是如果这时候用户有一台PC/MAC,那就好办,PC/MAC的数据好提取,只要把PC/MAC硬盘拆了,进行物理提取就可以。提取PC/MAC中存放密码的文件hash的文件进行暴力枚举,就算是20位的密码,使用hashcat分布式的破解的话,几天也可以搞定,我测试7位数的是1分钟就跑出来了。

因为内部用哈希做比对,hashcat号称1秒钟能比对几十亿个密码。

有了这个密码之后,进入系统中,Windows上用苹果手机,基本都有苹果系的软件iCloud面板,iTunes一类的,这些工具里面都会缓存Token,这个token在Windows上是存放在com.apple.AOSkit.plist文件中,是用当前登录的账户密码进行加密的。

我们前面已经暴力破解了PC/MAC的密码,所以只需要按照算法把com.apple.AOSKit.plst文件解密出来就可以了,解密出来的数据就是这样,也就是我们所谓的token。

我们今天主要是讲这个登陆密码,通过登陆密码能够接到mmeAuthToken,基本所有苹果系APP登陆之后都会缓存这个。

举例,你的icloud面板程序目录下有AOSKit.plist的文件,在Windows上调用crypt这个函数就能够解出来,解这个前提是有帐户密码,Windows或者mac都有工具直接绕过你的登陆密码而登陆到系统里。

前面把密码枚举出来有了这个mmeauthtoken,就可以往icloud服务器里发,发了之后它就会返回一个具体的,比如下面有一个cloudkit云数据,还有一些map地图应用,有很多key针对不同的应用程序,看你走不走运。

如果运气好的话就能提出来更多,但即使运气再差,这个一般也都是有的,要么能提到同步Sync的token,要么能提到备份Backup的token。

提出来之后再往下,往下就可以通过icloud这个服务token以及帐户信息获取到这个用户的数据了。用户的数据有个组织形式,组织形式比较复杂,密钥是用椭圆曲线加密的,iCloud因为协议比较复杂,另外不便于调试分析,所以掌握的公司比较少,我们万兴是掌握的其中之一。

看不清PPT不要紧,回头我在看雪上再写一篇文章。密钥是用椭圆曲线,数据是aes加解密。

你的数据在苹果的云端组织形式,比如一个文件对应的是一堆container,然后往苹果的服务器去下载,有很多能够组成一个container,reference里面有组织信息,把它拼出来就是一个完整的文件,这个相当于硬盘二进制数据一样,比如数据到苹果云端是磁盘镜像是去的,不是上去什么照片,你可以从里面提取到非常多已经删除的数据。

因为大家都知道数据删除不是真删了,能够找到很多删除的照片、图片之类的,这是文件组织信息。

最终的文件就是一块一块的,右边可以拼出来,我们对它进行解析,解析之后能够得到你的通讯录和各种各样的数据,开启同步的那三个都有,只要你开了备份,里面都有。

其实我准备了一个demo,但是它得连网,在这里运行很容易掉链子,回头补一篇文章。这是解出来的最终文件,看起来不是特别直观,大家脑补文件已经解到了!

一般讲到最后,要提示一下用户要怎么做。其实最重要的不是上面列的这几点,最重要的是不要去干坏事,另外不要到处树敌,得罪人。

声明:本文来自看雪学院,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。