威脅概述
Morto惡意代碼家族是一種內網傳播的蠕蟲,最早于2011年被趨勢科技披露。360威脅情報中心的監測顯示在國內該家族到目前都非常活躍,需要網絡安全管理員引起重視進行處理。
通過對該家族所使用的C&C域名的監控,我們看到最近一個月中該惡意代碼的感染情況如下圖:

感染的IP分布大致如下:

其中在國內各省份的感染分布狀態如下:

威脅情報
以下是威脅相關的情報,讀者可以根據需要進行對應的處理,360所有支持威脅情報的產品(天眼、NGSOC、智慧防火墻等)都已經內置了檢測。

技術分析
整體而言,惡意代碼分為三個部分,maindrop,loader,payload。
maindrop
該模塊主要用于運行環境初始化,相應模塊的釋放。
通過IDA加載之后發現樣本的導入函數表如下,通常樣本為了防止研究員分析會采取動態函數的方式獲取需要調用的API的地址,使用Loadlibrary/GetProAddress的方式加載,但是這個地方發現導入函數中并不包含這兩個基本的函數。

因此懷疑該樣本使用了shellcode中常用的API獲取方式,即通過fs獲取kernel32基地址,并解析該dll導出函數的方式獲取必要的API。
分析代碼之后發現,該函數確實通過fs這個寄存器獲取了當前進程加載的dll信息,并從中遍歷出kernel32的地址。

可以看到獲取對應的基地址之后通過解析其導出表獲取對應的函數,如下圖所示:

之后解密并運行,如下圖所示創建以下幾個注冊表項,并釋放出Loader clb.dll。

其中上述的注冊表HKLM\\SYSTEM\\WPA\\md中保存了對應加密版的payloader,可以看到其長度為444402。

之后maindrop開啟一個regedit.exe進程。
loader
注冊表進程默認的情況下會加載clb.dll這個dll,maindrop之前在windows目錄下已經釋放了同名的惡意clb.dll,由于Windows的dll加載機制,此處將導致regedit進程將惡意的clb.dll加載。


clb.dll運行之后會從HKLM\\SYSTEM\\WPA\\md中解密出對應的payload并加載運行,之后會創建以下兩個文件,cache實際為一個loader。
C:\WINDOWS\Offline Web Pages\cache.txt
C:\WINDOWS\system32\Sens32.dll
payload
payload主要用于和遠程進行通信并實現RDP掃描。
殺軟對抗
運行之后針對主流殺軟做了相應的監控。
Ekrn,avguard,360rp,zhudongfangyu,RavMonD,kxescore,KVSrvXP,ccSvcHst,avgwdsvc,MsMpEng,vsserv,mcshield,fsdfwd,GDFwSvc,coreServiceShell,avp,MPSvc,PavFnSvr,knsdave,AvastSvc,avpmapp,SpySweeper,K7RTScan,SavService,Vba32Ldr,scanwscs,NSESVC.EXE,FortiScand,FPAVServer,a2service,freshclam,cmdagent,ArcaConfSV,ACAAS
下圖為其中對360的監控代碼:

C&C通信
在更新線程里,蠕蟲嘗試連接內置的硬編碼域名,所下圖所示,不同變種會有所區別。

和CC的通訊是通過DNS查詢實現的,對內置的域名進行DNS查詢,查詢類型為DNS_TYPE_TEXT,通過這種方式實現和C&C的通訊。

服務器返回加密后的數據,具體如下,由于調試的樣本沒有接收到對應的返回包,此處引用Symantec的圖片。

解密加密的數據包,獲取對應的操作指令。

解密數據包后,根據服務端下發的指令執行相關操作,如下圖所示的開啟新線程,cmd執行,注冊表寫入等操作。



RDP暴力破解
Morto的傳播主要通過RDP協議登錄并進行弱口令爆破實現。
樣本開啟一個專用于爆破的線程,在線程里循環隨機生成一個目標IP,檢查合法性后嘗試對其進行爆破。使用到的用戶名如下:
1,123,a,actuser,adm,admin,admin1,admin2,administrator,aspnet,backup,console,david,guest,john,owner,owner,root,server,sql,support,support_388945a0,sys,test,test1,test2,test3,user,user1,user2,user3,user4,user5
使用的弱密碼如下:
!@#$,!@#$%,!@#$%^,!@#$%^&*,%u%,%u%1,%u%111111,%u%12,%u%123,%u%1234,%u%123456,0,000000,1,111,1111111111,1111111,111222,112233,11223344,12,121212,123,123123,123321,1234,12344321,12345,123456,1234567,12345678,123456789,1234567890,1234qwer,1313,1314520,159357,168168,1QAZ,1q2w3e,1qaz2wsx,2010,2011,2012,2222,222222223,31415926,369,4321,520,520520,654321,666666,7,7777,7777777,77777777,789456,888888,88888888,987654,987654321999999,PASSWORD,Password,aaaa,abc,abc123,abcd,abcd1234,admin,admin123,computer,dragon,iloveyou,letmein,pass,password,princess,qazwsx,rockyou,root,secret,server,super,test,user,zxcvbnm

開啟RDP登錄:

在RDP登陸成功后,嘗試使用管理員賬號執行以下操作,執行感染操作,由于a.dll樣本使用的是rundll32.exe進行啟動,因此首先通過r.reg將rundll32.exe設置為administrator以便與后續樣本dll的執行。

木馬中RDP的協議采用了開源代碼實現,經過代碼對比,應該是采用了rdesktop早期版本實現:


總結
作為一個曝光6年卻依然活動的蠕蟲,Morto還是有一定的技術特點,如通過clb加載惡意dll,C&C采用DNS查詢的方式進行通信,payload通過注冊表保存(應該算是早期無文件樣本的雛形了)等。這個蠕蟲的流行也時刻提醒我們無論在什么環境,弱口令都是企業內部安全需要關注的一大問題。
|