整理 | 郑丽媛

出品 | CSDN(ID:CSDNnews)

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

其中,PPSAP.exe 文件是一个盗取信息的木马,用于收集系统信息,包括当前云运行的进程、用户名、MAC 地址等,随后将信息发送至以下远程位置:

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

☞Linux 之父家断电六天:内核更新延期;华为 EMUI 11 用户突破1亿;美国得州最大电力公司申请破产 | 极客头条☞千亿项目的弘芯团队解散,中国芯美梦何圆?☞平均 15189 元!2021 年 3 月程序员工资统计出炉☞为什么我们很难看到代码 5 分钟前的样子?

Go 语言“助力”恶意软件?仅 4 年基于 Go 的恶意软件数就激增 2000%!相关推荐

  1. 【论文翻译】Gotcha - Sly Malware! Scorpion: 基于Metagraph2vec的恶意软件检测系统

    Gotcha - Sly Malware! Scorpion: 基于Metagraph2vec的恶意软件检测系统 摘要: 恶意软件检测由于其对互联网和计算设备安全的严重破坏和威胁,几十年来一直受到反恶 ...

  2. 卡巴斯基白皮书-基于机器学习的恶意软件检测-笔记

    前言:下文用"我们"表示卡巴斯基实验室,(?)标记尚有疑问处.原文地址.这篇文章描述卡巴斯基实验室基于机器学习的恶意软件检测实践,包括静态分析和行为分析两类检测方法,以及数据预处理 ...

  3. R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy、Precision、Recall(sensitivity)、F1、Specificity指标

    R语言构建混淆矩阵(仿真数据)并基于混淆矩阵(confusion matrix)计算并计算Accuracy.Precision.Recall(sensitivity).F1.Specificity指标 ...

  4. R语言泊松回归(poisson)模型案例:基于robust包的Breslow癫痫数据集

    R语言泊松回归(poisson)模型案例:基于robust包的Breslow癫痫数据集 目录 R语言泊松回归(poisson)模型案例:基于robust包的Breslow癫痫数据集 #数据加载

  5. R语言数据热力图绘制实战(基于原生R函数、ggplot2包、plotly包)

    R语言数据热力图绘制实战(基于原生R函数.ggplot2包.plotly包) 目录 R语言数据热力图绘制实战(基于原生R函数.ggplot2包.plotly包)

  6. c语言排序算法 应用与实现,基于C语言排序算法改进与应用.doc

    基于C语言排序算法改进与应用 基于C语言排序算法改进与应用 摘 要:介绍了程序语言中排序的原理及应用,阐述了基于C语言的三种主要排序方法,提出了每种排序方法的改进,计算出改进后算法的时间复杂度,编写了 ...

  7. 中点圆c语言程序,[图形学] 画圆(基于中点算法)

    图形学中的中点算法画圆,以下是该算法的 C 语言实现: /// // 程序名称:基于中点算法画圆 // 编译环境:Visual C++ 6.0 / 2010,EasyX 2011惊蛰版 // 作 者: ...

  8. 基于机器学习的恶意软件加密流量检测研究分享

    1 概述 2 恶意软件加密流量介绍 3 加密HTTPS流量解析 4 特征工程 5 模型效果 6 具体实施 7 总结 1 概述 近年来随着HTTPS的全面普及,为了确保通信安全和隐私,越来越多的网络流量 ...

  9. 基于深度学习lstm_深度学习和基于LSTM的恶意软件分类

    基于深度学习lstm Malware development has seen diversity in terms of architecture and features. This advanc ...

最新文章

  1. 32如何向Linux转,linux使用技巧32则
  2. 隐藏画质代码_如何让千元机高画质满帧吃鸡?最全教程奉上!
  3. 【转】asp.net中@page指令的属性Inherits、Src、CodeBehind区别
  4. LeetCode 16 3Sum Closest(最接近的3个数的和)
  5. Kafka 集群数据备份 MirrorMaker 详解
  6. 网络操作系统 第四章 磁盘管理
  7. 响应式禁用(Bootstrap PK AmazeUI)
  8. Linux mail 命令 不兼容 从 Redhat-release5 迁移到 Redhat-release6以上
  9. 解决 HomeBrew 下载缓慢的问题
  10. 正式环境docker部署hyperf_忍受不了 docker 环境下 hyperf 启动等待时间,教你如何通过 win10 子系统快速运行 hyperf...
  11. 【中国传媒大学】史上最全的《电视原理》笔记
  12. python算大写字母
  13. 软件史上的10大bug
  14. openwrt查看linux内核,OpenWrt教程-如何升级linux内核版本
  15. 数据结构二叉树后序遍历非递归算法
  16. 自制python小工具(3)——Gadgets1.1
  17. 读《谁动了我的奶酪》---做一个新人
  18. 高等代数习题课(手写)
  19. asp.net1036-物流管理信息系统#毕业设计
  20. ADS使用技巧/debug

热门文章

  1. 【Angular 4】依赖注入
  2. 敏捷开发用户故事系列之三:用户建模
  3. 算法不会,尚能饭否之双向循环链表
  4. char varchar nchar nvarchar 四者的区别是什么(为何SQL Server自动给字符串末尾加空格)...
  5. zend studio 7.2.0怎么创建项目
  6. extjs combobox分页加载数据不显示
  7. myeclipse9.1 安装svn(图)
  8. 获取当前系统在线用户的数量
  9. Linux高级编程--06.进程概述
  10. 【杂文】【演化学习】platEMO提取缓存Data