近期,一款名为VoidStealer的信息窃取恶意软件引起了安全研究人员的关注,它采用了一种新颖的旁路攻击手段,绕过了谷歌Chrome浏览器在去年引入的“应用绑定加密”(Application-Bound Encryption,简称 ABE)保护机制。这种方法的核心在于,它不依赖传统的代码注入,而是巧妙地扮演调试器的角色,通过设置硬件断点,直接从浏览器进程的内存中“钓”出用于解密所有敏感数据的主密钥。
据安全公司Gen Digital(旗下拥有诺顿、Avast等多个知名安全品牌)的研究人员披露,VoidStealer的这一新增功能在其2.0版本中首次出现。这也是安全人员在真实攻击中,首次观测到有窃密木马采用基于调试器的技术来突破Chrome的ABE防线。
谷歌在2024年6月发布的Chrome 127版本中正式引入了ABE机制。其设计初衷是将浏览器存储的Cookies、密码等敏感数据的主密钥,始终维持在加密状态,以此来防御普通用户权限下的恶意程序进行直接读取。然而,这项安全措施自推出以来便不断面临挑战,此前已有多种窃密软件通过不同方式找到了绕过路径。
VoidStealer 2.0的这次攻击手法颇为巧妙,它精准地抓住了Chrome在启动解密过程中的一个短暂“窗口期”。
具体攻击流程如下:
- 静默启动:恶意软件首先创建一个被挂起(暂停运行)且隐藏的Chrome浏览器进程,并让自己成为该进程的调试器。
- 精准定位:当目标浏览器加载其核心DLL文件(例如
chrome.dll)后,VoidStealer会在这个DLL文件中搜索特定的代码片段。它会找到一个关键指令(LEA,加载有效地址)的精确内存地址,并将其设置为一个硬件断点。
- 断点截获:恶意软件在所有现有以及新创建的浏览器线程上都设置好该硬件断点,然后恢复浏览器的运行。当浏览器启动并执行到准备解密敏感数据的核心代码段时,这个硬件断点就会被触发。
- 提取密钥:在断点被触发的瞬间,恶意软件通过调试接口访问并读取CPU寄存器中的值,该寄存器正好指向内存中此刻处于明文状态的主密钥(即
v20_master_key)。随后,它通过调用 ReadProcessMemory 这一Windows API函数,将完整的密钥从目标进程的内存中提取出来。
一旦攻击者掌握了这个主密钥,他们就能够解密Chrome本地存储的所有受保护信息,包括用户的登录凭证、Cookie会话等。
安全研究人员分析认为,VoidStealer的开发者很可能借鉴了一个名为“ElevationKatz”的开源项目。该项目是ChromeKatz工具集的一部分,早在一年多前就公开演示了利用Chrome在设计与内存交互过程中的一些弱点来提取密钥的思路。尽管VoidStealer的具体代码实现与开源项目存在差异,但两者在核心攻击原理上基本一致。这再次印证了安全研究(特别是逆向工程与漏洞利用)领域的公开成果,时常会被恶意软件作者迅速武器化。
目前,谷歌官方尚未就这一新型绕过手法发表公开评论。对于普通用户而言,这一事件无疑敲响了警钟:随着浏览器厂商不断加强安全机制,恶意软件的对抗手段也在同步进化,朝着更加底层(如直接操控CPU调试功能)、更加隐蔽(无文件、无注入)的方向发展。恶意软件作者正试图从系统的最底层寻找突破口。
虽然直接的内存攻击通常需要本地执行权限,但它仍然凸显了端点防护的复杂性与持续监控的重要性,尤其是在检测异常进程行为与保护内存中敏感数据方面。广大开发者与安全爱好者可以持续关注类似技术在云栈社区安全板块的讨论。
资讯来源:BleepingComputer、Gen Digital 安全研究报告

|