黑莓研究人员报告称,不常见的编程语言——包括 Go、Rust、Nim和DLang——正在成为恶意软件作者的最爱,它们试图绕过安全防御或解决开发过程中的弱点。
研究团队注意到这四种语言的恶意用途增加以及使用它们的恶意软件家族数量增加后,选择了这四种语言。使用新编程语言的攻击者并不新鲜。然而,研究人员指出,这些语言正变得越来越发达,并预计随着趋势的继续,它们的使用会增加。
有人可能采用一种新的编程语言有几个原因:它可以解决现有语言的弱点,或者为开发人员提供更简单的语法、更有效的内存管理或性能提升。研究人员指出,新语言也可能更适合其环境——例如,物联网设备大多使用低级语言。
当攻击者利用这些特点时,对防御者构成了挑战。恶意软件分析工具并不总是支持鲜为人知的语言,与C或C++ 等传统语言相比,用Go、Rust、Nim和 DLang 编写的二进制文件在反汇编时可能会显得更加复杂。分析师可能不熟悉较新的语言。
报告指出,较旧的恶意软件通常会在第一阶段以加密形式存储,并使用XOR、RC4、AES 或其他加密和编码方法。
研究人员表示,一旦解码,二进制文件就会被放入磁盘或注入正在运行的进程并加载到内存中,并指出这对攻击者很有吸引力,因为它可以为他们省去重新编码恶意软件的麻烦。相反,他们可以将旧恶意软件“包装”在这些交付方法之一中。
基于签名的安全工具可能已经使用众所周知的恶意软件捕获了投放器或加载器的第二阶段,无论是投放到磁盘还是加载到内存中;然而,用不同的语言重写恶意软件使其有可能绕过防御,因为现有的签名可能不起作用。
Go由Google于2007年开发,属于C家族,但具有更简化的语法。它可以交叉编译到所有主要操作系统,以及 Android、JavaScript 和 WebAssembly。
Nim可以编译成多种语言,例如 C、C++ 和 JavaScript。DLang 带来了C的语法改进;它可以交叉编译。
Rust开销低,性能高效,并帮助开发人员解决报告指出的其他流行语言中的“痛点”。
攻击者换档,防御者跟进
正如研究人员指出的那样,恶意软件作者并不是唯一采用不常见语言的人——近年来,安全社区也采用这些语言来实施红队工具的攻击性使用,其中许多研究人员指出,它们是开源的或公开可用的。
该报告指出了去年的FireEye漏洞,其中民族国家攻击者从安全公司窃取了红队工具。FireEye表示,被盗软件位于第三方存储库,其中包括被盗工具和检测签名。
研究人员指出,用这些鲜为人知的语言编写的恶意软件通常不会像用更常见和成熟的语言编写的恶意软件那样被检测到。此时,攻击者正在改变感染过程的第一阶段,而不是其活动的核心,但安全团队必须意识到这些鲜为人知的语言风险以及如何影响他们的防御。
关键案例:APT28和APT29的“Go”流畅度不断提高
当谈到这些更晦涩的语言时,恶意软件开发人员历来主要用Go编写:一种与C++非常相似的通用语言,因为它是静态类型和编译的。
C 语言恶意软件仍然是最普遍的。但APT28和APT29已经开始比其他组织更频繁地在恶意软件集中使用更奇特的语言。APT28又名 Fancy Bear 或 Strontium 等,而APT29又名 Nobelium、Cozy Bear 或 the Dukes 等。
APT28使用的Go重写选择:
2018年:一个与 APT28 相关联的基于Go的木马被确定为Zebrocy 变体,具有原始 Delphi下载器的重写版本。
2019年:研究人员在针对东欧和中亚大使馆和外交部的同一个 Zebrocy 活动中发现了一个Nim下载器和 Go 后门。
2020年及之前几年: APT28 越来越喜欢 Go,使用其他重写的 Zebrocy 核心组件:后门负载和下载器。最近,APT28使用 COVID-19 大流行作为诱饵,于 12 月发布了Go 下载程序变体。
就 APT29/Cozy Bear 而言,以其在2020 年初的SolarWinds 供应链攻击中的作用而闻名,它在 2018 年使用WellMess(一种用 Go 和 .NET 编写的远程访问木马(RAT))针对 Windows和Linux机器。
研究人员指出,WellMess 最流行的变体是Go版本,它有32位和64位变体作为PE和 ELF文件,“使 APT29能够将其部署到不止一种类型的架构和操作系统。”
APT29通常通过首先扫描组织的外部IP地址中的漏洞,然后对易受攻击的系统进行公开攻击来渗透受害者的网络。
时间线
除了Go及其对APT28和APT29日益增长的吸引力之外,过去十年中其他稀有语言也越来越多地被其他威胁行为者用于越来越多的恶意软件系列。下面是这四种语言如何越来越多地出现的时间表,特别是 Rust、Nim 和D语言。
DLang恶意软件似乎是不断演变的威胁环境中最不受欢迎的语言,但它在过去一年中出现了一些温和的增长。报告预测,这可能标志着恶意软件开发人员更普遍地采用DLang的趋势。
如何进行反击
网络安全研究组织建议,为了捕获这些多语言恶意软件家族,软件工程师和威胁研究人员如果采用动态或行为签名、通过沙箱输出标记行为的签名或端点检测和响应 (EDR),将更有利,在这些情况下,这些技术可能更加可靠。
如果静态签名失败,采用与实现无关的检测规则来标记动态行为会有所帮助,因为恶意软件通常以相同的方式运行,尤其是当恶意软件被重新编码时。“在其他情况下,例如通常使用 Windows API 调用的有限子集注入进程的shellcode加载器,可以使用该有限子集识别它们。同样,在二进制文件中使用库通常可以“签名”。“
软件检测及分析工具要和恶意软件同步还需要一段时间,但企业及组织的安全意识必须提高起来,要积极主动去防御新出现的技术和恶意软件手段。加强软件安全防御能力,从底层源代码安全检测做起,不给恶意软件可乘之机。
参读链接:
https://www.woocoom.com/b021.html?id=491d570980a248e0bdfda9482542983a
https://threatpost.com/malware-makers-using-exotic-programming-languages/168117/
来源:freebuf.com 2021-07-29 10:34:55 by: 中科天齐软件安全中心
请登录后发表评论
注册