2019 SDC 议题回顾 | 基于云数据的司法取证技术
网络钓鱼、网上欺诈、垃圾邮件、拒绝服务攻击、病毒、蠕虫、恶意代码、信用卡诈骗等等事件层出不穷,相信大家在日常生活中都或多或少听说或亲身经历过这样的网络犯罪事件。
信息化时代面临越来越多网络犯罪,我们对司法取证的要求也变得越来越高,相应而言,我们的技术研究人员也在追求更高水平的司法取证技术。
下面就让我们来回顾看雪2019安全开发者峰会上《基于云数据的司法取证技术》的精彩内容。
编辑按
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,但是它得连网,在这里运行很容易掉链子,回头补一篇文章。这是解出来的最终文件,看起来不是特别直观,大家脑补文件已经解到了!
一般讲到最后,要提示一下用户要怎么做。其实最重要的不是上面列的这几点,最重要的是不要去干坏事,另外不要到处树敌,得罪人。
注意:点击文末原文链接,即可查看本议题完整演讲PPT。其他议题演讲PPT,经过讲师同意后会陆续放出,请大家持续关注看雪论坛及看雪学院公众号!
2、2019 SDC 议题回顾 | 新威胁对策:TSCM 技术反窃密
3、2019 SDC 议题回顾 | 安全研究视角看macOS平台EDR安全能力建设
公众号ID:ikanxue
官方微博:看雪安全
商务合作:wsc@kanxue.com
↙点击“阅读原文”,查看演讲PPT