Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

番茄系统家园 · 2022-05-19 05:35:18

Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

使用Golang语言开发多平台恶意软件是2020年恶意软件的发展趋势。2020年12月初,研究人员发现了一个新的用Golang语言编写的蠕虫。该蠕虫尝试在网络中传播来大规模地运行XMRig挖矿机。恶意软件的目标是Windows和Linux服务器。在老版本中,该蠕虫尝试利用WebLogic的漏洞——CVE-2020-14882。

研究人员分析发现,攻击者持续更新C2服务器上的蠕虫,表明恶意软件开发者非常活跃,而且在未来的更新中可能会攻击其他弱配置的服务。

技术分析

攻击者使用了3个文件:

· 释放器脚本(bash或powershell);

· Golang二进制蠕虫;

· XMRig 挖矿机。

这3个文件都位于同一C2服务器上。

截止目前,ELF 蠕虫二进制文件和bash 释放器脚本在VirusTotal 中都没有检测到。图1是VirusTotal 对ELF蠕虫二进制文件的检测结果。

Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

图 1: VirusTotal 对ELF 蠕虫二进制文件的检测结果

恶意软件在Windows和Linux操作系统上的行为非常相似。下面对Linux蠕虫的工作流进行分析。

Linux蠕虫工作流

蠕虫执行后会检查受感染的机器上是否有进程在监听52013端口。端口监听器的存在是一个mutex互斥量。如果端口的socket已经开放,恶意软件实例就会退出,否则就会打开一个端口的网络socket。

在老版本中,蠕虫会解压XMRig挖矿机为Network01到tmp文件夹中,并运行。挖矿机会使用Go资源嵌入包(go-bindata)嵌入到Golang二进制文件中,恶意软件会使用bindataFile来解压嵌入的XMRig挖矿机。图2是文件中的函数:

Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

图 2: xmrig_linux_amd64.go文件

恶意软件会使用TCP SYN扫描网络来找到可以暴力破解的服务,并在网络中传播。然后扫描有与这些服务相关的开放端口的IP,Tomcat和Jenkins的端口是8080,MySQL的端口是3306,WebLogic的端口是7001。这些漏洞利用中在src exp代码下有一个包。

Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

图 3: “exp”包文件和函数

蠕虫使用gopacket库来提供Go语言的C绑定,用libpcap来读取网络包。通过运行pcapc,蠕虫会收集网络数据并继续对服务进行暴力破解。图4是蠕虫暴力破解和尝试在Tomcat和MySQL服务上进行漏洞利用的结果。

Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

图 4: 蠕虫结果片段

漏洞利用后,恶意软件会传播一个加载器脚本:Linux系统是ld.sh,Windows平台是ld.ps1。加载器负责释放和运行XMRig挖矿机和Golang蠕虫。图5和图6是加载器脚本。

Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

图 5: ldr.sh –Linux平台的释放器bash脚本

Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

图 6: ldr.ps1 script – Windows平台的释放器 powershell脚本

漏洞利用流

下面描述每个服务的攻击流:

MySql: Port 3306

恶意软件会运行凭证暴力破解攻击。恶意软件会使用硬编码的弱凭证目录,比如root:123456。

成功登陆后,恶意软件会使用mysqlUDF运行shellcode来获取本地权限提升。漏洞利用以十六进制字符串的形式嵌入在二进制文件中。蠕虫对不同的操作系统和架构有不同的漏洞利用,设计的系统和架构有UDFLINUX32、UDFLINUX64、UDFLWIN32和UDFWIN64。

运行漏洞利用后,payload会用sys_exec 命令来释放和运行加载器脚本。URLWIN和URLLINUX保存释放器脚本URL。图7和图8是每个操作系统对应的payload。

Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

图 7: MySQL查询– Linux payload

Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

图 8: MySQL 查询– Windows payload

Tomcat: Port 8080

恶意软件会使用基本认证在管理员面板上运行凭证填充。

Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

图 9: 到Tomcat管理员面板的认证请求示例

成功尝试后,恶意软件会尝试部署一个WAR文件,用来传输含有恶意payload的1.jsp 文件。

恶意软件会发送Get请求,并分析jsp文件%s/1.jsp?win=%s&linux=%s的参数。这些参数中含有释放器脚本URL。然后,JSP脚本会释放和运行其加载器。

Golang蠕虫将Windows和Linux服务器变成门罗币挖矿机

图 10: 1.jsp文件脚本

Jenkins: Port 8080

与之前漏洞利用类似,恶意软件会用口令填充来暴力破解Jenkins 登陆,并运行以下payload:

在之前版本中,恶意软件会用最新的WebLogic远程代码执行漏洞利用CVE-2020-14882。恶意软件会发送到WebLogic服务的get请求,并使用GET请求header作为payload的一部分。

总结

在2020年,研究人员发现许多攻击不同平台的Golang恶意软件,包括Windows、Linux、Mac和安卓。研究人员认为这一趋势在2021年将会继续。此外,蠕虫的PE和ELF版本代码几乎完全相同。

免责声明: 凡标注转载/编译字样内容并非本站原创,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如果你觉得本文好,欢迎推荐给朋友阅读;本文链接: https://m.nndssk.com/dngz/331025FmbSYD.html
猜你喜欢
最新应用
热门应用