Go 语言“助力”恶意软件?仅 4 年基于 Go 的恶意软件数就激增 2000%!
Go(又称 Golang),是谷歌于 2009 年正式发布的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。因其语法简单,精简易学,逐渐受到越来越多开发者的喜爱,并于 2016 年荣登 TIOBE “年度最佳语言”。
不过,Go 的逐渐流行也吸引了部分不法分子的注意。近日网络安全公司 Intezer 发布的一份报告称,自 2017 年以来,用 Go 编写的恶意软件数量急剧增加了近 2000%。
第一款由 Go 编写的恶意软件
2007 年开始设计、2009 年正式推出的 Go,在问世 3 年后的 2012 年就被利用到了恶意软件的开发中。
据了解,这款恶意软件名为 Trojan.Encriyoko,是在受感染的电脑上加密各种文件格式,使加密文件无法使用的一种木马病毒。该恶意软件最初的原始样本其实是一个名为 GalaxyNxRoot.exe、用 .NET 编写的 dropper(木马程序 ,启动后会从体内资源部分释放出病毒文件),并伪装成 root 工具以欺骗用户安装它。
一旦执行,GalaxyNxRoot.exe 文件将启动两个由 Go 编写的可执行文件:
%Temp%PPSAP.exe
%Temp%adbtool.exe
http://golang.iwebs.ws/about/step1.php
而 adbtool.exe 文件则从以下远程位置下载加密文件:
http://sourceslang.iwebs.ws/downs/zdx.tgz
该文件被解密为动态链接库(DLL)文件并加载,随后便尝试对受感染计算机上的各种文件格式进行加密。目标文件格式包括:
源代码文件(.c,.cpp,.cs,.php,.java,.pas,.vb,.frm,.bas,.go,.asp,.aspx,.jsp,.pl,.py 、. rb)
图像文件(.jpg,.png,.psd)
音频文件(.wav,.wma,.amr,.awb)
存档文件(.rar,.zip,.iso,.gz,.7z)
文档文件(文件扩展名包含以下字符串:doc,xls,ppt,mdb,pdf)
其他类型的文件(文件扩展名包含以下字符串:dw,dx,sh,pic,111,win,wvw,drew,grp,rpl,mce,mcg,pag)
而一旦文件被该恶意软件加密,将很难恢复。
基于 Go 的恶意软件层出不穷
不过,虽然第一款由 Go 编写的恶意软件出现于 2012 年,但 Go 真正成为恶意软件领域的流行语言还是在几年之后。
Intezer 在报告中表示,“2019 年之前,用 Go 编写的恶意软件很少见,在 2019 年这却已成为日常事件。”即 2019 年之后,Go 才成为了恶意软件开发者的首选语言之一,国家黑客组织(也被称为 APTs)、网络犯罪操作者、甚至安全团队都经常使用 Go 来创建渗透测试工具包,基于 Go 的恶意软件也开始“层出不穷”。
以下例举部分 2020 年发现基于 Go 的恶意软件。
国家 APT 恶意软件:
Zebrocy——俄罗斯政府支持的 APT28 组织去年为其 Zebrocy 恶意软件创建了一个基于 Go 的版本;
WellMess——俄罗斯政府支持的 APT29 组织去年部署了其基于 Go 的WellMess 恶意软件的新升级版本。
电子犯罪恶意软件:
GOSH——去年 8 月,臭名昭著的 Carbanak 组织部署了一种用 Go 编写、名为 GOSH 的新 RAT;
Glupteba——2020 年出现比以往都要先进的新版 Glupteba 加载器;
Bitdefender 发现了一种针对运行 Oracle WebLogic 的 Linux 服务器的新型 RAT 病毒;
CryptoStealer.Go——2020 年出现了 CryptoStealer.Go 恶意软件的新版本和改进版,该恶意软件的目的是加密货币钱包和浏览器密码;
此外,2020 年还发现了用 Go 编写的剪贴板窃取者。
Go 编写的新勒索软件病毒:
RobbinHood:勒索软件,通过使用“另类”的方式关闭并删除杀软。在执行过程中释放并加载带有漏洞的驱动程序,之后对该驱动程序进行漏洞利用,关闭 Windows DSE 机制,一旦成功便会迅速加载没有签名的 Rootkit(Rootkit 主要功能为结束并删除指定的进程和杀软),上述操作完成后开始加密;
Nefilim:勒索软件病毒,遍历磁盘,对磁盘中的文件进行加密,并为加密后的文件名添加 NEFILIM 后缀。病毒加密完成后,调用 cmd 命令进行自我删除。该勒索软件威胁受害者如果不支付赎金,将会公布窃取到的受害者数据信息;
EKANS:一种被用于定向 ICS 活动的病毒,共发现两个版本的样本,均使用 Go 进行编写。一旦该恶意软件落在易受攻击的机器上,就会对文件进行加密,并显示一张勒索纸条,要求对方支付赎金,以换取解密密钥。
Go 颇受恶意软件“青睐”的三大原因
据 Intezer 称,调查报告证实了恶意软件生态系统的总体趋势,恶意软件开发者已逐渐由 C 和 C++ 转向 Go。而 Go 能在恶意软件领域使用范围急剧上升,主要是以下三个原因:
Go 支持简单的跨平台编译过程。这对恶意软件开发者简直是一个“福音”:只需编写一次代码,并从相同的代码库为多个平台编译二进制文件,那么他们就可以从同一代码库中针对 Windows,Mac 和 Linux 进行开发,这是其他许多编程语言不具备的多功能性。
安全研究人员目前还是很难对基于 Go 的二进制文件进行分析和逆向工程,因此基于 Go 的恶意软件的检测率一直很低。
Go 支持处理网络数据包和请求。Intezer 对此解释道:
Go 具有编写良好并易于使用的网络堆栈,并且 Go 也已经成为了许多云原生应用的编程语言之一,例如 Docker, Kubernetes, fluxdb, Traefik, Terraform, CockroachDB, Prometheus 和 Consul 都是用 Go 编写的。考虑到当初创建 Go 的原因之一就是发明一种更好的语言代替谷歌使用的内部 C++网络服务,因此这个现象也是合理的。
由于恶意软件经常会遭遇篡改、组装或发送/接收网络数据包,而 Go 恰好为恶意软件开发者提供了所需的所有工具,这也就是众多容易软件开发者放弃 C 和 C++ 的原因。
以上这就是 Go 颇受恶意软件开发者“青睐”的三大原因。依据最近的势头,Intezer 和许多人都认为 Go 的使用将在未来持续增加,并加入 C、C++ 和 Python 的行列,成为今后编写恶意软件的首选编程语言。
对此,你有什么看法吗?欢迎评论区留言!
参考链接:
https://www.zdnet.com/article/go-malware-is-now-common-having-been-adopted-by-both-apts-and-e-crime-groups/
https://community.broadcom.com/symantecenterprise/communities/community-home/librarydocuments/viewdocument?DocumentKey=7a3cd022-0705-43fb-8c11-181ec86b2c74&CommunityKey=1ecf5f55-9545-44d6-b0f4-4e4a7f5f5e68&tab=librarydocuments