不常见编程语言成攻击利器

VSole2021-08-25 23:30:00

BlackBerry研究人员报告称,不常见编程语言,比如Go、Rust、Nim和DLang,逐渐成为恶意软件作者的心头好,被用于绕过安全防御措施或解决恶意软件开发过程中的薄弱环节。

注意到使用上述四种编程语言的恶意软件家族数量越来越多之后,BlackBerry研究团队选择了这四种编程语言,深入研究其被用于恶意目的的情况。攻击者使用新的编程语言并不鲜见;但研究人员注意到,这些语言越来越成熟,预期会随着这一趋势的延续而使用量增加。

采用新编程语言的原因多种多样:可以解决现有编程语言中的缺陷、语法更简单、更高效的内存管理,或者编程效率更高等等。研究人员指出,新语言可能也更适合其环境,比如物联网设备就使用低级语言。

当攻击者开始寻求这些优势,防御者就面临挑战了。恶意软件分析工具并不总是支持不怎么为人所知的语言,而且,与C或C++等经典编程语言相比,用Go、Rust、Nim和DLang语言编写的二进制文件经混淆后会显得更加复杂。分析师可能不熟悉更新一些的语言,了解其复杂性需要一定的学习时间。

研究人员指出,当下出现了一种新的趋势:攻击者采用以相对较不常见的语言编写的投放器或加载器,翻新此前用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公司的红队工具。FireEye发布了一份声明,并在GitHub放上了用于识别被盗工具的检测特征码。其GitHub存储库揭示FireEye红队一直在组合使用公开可用工具和内部构建的工具,这些工具以多种不同语言编写而成,包括Go、DLang和Rust。

例如,Go语言是Blackberry名单上最年轻的语言,但广为红队采用,很多攻击性安全工具都用Go重写或专门为Go打造。FireEye的红队工具揭示其创建了一个多平台Go语言远程访问木马(RAT)。Bishop Fox的对手模拟工具Silver也用了Go语言。为实现原生跨平台,流行命令与控制框架Merlin完全用Go编写。

研究人员发现,如果能得到几大安全公司点赞,编程语言或技术就可能成为主流。他们还指出,分析工具和技术通常并不由安全公司开发,除非使用新语言编写的恶意软件达到一定程度的饱和。

相比更为普及和成熟的编程语言,用这些不太为人所知的语言编写的恶意软件,其检出率没那么高。目前,攻击者正在改进第一阶段的感染过程而非其攻击活动的核心部分,但安全团队需要讨论不常见编程语言的风险和对防御的影响。

软件编程语言
本作品采用《CC 协议》,转载必须注明作者和本文链接
网络安全漏洞(以下简称“漏洞”)作为信息通信网络中在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,随着经济社会信息化、网络化、数字化和智能化程度的加深,对国家网络安全的影响也日益加剧。世界各主要国家和组织为了切实提升国家网络安全防护能力,围绕漏洞的研究、收集和利用,纷纷建立国家级漏洞通报平台或漏洞数据库。日本于2003年开始建设“日本漏洞通报”(JVN)平台;美国于 2005 年开始建设“
用Rust开发代码不仅能避免很多常见的安全漏洞类型,而且最终会对全球网络安全基线产生重大影响。但是,一种名为Rust的安全编程语言正在快速崛起,逆转软件安全的宿命。自2019年以来,微软、谷歌和亚马逊网络服务一直在使用Rust,这三家公司于2020年与Mozilla和华为成立了非营利性Rust基金会,以支持和发展该语言。
针对恶意包的新型混淆技术可以在图像中隐藏代码。
企业的安全性取决于其自身,与低代码或无代码没有太大关系。
除了能够连接Twitter和GitHub帐户作为身份验证方法外,GitHub还宣布,在NPM上使用双因素身份验证进行登录和包发布将变得更容易。有鉴于此,在登录NPM帐户时增加2FA的使用将大大提高安全性。NPM的母公司GitHub也在努力提高大型代码托管平台的安全性:今年早些时候,该公司宣布,所有贡献代码的用户都需要在2023年底启用某种形式的2FA。
NSA网络安全技术总监Neal Ziring称,想要杜绝此类漏洞,开发软件时就必须始终使用内存安全语言和其他保护措施。不过,NSA确实认识到“内存安全”有点儿用词不当,这个概念范围太广,各人理解不同。内存安全也有其自身的挑战。分析师公司SlashData的数据表明,2020年第一季度到2022年第一季度,Rust用户数量增长了两倍。
根据Cyble的数据,具体而言,媒体和娱乐行业首当其冲受到BianLian攻击,到目前为止,该行业有25%的受害者,专业服务、制造、医疗保健、能源和公用事业以及教育行业各有12.5%的受害者。研究人员表示,使用BianLian的攻击者通常会要求异常高昂的赎金,他们利用独特的加密方式将文件内容分成10个字节的块,以逃避防病毒产品的检测。
现有研究缺乏对攻击者如何将恶意代码注入OSS项目的全面、可理解、通用性的描述。论文关注开源软件供应链攻击,提出了一种针对开源供应链攻击的通用分类法,独立于特定的编程语言或生态系统,涵盖了从代码贡献到包分发的所有阶段,与真实事件关联并映射到安全缓解措施。
软件常见漏洞的解析
2022-11-28 10:16:06
理论基础漏洞可以定义为“在软件和硬件组件中发现的计算逻辑(例如代码)中的弱点,当被利用时,会对机密性,完整性
VSole
网络安全专家