在烏克蘭電力系統被攻擊之后,最近又爆出該國機場也遭受網絡襲擊。罪魁禍首都是黑暗力量(BlackEnergy),BlackEnergy是何方神圣?為何有如此神通?BlackEnergy是最早出現在2007年的一套惡意軟件,后來出現了專門針對烏克蘭政府機構打造的分支。BlackEnergy并不是最近興起的新型惡意軟件,但時至今日仍然站在潮頭興風作浪,這點值得我們關注。
下邊簡要描述一下BlackEnergy的攻擊過程。XLS文檔通過郵件可以方便傳播,文檔中包含的宏代碼會dropper一個vba_macro.exe,這個exe又會dropper兩個東西。其一.dat結尾的文件是一個dll,而啟動目錄下的快捷方式是使用rundll32來運行dll中序號為1的導出函數。
rundll32拉起惡意dll之后,會使用進程外com的方式的去啟動IE進程,然后使用IE進程去連接遠程服務器,下載惡意軟件組件。然后又通過安裝驅動和apc注入,在系統模塊中執行惡意代碼,與遠程服務器通信,根據遠程服務器的指令以及拉取下來的惡意程序執行相應攻擊。
通過宏病毒入侵系統,留有后門,后續攻擊組件清空關鍵系統文件,使得計算機無法正常工作,達到破壞目的。
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(已經失效)
惡意樣本實際運行時創建的是一個隨機名字的驅動文件,在此以xxx.sys代替。由于驅動加了殼所以主要通過動態調試來分析。首先進入svchost的進程的上下文,以便把分配好的內存映射到ring3的地址空間。
初始化APC,從下圖中可以看到?KeInitializeApc的NormalRoutine被設置為0x00c453cc
插入剛才初始化的APC
svchost執行到0x00c453cc的情況
從該地址向回查找可以看到這是實際上是一個PE
而偏移0x53cc就是這個dll的入口點
至此可以看出xxx.sys先將自己的dll寫入svchost的地址空間,然后通過插入apc使自己的代碼執行起來。
將自身復制到系統盤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命令,重啟系統
由于系統關鍵文件被清空,導致重啟后無法正常工作,整個攻擊流程攻擊完成。
云端拉黑md5,殺毒引擎增加靜態特征,IDS、IPS等系統上封住已知的遠程服務器ip或者url,如果這些就是我們全部防御策略的話,那么下一次當我們的安全產品面臨類似于BlackEnergy這樣的攻擊的時候,注定是脆弱的。
以攻擊的第一步XLS為例,即使不使用office 0day,簡簡單單的宏病毒就可以達成目的。在這個入口點的防御上,使用動態分析要比靜態掃描合適一些的。對于宏腳本加密的樣本來說,不停地變換加密算法對靜態掃描造成了太大的干擾,而動態分析技術則無懼加密變形等對抗手段。
這是哈勃文件分析系統(http://habo.qq.com/)對攻擊源頭的xls文件的分析結果。
這是哈勃對第一個dropper文件vba_macro.exe
的分析結果。
這是哈勃對偽裝wordpad釋放并加載驅動樣本的分析結果。
這是哈勃對killdisk惡意樣本的分析報告
樣本加殼,數據加密已經成為黑客和木馬作者的必修功課,在這種情況下傳統的靜態掃描越來越難以獨自扛起系統防護的大旗。動態行為分析很可能成為一個備選的解決方案,即使是因為用戶體驗的因素而采取異步分析,也能為威脅感知和威脅情報提取提供重要幫助。
哈勃動態分析系統還在摸索中前進,但在不久的將來,類似的動態分析系統很有可能成為企業安全防護系統中一個重要的環節。