针对字节码解释器的攻击掩盖了恶意注入活动

攻击者可以通过在许多编程语言(如VBScript和Python)使用的软件解释器存储的机器代码中插入命令来隐藏他们执行恶意代码的尝试,一组日本研究人员将在下周的Black Hat USA会议上进行演示。

解释器采用人类可读的软件代码,并将每一行转换为字节码——底层的(通常是虚拟的)机器可以理解的细粒度编程指令。研究小组在执行之前成功地将恶意指令插入到内存中保存的字节码中,并且由于大多数安全软件不扫描字节码,因此它们的更改逃脱了检测。

该技术可能允许攻击者从大多数端点安全软件中隐藏他们的恶意活动。NTT Security Holdings Corp. 和东京大学的研究人员将使用 VBScript 解释器展示 Black Hat 的能力,NTT Security 的研究科学家 Toshinori Usui 说。研究人员已经证实,该技术也适用于在Python和Lua解释器的内存进程中插入恶意代码。

“恶意软件通常通过将恶意代码注入良性进程来隐藏其行为,但现有的注入型攻击具有特征性行为……这些很容易被安全产品检测到,“Usui 说。“解释器不关心被远程进程覆盖,因此我们可以轻松地用恶意代码替换生成的字节码——这就是我们利用的功能。”

字节码攻击不一定是新的,但它们是相对新颖的。2018年,加州大学欧文分校的一组研究人员发表了一篇论文《字节码损坏攻击是真实的——以及如何防御它们》,介绍了字节码攻击和防御。去年,Python 包索引 (PyPI) 的管理员删除了一个名为 fshec2 的恶意包,该包逃脱了最初的检测,因为它的所有恶意代码都被编译为字节码。Python 将其字节码编译为 PYC 文件,Python 解释器可以执行这些文件。

ReversingLabs 的逆向工程师 Karlo Zanki 在 2023 年 6 月对该事件的分析中表示:“这可能是第一次利用 Python 字节码 (PYC) 文件可以直接执行这一事实的供应链攻击,而且它发生在对 Python 包索引的恶意提交激增的情况下。“如果是这样,它将构成另一个供应链风险,因为大多数安全工具可能会错过这种类型的攻击,这些工具只会扫描Python源代码(PY)文件。

超越预编译的恶意软件

在最初的入侵之后,攻击者有几种选择来扩大他们对目标系统的控制:他们可以执行侦察,尝试使用恶意软件进一步入侵系统,或者运行系统上已经存在的工具——即所谓的“脱离陆地”策略。

NTT研究人员对字节码攻击技术的变体基本上属于最后一类。他们的攻击不是使用预编译的字节码文件,而是被称为字节码柔术,涉及将恶意字节码插入正在运行的解释器的内存空间。由于大多数安全工具不查看内存中的字节码,因此攻击能够将恶意命令隐藏起来以防检查。

Usui 说,这种方法允许攻击者跳过其他更明显的恶意步骤,例如调用可疑 API 来创建线程、分配可执行内存以及修改指令指针。

“虽然原生代码的指令是由CPU直接执行的,但字节码只是CPU的数据,由解释器解释和执行,”他说。“因此,与原生代码不同,字节码不需要执行权限,(我们的技术)不需要准备具有执行权限的内存区域。”

更好的口译员防御

解释器开发人员、安全工具开发人员和操作系统架构师都可能对问题产生一些影响。根据加州大学欧文分校的论文,虽然针对bytcode的攻击不会利用解释器中的漏洞,而是利用它们执行代码的方式,但某些安全修改(如指针校验和)可以降低风险。

NTT Security的研究人员指出,校验和防御不太可能对他们的技术有效,并建议开发人员实施写保护以帮助消除风险。“最终的对策是限制对解释器的内存写入,”Usui 说。

他强调,介绍一种新的攻击技术的目的是向安全研究人员和防御者展示可能的情况,而不是告知攻击者的策略。“我们的目标不是滥用防御策略,而是最终为世界各地的安全研究人员敲响警钟,”他说。

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。查看原文

为您推荐