0
| 本文作者: 又田 | 2017-10-19 10:32 |
最近,宅宅聽說一個朋友和游戲里認識了兩個月隊友奔現脫單了,還有這種操作?閑(xiang)來(zhao)無(dui)事(xiang)的宅宅準備找幾個網游玩玩。
打開某個2017熱門網游排行榜,宅宅發現排名靠前的熱門游戲都相當大手筆,代言人請了張家輝、古天樂、陳小春一票男神。

抱著試一試的心態宅宅選了一個看起來并不難的游戲,順手點了下載,等待安裝的過程中還特意選了一個人美奶大的角色,準備進行一番廝殺。

萬萬沒想到,下載下來的竟然是病毒……
惡性病毒?熱門游戲正被病毒團伙利用
近日,有病毒團伙利用被制作者偽裝成安裝數據統計組件的后門病毒“Backdoor/Jsctrl”,通過植入《傳奇世界》、《傳奇霸業》、《藍月傳奇》、《九天封神》等熱門游戲的微端安裝包內,用戶在PChome、下載吧等網站下載某些軟件時,會被捆綁安裝這些游戲微端,而病毒也借機進入用戶電腦。
病毒入侵電腦后,病毒制作者可以通過修改服務器上的后門代碼,遠程操控受害者電腦,進行多種破壞行為,包括下載其他病毒程序、后臺暗刷流量等。
據雷鋒網宅客頻道(微信公眾號:letshome)了解,這一病毒致使每天約 30-50 萬臺電腦感染病毒,且病毒“Backdoor/Jsctrl”極為頑固、隱蔽,不僅無法通過卸載游戲清除,還具備“反追蹤”設置,可以監測遠程協助軟件(如安全廠商常用的TeamViewer等)中的運行窗口,一旦發現正在被遠程協助,則會徹底刪除病毒相關所有文件,以免被安全研究人員追蹤。
這是如何實現的?
樣本分析
火絨安全實驗室在追蹤過程中,發現該后門病毒在上述游戲微端按轉包運行后即被植入,且即便游戲被卸載仍然會常駐系統,該病毒會在遠程 C&C 服務器存放的 JavaScript 代碼控制下,利用病毒中封裝的 JavaScript 對象可以執行任意 Windows API 或其他后門邏輯(如:下載、運行命令行等)。并且,該 C&C 服務器下發的后門腳本仍處于持續更新狀態。
上文所述的幾款游戲微端安裝包中都包含有相同惡意代碼,下文以 cqsj_Y_905908_feitian.exe(《傳奇世界》游戲微端安裝包)為例展開詳細分析。此類安裝包的文件名通常為“xxxx_Y_nnnnnn_*.exe”(‘x’代表任意字母,‘n’代表任意數字,‘*’代表部分內容不固定)。安裝包整體邏輯如下圖所示:

病毒執行流程圖
游戲微端安裝包
該病毒安裝包中都包含有一個病毒動態庫(病毒動態庫名通常為“游戲全拼首字母.dll”,如:“tdzs.dll”對應“天地諸神”)。文件屬性如下圖所示:

安裝包文件屬性
將NSIS安裝包進行解包后,可以在NSIS腳本中看到tdzs.dll調用邏輯。如下圖所示:

NSIS腳本中調用tdzs.dll代碼
運行安裝包之后,可以看到其進程調用關系及tdzs.dll調用參數。如下圖所示:

安裝包運行
安裝后,游戲登陸界面如下:

游戲運行界面
通過安裝發現,雖然安裝包文件信息為“天地諸神微端”,但是安裝后的游戲界面卻是《37傳奇世界》登錄界面,安裝邏輯較為混亂。
tdzs.dll
tdzs.dll動態庫在文件信息中說明自己是“安裝數據統計”程序,且在軟件卸載時,該病毒動態庫也會被一起刪除,從而誘使用戶誤以為該動態庫只進行“安裝數據統計”操作。文件信息如下圖所示:

安裝包釋放的病毒動態庫文件屬性
微端卸載程序刪除tdzs.dll相關NSIS腳本,如下圖所示:

卸載相關NSIS腳本
雖然tdzs.dll會被卸載程序刪除,但是該動態庫是直接被安裝包進行調用的,所以通常在用戶對游戲微端進行卸載時,病毒邏輯已經執行完畢。tdzs.dll動態庫執行參數,如下圖所示:
tdzs.dll運行參數
在tdzs.dll被rundll32調用后,首先會在全局構造過程中創建名為external的JavaScript對象,在該對象中封裝了很多較為底層的方法(相較于在瀏覽器中執行的JavaScript腳本),用于執行其從遠端服務器獲取到的后門代碼。
在報告中所提及的三個病毒樣本(tdzs.dll、隨機名服務和up_zlib1.dll)中,關鍵的字符串數據都是經過XOR加密的,每一個字符串解密都對應一個獨立的解密函數。解密代碼舉例,如下圖所示:
解密字符串
構造external對象的相關邏輯以在對象中添加callapi方法為例,如下圖所示:

向external對象添加方法
callapi函數實現
除了callapi函數外,external對象中還實現有諸多方法,本文所提及的三個病毒樣本運行遠程后門腳本邏輯全部都依托于external對象。部分關鍵方法列表,如下圖所示:

external中封裝的方法列表
在構造external對象之后,會統計當前進程關系信息和一些本地計算機信息(如:IP地址、MAC地址、CPU ID等),之后再將數據轉為字符所對應的二進制字符串,經過加密后將最終數據發送到C&C服務器(hxxp://cdn.37wanyou.com)的53端口。相關代碼如下所示:

獲取進程關系信息

獲取本地計算機信息
最終上傳至服務器中的數據,如下圖所示:

上傳的數據
在將加密后的數據上傳C&C服務器之后,C&C服務器會返回一段被加密的壓縮數據。在將數據還原后,程序會得到一個后門JavaScript腳本,通過運行腳本執行后門邏輯(其他病毒組件也同樣存在相同邏輯,下文不再贅述)。
下載數據解密邏輯如下圖所示:

下載解密JavaScript腳本
調用ScriptControl.AddObject引用external對象后,執行后門JavaScript代碼。腳本執行邏輯,如下圖所示:

執行后門JavaScript代碼
程序執行的后門腳本可以通過云端控制,現階段病毒已經進入蟄伏期,tdzs.dll所執行的遠程腳本已經不再釋放后續病毒,只有個別環境才能運行出遠程腳本調用邏輯,進行軟件推廣。另外,通過終端威脅情報系統檢索與該病毒相關的行為信息時,可以發現除了《傳奇世界》游戲微端帶有tdzs.dll病毒動態庫外,還有其他游戲微端安裝程序(下圖為《九天封神》相關數據)也會釋放運行該病毒,且調用參數與前文所述完全相同。火絨捆綁攔截功能日志,如下圖所示:

捆綁攔截日志
隨機名服務
該病毒服務的文件名是通過固定字典隨機組合兩個英文單詞而成,文件名例如:AcceleratorLeaders.exe、AcronymOcclude.exe等等。病毒服務啟動后會創建一個相同的子進程,父進程為守護進程,當子進程被結束時會重啟啟動子進程。代碼邏輯,如下圖所示:

等待進程退出
重新創建進程
在子進程創建之后,父進程會執行與tdzs.dll中相似的信息收集流程(收集進程關系信息和本地計算機信息),之后由父進程將加密后的數據上傳至C&C服務器(hxxp:// update.wanyou7.com:3900/config/gameupdate.asp)。上傳后,服務器會返回JavaScript腳本進行下一步病毒釋放和執行(執行JavaScript腳本相關邏輯與上文相同)。但如上文推斷,現階段該病毒已經進入“蟄伏期”,該鏈接已經無法訪問。在服務還可以繼續釋放病毒文件的時,病毒服務會釋放up_zlib1.dll并使用rundll32進行執行,由于服務文件說明為“游戲微端更新”,使得其釋放其他病毒文件時不會引起用戶注意。
病毒服務的文件信息,如下圖所示:

病毒服務文件信息
病毒服務所使用的簽名并不固定,如火絨截獲的另一個相同的病毒服務文件信息,如下圖所示:

文件信息
病毒服務使用rundll32調用up_zlib1.dll,如下圖所示:

病毒服務調用up_zlib1.dll日志
子進程也會將上述進程信息和計算機數據發送至C&C服務器的另一個服務頁面(hxxp:// update.wanyou7.com:3900/config/crm.asp),上傳數據后返回JavaScript腳本并進行執行。
JavaScript腳本邏輯,如下圖所示:

crm.asp頁面中獲取到的JavaScript腳本
如上圖,如果檢測到遠程協助窗口類名(如:TeamViewer等)和數據包過濾分析工具進程(包括WireShark、Fidder、HttpAnalyze),則會調用external對象中的SvcExecScript方法執行遠程C&C服務器(hxxp://update.wanyou7.com:3900/config/service.asp)中存放的JavaScript腳本執行自毀邏輯。自毀主邏輯代碼,如下圖所示:

自毀代碼
如圖,JavaScript腳本會依次執行close_proc_has_module、del_self和del_dllservice三個函數執行自毀邏輯。close_proc_has_module函數用于遍歷遍歷進程,將進程模塊中包含“up_zlib1.dll”的進程全部結束。具體邏輯,如下圖所示:

結束所有加載指定模塊名的進程
del_self函數主要用于刪除當前進程鏡像文件,如下圖所示:

del_self函數代碼邏輯
del_dllservice函數邏輯會先檢測是否存在指定服務名的注冊表啟動項(如果未指定則刪除自身服務項),如果存在則通過調用“sc delete”和“sc stop”結束并刪除病毒服務。如下圖所示:

del_dllservice函數代碼邏輯
up_zlib1.dll
up_zlib1.dll動態庫被rundll32調用后會創建隱藏的web控件,在后臺暗刷流量,并且在訪問導航頁面的同時,病毒還利用JavaScript腳本模仿用戶操作,欺騙導航站的作弊檢測邏輯。在顯示web控件窗口后,執行效果如下圖所示:

執行效果
up_zlib1.dll動態庫由服務進行調用。調用參數,如下圖所示:

up_zlib1.dll調用參數
調用參數網址(hxxp://121.43.33.129:8064/apithird/getlink)中存放有一段JavaScript腳本,如下圖所示:

JavaScript腳本片段
在進行上述訪問時,host_id屬性是隨機的,每個host_id所對應的script鏈接屬性各不相同。在拿到host_id后,動態庫會使用rundll32再次調用up_zlib1.dll動態庫,網址參數中傳入了host_id和來自delay成員中的任意數值。如下圖所示:

運行參數
此次在服務器中獲取到的內容,如下圖所示:

第二次請求獲取的內容
url_list屬性中存放的是web控件在刷取流量時要跳轉的網址,如果網址為“about:blank”,則跳轉網址會由script屬性網址返回的JavaScript腳本進行設置。病毒會創建出一個隱藏的窗體,之后在該窗體上繪制web控件。在創建窗體之前,程序先會檢測當前模塊文件所在目錄下是否存在擴展名為“.debug”的同名文件,如果存在則會顯示web控件所在窗體,病毒作者可能在測試時使用。
創建窗體相關代碼,如下圖所示:

創建窗體

窗口類初始化
在窗口響應WM_CREATE消息時會設置一個Timer,間隔為8秒。在窗口回調函數接收到WM_Timer消息后,如果網頁加載狀態readyState值為complete或者interactive,則在網頁中插入從遠端服務器地址(http://tj.im991.com/dh/view_360_uv_so.asp)中獲取到的JavaScript腳本。相關代碼,如下圖所示:

窗口回調函數
檢測readyState相關邏輯,如下圖所示:

檢測readyState
如果頁面加載完成,則在頁面中插入script標簽執行JavaScript腳本。如下圖所示:

創建script標簽

添加腳本內容
程序會在獲取到C&C服務器地址(http://tj.im991.com/dh/view_360_uv_so.asp)末尾拼接“t=1”參數,如果沒有該參數則無法獲取到完整的JavaScript代碼。“t=1”參數所影響的關鍵代碼,如下圖所示:

腳本關鍵邏輯
__get_url函數用于從網址列表中隨機獲取網址,如下圖所示:

__get_url函數邏輯
模擬用戶操作部分主要可以進行搜索關鍵字和點擊網頁連接操作,如下圖所示:

模擬用戶操作
溯源分析
說了這么多,這個神秘的病毒團伙是否有露出蛛絲馬跡?
據雷鋒網了解,火絨安全實驗室在對多數主流下載站進行排查之后,發現 “下載吧”和“電腦之家”下載站現今所提供的高速下載器會推廣該病毒安裝包。如下圖所示:

推廣列表
雖然病毒安裝包釋放的動態庫名稱不盡相同,但是調用參數與前文所述tdzs.dll完全相同,且代碼邏輯也完全相同。這些病毒安裝包的下載地址都來自于域名“hxxp://cdn.xunshark.cn”,且這些病毒安裝包與前文提到的病毒安裝包(cqsj_Y_905908_feitian.exe)簽名同為“北京迅XXX有限公司”簽名。如下圖所示:

安裝包簽名信息
安裝包所釋放病毒動態庫簽名信息也同為“北京迅XXX有限公司”,如下圖所示:

病毒動態庫文件簽名信息
該組病毒文件中,up_zlib1.dll的簽名信息還涉及另一家公司“北京神州XXXXXX有限公司”。簽名信息,如下圖所示:

up_zlib1.dll簽名信息
通過搜索該公司的知識產權信息,可以找到另一款同樣帶有該模塊的軟件。如下圖所示:

軟件著作權信息
在下載檸檬輸入法軟件安裝后,也發現了具有相同數據和代碼邏輯的“zlib1.dll”。如下圖所示:

軟件下載
對”up_zlib1.dll”和檸檬輸入法中的“zlib1.dll”動態庫脫殼后,可見同源性代碼及數據,如下圖所示:

代碼同源性

數據同源性
本文由火絨實驗室投稿,雷鋒網編輯。
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。