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为期13年的冬季实习项目开发。

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

新一代模糊测试技术

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

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

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

无处不在的侧信道攻击

在题为《Full AACSess: Exposing and exploiting AACSv2 UHD DRM for your viewing pleasure》的演讲中,Adam Batori提出了针对Intel SGX的侧信道攻击概念。由于Trail of Bits经常审计使用Intel SGX等可信执行环境的项目(如Mobilecoin),此演讲对我们尤为吸引。

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

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

新挑战:Rust逆向工程

Trail of Bits工程师经常审计Rust编写的软件。在《Rust Binary Analysis, Feature by Feature》中,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位密钥长度。尽管规范不再推荐使用,它仍在现场使用,尤其成问题的是这些弱协议被依赖保护关键基础设施。

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

你真的拥有你的火车吗?拥有你的汽车吗?

在《Breaking “DRM” in Polish trains》中,研究人员报告了受独立火车维修公司招募后遇到的挑战,以确定为何某些火车在维修后无法运行。

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

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

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

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

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

结束语

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

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

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