漏洞之王:漫谈高阶漏洞攻防演进和现实威胁

何淇丹(Flanker),我们一般叫他冠军。有BAT 3家公司的工作经历,目前负责一个知名美股上市公司整体安全。现在他还没满26岁,这个发展速度远超同龄人,而他的故事远没有结束.

近期,我们邀请资深安全专家在“金融业企业安全建设实践”微信群,进行在线直播分享。本期,我们邀请到的嘉宾是何淇丹(Flanker)来给大家分享高阶漏洞攻防演进和现实威胁。如需查阅更多嘉宾分享,请文末公众号。

【活动预告】漏洞之王:漫谈高阶漏洞攻防演进和现实威胁

【分享嘉宾】何淇丹(Flanker)

【嘉宾简介】毕业于浙江大学少年班和香港科技大学,蓝莲花战队早期核心成员,前腾讯科恩实验室高级研究员,资深安全专家,现任某美股上市公司安全总监。专注于安全攻防研究和大规模应用、系统安全防御体系研究建设。曾获Pwn2Own Mobile和PC双料冠军、BlackHat Pwnie Award最佳客户端漏洞提名、Master of Pwn称号,Google Android Security Top Researcher称号。多次在BlackHat & DEFCON & CanSecWest & RECon & PoC & QCON等发表演讲。

【活动时间】11月15日周五晚上20:00-21:00,60分钟

【活动形式】嘉宾通过文字形式,在“金融业企业安全建设实践”微信群内就“漏洞之王:漫谈高阶漏洞攻防演进和现实威胁”话题直播分享(约四十钟),之后是互动提问和回答,约二十分钟

请大家安排好时间,准备好问题,积极参与。

—————————————————————

下是实录:

大家好,我是Flanker。很荣幸受君哥邀请,来为大家分享一些从底层攻击的角度回头看防御的想法—-


漏洞之王:漫谈高阶端漏洞攻防演进和现实威胁

 

为什么取这个标题?在这里解释一下:

传统的端点入侵方式依赖于钓鱼网站或文档、可执行文件、CHM等作为载体,欺骗没有防御意识的目标主动下载和执行,或泄露自己的认证凭据。针对警惕性高的目标或成熟组织,这套方法存在很大的局限性。

高阶端漏洞通过多个无交互漏洞链组合,目标可能在完全无感的情况下设备即被控制,造成机密数据泄露或成为进一步渗透的跳板。

Flanker

故称之为漏洞之王

 

在每年的Pwn2Own大赛中,研究者都会针对最新设备演示此类攻击,并和ZDI合作及时将发现的这些0day报告给厂商,像Google Bug Bounty Program最高可为一套完整的利用链支付20万美元,而国内这两年组织举办了对标Pwn2Own的天府杯大赛,奖金更甚于Pwn2Own。而在漏洞军火市场中,这些漏洞则可能会以0day的身份成为军火库的一部分,价值更是水涨船高。

 

根据 what – how -why 原则,我们现在来展开:

1、What – See what your enemy can do

NSOGroup就是其中的佼佼者,其销售的取证工具包Pegasus号称远程情况下,无需点击/一次点击(目标打开邮件、链接或接收消息)即可获取目标手机最高权限,每套售价1000万-5000万美元,对外销售要先取得以色列军火出口许可。

庞大严密的商业化精密机器,将天才精妙的漏洞挖掘、漏洞利用转换为如**般高度工业化的精确武器。Flanker

我们先看下wikileaks披露的2013年pegasus的产品说明书,看下他们2013年做到了什么样的水平。

 

1574604044_5dda8d0c6a3cd.jpg!small

1574604050_5dda8d12b126b.jpg!small

在此给大家几分钟来阅读下这两张图片:

 

1574604056_5dda8d1812110.jpg!small

 

1574604062_5dda8d1e37bfe.jpg!small

Peagus可以帮助操作人员在只知道对方手机号或者邮件地址的情况下,通过直接推送攻击消息触发漏洞,或者推送攻击链接,目标打开后触发漏洞,从而获得其移动设备的所有权限,持续性读取检测短信、相册、位置、浏览记录等等,实现全自动化远程攻击和监控。

看起来非常的神奇,那么这种攻击是如何实现的?

2、How – how do they do it?

任何人类编写的软件都会有漏洞,具体到移动设备上,以下的远程入口都是可以攻击的:

  • Browser

  • SMS/MMS/iMessage

  • IM(WhatsApp, Facetime, Wechat,Facebook等)

  • Wifi

  • Baseband

以被研究最多的浏览器为例,现代网页日趋复杂,又对性能有着很高的要求,灵活的JS和HTML相关最终都会落到本地代码(C++)来进行解析渲染,这自然导致了各种内存破坏漏洞的层出不穷。目前最流行的浏览器引擎, Google V8 + Blink的代码库绝大部分由C++编写,checkout之后源代码库高达数G,

即使强如Google,超过25000台机器组成的clusterfuzz集群24/7进行fuzz测试,也无法完全杜绝漏洞的发生。Flanker

 

例如CVE-2016-5198: V8为了加快JS引擎的执行速度,会将JS中的热点区域通过编译器优化和预测技术预先翻译成本地机器码,同时根据预测的信息略去必要的边界检查以提升效率。但如果发现函数不满足预测,则会回退到解释模式重新翻译。其中的一个模式是谁修改了对象,谁负责标记通知其他使用函数进行优化。

 

而这个漏洞就在于一个悖论,如果修改对象的函数本身也被JIT了会怎么样?在上述这种情况下,v8的JIT引擎出现了属性访问的混淆。在复杂的内存布局之后,我们将其转换为一个越界漏洞,修改了一个js arraybuffer的长度,实现全地址读写和shellcode执行,进而获得了浏览器渲染进程内的任意代码执行,最终需要的内存布局如下图所示。这也是我们在Mobile Pwn2Own 2016中攻破Nexus所使用的三个漏洞之一。

1574604071_5dda8d273401a.jpg!small

 

但这个故事到这里远没有结束。在早些年浏览器的问题频繁出现后,各大厂商很快开始追寻一个守则:

let’s confine software, so even it’s compromised it only hasrestricted access to the system,即最小权限最大分割原则. 

在消灭漏洞之外,通过不同层次的沙箱限制漏洞被利用后所能获得的权限。Google采取的是多进程分立,通过IPC、代理机制,将复杂的代码限制在严格的沙箱中,沙箱内只能访问很有限的外部服务、内核调用,无法获取到任何信息,甚至连动态库都不能加载等等。

 

Chrome采取的沙盒架构如下图所示:

1574604194_5dda8da29a654.jpg!small

safari则如下:

 

1574604206_5dda8dae6967e.jpg!small

攻击者必须找到一个或多个额外的漏洞来实现沙箱逃逸,例如攻击broker、攻击有限的内核系统调用、系统服务等。

 

在macOS/iOS上,在攻破了Safari renderer之后,攻击者需要进一步审计和fuzz Safari沙箱内可以调用到的内核入口(驱动服务,MIG调用,privileged servers等)。Android生态则更为复杂些:对于标准设备(例如Pixel,Nexus等),攻击者需要寻找Chrome sandbox中能够触及到的组件(例如binder服务、Chrome broker、内核漏洞等)。而对于非标准设备而言,由于其他厂商对设备安全的掌控能力没有Google那么强,通常会给攻击者带来意外的惊喜。

 

除了沙箱之外,现代操作系统和编译器上在初代的ASLR DEP stack cookie等防御上,又不断增加了SMEP/SMAP、PXN、CFG、CFI甚至于最近ARM 8.3引入的Pointer Authentication等。这也对漏洞的品相和利用提出了挑战,导致漏洞发现和利用的难度和价格水涨船高。

 

2016年Pwn2Own我们使用的CVE-2016-1815,通过fuzz我们发现macOS/iOS显卡驱动在处理特定的矩阵转换会出现4字节的写IEEE754浮点数的错位,为了绕过kASLR、SMEP/SMAP的防御,我们最终把内存布局成了下面这个样子:

 

1574604212_5dda8db4bb24f.jpg!small

 

在2017年Mobile Pwn2Own上,我们在Samsung Galaxy S8上综合了7个漏洞,分别攻破了V8引擎、Samsung Internet Browser沙箱、Android沙箱,达到最终控制目标手机的结果。

 

回到实际的场景中,2016年被披露的NSOGroup Trident攻击链利用了CVE-2016-4655,4656,4657,包括一个safari漏洞、一个内核信息泄漏漏洞和一个内核内存破坏漏洞。

在今年Google TAGworking with Google Project Zero的报告中,同样披露了一套在野的完整iPhone 0day exploit,组成也基本相同。例如其使用的内核漏洞是CVE-2019-6225(同时由三个独立方发现),task_swap_mach_voucher处理不当导致ipc_voucher出现UAF,最终fake出task for pid 0,获得内核任意地址读写。Project Zero同样发现了NSOGroup使用的CVE-2019-2215,Android Binder驱动中的UAF可用于沙箱逃逸并直接获取内核权限。

 

在浏览器之外,其他富功能特性,例如Facetime、iMessage、Whatsapp等最近也成为了被关注的重点。这些漏洞利用通常不再需要绕过复杂的沙箱,而且可能更为隐蔽。例如,NSOGroup曾经利用过Whatsapp的RTCP(音视频流)功能的堆溢出漏洞,而Project Zero和盘古在今年陆续披露了针对Facetime和iMessage的漏洞利用。这类问题的触发甚至不需要用户交互。

3、Why – 为什么这类0day无法被彻底消灭?

现代软件操作系统和应用是一个复杂的体系,这些问题的根源最终都追溯到冯诺伊曼体系中数据即代码,代码即数据的设计原罪上。新的漏洞和利用方式推进着厂商实现新的架构演进和业界引入新的mitigation,新的防御又会促生新的攻击和利用方式,整体来说攻击难度是越来越高的。

 

在体系化安全方面,Google明显胜于Apple一筹,例如Chrome的设计经过不断的重构,其沙箱体系已经被公认为最难攻破的浏览器设计,攻击面缩减到了极致。而Apple的Safari至今没能实现分离render和kernel graphics driver。但Android受生态链拖累,各个vendor的分支通常不能及时合入上游补丁,反而成为了短板。此外Apple在硬件上下了很多功夫,某种程度上推进硬件mitigation反而更快。

 

”Project Zero’s mission is to make 0day hard”。
Flanker

 

4、相信也是很多人最关注的,回到防御方的角度:

企业应该如何保护自己的高管、关键人员和设备免受此类攻击的威胁?

 

一个较为悲观的事实是,虽然在PC平台上EPP、**、EDR等重兵把守,在移动设备上我们尚没有很好的方式去做到实时监测。但还是有可以做的:

  • MDM方案可以在enterprise级别统一禁用部分功能和应用来有效缩小攻击面。由于攻击者可以获取到内核权限,传统的类似于Mo****iron的解决方案并不能很好地保护机密数据。

  • TEE技术的定制化发展,将数据保护从normalworld拔高到secure world,可以提高攻击者的攻击门槛(当然,TEE也有可能有漏洞)。

  • 受限于移动端的检测能力,严格的网络隔离和后置barrier同样是必须的。

 

此外,基于stock Pixel定制的移动设备可以针对性地对弱点组件实施加固,例如在开源社区一直在推进hardened linux kernel的grsecurity (https://github.com/hardenedlinux/grsecurity-101-tutorials/blob/master/kernel_mitigation.md),以及有独立商业产品的CopperHead OS。这方面的努力在于backport上游较为激进的mitigation,和削减不必要的特性减少攻击面。

 

当然,很多时候企业更大的问题在于补丁状态的维持上,非最新的设备会导致攻击难度大大降低(从0day下降到Nday),但造成的后果却一样严重。

 

总结:

以上为大家介绍了准军火化和军火化高阶漏洞利用链的组成和演进、其会带来的现实危害,以及可以防御的几个角度。

其实这次分享也是希望给大家拓宽下思路,防的角度能借鉴下已有的体系化演进经验,攻的角度蓝军可以有更多手段。像chrome的沙箱设计,就是非常好的软件工程安全体系范例。

我们跟国外最大的差距不是防御细节上,而是整个防御体系设计上包括软件工程本身教育都缺乏基础的安全分立概念。其实需要大家的整个水位提升了,才有可能做top sec的东西出现,比如提高软件设计的防护水平。

这种意识也会反映到内部安全体系建设上,chrome的沙箱 zerotrust 其实都是一脉相承的。

Credits:

本文中内容感谢漏洞相关发现方和KeenLab的相关前同事们。

Reference:

https://googleprojectzero.blogspot.com/2019/01/voucherswap-exploiting-mig-reference.html

https://googleprojectzero.blogspot.com/2019/08/in-wild-ios-exploit-chain-1.html

https://www.blackhat.com/us-19/briefings/schedule/index.html#the-most-secure-browser-pwning-chrome-from–to–16274

https://www.blackhat.com/us-16/briefings/schedule/index.html#subverting-apple-graphics-practical-approaches-to-remotely-gaining-root-3388

https://cansecwest.com/slides/2017/CSW2017_QidanHe-GengmingLiu_Pwning_Nexus_of_Every_Pixel.pdf

http://blogs.360.cn/post/IPC%20Voucher%20UaF%20Remote%20Jailbreak%20Stage%202.html#0x27faketfp0

https://bugs.chromium.org/p/project-zero/issues/detail?id=1942

https://www.blackhat.com/us-19/briefings/schedule/index.html#towards-discovering-remote-code-execution-vulnerabilities-in-apple-facetime-15436

https://www.blackhat.com/us-19/briefings/schedule/index.html#attacking-iphone-xs-max-14444

 

解答环节

1、说到补丁状态的维持,是否有比较好的监控方式?

如果是Apple Volume Purchase统一采购的,这个可以依托MDM。

Android的问题在于分支厂商太多,本身各个厂商的补丁状态就不太一致,Google现在其实就在推进绕过vendor直接下发补丁。

————————————————————— 

 

2、mo****iron所代表的MDM不行,可以说国内所有所谓的零信任方案(实质是MDM沙箱)或EMM都无法解这个问题,这个理解对吗?TEE是指?

因为攻击者完成沙箱逃逸获得内核权限后,所有用户态的防御都是无效的了。

TEE是Trustzone,相当于独立于OS的更高级别world。

—————————————————————

3、有个问题想请教一下:对于手机厂商的浏览器来说,使用的是chromium内核,官方的漏洞很多更新也比较快。跟随内核版本升级现实难度太大,只能跟随打补丁,而补丁又很难做到全覆盖,有一些是cve,而有一些又是bugid。有啥建议吗?

 

这个其实之前chromium的commit会附带testcase的,一般结合asan做一个半自动化的exploitability analysis,可利用度高的需要优先修复。

—————————————————————

4、请教大神一个问题,现在单纯针对单一企业进行复合0day利用攻击的案例多吗?因为也是想搞清楚,单纯一般的企业,做好打补丁工作以外,针对0day的纵深防御还需要投入多少 ?

peagus一套卖几百万到上千万,我相信还是有企业值这个价钱的,只是我们不知道而已。

—————————————————————

5、请教一下,针对此类攻击行为,有无可能在仅有数据侧发现,也就是省级,市级出口骨干路由上发现,而无终端参与。如可能,实现难度有多大?

这个其实最大的问题在于https,和如何构建一个足够大的对应移动端虚拟化的沙箱集群。exploit在行为上还是会有特征的。

—————————————————————

 

6、对于核心高管,日常的电话、短信、微信聊天,价值就足够大了。而移动端攻击, 往往针对的是高价值个人,感觉没法防护啊。有没有好的能适合大多数企业的防护建议?

如果纯终端的话,其实copperhead os那条路是可能可以走得通的,定制设备。

—————————————————————

7、问下flanker,你是怎么走上这条路的?

这个要感谢之前 Keen的老同事们,在合适的时间点遇到了合适的人们,加上自身的兴趣。

—————————————————————

 

8、问下flanker,从专注技术挖漏洞的技术型人员转向企业整体的安全负责人,认为其中的困难有哪些?有什么体会?需要注意什么?

这个整体确实感慨还是蛮多的,不过这个问题比较specific,可以私下交流。

—————————————————————

9、现在看到的很多apt报告还是基于pc侧的比较多,攻击移动端开展apt的案例多吗?如果不多,是被什么局限住了?

其实还是感知能力上。

—————————————————————

 

10、请教问题:大神分享之后感觉没什么安全了。那你在安全负责人的角度关注、提升自身企业安全的,安全要提高到什么高度?大多数企业的安全都是合规安全而已。

 

两位其实提的就又回到那个安全哲学的问题了。。。安全要投入多少价值,要看需要保护的东西有多少价值。

—————————————————————


11、这类攻击是如何发现的?

之前国外披露的NSOGroup的案例一般都是国家级别攻击。目标在发现异常链接或消息后主动联系相关人士进行了分析,以及Google的Threat Analysis Group在流量中发现的。

—————————————————————

12、请问NSOgroup商业化的做法和国内实验室的做法有什么区别呢?

区别很大,实验室一般是针对比赛的要求,比如最新版来适配一套exp,比如弹出计算器即可。NSOGroup是一套完整的工具包,包括探针,利用,持续获取信息,需要考虑现实中各种复杂的情况,在界面和功能上还需要适配执法人员的需求—易用。实验室要是做到这个程度,其实有风险的,也没必要。毕竟实验室只是技术研究,nso是要恰饭的。

国内其实也有nsogroup类似的,不过这个就不展开说了。

上次被Google TAG发现的就是……还引发了Apple和Google的口水仗,Apple指责Google制造恐慌,Google指责Apple遮遮掩掩。

最后,放一下TK的点评:

也就这样在这个方向上跟踪了很多年的人才能讲清楚。

TK

——————————————————————————————————————————————————

利用工作生活之余的闲暇时间,我维护了“君哥的体历”公众号和“金融业企业安全建设”微信群(有兴趣加入的企业安全负责人,请关注微信公众号“君哥的体历”,后台留言,微信号+公司名称,验证身份后入群),将我从业十余年的一些体验和经历分享出来,纯粹是自己人生迷茫看不清方向时的一种坚持,坚持沉淀分享,哪怕不知目标在何方。这过程中,会有欣赏、感谢,也会有抱怨、想法…… 

这种分享,我理解为也是一种“开源”精神,代码和项目开源很常见,体验和经历开源不多见,尤其是比较体系化的将如何在企业做安全建设的思路和实践开源,需要自己静下心来归纳总结提炼,在平常繁重的工作任务和需要全身心投入陪伴俩娃的同时,要做好“企业安全建设”这个开源项目,难度和挑战更大。过程中,有西湖惬意的微风,也有沙漠般的烈日当头。不忘初心,方得始终。初心易得,始终难守。

微信识别下面二维码,和我交流

微信.JPG

赞赏是认同或肯定,更是鼓励更多原创分享

微信识别赞赏码

赞赏码.JPG

更多精彩
取消
Loading...

填写个人信息

姓名
电话
邮箱
公司
行业
职位
css.php