HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

  • 2020-02-27
  • 本文字数:4536 字

    阅读完需:约 15 分钟

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

背景

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 应用层、数据访问层等,并能够基于“大数据+机器学习”技术构建全自动的安全事件感知系统,努力打造成业界最前沿的内置式安全架构和纵深防御体系。


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


2020-02-27 11:14674

评论

发布
暂无评论
发现更多内容

房产|1-9月份全国房地产开发投资下降8.0%

前嗅大数据

数据 房地产业 房地产

React源码分析6-hooks源码

goClient1992

React

杨帆:拆解研发流程,做好探索型项目的过程管理丨声网开发者创业讲堂 • 第 5 期

声网

技术管理 人工智能’

在线问题反馈模块实战(二十一):完结篇

bug菌

springboot 项目实战 10月月更

从输入URL到渲染的过程中到底发生了什么?

loveX001

JavaScript

快递单信息抽取【二】基于ERNIE1.0至ErnieGram + CRF预训练模型

汀丶人工智能

nlp 算法、

从输入URL到渲染的过程中到底发生了什么?

loveX001

JavaScript

一次 Redis 事务使用不当引发的生产事故

悟空聊架构

redis 事务 悟空聊架构 10月月更 @Transactional

一天梳理完React所有面试考察知识点

beifeng1996

React

React源码分析5-commit

goClient1992

React

在线问题反馈模块实战(十九):实现数据批量导出到excel文件中功能

bug菌

springboot 项目实战 10月月更

Opencv 图像处理:图像通道、直方图与色彩空间

timerring

OpenCV 图像处理 10月月更

长安链源码分析之交易过程分析(2)

在线问题反馈模块实战(二十):实现文件批量导出到zip压缩包中功能

bug菌

springboot 项目实战 10月月更

一道React面试题把我整懵了

beifeng1996

React

SpringCloud-04 Feign学习笔记

游坦之

10月月更

Java中的final关键字详解😁

共饮一杯无

Java final 10月月更

1024,我们干了点儿大事 | StarRocks 2.4 新版本特性介绍

StarRocks

数据库

web技术分享| 虚拟 tree

anyRTC开发者

Vue 前端 Web tree antDesign vue

最短的桥

掘金安东尼

算法 10月月更

长安链源码分析之交易过程分析(1)

房产|9月全国70城房价出炉!快来看看你的城市房价变化

前嗅大数据

数据 房地产 房产

长安链源码分析之交易过程分析(3)

Redis数据结构(一)-Redis的数据存储及String类型的实现

京东科技开发者

二进制 哈希算法 数据存储 结构化 Redis 数据结构

长安链源码分析之交易过程分析(4)

社招前端必会面试题(附答案)

loveX001

JavaScript

长安链源码分析之交易过程分析(6)

百度前端高频react面试题总结

beifeng1996

React

关于JavaScript的本地存储方案

CoderBin

JavaScript 前端 LocalStorage 本地存储 10月月更

倒计时第1天!2022 XDR网络安全运营新理念峰会即将开幕

未来智安XDR SEC

网络安全

长安链源码分析之交易过程分析(5)

镣铐之舞:美团安全工程师Black Hat USA演讲_文化 & 方法_美团技术团队_InfoQ精选文章