总第281篇
2018年 第73篇
2018年8月9日,全球顶级安全会议——Black Hat USA在美国拉斯维加斯的曼德勒海湾会议中心落下了帷幕,这场盛会在全球黑客心中几乎等同于“世界杯”和“奥斯卡”一样的存在。这场一年一度的盛会已经有着21年的悠久历史,也被公认为世界信息安全行业的最高盛会之一。
作为在国内安全领域拥有多年的实战经验和技术积累的安全团队,美团安全研究院再次受邀参加了本次盛会。在议题通过率不足20%的严苛筛选条件下,美团安全工程师Ju Zhu与小伙伴一起带着本次演讲的议题“Art of Dancing with Shackles: Best Practice of App Store Malware Automatic Hunting System(带着镣铐跳舞:App Store恶意代码自动捕获系统最佳实践)”,荣登Black Hat USA 2018的国际舞台。
苹果公司的iOS系统是所有流行操作系统中最安全的系统之一,正因为如此,也是黑客重要的攻击目标和研究对象。虽然攻击难度大,但一旦成功,所获得的商业价值非常之高,所以iOS系统备受黑客“青睐”。
因为苹果公司的商业模式比较特别,而且iOS系统并非开源系统,同时苹果公司高度重视安全,所以对iOS系统进行了周密的安全设计,这使iOS系统的安全性远超其他操作系统。安全界对于大规模自动化捕获该平台的高级威胁,一直面临困难和挑战,同时当终端用户遭受真正的APT攻击(如PEGASUS)时,防御检测解决方案也无法获得足够的权限来检测深层攻击,甚至都无法获得足够的信息。
本议题正是在这个方向经过深入研究做了突破性的进展,成功设计出一套可大规模自动获取应用样本的Crawl系统,通过使用基于Raspberry Pi构建集群实现了低成本、可扩展的安全沙箱自动分析系统,最终实现了自动化收集样本并对样本进行自动化安全分析的APT攻击捕获及分析系统。
首先,我们先来看一下这个系统的整体架构。
实际上,整个iOS恶意软件Hunt系统基本上分为两个不同的部分:
第一部分,是App Crawl系统,主要用于从App Store收集新发布或现有的应用程序。当然作为感染链源之一,还会收集来自第三方App Store甚至公共恶意软件存储库(例如Virus Total)的应用程序以增强我们的恶意软件数据库。除应用程序外,其他潜在的恶意文件类型(如Profile)也是我们的收集目标(可以参考我在Black Hat Asia 2018中关于”野外iOS Profile攻击“的名为“Death Profile”的文章)。
另一部分,是沙盒分析系统,主要是动态跟踪应用程序行为,并根据规则决策引擎关联行为日志以给出最终结果。实际上,沙盒系统包含不同的类型,包括基于Frida的iOS真实设备、ARM服务器的用户模式仿真(例如Raspberry Pi系统)以及完整的系统仿真VM。
具体来说,整个系统主要由五个模块构成。
1. 自动Crawl系统:自动化爬行及抓取各App应用市场的应用程序,包括App Store以及其他第三方市场,本系统中通过逆向分析成功的实现了自动化的用户登录、购买及下载应用程序。
2. App Crack系统:解密从App Store下载的应用程序,方便沙盒进行动态行为分析。
3. 沙盒分析系统:突破传统基于真机(iOS设备)沙盒的系统设计,创新的使用了基于Raspberry Pi模式和QEMU模式,低成本、可扩展的集群方式来实现动态监控应用程序的运行行为,例如File、Network、XPC、IOKit和Profiled等。
4. 动态跟踪行为系统:主要用来收集沙盒系统中所运行样本的各种监控行为日志。
5. 决策引擎系统:基于开源的Nools系统,实时或非实时地根据监控日志,来判断样本行为。
那么,它们是怎么有效的运转起来的呢?
首先,通过自动化爬虫系统构建相应的登录、购买、下载操作,从iTunes服务器抓取应用程序,并发送给Crack系统。之后Crack系统将解密苹果的DRM,并生成可在越狱设备和模拟器上运行的IPA文件。
然后,构建IPA运行环境暨沙盒分析系统,我们引入了两个解决方案,第一个是传统的在真正越狱设备上分析这些应用程序;第二个是创新的使用了基于Raspberry Pi的模拟器集群来运行并分析应用程序。
最后,使用基于开源的Frida框架,经过定制化的开发,动态跟踪每个IPA应用程序的行为,再通过决策引擎检查IPA是否为恶意应用,是否可能存在APT攻击。
下面,我们将基于各个模块的分解来详谈它们的运作模式。
首先,App Store应用程序的Crawl基本可以理解为iTunes协议的灰盒逆向工程。
经过研究,我们发现在PC主机上通过iTunes实现App Store Crawl的基本步骤包括以下几个方面:
第一步,是抓取目标应用的Meta数据,例如名称、类别、大小等等。
第二步,是使用Apple ID登录,购买产品,使用iTunes授权PC端,以满足应用下载的要求,并将应用保存到本地磁盘。这里,我们必须使用很多技巧来征服App Store的反爬机制。
最后一步,是破解下载的应用程序。由于App Store上的所有应用程序都由苹果公司打包,这显然会阻止厂商基于安全方面的动静态分析,因此需要将目标应用程序的运行时内存转储为普通代码。
因此,基于上面的流程,我们可以设计成以下架构。
从架构图来看,该系统实现的功能,包括应用程序Meta信息Crawl、Apple ID登录、PC授权、iOS设备授权、IPA签名和安装后的Crack。它实际上是一个基于iTunes Store应用程序的自动系统。
App Meta信息Crawler负责获取应用程序详细信息,包括下载URL和价格信息。应用下载抓取工具可以通过这些网址自动下载应用。然后,这些应用程序将发送到每个越狱设备进行解密,这将用于以后的静态和动态分析。
对于Crawl系统,我们可以分为三个部分来运作。
1. App Meta信息Crawler:App Store是有区域限制的,即区域A的Apple ID无法下载区域B的应用程序。因此,针对不同区域,我们设计了不同的Spider。而获得的Meta信息,包含了App ID、下载地址、图标和其他一些基本信息。
2. App下载Crawler:通过逆向分析多个二进制文件及通讯协议,构造Apple ID的登录及购买请求,可以自动化下载与“从iTunes客户端下载的IPA文件”相同的IPA文件。
3. 导入DRM数据:上面下载的IPA文件,实际上是不能直接安装运行的,因为还缺少一个Sinf文件,它是一个包含授权等信息的DRM数据文件。对于苹果公司来说,它们只为每个应用程序保留了一份Copy。当用户购买App时,服务器将动态生成DRM信息,并将其放入应用程序购买的响应数据中发送回来。之后iTunes或者App Store将负责把DRM数据重新打包到IPA文件中。因此,我们仅需简单地将之前获得“Sinf数据”保存并下载到IPA文件中即可。
我们都知道,从App Store下载的App是加密的。这样不利于我们使用越狱设备和模拟器来分析行为,所以还需要对IPA进行解密。下面我们说一下,Crack系统的技术要点。
如果用户的帐户从来没有在iOS设备上登录过,则它购买的App是无法在该设备上运行的,即DRM保护。
如果在一台设备上,用户登录了自己的帐户,苹果公司会认为用户授权此设备,而使用该帐户购买的一切应用程序则可安装、也可运行。但是我们需要让这一切变得自动化。
通过逆向“设置”程序,我们发现“StoreServices.framework”是用来管理账户信息的,最后我们做了一个Tweak,并配合Undocument API实现了Apple ID登录过程。
我们有了大量待分析的样本,下面的工作就是静态和动态分析。业界对于静态分析已经非常成熟,比如MachOView等等,这里我们就不多介绍了。而动态分析,目前主要以基于Frida的系统居多。
Frida是一个功能强大且便携的Hook系统,支持移动(例如iOS和Android)和PC系统(例如MacOS)。更重要的是,它允许在没有配置和编译的情况下根据脚本(例如JavaScript)控制Hook点。所以说,它是目前最流行的动态分析框架系统。当然它们都必须依赖真机设备。
接下来,我们来介绍一下传统的基于真机(iOS设备)的沙盒系统。
从上图来看,这种基于Frida实现真机(iOS设备)沙盒系统的工作流程主要包括以下几个方面:
首先,给iOS设备配置Frida,目的是为了进行行为跟踪;
然后,Frida控制器模块将在iOS设备上触发样本运行,或者其他任何操作(例如:安装配置文件,使用浏览器访问网站等),并跟踪感兴趣的系统行为;
最后,将行为日志收集到主机端,该日志将成为决策引擎系统的输入,它会根据需要,实时或非实时地判断样本行为。
虽然Frida一直是App动态检测的主流,但是如果我们需要检测大量样本或者大量Case时,则会出现严重瓶颈,因为面临大量的真机(iOS设备)投入,而且成本、扩展性都是致命问题,所以我们创新的使用了低成本Raspberry Pi来替代它,并成功的实现了虚拟化、集群化。
在虚拟化方面,我们实现了一个动态加载器,它可以加载iOS可执行文件,并重新实现了System Library和Framework,以保证iOS可执行文件能够正常运行等等。
这样我们就可以轻松动态监控Mach-O的行为,并将这些日志提交给决策引擎,以确定该应用程序是否为恶意软件,甚至是否是APT攻击的一个Chain等等。
如果希望利用现有的服务器来运维,我们也可以将其移植到QEMU中运行。
通过这种“低成本硬件仿真器”的设计,每天都可以自动化扫描大量的样本,从而节省了成本,并提升了可扩展性,提高了样本的检测效率。
这种高效的沙盒分析系统,必然会产生大量的分析日志,所以,我们需要一种高性能、高实时性的规则决策引擎系统来做最后的判断处理。
Nools是一个基于Rete并使用JavaScript实现的规则引擎推理系统。它可以支持连续日志输入时的实时判断模式,而且用其编写的决策规则,具有强灵活性和可移植性,使得我们对于样本的检测获得了高可用性。
一直以来,业界对于“iOS大量样本检测实现自动化Hunt高级威胁”都没有很好的实践,而我们已经证明了基于自动抓取、安全沙箱自动分析系统以及iOS虚拟化的高级威胁Hunt系统的可行性。而这样大量的样本检测Case和日志,也为以后我们引入AI系统提供了必要条件。
---------- END ----------
招聘信息
美团安全2018秋季招新开始啦!这里有数据安全、Web安全、移动安全、IT安全、渗透测试、安全研究、隐私保护合规、产品研发等十余个热门岗位欢迎你的加入,详情戳 这里。简历请投至 zhaoyan17@meituan.com
也许你还想看