当前位置: 首页 > 科技观察

不常见的编程语言成为攻击武器

时间:2023-03-13 13:33:37 科技观察

BlackBerry研究人员报告称,Go、Rust、Nim和DLang等不常见的编程语言在恶意软件作者中越来越受欢迎,利用它们来绕过安全防御或解决恶意软件中的弱链接软件开发过程。在注意到越来越多的恶意软件家族使用上述四种编程语言后,黑莓研究团队选择了这四种编程语言来调查它们的恶意用途。攻击者使用新的编程语言并不少见;然而,研究人员指出,这些语言正变得越来越成熟,随着这一趋势的持续,预计使用量会增加。采用新的编程语言的原因是多种多样的:它可以解决现有编程语言的一个缺陷,语法更简单,内存管理更高效,或者编程更高效。研究人员指出,新语言也可能更适合其环境,例如物联网设备使用的低级语言。当攻击者寻求这些优势时,防御者面临挑战。恶意软件分析工具并不总是支持鲜为人知的语言,用Go、Rust、Nim和DLang编写的二进制文件在混淆时可能比经典编程语言(如C或C++)显得更复杂。分析师可能不熟悉较新的语言,理解它们的复杂性需要一些学习时间。据研究人员称,有一种新趋势是,攻击者使用以相对不常见的语言编写的释放器或加载器来改造以前用C++和C#等传统编程语言编写的“旧”恶意软件。较旧的恶意软件通常在第一阶段以加密形式存储,使用XOR、RC4、AES或其他加密和编码方法。解密后,二进制文件将被放入磁盘,或注入进程以加载内存。研究人员表示,这种方法很受攻击者欢迎,因为它省去了重新编程恶意软件的麻烦,而且旧的恶意软件可以用其中一种交付方法“包装”。众所周知的恶意软件的释放器或加载器在释放到磁盘或加载到内存中时可能会被基于签名的安全工具捕获;但是用另一种语言重写恶意软件可以使恶意软件能够绕过潜在的防御,因为现有的签名将不起作用。BlackBerry注意到,虽然一些著名的恶意软件是用Go、Rush、Nim和DLang编写的,但数量并不多,而且大多数都是用Go编写的。这些相对不常见的语言中的每一种都为其开发人员提供了各种优势。Go语言由谷歌于2007年开发,属于C语言家族,但语法更简单。该语言类交叉编译到所有主要操作系统,以及Android、JavaScript和WebAssembly。Nim可以编译成多种语言,例如C、C++和JavaScript。DLang改进了C语言的语法,可以交叉编译,更易学。Rust的低开销和高性能可以帮助开发人员避免在其他流行编程语言中发现的“痛点”。正如研究人员指出的那样,使用不常见编程语言的不仅仅是恶意软件作者。近年来,安全社区也采用这些语言编写攻击性的红队工具,其中很多是开源的或公开的。该报告提到了安全公司FireEye去年遭受的数据泄露事件,其中民族国家攻击者窃取了该公司的红队工具。FireEye发布了一份声明,并在GitHub上发布了检测签名,以识别被盗工具。它的GitHub存储库显示,FireEye红队一直在使用公开工具和内部构建的工具的组合,这些工具以多种不同的语言编写,包括Go、DLang和Rust。例如,Go语言是黑莓榜单上最年轻的语言,但被红队广泛采用,许多攻击性安全工具都是用Go重写或专门为Go构建的。FireEye的红队工具揭示了多平台Go语言远程访问木马(RAT)的创建。BishopFox的对手模拟工具Silver也是使用Go语言。为了原生跨平台,流行的命令和控制框架Merlin完全用Go编写。研究人员发现,如果有几家主要的安全公司喜欢它,一种编程语言或技术可能会成为主流。他们还指出,分析工具和技术通常不是由安全公司开发的,除非用新语言编写的恶意软件达到一定程度。用这些鲜为人知的语言编写的恶意软件的检测率低于更流行和成熟的编程语言。目前,攻击者正在改进第一阶段的感染过程,而不是他们活动的核心部分,但安全团队需要讨论不常见编程语言的风险以及对防御的影响。