前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HITB AMS 2021 议题分析与学习,感叹华人真多

HITB AMS 2021 议题分析与学习,感叹华人真多

作者头像
泉哥
发布2021-07-05 15:34:59
1.1K0
发布2021-07-05 15:34:59
举报
文章被收录于专栏:漏洞战争漏洞战争

最近也看到一些微博或公众号提到HITB会议的一些议题,就是分享链接,但还没人聊过里面的议题,今天我又批量下载议题pdf学习下。老规矩,聊聊一些自己感兴趣的话题。

抛开COMMSEC这些免费议题,整体的议题质量还行,有些可圈可点的技术可以学习下,个人比较喜欢安恒的office fuzz,以及长亭的两个虚拟机逃逸议题,推荐给大家。中议题的华人也是够多的,估计占了1/3,看到国内的相关安全门户网站也跟HITB合作宣传。

1、macOS local security: escaping the sandbox and bypassing TCC

介绍了macOS各个版本发展起来多项安全机制,包括签名、seatbelt(sandbox profile)、SIP,以及TCC(Transparency, Consent, and Control ),它是自从 macOS Mojave 开始引入的一个系统级别的安全概念。TCC的理念是,在没有用户明确同意之前,一个 app 不准许访问用户资源,包括硬件资源:摄像头、麦克风、定位、屏幕录制、蓝牙、HomeKit等,或者软资源:照片库、日历,文件夹、辅助功能、以及牵扯到包含个人隐私的第三方应用库文件等等。如下面看到的提示一样,正是TCC导致的。

同时也介绍最新系统引入的Separate System Volume,为系统卷上的数据添加签名,用于保护macOS系统文件,防止被篡改。

看苹果官方对TCC的漏洞奖励计划,给的奖金也不低。

最后作者介绍了一些漏洞案例,比如CVE-2020-10009 macOS System Preferences 沙盒逃逸漏洞,System Preferences是系统设置应用,位于沙盒之中,通过中断应用去修改cache文件指向恶意app来实现逃逸。另外也介绍了Adobe、Electron相关漏洞,里面的一些截图好像是演示,可惜官方只放出pdf,没法看到演示。

2、A Journey into Synology NAS

用Synology官方对NAS(网络附加存储)的介绍,可以理解为个人私有云盘,同时提供虚拟机管理,可以SSH远程连接管理。作者研究它可能是因为它是Pwn2Own的目标之一。

作者通过监听端口找到一些NAS开启的服务,然后抓包分析通信消息格式,借助Wireshark插件syno_finder(作者开源在github上,用lua写的)可以帮助快速分析协议格式。除了发现其中的密码泄露外,还使用Kitty & Scapy进行协议Fuzzing,Fuzz过程偶然导致DS918plus服务被重置,在管理员重置设备时可以窃取到管理员密码。

后面作者又通过IDA与GDB去逆向其它服务进行挖洞,同时去挖掘一些远程CGI接口的漏洞,搞一些内存破坏漏洞和常见的WEB漏洞。这种测试目标比较考验web和二进制方面的综合能力。

3、X-in-the-Middle : Attacking Fast Charging Piles and Electric Vehicles

Tencent Blade Team分享的攻击充电桩的议题,之前在BlackHat也分享过,议题方向比较新颖。借助XCharger设备篡改车辆识别码VIN,令绑定VIN自动支付的用户被“偷电”,达到免费给汽车充电的效果。VIN都是写在车窗前,去停车场逛逛可以收集到一大堆。研究过程中,他们租了5辆电动车和相关设备,估计也花了不少钱,靠“偷电”可能不好回本。

4、5G mobile networks and interconnects threats

借此议题聊下5G。作者使用free5gc开源核心网项目、gnbsim RAN模拟器、5GC_API搭建5G研究环境,然后去挖掘这些开源项目中5GC网元的漏洞,但这不代表在实际5G产品中存在相同漏洞,因为不同的厂商实现上会有差异。

此种情况代表着当前研究人员对于5G研究资源的匮乏,没有真实5G环境能够研究,毕竟这种只有像华为这种自研5G才具备此条件,中兴也在搞,但肯定没有华为搞得好,应用广度也不是一个量级的。之前在MOSEC上一韩国教授搞4G通讯安全,还去相关部门申请对实际通讯设备的测试,这种一般人很难搞到。如果未经报备,直接对相关通讯设备进行测试,也可能面临扰乱或破坏国家基础设施的法律问题。据说,绿盟从运营商那里搞到了5G设备用于安全研究,不知真假,仅当八卦。

5、Exploiting QSEE, the Raelize Way!

QSEE是高通的TEE方案,看到标题原以为是要搞手机,后来才发现是搞路由器上的QSEE。作者通过IDA逆向SMC回调例程,从中找到一些漏洞,主要还是对输入参数过滤不严导致的,允许写数据到安全内存,只是写入值比较受限,比如0、1、2这种,但可以通过它来关闭security range检测,即安全内存范围的检测,这样所有的SMC处理例程都能够接收指向QSEE内存的参数,即原来仅限REE内存地址参数,现在可以直接读写QSEE安全内存的数据了,然后在REE内存放shellcode,修改MMU配置(MMU负责虚拟地址到物理地址的转换,在其转换表中有个XN位代表内存是否可执行,类似Windows上的DEP)去清除XN位令shellcode可执行,再利用漏洞去执行shellcode。这些都是软件层面的漏洞,当漏洞都被修复后,作者又提出通过电磁故障注入EMFI的硬件攻击方式来关闭security range check,然后就可以重复利用前面介绍的软件漏洞利用技巧来达到代码执行,像这种硬件层面的攻击就无法修复了。不过,按作者说的,这种故障注入攻击方式成功率才5%,低得可怜,在实际场景中应用的话就比较困难了。

6、How I Found 16 Microsoft Office Excel Vulnerabilities in 6 Months

来源安恒的分享,之前在公众号上见过他们发过中文版的文章介绍这个议题。不得不说Excel确实是Microsoft Office中漏洞最多的一个,Fuzzing时也是崩溃最多的一个应用,空指针、内存不足的buf非常多,所以想fuzz office,Excel确实是首选。不过由于office自身沙盒的保护,利用起来比较困难,有时微软又不认一些漏洞,有时又认,我也有点搞不清楚他们的标准了。如果你经常报office漏洞,可能你会对MSRC这句回复不陌生:

“It is a Low/Moderate bug, which would require significant effort to exploit. You may disclose at this time if you wish.”

回到议题本身,作者提供了一些自己使用的excel种子来源(我以前是自己利用搜索引擎爬虫收集的,搞了上百G),并移植honggfuzz变异算法(我比较懒,直接拿radamas变异,不过之前我也用riufuzz跑过doc的公式编辑器漏洞),另外用IDA收集BBL,再用0xCC插入BBL起始地址并执行来收集覆盖率,从而实现语料库蒸馏的目的(这种方式太麻烦了,以前我用过,速度很慢,操作麻烦,后来我用pin动态插桩去实现),最后就是开页堆+虚拟机群去批量Fuzzing,解决弹提示框的问题,跟作者的方式差不多,我主要用3种方式:删注册表、删临时文件、模拟点击。之前我都是在实体机上跑的,因为虚拟机老是跑着跑着就卡死了,一直也没去解决,因为office漏洞没奖金就没动力。看作者6个月挖掘了16个漏洞,效果还算不错了。

7、Attack Cloud Native Kubernetes

腾讯蓝军针对云原生中的k8s的攻防分享,分析K8s的攻击面,并结合实际案例进行演示。但是单纯看PPT的话,都是图片,没有文字描述的话,比较难理解,推荐他们之前的写博文“红蓝对抗中的云原生漏洞挖掘及利用实录”(https://security.tencent.com/index.php/blog/msg/183),内容写得比较详细完整。最后他们开源了一款叫CDK(https://github.com/cdk-team/CDK)的容器渗透测试工具,官方介绍是这样描述的:“在已攻陷的容器内部提供零依赖的常用命令及PoC/EXP。CDK集成Docker/K8s场景特有的逃逸、横向移动、持久化利用方式,插件化管理。”

下面是CDK当前支持一些Exploit模块:

用CDK在k8s&docker环境下进行渗透测试还是比较方便的,目前看到针对容器安全的渗透测试套件好像也不是很多。

8、LightBranch: Binary Fuzzing with Snapshot-Assisted-Driven Comparison Branches Analysis

在Fuzzing时,有时遇到复杂的分支比较就常常进不去,覆盖路径数就无法提升上去。在学术界常常借助符号执行来探索路径问题,但较难应用于复杂的软件环境中;另外基于静态分析的方式提取比较值也是一种不错的方式,实践证明它确实有效。这个议题的作者提出一种基于快照(snapshot)比较分支分析的方式进行输入学习,以进入更多的执行路径。

它实现的基本原理:先生成条件分支基本块作为CFG节点,每个节点就代表一个快照,同时包含相关信息,如执行上下文、内存状态、污点信息等,通过插桩的方式去收集和管理;接着通过动态污点分析,去标记出CFG上的污染节点,然后提取未被污染的节点的比较值,以及污染的比较操作中涉及内存偏移的偏移量,结合比较值和偏移量等信息作字节排序组合出字符串,然后将其添加到变异字典中。

说实话,其实我没有完全理解这种分支比较分析的思路的好处,与常规静态分析提取比较值添加到变异字典的优缺点差异,作者也没有给出其应用效果。所以,这种方式的实用价值如何还有点考证。

9、A QEMU Black Box Escape via USB Device

长亭的QEMU逃逸议题,介绍了QEMU-KVM架构,梳理出负责管理硬件虚拟化的开源API库libvirt的攻击面,最后他们选择从USB入手去挖掘漏洞,不过这里他们没有介绍挖掘方法,主要还是介绍CVE-2020-14364漏洞分析与利用,通过构造3个USB数据包来触发,原因是在拷贝数据作长度判断后,长度值未被清除,在另一数位置可以触发数据拷贝导致越界写漏洞。

下面介绍下漏洞利用思路:

  1. 在越界的缓冲区附近有个USBDesc结构指针,它包含USB设备的描述信息,比如USBDsecID就有设备厂商、版本号等信息可以被读取,这样通过覆写USBDesc指针再获取USBDesecID结构回来就实现内存任意读的效果。
  1. 通过读取USBEndpoint类型的变量值(ep_ctl, ep_in 或者ep_out任意选一个)来得到USBDevice地址,然后通过USBDevice->DeviceState->free函数指针就可以找到libc的地址,从而获取system函数地址。
  1. 为了控制PC,作者是通过劫持HIDState中的event方法来实现的,用system地址来覆盖event函数指针,执行的命令参数则传递给HIDMouseState指针,从而实现任意代码执行,达到虚拟机逃逸的效果。

10、Box Escape: Discovering 10+ Vulnerabilities in VirtualBox

还是来自长亭的分享,介绍了VirtualBox架构以及主机与客机的交互方式,剖析其存在的攻击面,尤其是虚拟设备对应的后端服务存在较大风险,作者也正是从这个角度入手去挖洞的,从人工审计到基于CodeQL的自动化代码审计,专门针对urb参数(pUrb参数或变量)传递至memcpy的污点传播模型来检测代码,有没有借此挖到漏洞就不得而知了,看案例里面倒是有2个memcpy的漏洞。除此之外,作者还使用AFL++进行Fuzz,用afl-clang-fast编译VBox,使用VBoxHeadless作为目标程序,避免加载UI,然后为每个设备添加fuzz入口,即PDMDEVREG结构的回调函数指针,通过afl++提供的变异函数去构造输入数据进行Fuzz,然后借助__AFL_LOOP实现持久型Fuzz以提高效率。基于上述方法,最终挖到10多个漏洞。

议题资料下载:https://conference.hitb.org/hitbsecconf2021ams/materials/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 漏洞战争 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档