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

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

招聘信息

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LintCode 550. 最常使用的K个单词II(自定义set(可修改数据的优先队列) + map)

1. 题目 在实时数据流中找到最常使用的k个单词. 实现TopK类中的三个方法: TopK(k), 构造方法add(word), 增加一个新单词topk(), 得到当前最常使用的k个单词. 样例 1: 输入: TopK(2) add("lint") add("code") add("code") topk() 输…

Pix2Seq:谷歌大脑提出 CV 任务统一接口!

文 | 青豆最近一个大趋势就是将各类任务统一在一个大一统框架下。大规模预训练语言模型已成功打通各类文本任务,使得不同的NLP任务上,都可以用这种统一的sequence生成框架作为基础模型,只需要通过prompt的方式,指导模型生成目标结…

美团针对Redis Rehash机制的探索和实践

背景 Squirrel(松鼠)是美团技术团队基于Redis Cluster打造的缓存系统。经过不断的迭代研发,目前已形成一整套自动化运维体系:涵盖一键运维集群、细粒度的监控、支持自动扩缩容以及热点Key监控等完整的解决方案。同时服务端通过Doc…

剑指Offer - 面试题59 - II. 队列的最大值(deque模拟单调栈)

1. 题目 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的时间复杂度都是O(1)。 若队列为空,pop_front 和 max_value 需要返回 -1 示例 1: 输入: ["MaxQueue","push…

行业现状令人失望,工作之后我又回到UC伯克利读博了

文 | SHREYA SHANKAR编 | 小舟、陈萍源 | 机器之心很多同学在面临读博和工作的选择时会犹豫不决,这篇文章也许能给你一点启发。机器学习领域近来受到大模型的冲击,很多小公司表示难以承担大模型的训练费用。但行业中机器学习工程的发展具体是怎样的&…

前端遇上Go: 静态资源增量更新的新实践

为什么要做增量更新 美团金融的业务在过去的一段时间里发展非常快速。在业务增长的同时,我们也注意到,很多用户的支付环境,其实是在弱网环境中的。 大家知道,前端能够服务用户的前提是 JavaScript 和 CSS 等静态资源能够正确加载。…

剑指Offer - 面试题26. 树的子结构(双重递归)

1. 题目 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如: 给定的树 A:3/ \4 5/ \1 2 给定的树 B:4 /1 返回 true,因为 B 与 A 的一…

给1万帧视频做目标分割,显存占用还不到1.4GB | ECCV2022

文 | 明敏 发自 凹非寺源 | 量子位 | 公众号 QbitAI咦,怎么好好的藤原千花,突然变成了“高温红色版”?这大紫手,难道是灭霸在世??如果你以为上面的这些效果只是对物体后期上色了,那还真是被AI给…

互联网公司数据安全保护新探索

近年来,数据安全形势越发严峻,各种数据安全事件层出不穷。在当前形势下,互联网公司也基本达成了一个共识:虽然无法完全阻止攻击,但底线是敏感数据不能泄漏。也即是说,服务器可以被挂马,但敏感数…

剑指Offer - 面试题47. 礼物的最大价值(动态规划)

1. 题目 在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值&#…

大佬在线复盘:我在训练 DALL·E 时犯过的错

文 | jxyxiangyu在写了一周的业务代码后,沏一杯绿茶,总算可以有时间看看鸽了一个月的素材了。好的,小伙伴们,废话不多说,今天我们将跟随 Boris Dayma 大佬,看看他在训练 DALLE-Mega 时遇到的一系列问题。据…

Toast与Snackbar的那点事

背景 Toast是Android平台上的常用技术。从用户角度来看,Toast是用户与App交互最基本的提示控件;从开发者角度来看,Toast是开发过程中常用的调试手段之一。此外,Toast语法也非常简单,仅需一行代码。基于简单易用的优点&…

LintCode 1683. 杀怪兽(队列)

1. 题目 有 n 只怪兽和一个奥特曼,奥特曼和怪兽都有5个属性值。 当且仅当奥特曼的5个属性值都不小于怪兽时,奥特曼可以杀死怪兽。 当一个怪兽被杀掉时,这个怪兽的5个属性会增加到奥特曼身上。 请问奥特曼最多可以杀死多少怪兽? 样例 1: 输…

聊聊大火的多模态

多模态机器学习,英文全称 MultiModal Machine Learning (MMML),旨在通过机器学习的方法实现处理和理解多源模态信息的能力。每一种信息的来源或者形式,都可以称为一种模态。例如,人有触觉,听觉,视觉&#x…

2018开春大礼:750页电子书 + 33场技术沙龙资料 + 17场线上课程分享

2017年,美团成长为中国领先的生活服务电子商务平台,在吃喝玩乐住行等200多个品类,2800多个城区县,服务了亿万消费者、数百万商家,日订单数超过2200万,年度交易总额达到了3600亿。2017年10月,美团…

LintCode 1677. 石头(自定义优先队列)

1. 题目 给定数组 p 代表 n 个石头的位置和数组 d 代表这 n 块石头能够扔的距离。 从左(0位置)往右走。当你第 k 次碰到一个石头时, 如果 k 是奇数, 把这个石头往右扔; 如果 k 是偶数,跳过这个石头。 返回不再会碰到石头时&…

手机上也能训练BERT和ResNet了?!

源 | 机器之心研究者表示,他们将边缘训练看作一个优化问题,从而发现了在给定内存预算下实现最小能耗的最优调度。目前,智能手机和嵌入式平台等边缘设备上已经广泛部署深度学习模型来进行推理。其中,训练仍然主要是在具有 GPU 等高…

LintCode 125. 背包问题 II(DP)

1. 题目 有 n 个物品和一个大小为 m 的背包. 给定数组 A 表示每个物品的大小 数组 V 表示每个物品的价值. 问最多能装入背包的总价值是多大? 样例 1: 输入: m 10, A [2, 3, 5, 7], V [1, 5, 2, 4] 输出: 9 解释: 装入 A[1] 和 A[3] 可以得到最大价值, V[1] V[3] 9 样例…

大众点评App的短视频耗电量优化实战

前言 美团测试团队负责App的质量保证工作,日常除了App的功能测试以外,还会重点关注App的性能测试。现在大家对手机越来越依赖,而上面各App的耗电量,直接影响了手机的待机时间,是用户非常关心的一点。本文主要通过一个典…

解决CNN固有缺陷!通用 CNN 架构CCNN来了| ICML2022

文 | David W. Romero等源丨机器之心在 VGG、U-Net、TCN 网络中... CNN 虽然功能强大,但必须针对特定问题、数据类型、长度和分辨率进行定制,才能发挥其作用。我们不禁会问,可以设计出一个在所有这些网络中都运行良好的单一 CNN 吗&#xff1…