天天看點

熱門遊戲遭病毒團夥利用,中招者電腦被遠端操控

最近,宅宅聽說一個朋友和遊戲裡認識了兩個月隊友奔現脫單了,還有這種操作?閑(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”動态庫脫殼後,可見同源性代碼及資料,如下圖所示:

代碼同源性 

資料同源性

本文作者:又田

繼續閱讀