背景

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

镣铐之舞:美团安全工程师Black Hat USA演讲相关推荐

  1. Black Hat USA 2021主议题介绍

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 2021年美国黑帽大会于当地时间7月31日至8月5日举行,议题包括19个领域,包括:人工智能.机器学习和数据科学,AppSec,应用安全, ...

  2. Black Hat USA 2020 大会主议题大盘点(上)

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 第23届美国黑帽大会将于太平洋时间8月1日至6日在线举行.如下是两天主会的演讲主题,供各位参考: 1.压力测试民主:全球疫情下的大选完 ...

  3. 快来捡武器:Black Hat USA 将推出的8款安全工具

    7月31日至8月5日期间,Black Hat USA 2021在拉斯维加斯举行.这场为期六天的安全盛会内容涉及信息安全研究.开发和趋势的最新情况等.安全研究人员和从业人员也分享了大量用于渗透测试.逆向 ...

  4. 实施工程师1分钟即时演讲_我是如何在1年内从时装模特转变为软件工程师的

    实施工程师1分钟即时演讲 In 2015 I knew almost nothing about coding. Today, I'm a software engineer and a teache ...

  5. 招聘 | 美团-算法工程师-社招

    进NLP群->加入NLP交流群 算法工程师 [部门]:美团-到家事业群-搜索推荐技术部 [城市]:北京市 [职级范围]:L7 - L8 [部门介绍]:到家研发平台秉承"零售+科技&qu ...

  6. 美团科技 Java工程师_美团Java工程师面试题(2018秋招)

    第一次面试 1.小数是怎么存的 2.算法题:N二进制有多少个1 3.Linux命令(不熟悉 4.JVM垃圾回收算法 5.C或者伪代码实现复制算法 6.volatile 7.树的先序中序后序以及应用场景 ...

  7. 2015美团算法工程师笔试、面试之旅

    9月16日下午进行了美团笔试,8个大题+若干附加题(其它岗位选做),笔试题就不多说了,基本都是小算法题,写思想任何写代码,相信网上都能搜到.90分钟时间,我做了6题,时间实在是来不及,做完感觉进面试应 ...

  8. 秋招Java开发工程师笔试_美团Java工程师面试题(2018秋招)

    第一次面试 1.小数是怎么存的 2.算法题:N二进制有多少个1 3.Linux命令(不熟悉 4.JVM垃圾回收算法 5.C或者伪代码实现复制算法 6.volatile 7.树的先序中序后序以及应用场景 ...

  9. 网易、华为、美团java工程师社招面经!

    金三银四一路走来,面的磕磕绊绊,现在比较麻木,不满意但也知道自己几斤几两,无悲无喜状态,只能先毕业再徐徐图之吧.先谈谈过程,再写面经,只为记录,如果能有人看到题目复习一下也不错. 背景:本科物理,硕士 ...

最新文章

  1. 在阿里AI实验室做NLP高级算法工程师是一种什么样的体验?
  2. 报错解决transmission: Error: Input/Output error和ls: reading directory '': Input/output error
  3. 消息队列面试经典十连问
  4. Docker镜像制作规范
  5. springboot+mybatis+SpringSecurity 实现用户角色数据库管理(一)
  6. 传奇霸业维护服务器,37传奇霸业8月18日部分区服维护计划
  7. 【原创】uC/OS 中LES BX,DWORD PTR DS:_OSTCBCur的作用及原理
  8. 上海计算机一级考试2017,2017年上海计算机一级考试试题
  9. pc工具不支持stb的加密方式_那些工作中常用的实用工具
  10. hdu 1255 覆盖的面积
  11. CF 559B Equivalent Strings 分治05 A题
  12. MySQL下载安装、配置与使用(win7x64)
  13. 江开计算机应用基础作业1答案,江苏开放大学计算机应用基础形考第二次作业答案.doc...
  14. 腾讯云区块链使用心得
  15. 云手机如何打破Wintel、Apple和Google的生态的垄断
  16. Hola Studio最佳实践之多边形刚体的编辑
  17. 通过Isilon和VMware部署Hadoop大数据分析(上)
  18. 吐槽智能手机上那些不爽的事
  19. oracle10g驱动怎么安装,oracle10g安装后怎么使用
  20. 定义一个学生类Student,包含三个属性姓名、年龄、性别, 创建三个学生对象存入ArrayList集合中。 A:使用迭代器遍历集合。 B:求出年龄最大的学生,然后将该对象的姓名变为:小猪佩奇。

热门文章

  1. vim学习笔记(3)眼花缭乱的Vim模式
  2. FMS3系列(三):创建基于FMS的流媒体播放程序
  3. c#执行存储过程的简单实例
  4. Android中的动画有哪几类?各自的特点和区别是什么?
  5. 大大大大数怎么求余?C语言
  6. void函数调用时显示不允许使用不完整的_4位数码管显示模块驱动
  7. 阅读英文论文的方法总结(三遍法)
  8. JS高级——JSON、数据存储学习笔记
  9. 03.结构化机器学习项目 W2.机器学习策略(2)
  10. LeetCode 1034. 边框着色(BFS/DFS)