背景

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的国际舞台。

议题解读

Apple的iOS系统是所有流行操作系统中最安全的系统之一,正因为如此,也是黑客重要的攻击目标和研究对象。虽然攻击难度大,但一旦成功,所获得的商业价值非常之高,所以iOS系统备受黑客“青睐”。

因为苹果的商业模式比较特别,而且iOS系统并非开源系统,同时Apple高度重视安全,所以对iOS系统进行了周密的安全设计,这使iOS系统的安全性远超其他操作系统。安全界对于大规模自动化捕获该平台的高级威胁,一直面临困难和挑战,同时当终端用户遭受真正的APT攻击(如PEGASUS)时,防御检测解决方案也无法获得足够的权限来检测深层攻击,甚至都无法获得足够的信息。

本议题正是在这个方向经过深入研究做了突破性的进展,成功设计出一套可大规模自动获取应用样本的Crawl系统,通过使用基于Raspberry Pi构建集群实现了低成本、可扩展的安全沙箱自动分析系统,最终实现了自动化收集样本并对样本进行自动化安全分析的APT攻击捕获及分析系统。

首先,我们先来看一下这个系统的整体架构。

系统整体架构

实际上,整个iOS恶意软件Hunt系统基本上分为两个不同的部分:

  • 第一部分,是App Crawl系统,主要用于从App Store收集新发布或现有的应用程序。当然作为感染链源之一,还会收集来自第三方App Store甚至公共恶意软件存储库(例如Virus Total)的应用程序以增强我们的恶意软件数据库。除应用程序外,其他潜在的恶意文件类型(如Profile)也是我们的收集目标,(可以参考我在BlackHat 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系统将解密Apple的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上的所有应用程序都由Apple打包,这显然会阻止厂商基于安全方面的动静态分析,因此需要将目标应用程序的运行时内存转储为普通代码。

因此,基于上面的流程,我们可以设计成以下架构。

自动Crawl & Crack系统架构

从架构图来看,该系统实现的功能,包括应用程序Meta信息Crawl、Apple ID登录、PC授权、iOS设备授权、IPA签名和安装后的Crack。它实际上是一个基于iTunes Store应用程序的自动系统。

App Meta信息Crawler负责获取应用程序详细信息,包括下载URL和价格信息。应用下载抓取工具可以通过这些网址自动下载应用。然后,这些应用程序将发送到每个越狱设备进行解密,这将用于以后的静态和动态分析。

自动Crawl系统

对于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数据文件。对于Apple来说,它们只为每个应用程序保留了一份Copy。当用户购买App时,服务器将动态生成DRM信息,并将其放入应用程序购买的响应数据中发送回来。之后iTunes或者App Store将负责把DRM数据重新打包到IPA文件中。因此,我们仅需简单地将之前获得“Sinf数据”保存并下载到IPA文件中即可。

我们都知道,从App Store下载的App是加密的。这样不利于我们使用越狱设备和模拟器来分析行为,所以还需要对IPA进行解密。下面我们说一下,Crack系统的技术要点。

App Crack系统

如果用户的帐户从来没有在iOS设备上登录过,则它购买的App是无法在该设备上运行的,即DRM保护。 如果在一台设备上,用户登录了自己的帐户,Apple会认为用户授权此设备,而使用该帐户购买的一切应用程序则可安装、也可运行。但是我们需要让这一切变得自动化。

通过逆向“设置”程序,我们发现“StoreServices.framework”是用来管理账户信息的,最后我们做了一个Tweak,并配合Undocument API实现了Apple ID登录过程。

我们有了大量待分析的样本,下面的工作就是静态和动态分析。业界对于静态分析已经非常成熟,比如MachOView等等,这里我们就不多介绍了。而动态分析,目前主要以基于Frida的系统居多。

Frida是一个功能强大且便携的Hook系统,支持移动(例如iOS和Android)和PC系统(例如MacOS)。更重要的是,它允许在没有配置和编译的情况下根据脚本(例如JavaScript)控制Hook点。所以说,它是目前最流行的动态分析框架系统。当然它们都必须依赖真机设备。

接下来,我们来介绍一下传统的基于真机(iOS设备)的沙盒系统。

沙盒分析系统

传统的基于真机(iOS设备)沙盒系统

从上图来看,这种基于Frida实现真机(iOS设备)沙盒系统的工作流程主要包括以下几个方面:

  • 首先,给iOS设备配置Frida,目的是为了进行行为跟踪;
  • 然后,Frida控制器模块将在iOS设备上触发样本运行,或者其他任何操作(例如:安装配置文件,使用浏览器访问网站等),并跟踪感兴趣的系统行为;
  • 最后,将行为日志收集到主机端,该日志将成为决策引擎系统的输入,它会根据需要,实时或非实时地判断样本行为。

虽然Frida一直是App动态检测的主流,但是如果我们需要检测大量样本或者大量Case时,则会出现严重瓶颈,因为面临大量的真机(iOS设备)投入,而且成本、扩展性都是致命问题,所以我们创新的使用了低成本Raspberry Pi来替代它,并成功的实现了虚拟化、集群化。

基于Raspberry Pi的iOS虚拟机

在虚拟化方面,我们实现了一个动态加载器,它可以加载iOS可执行文件,并重新实现了System Library和Framework,以保证iOS可执行文件能够正常运行等等。

这样我们就可以轻松动态监控Mach-O的行为,并将这些日志提交给决策引擎,以确定该应用程序是否为恶意软件,甚至是否是APT攻击的一个Chain等等。

如果希望利用现有的服务器来运维,我们也可以将其移植到QEMU中运行。

通过这种“低成本硬件仿真器”的设计,每天都可以自动化扫描大量的样本,从而节省了成本,并提升了可扩展性,提高了样本的检测效率。

这种高效的沙盒分析系统,必然会产生大量的分析日志,所以,我们需要一种高性能、高实时性的规则决策引擎系统来做最后的判断处理。

决策引擎系统

Nools是一个基于Rete并使用JavaScript实现的规则引擎推理系统。它可以支持连续日志输入时的实时判断模式,而且用其编写的决策规则,具有强灵活性和可移植性,使得我们对于样本的检测获得了高可用性。

总结

一直以来,业界对于“iOS大量样本检测实现自动化Hunt高级威胁”都没有很好的实践,而我们已经证明了基于自动抓取、安全沙箱自动分析系统以及iOS虚拟化的高级威胁Hunt系统的可行性。而这样大量的样本检测Case和日志,也为以后我们引入AI系统提供了必要条件。

关于美团安全

美团安全部的大多数核心人员,拥有多年互联网以及安全领域实践经验,很多同学参与过大型互联网公司的安全体系建设,其中也不乏全球化安全运营人才,具备百万级IDC规模攻防对抗的经验。安全部也不乏CVE“挖掘圣手”,有受邀在Black Hat等国际顶级会议发言的讲者,当然还有很多漂亮的运营妹子。

目前,美团安全部涉及的技术包括渗透测试、Web防护、二进制安全、内核安全、分布式开发、大数据分析、安全算法等等,同时还有全球合规与隐私保护等策略制定。我们正在建设一套百万级IDC规模、数十万终端接入的移动办公网络自适应安全体系,这套体系构建于零信任架构之上,横跨多种云基础设施,包括网络层、虚拟化/容器层、Server 软件层(内核态/用户态)、语言虚拟机层(JVM/JS V8)、Web应用层、数据访问层等,并能够基于“大数据+机器学习”技术构建全自动的安全事件感知系统,努力打造成业界最前沿的内置式安全架构和纵深防御体系。

随着美团的高速发展,业务复杂度不断提升,安全部门面临更多的机遇和挑战。我们希望将更多代表业界最佳实践的安全项目落地,同时为更多的安全从业者提供一个广阔的发展平台,并提供更多在安全新兴领域不断探索的机会。

招聘信息

美团安全部正在招募Web&二进制攻防、后台&系统开发、机器学习&算法等各路小伙伴。如果你想加入我们,欢迎简历请发至邮箱zhaoyan17@meituan.com

具体职位信息可参考这里:https://mp.weixin.qq.com/s/ynEq5LqQ2uBcEaHCu7Tsiw

美团安全应急响应中心MTSRC主页:security.meituan.com