根据黑莓研究和情 团队周一发布的一份 告,这四种语言的使用正在增加被识别的恶意软件家族的数量。该团队选择了这四种语言进行检查,部分原因是它们适合其检测方法,还因为这些语言有强大的 区支持,可以被认为是更发达的。
“这些不常见的编程语言不再像以前想象的那样很少使用,”根据这篇文章。“威胁行为者已开始采用它们来重写已知的恶意软件系列或为新的恶意软件集创建工具。”
具体来说,研究人员正在追踪更多以稀有语言编写的加载器和释放器。 告称:“这些新的第一阶段恶意软件旨在解码、加载和部署商品恶意软件,例如 Remcos 和 NanoCore 远程访问木马 (RAT) 以及 Cobalt Strike。” “它们通常被用来帮助威胁行为者逃避端点的检测。”
事实上,使用合法的钴攻击的安全工具已经展开:它的 络攻击中使用高达161%,比上年同期,在犯罪软件世界在经历全面主流。
创新的阴暗面
关键案例:APT28 和 APT29 的“Go”流畅度不断提高
当谈到这些更晦涩的语言时,恶意软件开发人员历来主要用 Go 编写:一种通用语言,与 C++ 非常相似,因为它是静态类型和编译的。事实上,它的编译器最初是用 C 编写的,尽管现在它也用 Go 编写了。
研究人员说,C 语言恶意软件仍然是最普遍的。但是两个俄罗斯的威胁参与者 APT28 和 APT29 已经开始比其他组织更频繁地在恶意软件集中使用更奇特的语言。APT28又名 Fancy Bear 或 Strontium 等,而APT29又名 Nobelium、Cozy Bear 或 the Dukes 等。
黑莓研究人员表示,Go 现在是“威胁行为者的‘首选’语言之一”,他们正在制造变种,黑莓研究人员表示,无论是在高级持续威胁 (APT) 级别还是商品级别。他们写道:“基于 Go 的新样本现在半定期出现,包括所有类型的恶意软件,并针对多个活动中的所有主要操作系统。”
APT28 和 APT29 就是很好的例子。APT28 因涉嫌通过渗透民主党全国委员会干预 2016 年总统选举而臭名昭著,与广泛的攻击和恶意软件系列有关,但 Zebrocy 恶意软件系列尤其“在其杀伤链中使用了多种不常见的编程语言,”据 道。
Zebrocy,又名 Sednit、APT28、Fancy Bear 和 Strontium,被威胁组织 Sofacy 使用,作为下载器运行并收集有关受感染主机的数据。
正如研究人员所解释的那样,当 Zebrocy 样本在 2015 年首次出现时,它们分为三个部分:Delphi 下载器、AutoIT 下载器和 Delphi 后门。无论 Zebrocy 是用哪种语言编写的,它都会通过包含初始木马的 络钓鱼活动进行传播,该木马尝试与命令和控制 (C2) 服务器进行通信,并执行下载程序以通过已建立的后门投放恶意负载。 告称,它已被多次重写,但“通过电子邮件附件和一般功能传递的方法基本保持不变”。
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 变体,包括在 2020 年使用更复杂的 WellMess 变体,试图从包括美国、英国和加拿大在内的世界各国的学术和药物研究机构窃取 COVID-19 疫苗研究。研究人员指出,较新的变体虽然用 Go 编写,但变得更加复杂:例如,APT29 添加了更多 络通信协议以及在感染后运行 PowerShell 脚本的能力。
时间线
除了 Go 及其对 APT28 和 APT29 日益增长的吸引力之外,过去十年中其他稀有语言也越来越多地被其他威胁行为者用于越来越多的恶意软件系列。下面是四种语言如何越来越多地出现的时间表,特别是 Rust、Nim 和 D 语言。黑莓分析师指出,这并不是用这些语言开发的恶意软件家族的详尽列表。
DLang 恶意软件似乎是不断演变的威胁环境中最不受欢迎的语言,但它在过去一年中出现了一些温和的增长。 告预测,这可能标志着恶意软件开发人员更普遍地采用 DLang 的趋势。
使用 Go 编译的 Cobalt Strike 的初始阶段程序的使用大幅增加,最近在 Nim 中,根据文章,初始阶段程序是用于促进第一阶段的二进制文件,通过接触下载进行初始访问,这一点并不谦虚来自 TeamServer 的 Cobalt Strike 信标。“该服务器负责为信标本身提供服务,” 告称。“重要的是,防御者在捕捉用这些语言编写的 Cobalt Strike 相关文件方面保持领先地位,以增强防御能力以应对如此强大的威胁。”
来自巴别塔的噪音帮助攻击者
Blackberry 的团队描述了为什么使用不太常见的语言帮助攻击者做他们肮脏的事的许多原因:
-
弥补现有语言的不足。恶意程序员可能会追求其他语言所缺乏的许多东西,无论是更简单的语法、性能提升还是更有效的内存管理。再说一次,一种新语言可能是特定目标环境的完美工具:例如, 告指出,物联 (IoT) 设备使用较低级别的语言,如 C 或汇编。另一个优点是一些语言的用户友好特性,这可以简化开发并提高开发人员的生活质量:示例包括Python的pip 包管理器或Node.JS 的 npm。
-
搞砸逆向工程。并非所有恶意软件分析工具都支持奇异的编程语言,这使得分析变得困难重重。“与传统的基于 C/C++/C# 的二进制文件相比,用 Go、Rust、Nim 和 DLang 编写的二进制文件在反汇编时会显得更加复杂、复杂和乏味,”黑莓研究人员解释说。
-
搞砸了基于签名的检测。为了发现签名,该签名必须保持不变。静态特征的一个例子是散列,它要求每个字节都相同,无论是整个文件的散列,还是证书的散列等等。 调整这些先前静态特征的新语言变体可能无法被发现. 一个例子是 BazarLoader,它是用 Nim 重写的。
“基于静态属性的现有恶意软件家族的签名在用这些更晦涩的语言重写后标记相同的恶意软件几乎没有成功。在像 Buer 和 RustyBuer(以及 BazarLoader 和 NimzaLoader)这样的情况下,通常必须创建新规则来标记这些相切相关的变体,”研究人员写道。 -
混淆视听。当谈到外来语言时,考虑到它相对较新的事实,语言本身几乎可以起到混淆的作用。研究人员说:“语言本身可以产生与传统混淆类似的效果,可用于试图绕过传统安全措施并阻碍分析工作。”
或者,拥有深厚资源的威胁参与者正在用新语言完全重写现有的恶意软件,而不仅仅是包装器和加载器。示例: BazaLoader 切换到 NimzaLoader,而 Buer 切换到RustyBuer。
反击
Blackberry 建议,为了捕获这些多语言恶意软件家族,软件工程师和威胁研究人员如果采用动态或行为签名、通过沙箱输出标记行为的签名或端点检测和响应 (EDR),将有更好的机会,或者记录数据。 告称:“在这些情况下,这些技术可能更加可靠。”
研究人员表示,如果静态签名失败,采用与实现无关的检测规则来标记动态行为会有所帮助,因为恶意软件通常以相同的方式运行,尤其是当恶意软件被重新编码时。“在其他情况下,例如通常使用 Windows API 调用的有限子集注入进程的 shellcode 加载器,可以使用该有限子集识别它们,” 告阐明。
研究人员说,同样,在二进制文件中使用库通常可以“签名”。“本 告中调查的语言具有绑定,允许它们与 Win32 API 接口并使用这些 API 调用。从本质上讲,他们可以使用与更传统的语言(如 C++)几乎相同的方法。情况并非总是如此,因为特定语言可以使用自己的 API 代替 Win32 API。例如,他们可以使用加密库来限制某些事件的可见性。但是,在二进制文件中使用这些库通常也可以“签名”。”
黑莓警告说,恶意软件样本分析工具要赶上这些新语言还需要一段时间,但安全 区“必须积极主动地防御新兴技术和技术的恶意使用”。
“行业和客户必须了解并密切关注这些趋势,因为它们只会增加,”Blackberry 的 Milam 建议道。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!