標籤:

Terdot銀行木馬技術分析:可竊取Facebook Twitter Gmail賬戶信息

安全專家發現Terdot是一款基於Zeus銀行木馬的惡意軟體,可以進行MIMT代理攻擊、竊取瀏覽信息、進行HTML代碼注入等。Terdot的目標除了銀行,還有社交網路,包括Facebook, Twitter, Google Plus, YouTube, 郵件服務提供商包括Gmail, live.com, 和Yahoo Mail。

有趣的是,Terdot惡意軟體會避免收集俄國社交媒體平台的數據,比如VKontakte (vk.com)和Bitdefender。這說明該惡意軟體的幕後操作者應該來源於東歐。

簡介

安全專家發現Terdot是一款基於Zeus銀行木馬的惡意軟體。Terdot的技術高度定製和熟練,可以進行MIMT代理攻擊、竊取瀏覽信息、進行HTML代碼注入等。根據最新的分析,Terdot的目標除了銀行(PCFinancial, Desjardins, BMO, Royal Bank, Toronto Dominion bank, Banque Nationale, Scotiabank, CIBC, Tangerine Bank),還有社交網路,包括Facebook, Twitter, Google Plus, YouTube, 郵件服務提供商包括Gmail, live.com, 和Yahoo Mail。

有趣的是,Terdot惡意軟體會避免收集俄國社交媒體平台的數據,比如VKontakte (vk.com)和Bitdefender。這說明該惡意軟體的幕後操作者應該來源於東歐。

發現和傳播

Terdot木馬是2016年10月被發現的,該惡意軟體通過email郵件中的pdf圖標進行感染。當點擊了pdf圖標之後,隱藏的js代碼就執行了。代碼和惡意軟體文件就執行了。

為了保護payload,Terdot的傳播機制非常複雜,有一系列複雜的droppers,注入、下載器。感染鏈如下圖所示:

感染鏈

Terdot會把自己注入到瀏覽器進程中來閱讀瀏覽器的流量,把低級的網路流量導入到本地代理伺服器中。伺服器會檢查流量、轉發請求到目標、接受響應消息,然後發送回受害者瀏覽器。

惡意軟體有兩種方式來竊取認證數據:1是檢查客戶的request請求,2是在響應消息中注入spyware js代碼。Terdot會保存HTTP請求的相關數據並周期性地上傳給C&C伺服器。

因為大多數的銀行現在都採用了HTTPS,因此惡意軟體通過創建自己的證書授權中心(Certificate Authority)和在MIMT攻擊中為每個訪問的域名生成證書來繞過TLS的限制。在IE中,惡意軟體會給win32 API證書檢查函數安裝hooks來誘騙瀏覽器相信偽造的證書。對Firefox,Terdot會用Mozilla提供的工具在瀏覽器的可信CA鏈中添加根證書。

Terdot發起的MIMT攻擊

Terdot的組件分散在多個進程中,每個進程有特殊的角色。Windows Explorer進程和其他常駐內存的Windows進程是負責在機器內傳播感染的注入器或者監視器。Terdot的MIMT代理從msiexec.exe進程中運行的瀏覽器進程中接收流量。

Terdot組件和注入鏈

我們發現的Terdot樣本是用VB編寫的exe文件。執行的時候,會創建一個同名的進程,但是所有的數據不同。新的數據只會獲取寫入虛擬內存的內容,而不是硬碟上的數據。

新的執行鏡像保護兩部分:代碼和加密的DLL,其中DLL是下一步用來注入的。代碼部分使用的混淆技術來避免被反編譯。

混淆演算法使用了與ESP register和棧、寄存器中的VCHG-ing valus相同的操作。通過分析dropper樣本,加密的DDL位於RVA 0x348,解密方式如下:

data[index] ^= (char)keynkey = (key << 8) + indexn

每個exe的key是不同的,不同靜態提取。因為加密的數據應該解密exe,我們可以預測前兩個位元組是ASCII碼的MZ。然後接下來的兩位元組就可以用暴力破解很容易地破解了,一共有65536種組合,用python代碼在I7-4790 CPU上進行破解只需要4秒。

數據結構

惡意軟體代碼中使用的數據結構如下:

BaseConfig structure格式

該結構是用來保存bootsrapping過程使用的信息,這些數據在感染的過程中是不變的。

persistence structure格式

該數據結構對不同的Terdot 安裝是不同的,含有特定機器的信息和隨機生成的數據。

downloaded structure格式

該結構是bootstrapper進程下載的,主要含有Terdot DLLs。

data container structure格式

與ZeuS類似,Terdot使用了特殊的容器結構來存儲配置數據。配置數據到C&C伺服器的上傳和下載也使用這種格式。從C&C伺服器下載的配置數據是不變的,含有spyware代理要注入的URL和HTML代碼。容器結構如下:

Header

在數據保存或發送之前,數據容器會進行一些處理:

· 如果block含有與之前相同的identifier combination,在flag標籤內有16bit的設定,那麼就丟棄新的block;

· 一個block的程度在128~1024位元組,當充滿隨機數據的新block添加到容器的尾部,就會計算出block的md5值,並且保存到容器頭的響應域。

· 容器的前20位元組是隨機數據。

整個結構用下面的演算法加密:

for (int i = 1; i < container_length; i++){ncontainer_data[i] ^= container_data[i - 1];n}n

剩餘的數據用persistence structure中存儲的RC4 state buffer或者BaseConfig structure中存儲的RC4 state buffer來加密。

Data container對象示例:

Bootstrapper DLL

DLL的作用是通過下載或者已有的安裝中找到並運行Terdot DLL。該文件的輸出名稱是loader.dll,而且只有一個輸出。我們發現,樣本首先會檢查是否有足夠的許可權來編輯註冊表,即嘗試創建自己的註冊表HKCUSoftwareMicrosoftTest。如果註冊表的許可權被拒絕了,就需要用ShellExecuteEx API調用重新運行惡意軟體。在重新運行exe的時候,用戶需要接受UAC提示,如下圖所示。因為提示只說是Windows應用,並沒有其他的提示,用戶大概率會接受。

如果用戶接受,那麼惡意軟體就會嘗試下載含有Terdot DLL的payload。

首先,惡意軟體檢查特定名稱的文件映射是否存在,如果映射存在,內容就複製到內存中,然後從映射從刪除。在payload中,第一個DWORD表示惡意軟體的版本。如果是新版本,那就接受,否則放棄執行。文件映射含有persistence structure,並且全局RC4 state buffer被用來解密數據,含有之前下載的含有Terdot DDL數據結構和其他的exe和DLL。如果是舊版本,惡意軟體就會從C&C伺服器獲取新版本的payload。

如果映射不存在,惡意軟體就會嘗試在Windows註冊表中特定位置去找另一個payload源。

Bootstrapper程序的部分數據

下載機制

如果文件映射和註冊表位置都不存在,惡意軟體就會嘗試從C&C伺服器下載payload,主要是通過硬編碼或者明文的URL來實現的。不同樣本的URL也是不一樣的。

用戶代理通過之前的進程被被褥到程序執行鏡像中,如果無法獲取這樣的代理,就按照默認的設置選擇硬編碼或者明文的URL。

如果按照系統配置的代理下載,如果失敗了,就嘗試不用代理的方式。如果使用HTTPs協議,無效的證書會被忽略。其他情況下,下載就是一個簡單的GET請求。響應消息用RC4 state buffer的副本解密,然後檢查CRC32除後四位之外的部分的校驗和是否等於後四位。沒有校驗和的buffer是用nrv2b壓縮演算法解壓縮的。解壓縮的數據就是payload buffer,含有Terdot DLL和其他相關文件。

因為惡意軟體是以32位的進程運行的,所以在64位的操作系統中,惡意軟體就需要利用漏洞來訪問64位版本的win32 API。利用的漏洞是Heaven』s Gate,具體流程如下:

· 暫時改變cs(code segment) register為0x33,這是x86-64指令對應的機器碼;

· 運行x86-64代碼;

· 把cs register改回0x23,機器碼被翻譯為x86指令。

通過上面的過程,惡意軟體可以調用64位版本的NtAllocateVirtualMemory, NtWriteVirtualMemory, LdrLoadDll和CreateRemoteThread來裝載下載的64位的惡意軟體DDL,並運行系統explorer.exe進程中的新進程「DDL輸出」。

如果對系統explorer.exe進程的注入失敗了,惡意軟體就在當前進程的地址空間中運行32位惡意軟體的DDL。之後,惡意軟體運行DDL記錄點,在另一個線程中運行_Run@4 export。

當惡意軟體運行了DDL export,新的線程就會收到一個含有BaseConfig結構、原始惡意軟體路徑、DDL鏡像的開始地址、文件映射中的downloaded structure和數據的buffer。如果DDL在另外一個進程中運行,buffer會寫入該進程的內存,然後把指針傳給程序。

如果注入成功了,那麼bootstrapper會進入休眠來允許線程繼續。如果注入不成功,惡意軟體會在10秒會重試。

注入到系統 32-bit explorer.exe 進程的偽代碼

更多Terdot銀行木馬的技術分析參見Bitdefender的白皮書

本文翻譯自:bitdefender.com/files/N,如若轉載,請註明原文地址: 4hou.com/technology/853 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

記一次720度托馬斯迴旋過狗!
Popcorn Time(爆米花時刻):第一個不收贖金的勒索軟體
新手必看:黑客入門技能表
手機銀行木馬Faketoken又更新,利用屏幕重疊竊取銀行信息

TAG:信息安全 |