作者:
騰訊電腦管家
·
2016/01/28 12:14
0x00 背景
在烏克蘭電力系統被攻擊之後,最近又爆出該國機場也遭受網路襲擊。罪魁禍首都是黑暗力量(BlackEnergy),BlackEnergy是何方神聖?為何有如此神通?BlackEnergy是最早出現在2007年的一套惡意軟體,後來出現了專門針對烏克蘭政府機構打造的分支。BlackEnergy並不是最近興起的新型惡意軟體,但時至今日仍然站在潮頭興風作浪,這點值得我們關注。
0x01 攻擊簡述
下邊簡要描述一下BlackEnergy的攻擊過程。XLS文件透過郵件可以方便傳播,文件中包含的宏程式碼會dropper一個vba_macro.exe,這個exe又會dropper兩個東西。其一.dat結尾的檔案是一個dll,而啟動目錄下的快捷方式是使用rundll32來執行dll中序號為1的匯出函式。
rundll32拉起惡意dll之後,會使用程式外com的方式的去啟動IE程式,然後使用IE程式去連線遠端伺服器,下載惡意軟體元件。然後又透過安裝驅動和apc注入,在系統模組中執行惡意程式碼,與遠端伺服器通訊,根據遠端伺服器的指令以及拉取下來的惡意程式執行相應攻擊。

0x02 樣本危害
透過宏病毒入侵系統,留有後門,後續攻擊元件清空關鍵系統檔案,使得計算機無法正常工作,達到破壞目的。
0x03 重點分析
1. FONTCACHE.DATA檔案分析
FONTACACHE.DATA是由之前的vba_macro.exe
來釋放,FONTACACHE.DATA是一個dll檔案,透過下面這條命令執行起來。C:\WINDOWS\system32\rundll32.exe "C:\Documents and Settings\Administrator\Local Settings\Application Data\FONTCACHE.DAT",#1
可以看到呼叫dll匯出的序號為1的函式。下圖為匯出函式表。

執行後,透過virtualAlloc函式以及複製指令脫殼,在0x10010000地址處,寫入了一個另外一個dll,暫稱為primarydll。

程式最終會執行到primarydll的入口處,primarydll的入口處程式碼,會執行sub_100122B6()
函式,檢視此函式的程式碼。

首先會設定一系列IE登錄檔相關的值,然後啟動一個執行緒。檢視執行緒函式地址。

透過三個函式註冊RPC服務,開啟監聽。這樣中毒電腦就可以接受駭客的控制。接著往下走,樣本會對NTUSER.LOG檔案進行操作。隨後便來到一個while true中。

在迴圈中,會呼叫sub_10012740()
函式,靜態分析此函式,可以看到樣本在構造了http請求相關的欄位後,透過CoCreateInstance來啟動IE,去下載可執行檔案。具體的url為:http://5.149.254.114/Microsoft/Update/KC074913.php(已經失效)

2. xxx.sys驅動分析
惡意樣本實際執行時建立的是一個隨機名字的驅動檔案,在此以xxx.sys代替。由於驅動加了殼所以主要透過動態除錯來分析。首先進入svchost的程式的上下文,以便把分配好的記憶體對映到ring3的地址空間。

初始化APC,從下圖中可以看到 KeInitializeApc的NormalRoutine被設定為0x00c453cc

插入剛才初始化的APC

svchost執行到0x00c453cc的情況

從該地址向回查詢可以看到這是實際上是一個PE

而偏移0x53cc就是這個dll的入口點

至此可以看出xxx.sys先將自己的dll寫入svchost的地址空間,然後透過插入apc使自己的程式碼執行起來。
3. Killdisk樣本分析
將自身複製到系統盤windows目錄下,重新命名為svchost.exe檔案,BlackEnergy的作者還真是對svchost情有獨鍾。

病毒建立一個名為Microsoft Defender Service的服務,使用該名稱用來欺騙使用者,看似正常的系統安全服務程式,透過該服務,啟動病毒複製自身到Windows目錄下的svchost.exe檔案,啟動命令列是svchost.exe -service
。
複製自身到windows目錄下的程式碼:

建立服務程式碼:

建立並啟動服務成功:

調整程式令牌,提升程式許可權,使病毒程式具有關機和修改系統目錄檔案的許可權。


執行病毒服務函式:

開啟主硬碟PhysicalDrive0,將硬碟前2560個扇區的資料全部清零,破壞硬碟MBR和檔案分配表等系統啟動的核心資料。
開啟主硬碟裝置:

從MBR扇區開始,迴圈執行256次,清除256個扇區的資料:

以上操作一共執行了10次,10*256
共計2560個扇區的資料
從根目錄開始遍歷磁碟目錄下的指定型別的檔案,建立多個執行緒,將遍歷到的指定型別的檔案內容全部清0。
病毒主要清除的檔案型別列表:

建立新執行緒,開始遍歷檔案:

掃描所有指定型別的檔案:



開啟檔案,將檔案內容全部填充為0:

WriteFileZeroByte函式內容:

終止系統程式lsass.exe和wininit.exe,並且記錄日誌,透過執行shutdown命令,重啟電腦,由於系統MBR、檔案分配表等資訊都被破壞,系統重啟後奔潰,無法修復
終止lsass.exe程式:

終止wininit.exe程式:

執行shutdown命令,重啟系統

由於系統關鍵檔案被清空,導致重啟後無法正常工作,整個攻擊流程攻擊完成。
0x04 防禦思考
雲端拉黑md5,防毒引擎增加靜態特徵,IDS、IPS等系統上封住已知的遠端伺服器ip或者url,如果這些就是我們全部防禦策略的話,那麼下一次當我們的安全產品面臨類似於BlackEnergy這樣的攻擊的時候,註定是脆弱的。
以攻擊的第一步XLS為例,即使不使用office 0day,簡簡單單的宏病毒就可以達成目的。在這個入口點的防禦上,使用動態分析要比靜態掃描合適一些的。對於宏指令碼加密的樣本來說,不停地變換加密演算法對靜態掃描造成了太大的干擾,而動態分析技術則無懼加密變形等對抗手段。
這是哈勃檔案分析系統(http://habo.qq.com/)對攻擊源頭的xls檔案的分析結果。


這是哈勃對第一個dropper檔案vba_macro.exe
的分析結果。

這是哈勃對偽裝wordpad釋放並載入驅動樣本的分析結果。

這是哈勃對killdisk惡意樣本的分析報告

樣本加殼,資料加密已經成為駭客和木馬作者的必修功課,在這種情況下傳統的靜態掃描越來越難以獨自扛起系統防護的大旗。動態行為分析很可能成為一個備選的解決方案,即使是因為使用者體驗的因素而採取非同步分析,也能為威脅感知和威脅情報提取提供重要幫助。
哈勃動態分析系統還在摸索中前進,但在不久的將來,類似的動態分析系統很有可能成為企業安全防護系統中一個重要的環節。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!