在過去一年,我們對Havex惡意程序家族及其背后的組織保持了高度的關注。Havex被認為以不同工業(yè)領域為目標進行攻擊的惡意軟件,并且在最初的報告中,該惡意軟件對能源行業(yè)尤為感興趣。
Havex的主要構成為通用的遠程木馬(Remote Access Trojan,RAT)和用PHP編寫的服務器程序。可以在服務器的代碼中看到“Havex”這個名字。
在2014年的春天,我們發(fā)現(xiàn)Havex開始對工業(yè)控制系統(tǒng)(IndustrialControl Systems, ICS)有特殊的興趣,該惡意軟件背后的組織使用了一個創(chuàng)新型木馬來接近目標。攻擊者首先把ICS/SCADA制造商的網站上用來供用戶下載的相關軟件感染木馬病毒,當用戶下載這些軟件并安裝時實現(xiàn)對目標用戶的感染。
我們收集并分析了Havex的88個變種,主要分析了它們的訪問目標、從哪收集數據、網絡和機器。這一分析發(fā)現(xiàn)Havex通信用的C&C服務器多達146個,并且有1500多個IP地址向C&C服務器通信,從而識別最終的受害者。
攻擊者利用被攻陷的網站、博客作為C&C服務器,如下為用于C&C服務器的一些實例。
我們還發(fā)現(xiàn)了一個額外的功能組件,攻擊者利用此組件從應用于ICS/SCADA系統(tǒng)中的機器上盜取數據。這意味著攻擊者不僅僅對目標公司的網絡感興趣,還有對這些公司的ICS/SCADA系統(tǒng)進行控制的動機。我們目前對這一動機的緣由還不太清楚。
以包含木馬病毒的軟件安裝包作為感染媒介
Havex RAT以如下途徑進行傳播,
(1)垃圾郵件
(2)漏洞利用工具
(3)在被入侵的廠商的主站上,使其為用戶提供的軟件安裝包包含該木馬
利用垃圾郵件和漏洞工具是相當簡單的傳播機制,我們對此不進行深入分析。更值得關注的第三中方式,它可以被看做是水坑式攻擊(Water-hole attack),因為攻擊者選擇ICS的供應商作為中間目標,來實現(xiàn)其對最終目標的攻擊。
攻擊者利用網站的漏洞,入侵了網站,并將正常的供用戶下載的安裝軟件替換為包含木馬的安裝軟件。
我們的研究者發(fā)現(xiàn)有三個廠商的主站被這種方式被攻入,在網站上提供的軟件安裝包中包含了HavexRAT。我們懷疑還會有更多類似的情況,但是尚未確定。
根據他們網站的內容,這三家公司都是開發(fā)面向工業(yè)的設備和軟件,這些公司的總部位于德國、瑞士和比利時。其中兩個供應商為ICS系統(tǒng)提供遠程管理軟件,第三個供應商為開發(fā)高精密工業(yè)攝像機及相關軟件。
作為一個例子,我們可以看一下包含了木馬病毒的安裝包安裝時的動態(tài)分析結果。
正常的安裝程序是不會包含這個名為“mbcheck.dll”的文件的。這個文件實際上是Havex的惡意軟件,包含木馬病毒的安裝程序會釋放并執(zhí)行這一文件作為其軟件安裝過程中的一部分。這樣攻擊者可以用此后門來訪問和控制用戶的工作電腦。
目標組織
我們能夠找到一些受感染的系統(tǒng),并根據樣本的分析報告,來追蹤向Havex RATC&C服務器進行通信的IP地址。
所有受感染的這些實體都是與工業(yè)應用或者工業(yè)機器有一定的關系,大多數受害者位于歐洲,在本文撰寫時,我們發(fā)現(xiàn)至少有一家位于加利福尼亞的公司在向C&C服務器發(fā)送數據。其中歐洲的基礎機構中,有兩個為法國的眾所周知的教育機構,這兩個機構是進行技術相關的研究,兩個德國的工業(yè)應用程序和機器制造商,一個法國的工業(yè)機器生產生還有一個是專門從事結構工程的俄羅斯建筑公司。
ICS/SCADA 嗅探
對于Havex樣例代碼的分析發(fā)現(xiàn),其包含對于ICS/SCADA的嗅探行為。C&C服務器會指示受感染的計算機下載并執(zhí)行更進一步的組件,其中一個組件很有趣。當分析此組件時,我們發(fā)現(xiàn)它會枚舉局域網,并尋找連接的資源和服務器。(譯注:通過匯編代碼可知,該程序調用了Windows的庫函數“WNetEnumResource”,關于該函數的信息可以參照:http://msdn.microsoft.com/zh-cn/library/aa918051)
然后我們發(fā)現(xiàn),該程序調用了微軟的COM對象接口(CoInitializeEx,CoCreateInstanceEx),來連接特定的服務。
為了確認樣例代碼對哪個服務感興趣,我們特意的檢索了GUID值,通過對于GUID值的檢索可以知道哪種類型的接口被調用了。通過Google可知如下:
譯注(上述兩個接口應該是OPC標準基金會定義的OPCEnum.exe來實現(xiàn)的,這段代碼的目的應該就是訪問局域網中運行的OPCEnum.exe程序,通過調用IID_OPCServerList2接口來獲取機器上運行的OPCServer程序。各大工控廠商都開發(fā)了自己的OPCServer服務程序,但是大家都遵守了統(tǒng)一的OPC標準,從面向對象的角度來說,就是所有的OPCServer都派生自OPC標準基金會定義的接口。OPCEnum.exe主要是負責枚舉OPCServer列表用的,例如一臺機器上安裝三個自動化廠商的OPCServer,別人想訪問OPCServer時,可以先通過調用OPCEnum來獲取這臺機器上安裝了哪些OPCServer,然后再與OPCServer進行交互。通過本文來看,似乎Havex程序僅僅是獲取了OPCServer的基本信息,沒有進一步與OPCServer打交道,但通過另外一篇分析文章來看,Havex還是與OPCServer進行了打交道,獲取到了OPCServer內部更為詳細的情報。)
注意到“OPCServer”這個名字,還有更多的指示指向了這個單詞,在可執(zhí)行文件中的資源處找到了更多的OPC字符串關鍵字。
事實上,OPC指的是OLE for ProcessControl,它是一種標準,實現(xiàn)Windows應用程序與過程控制硬件進行交互。通過OPC,惡意軟件可以獲取設備更為詳細的信息,然后將他們發(fā)送給C&C服務器,供攻擊者分析。看起來這一組件僅僅是作為攻擊者收集情報的工具,到目前為止我們還沒有發(fā)現(xiàn)試圖控制連接在控制系統(tǒng)中的硬件的PayLoad。
深度解讀
Havex主要有兩大組件構成,下載器和OPC情報收集模塊。有關下載器的分析文章可以參見此文:http://blog.fortinet.com/Evolving-History-of-Havex-Module-Downloader/
在測試環(huán)境中,首先在局域網的其他機器上安裝兩個OPCServer,如下圖所示,惡意軟件成功的獲取到了這兩個OPCServer的情報(譯注:根據圖可知,安裝OPCServer的PC名稱為R3P-PC,安裝的OPCServer是ICONICS公司的OPCServer AD和AE)
收集到情報以bzip格式壓縮,然后利用RSAEuro進行加密,最后保存為.yls文件,放置于機器的臨時文件夾下。
在我們目前的測試環(huán)境中,這一.yls文件并沒有發(fā)送回攻擊者那里。(譯注:從后面生成的txt文件來看,這些文件肯定傳回過C&C服務器)
另外兩個文件被創(chuàng)建出來分別是OPCServer1.txt和OPCServer2.txt,每個文件記錄了一個OPCServer的具體情報。
(譯注:如下圖,文件中記錄了OPCServer中的較為詳細的信息,包括OPCServer中的組情況,Tag名稱、類型等。其實搞工業(yè)控制的人,看到這些情報,通過Tag數量就能大概的推斷出工廠的規(guī)模,另外就是某些個Tag可能會很敏感,對這一數據值進行強行修改的話可能會產生對控制系統(tǒng)運行非常嚴重的后果。另外就是某些廠商的OPCServer中可能存在漏洞,通過ICS-CERT的官方公告就能知道,利用這些已知的、未知的漏洞可以進一步侵入OPCServer,這樣離控制系統(tǒng)的核心部分就會越來越近。)
Havex背后的攻擊者采用了一個巧妙的方法來進行工業(yè)間諜活動,通過對ICS/SCADA軟件安裝包中植入木馬,是一種訪問目標系統(tǒng)很有效的方法,甚至能夠入侵到關鍵技術設施。
(譯注:OPC協(xié)議主要是流程工業(yè)上用的比較多,例如石油石化行業(yè),這也是為什么說Havex是針對能源行業(yè)了,用該協(xié)議主要是過程數據的存取等,這是過程控制的范疇,Havex主要可能是偷取數據情報為目的。例如,通過OPC層層的入侵,最后可能偷取到過程控制中的控制方案或者說是配方,例如煉油廠中的配方、或者制藥廠中的配方等。Stunex主要是針對PLC這種工廠控制,其涉及到的協(xié)議可能是Modbus、Profibus等偏向底層,主要實現(xiàn)對于控制系統(tǒng)底層終端的控制。例如閥門的開關、電機的啟停、正反轉。)