恶意软件开发流行“小语种”

安全研究人员发现,恶意软件开发者越来越多地使用“小众”编程语言来逃避检测。

这些“小众”语言包括:Go、Rust、Nim和DLang等。

根据黑莓情报团队本周发布的一份报告,使用上述四种语言的恶意软件家族数量正在激增。该团队选择了这四种语言进行检查,部分原因是它们适合其检测方法,还因为这些语言具有强大的社区支持并且可以被认为是更发达的。

报告指出:“这些不常见的编程语言不再像以前想象的那样很少使用。威胁行为者已开始采用它们来重写已知的恶意软件系列或为新的恶意软件集创建工具。”

研究人员发现越来越多的威胁行为者开始用“小众语言”编写加载器和释放器。报告称:“此类新涌现的恶意软件用于解码、加载和部署商品恶意软件,例如Remcos和NanoCore远程访问木马(RAT)以及Cobalt Strike。”“它们通常被用来帮助威胁行为者逃避端点的检测。”

事实上,(不法分子)使用合法的Cobalt Strike安全工具已经非常流行:它在网络攻击中的使用比上年同期提高161%,在恶意软件世界已经成为主流。

创新的阴暗面

恶意软件制造商可能以迟迟不放弃任何工作而闻名,但他们乐于采用新的编程语言,原因与守法同行相同:它有助于消除开发周期中的痛点。此外,从恶意软件作者的角度来看,新语言使他们的创作比保护工具领先一步或两三步。“恶意软件作者以其适应和修改其技能和行为以利用新技术的能力而闻名,”威胁研究副总裁Eric Milam写道。“这从开发周期和保护解决方案固有的盲区中获得了多重好处。”

此外,就像非恶意软件程序员一样,恶意软件作者需要保护自己免受利用。Blackberry将“EmoCrash”作为他们加强防御以避免的一个例子:大约一年前,安全研究员James Quinn透露,他开发了一种称为EmoCrash的终止开关,它利用了安装程序中的缓冲区溢出,臭名昭著的Emotet infostealer中的主要二进制文件,导致它崩溃并阻止它感染系统六个月。实际上,他已经炮制了一种Emotet疫苗。

关键案例: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语言。黑莓分析师指出,这并不是用这些语言开发的恶意软件家族的详尽列表。

用Go、Rust、Nim和DLang语言编写的恶意软件突出示例的时间表。来源:黑莓

DLang恶意软件似乎是不断演变的威胁环境中最不受欢迎的语言,但它在过去一年中出现了一些温和的增长。报告预测,这可能标志着恶意软件开发人员更普遍地采用DLang的趋势。

反击

Blackberry建议,为了捕获这些多语言恶意软件家族,软件工程师和威胁研究人员如果采用动态或行为签名、通过沙箱输出标记行为的签名或端点检测和响应(EDR),将有机会检测到恶意软件。

研究人员表示,如果静态签名失败,采用与实现无关的检测规则来标记动态行为会有所帮助,因为恶意软件通常以相同的方式运行,尤其是当恶意软件被重新编码时。“在其他情况下,例如通常使用Windows API调用的有限子集注入进程的Shellcode加载器,可以使用该有限子集识别它们。”报告指出。

研究人员说,同样,在二进制文件中使用的库通常可以被“签名”。“本报告中调查的语言可与Win32 API接口绑定并调用API 。从本质上讲,他们可以使用与更传统的语言(如C++)几乎相同的方法。情况并非总是如此,因为特定语言可以使用自己的API代替Win32 API。例如,他们可以使用加密库来限制某些事件的可见性。但是,在二进制文件中使用这些库通常也可以‘签名’。”

黑莓警告说,恶意软件样本分析工具要赶上这些新语言还需要一段时间,但安全社区“必须积极主动地防御新兴技术的恶意使用”。

前一篇白宫发布关于美国关键基础设施安全的备忘录
后一篇如何选择数据防泄漏(DLP)解决方案?