37C3黑客大会技术盘点:二进制漏洞利用、模糊测试与侧信道攻击

本文深入解析37C3黑客大会的技术亮点,涵盖Pwndbg和Pwntools工具演示、LibAFL新一代模糊测试技术、Intel SGX侧信道攻击实践、Rust二进制逆向工程挑战,以及TETRA协议加密漏洞和火车DRM破解案例。

Chaos Communication Congress (37C3) 技术盘点

上月,我们的两位工程师参加了在汉堡举办的第37届混沌通信大会(37C3),与数千名黑客共同交流技术与安全领域的最新研究成果。与常规技术会议不同,这场年度盛会聚焦技术与社会交互,涵盖政治、娱乐、艺术、可持续性等议题——但最重要的仍是安全领域。自80年代首届大会黑客展示德国BTX系统银行应用漏洞以来,今年以"解锁"为主题,强调突破技术壁垒并探索数字权利与隐私的新边界。

本文将回顾我们在37C3的技术贡献(涉及二进制漏洞利用分析与模糊测试),并重点推荐几场值得关注的演讲。

PWNing技术交流会

Trail of Bits工程师Dominik Czarnota自发组织了两场关于PWNing(即二进制漏洞利用)的会议。这些交流会展示了CTF竞赛、逆向工程和漏洞研究中常用的Pwndbg和Pwntools工具。

在第一场会议中,Dominik介绍了Pwndbg——一款GDB插件,通过显示程序停止时的有用上下文(包括调试程序状态、寄存器、可执行代码、堆栈内存和解引用指针)来增强底层代码调试能力。演示涵盖了Pwndbg的特性和命令,如列出内存映射(vmmap)、显示进程信息(procinfo)、内存搜索(search)、查找特定内存映射指针(p2p)、识别堆栈保护值(canary)和控制进程执行(nextsyscall、stepuntilasm等)。最后发布了Pwndbg速查表,并预告了即将推出的功能(如跟踪GOT函数执行和glibc堆use-after-free分析),这些功能均来自Trail of Bits已持续十三年的冬季实习项目。

第二场会议中,Arusekk和Peace-Maker展示了Pwntools(用于漏洞开发的瑞士军刀式Python库)的高级功能。他们演示了接收发送数据的专家方法(如io.recvregex或io.recvpred)、运行漏洞脚本时的命令行技巧(如DEBUG、NOASLR或LOG_FILE等环境变量和参数),以及libcdb命令行工具、shellcraft模块和ROP(面向返回编程)助手等实用功能。错过会议者可在此查看幻灯片。

新一代模糊测试技术

在《一次性模糊测试所有目标》演讲中,AFL++和LibAFL团队展示了LibAFL模糊测试器的新功能。他们提出基于QEMU的插桩技术以模糊测试闭源二进制目标,并利用QEMU钩子启用检测器以发现漏洞。除了团队基于QEMU的AddressSanitizer实现QASan外,还开发了能超越内存破坏漏洞检测的注入检测器。通过TOML配置文件定义规则,利用QEMU钩子可检测SQL、LDAP、XSS或OS命令注入。配置文件设计表明其易于扩展至其他注入类型——只需知道要挂钩的函数和要查找的有效载荷。

尽管内存安全语言(如Rust)的部署将减少内存破坏漏洞,但模糊测试在发现注入或逻辑漏洞等其他漏洞类别中仍至关重要,因此新工具的推出令人振奋。演讲的问答环节提醒我们,oss-fuzz已具备利用ptrace系统调用的SystemSanitizer,曾帮助发现过命令注入漏洞。

Trail of Bits曾与Inria合作在学术研究项目tlspuffin中使用LibAFL,该项目旨在模糊测试各种TLS实现,并发现了wolfSSL中的多个漏洞。

无处不在的侧信道攻击

在题为《全面访问:为您的观影乐趣暴露和利用AACSv2 UHD DRM》的演讲中,Adam Batori提出了针对Intel SGX的侧信道攻击概念。由于Trail of Bits常审计使用Intel SGX等可信执行环境的项目(如Mobilecoin),此演讲尤为引人入胜。

在概述物理媒体DRM历史后,Adam详细解释了sgx.fail背后的研究团队如何从SGX enclave提取加密密钥材料以破解UHD蓝光光盘DRM,证明了现实世界中针对安全enclave的侧信道攻击可行性。过程中他讨论了SGX的多种技术特性。

该工作和演讲引发了关于英特尔在消费硬件上终止SGX的讨论。鉴于低成本消费设备上侧信道攻击的高风险,我们认为将Intel SGX用于DRM目的已注定失败。侧信道攻击仅是使用enclave保护数据时常被忽视的安全挑战之一。

新挑战:Rust逆向工程

Trail of Bits工程师常审计Rust编写的软件。在《逐特性分析Rust二进制文件》演讲中,Ben Herzog讨论了Rust编译器的编译输出。理解Rust构建二进制文件的方式至关重要,例如优化Rust程序或理解安全与非安全Rust代码间的交互。演讲聚焦调试编译模式,展示Rust编译器如何为范围迭代生成代码、使用迭代器或优化Rust枚举布局。演讲者还指出Rust字符串非空终止,可能导致Ghidra等逆向工程工具产生难以理解的输出。

演讲作者提出了遇到特性相关函数调用时应回答的四个问题:

  1. 被调用函数名称(如next)?
  2. 函数定义于何种类型(如Values<String, Person>)?
  3. 函数返回何种类型(如Option)?
  4. 函数属于哪个特性(如Iterator<Type=Person>)?

更多细节详见Ben Herzog的博客文章。

专有加密的危害性

在TETRA:BURST研究中,研究人员披露了TETRA无线电协议中的多个漏洞。该协议被欧洲及其他地区的政府机构、警察、军队和关键基础设施使用。

令人震惊的是,专有加密在某些行业仍是默认选择。通过要求安全研究人员签署NDA来隐藏规范,极大限制了系统的可审查性。

由于出口管制,TETRA中存在多类算法。较旧的TEA1仍活跃部署中,但仅使用32位密钥长度。尽管规范不再推荐使用,它仍在实际应用,尤其问题是这些脆弱协议被用于保护关键基础设施。

研究人员通过从在线经销商获取无线电硬件证明了漏洞的可利用性。

您真的拥有您的火车吗?您的汽车呢?

在《破解波兰火车"DRM"》中,研究人员报告了受独立火车维修公司招募后遇到的挑战:为何某些火车维修后无法运行。

通过逆向工程,研究人员发现了火车中的多项反功能,导致其在多种情况下停止工作(如未移动特定时间或位于竞争对手维修店的GPS位置)。演讲涵盖了火车软件的有趣技术细节、研究人员如何逆向固件,并质疑用户应对其拥有的车辆或设备拥有多大控制权。

作为开发者和审计者,我们能从黑客身上学到什么?

黑客拥有独特的问题解决思维,向开发者和审计者展示了创意和非传统思维在网络安全中的重要性。活动强调了正确保护系统及从清晰威胁模型开始的必要性。依赖混淆的错误或专有方法无法充分保护终端产品。将加密原语隐藏在NDA后等控制措施仅混淆协议工作原理,不会增强系统安全性,反而增加安全研究人员的工作难度。

大会强调持续学习,展示了网络安全不断演变的本质,敦促专业人士紧跟最新威胁和技术。道德考量是焦点,强调开发者和审计者在工作中尊重用户隐私和数据安全的责任。

37C3展现的黑客社区协作精神,为科技行业内的开放交流和相互学习树立了榜样。在Trail of Bits,我们通过发布此类博客文章、帮助开发者保护代码的测试手册等资源,以及零知识证明研究文档,公开分享知识以践行这些价值观。

结语

我们强烈推荐亲临37C3现场,尽管时间不幸安排在圣诞与新年之间,且多数演讲可在线直播观看。大会包含许多自发组织的会议、研讨会和集会,对安全研究人员尤为有益。我们原计划在37C3披露最近发现的LeftoverLocals漏洞(影响AMD、高通和苹果等知名GPU供应商),但为给供应商更多修复时间推迟了发布。漏洞披露最终于1月16日发布;我们可能在明年的38C3报告发现和披露该漏洞的经验!

如果您喜欢本文,请分享至: Twitter LinkedIn GitHub Mastodon Hacker News

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计