超級工廠

超級工廠

超級工廠病毒(Stuxnet蠕蟲病毒)是世界上首個專門針對工業控制系統編寫的破壞性病毒,能夠利用對windows系統和西門子SIMATIC WinCC系統的7個漏洞進行攻擊。特別是針對西門子公司的SIMATIC WinCC監控與數據採集 (SCADA) 系統進行攻擊,由於該系統在我國的多個重要行業套用廣泛,被用來進行鋼鐵、電力、能源、化工等重要行業的人機互動與監控。 傳播途徑:該病毒主要通過隨身碟和區域網路進行傳播。歷史“貢獻”:曾造成伊朗核電站推遲發電。 2010-09-25,進入中國。

基本信息

病毒簡介

Stuxnet又名“震網”,是針對微軟體系統以及西門子工業系統的最新病毒,到2013年的今天已感染多個國家及地區的工業系統和個人用戶,此病毒可通過網路傳播,與以往病毒不同,其代碼非常精密。

造成伊朗核電站推遲發電的全球首個“超級工廠病毒”Stuxnet,2010-09-25侵入我國。瑞星昨日發布的預警顯示,國內已有近500萬網民及多個行業的領軍企業遭Stuxnet蠕蟲病毒攻擊,而且由於安全制度上的缺失,該病毒還存在很高的大規模傳播風險。

據瑞星安全專家介紹,Stuxnet蠕蟲病毒是世界上首個專門針對工業控制系統編寫的破壞性病毒,能夠利用對windows系統和西門子SIMATIC WinCC系統的7個漏洞進行攻擊。特別是針對西門子公司的SIMATIC WinCC監控與數據採集 (SCADA) 系統進行攻擊,由於該系統在我國的多個重要行業套用廣泛,被用來進行鋼鐵、電力、能源、化工等重要行業的人機互動與監控。

Stuxnet及其變種是一種利用最新的Windows Shell漏洞傳播惡意檔案的蠕蟲。造成這個漏洞的原因是Windows 錯誤地分析捷徑,當用戶單擊特製捷徑的顯示圖示時可能執行惡意代碼(檔案帶有.LNK擴展名)。

病毒技術分析報告

Worm.Win32.Stuxnet病毒分析

病毒名稱:

Worm.Win32.Stuxnet

病毒概述:

這是一個可以通過微軟MS10-046漏洞(lnk檔案漏洞),MS10-061(列印服務漏洞),MS08-067等多種漏洞傳播的惡性蠕蟲病毒。另外該病毒還可以專門針對西門子的SCADA軟體進行特定攻擊,以獲取其需要的信息。

傳播方式:

1. 通過MS10-046漏洞傳播

病毒運行後會拷貝自身到移動存儲上並命名為~WTR數字.Tmp(動態庫)和一個注入下列檔案名稱的lnk檔案組成:

Copy of ShortCut to .lnk

Copy of Copy of ShortCut to .lnk

Copy of Copy of Copy of ShortCut to .lnk…

在存在MS10-046漏洞的機器上,只需瀏覽這些lnk,Explorer.exe就會將~WTR數字.Tmp載入起來。

2. 通過MS10-061漏洞傳播

該病毒還會利用印表機或印表機共享漏洞MS10-061漏洞傳播。病毒會將自身拷貝到存在該漏洞的遠程機器的%system%目錄下,並利用WMI將其執行起來。

3. 通過已分享檔案夾傳播

該病毒還會試圖將自身拷貝到區域網路已分享檔案夾下,並命名為類似DEFRAG(隨機數字).tmp的名稱。

4. 通過MS08-067漏洞傳播

該病毒還會利用MS08-067漏洞傳播。

病毒的主要功能以及大致流程:

當用戶瀏覽可移動存儲上的Copy of ShortCut to .lnk檔案後,Explorer.exe會載入~WTR數字.Tmp,然後病毒會載入自身的另一個名為~WTR數字.Tmp的動態庫。在載入該惡意dll時,病毒並沒有通過普通的LoadLibrary函式載入,為了隱藏自身模組,同時為了達到不釋放檔案來載入病毒模組的目的,它採取了一個特殊方式。病毒會首先hook ntdll的一些導出函式,然後,它會構造一個特殊的並不存在的檔案名稱如Kernel32.dll.aslr,然後以此為參數調用LoadLibrary,正常情況下,該調用會失敗因為該檔案並不存在,但是因為病毒已經提前Hook了Ntdll,hook函式會監控對此類特殊檔案名稱的打開操作。如果發現是自身構造的虛假檔案名稱,則會重定向到其他位置,比如另一個檔案或者通常情況下是一塊已經被病毒解密過的記憶體,這樣,外界看到的是一個常見的模組名比如Kernel32,而實際上是病毒模組。這樣病毒就達到了隱藏自身的目的。

之後病毒會運行lsass.exe並修改程式的記憶體,然後釋放如下檔案:

%System%\drivers\mrxcls.sys

%System%\drivers\mrxnet.sys

%Windir%\inf\oem6C.PNF

%Windir%\inf\oem7A.PNF

%Windir%\inf\mdmcpq3.PNF

%Windir%\inf\mdmeric3.PNF

並在可移動存儲上創建~WTR數字.Tmp和Copy of ShortCut to .lnk等檔案。

Mrxcls.sys 和Mrxnet.sys具有合法的數字簽名。

由於調用了lsass.exe這個系統進程做壞事,因此在中毒機器內會看到至少3個lsass.exe進程。(有兩個是病毒啟動的)

然後病毒會將自身注入到services.exe,在services中,病毒會通過查找SOFTWARE\SIEMENS\STEP7,SOFTWARE\SIEMENS\WinCC\Setup等註冊表項檢測西門子軟體。病毒還能禁用Windows Defender等防毒軟體的保護。

病毒具有後門功能: 病毒會通過80連線埠連線遠程伺服器並傳送請求http://[SERVER_ADDRESS]/index.php?data=[DATA]

其中伺服器地址為:

www.****

www.*****

傳送的數據包括:

1、Windows版本信息

2、計算機名

3、網路組名稱

4、是否安裝了工控軟體

5、網卡的IP位址

傳送完畢數據後,病毒會等待伺服器回響,之後病毒可以根據伺服器的要求執行以下功能:

1、讀檔案

2、寫檔案

3、刪除檔案

4、創建進程

5、注入dll

6、載入dll並運行

7、更新配置信息

8、下載檔案,解密並執行

Rootkit隱藏功能:

病毒具有良好的隱藏性。病毒會查找totalcmd.exe,wincmd.exe等進程,掛鈎kernel32.dll的FindFirstFileW,FindNextFileW,FindFirstFileExW,Ntdll的NtQueryDirectoryFile,ZwQueryDirectoryFile函式隱藏其釋放的.lnk或者~WTR(數字).tmp檔案。使得通過此類檔案查找工具也無法找到他們。

針對工控軟體(SCADA)的攻擊功能:

病毒會利用SieMens Simatic Wincc的默認密碼安全繞過漏洞利用默認的用戶名和密碼並利用已經編寫好的SQL語句讀取資料庫數據。漏洞詳情:****

嘗試從資料庫中讀取特定數據:

GracS\cc_tag.sav

GracS\cc_alg.sav

GracS\db_log.sav

GracS\cc_tlg7.sav

*.S7P

*.MCP

*.LDF

目前的工控系統都包括一個可程式控制器,該控制器實際相當於一個小型的計算機系統,通過配置該系統,可以向控制器中寫入新的控制邏輯,從而完成不同的功能。該控制器可以通過專門的軟體連線到計算機,從計算機中可以編寫工控程式並下載到工控系統中運行。

工控軟體要進行控制和編程,需要通過西門子Step 7軟體來進行控制,該軟體要通過使用內部的s7otbxdx.dll同設備進行通信,病毒通過替換此dll來截獲所有與設備間的訪問。病毒自身導出了所有原始s7dotbxdx.dll的功能,然後病毒將原始的s7otbxdx.dll重命名為s7otbxsx.dll,然後將自身命名為s7otbxdx.dll,病毒內部再載入s7otbxsx.dll,這樣,如果是病毒感興趣的訪問,則病毒可以替換設備傳入或者傳出的結果,對於其他訪問,病毒直接重定向到原始的s7otbxdx.dll。

當向工控系統中寫入控制代碼時,病毒會修改寫入的控制代碼,從而感染工控系統。

實際上,在內部,病毒一共hook了16個函式,分別是:

s7_event

s7ag_bub_cycl_read_create

s7ag_bub_read_var

s7ag_bub_write_var

s7ag_link_in

s7ag_read_szl

s7ag_test

s7blk_delete

s7blk_findfirst

s7blk_findnext

s7blk_read

s7blk_write

s7db_close

s7db_open

s7ag_bub_read_var_seg

s7ag_bub_write_var_seg

通過對這些函式的掛鈎從而可以任意修改從計算機中寫入到工控軟體中的代碼。當向工控軟體正常寫入程式時,病毒會感染寫入的代碼,將自身寫入工控軟體代碼塊的頭部並修改工控軟體的控制結構,使其入口點指向病毒代碼。

另外病毒會監控所有與工控軟體之間的讀寫通信,如果發現訪問到被感染的塊,則會修改返回結果隱藏塊中的病毒代碼,從而使用戶不會發現。

防範建議:

1. 禁用隨身碟的自動播放功能,防止插入隨身碟後就自動瀏覽資料夾導致中毒。另外隨身碟插入以後一定要使用防毒軟體右鍵掃描該隨身碟。最好禁止隨身碟的寫入功能。

2. 及時更新微軟作業系統的補丁,針對該病毒的防範要更新以下漏洞的補丁:MS08-067,MS10-046,MS10-061

3. 給本機設定一個足夠複雜的密碼,並儘量避免設定共享。如果一定要設定已分享檔案夾,儘量給該資料夾以唯讀許可權。

4. 及時更新防毒軟體到最新,並保持監控各項開啟。使用瑞星防毒軟體的用戶無需升級,其木馬行為防禦功能即可防範此類病毒的未知變種。

特點

超級工廠病毒最大的特點為:打破惡意程式只攻擊用戶電腦的“慣例”,將攻擊目標偏向於用戶的生活與生存環境上來。一旦用戶的電腦不幸遭受“超級工廠病毒”-Stuxnet入侵,不但會使用戶電腦變成任由其擺布的“肉雞”,嚴重影響到用戶的日常生活,而且還會引發“多米諾骨牌效應”,導致與受害用戶聯網的人群遭受同樣攻擊。

感染原理

1. 如何選擇需要感染的PLC

Stuxnet會根據目標系統的特點,使用不同的代碼來感染PLC。

一個感染的序列包括了許多PLC 模組(代碼模組和數據模組),用以注入PLC來改變目標PLC 的行為。這個威脅包括了三個感染序列。其中兩個非常相似,功能也相同,我們將其命名為序列A和B。第三個序列我們命名為序列C。Stuxnet通過驗證“指紋”來判斷系統是否為計畫攻擊的目標。它會檢查:

PLC種類/家族:只有CPU 6ES7-417 和6ES7-315-2 會被感染。系統數據模組:SDB 會被解析;根據他們包含的數據,感染進程會選擇A,B或其它感染方式開始行動。當解析SDB 時,代碼會搜尋這兩個值是否存在-- 7050h and 9500h;然後根據這兩個數值的出現次數,選擇序列A 或B 中的一種來感染PLC。 代碼還會在SDB 模組的50h 子集中搜尋位元組序2C CB 00 01, 這個位元組序反映了通信處理器CP 342-5 (用作Profibus-DP) 是否存在。

而選擇序列C進行感染的條件則由其他因素構成。

感染方法

Stuxnet使用“代碼插入”的感染方式。當Stuxnet 感染OB1時,它會執行以下行為:

增加原始模組的大小; 在模組開頭寫入惡意代碼;

在惡意代碼後插入原始的OB1 代碼。

Stuxnet也會用類似於感染OB1的方式感染OB35。它會用自身來取代標準的協同處理器DP_RECV 代碼塊,然後在Profibus (一個標準的用作分散式I/O的工業網路匯流排) 中掛鈎網路通信。

利用A/B方法的感染步驟如下:

檢查PLC 類型;

該類型必須為S7/315-2;

檢查SDB 模組,判斷應該寫入序列A 或B 中的哪一個;

找到DP_RECV,將其複製到FC1869,並用Stuxnet嵌入的一個惡意拷貝將其取代;

在序列中寫入惡意模組(總共20個),由Stuxnet 嵌入;

感染OB1,令惡意代碼可以在新的周期開始時執行;

感染OB35, 它將扮演“看門狗”的角色。

感染代碼

被注入OB1 功能的代碼是用來感染序列A 和B的。這些序列包含了以下模組:

代碼塊:FC1865 至FC1874, FC1876 至FC1880 (注意:FC1869並非Stuxnet的一部分,而是PLC的DP_RECV模組的一個拷貝);

數據模組:DB888 至DB891。 序列A 和B 用DP_RECV 掛鈎模組來攔截Profibus 中的數據包,並根據在這些模組中找到的數值,來構造其他的數據包並傳送出去。這由一個複雜的狀態機控制(狀態機被建立在上面提到的FC 模組中)。這個狀態機可部分受控於數據塊DB890 中的DLL。

在某些條件下,序列C會被寫入一個PLC。這個序列比A和B包含更多的模組:

FC6055 至FC6084;DB8062, DB8063;DB8061, DB8064 至DB8070 (在運行中產生)。 序列C主要為了將I/O信息讀寫入PLC的記憶體檔案映射的I/O 區域,以及外圍設備的I/O。

程式A/B 的控制流如下圖所示,在之前的Step7 編輯器的截圖中也有部分顯示(數據模組FC1873):

而序列C 的程式流則更加複雜,可以從下面的圖表中看到:

4. Rootkit

Stuxnet PLC rootkit代碼全部藏身於假冒的s7otbxdx.dll中。為了不被PLC所檢測到,它至少需要應付以下情況:

對自己的惡意數據模組的讀請求;對受感染模組(OB1 , OB35, DP_RECV) 的讀請求;可能復蓋Stuxnet自身代碼的寫請求。 Stuxnet包含了監測和攔截這些請求的代碼,它會修改這些請求以保證Stuxnet 的PLC 代碼不會被發現或被破壞。下面列出了幾個Stuxnet用被掛鈎的導出命令來應付這些情況的例子:

s7blk_read: 監測讀請求,而後Stuxnet 會返回:真實請求的DP_RECV (保存為FV1869);錯誤信息,如果讀請求會涉及到它的惡意模組;OB1或OB35的乾淨版本的拷貝s7blk_write: 監測關於OB1/OB35的寫請求,以保證他們的新版本也會被感染。s7blk_findfirst / s7blk_findnext: 這些例程被用於枚舉PLC中的模組。惡意模組會被自動跳過。s7blk_delete: 監測對模組的“刪除”操作。 如上文所述,Stuxnet 是一個非常複雜的威脅,而其中的PLC 感染代碼令問題更加難以解決。僅僅關於注入的MC7代碼(我們於幾個月前通過逆向工程獲得)就可以討論很久。若想了解更多關於PLC 感染例程和Stuxnet的總體情況,請務必關注我們即將於Virus Bulletin會議中發布的白皮書。

專殺工具

9月28日,AVG率先向用戶發布安全警告,“超級工廠病毒”(Stuxnet)在國內進入爆發期,目前,已有600萬個人用戶及近千企業用戶遭到此病毒攻擊。針對“超級工廠病毒”肆虐的這種情況,AVG研發團隊緊急研發出了專殺工具,廣大用戶可從AVG官方網站免費下載使用該工具。

傳播方式

據介紹,該病毒主要通過隨身碟和區域網路進行傳播。

《基督教科學箴言報》報導,這種新病毒採取了多種先進技術,因此具有極強的隱身和破壞力。只要電腦操作員將被病毒感染的隨身碟插入USB接口,這種病毒就會在神不知鬼不覺的情況下(不會有任何其他操作要求或者提示出現)取得一些工業用電腦系統的控制權。

與傳統的電腦病毒相比,“震網”病毒不會通過竊取個人隱私信息牟利。由於它的打擊對象是全球各地的重要目標,且無需藉助網路連線進行傳播,因此被一些專家定性為全球首個投入實戰舞台的“網路武器”。一旦這種軟體流入黑市出售,其後果將不堪構想。

計算機安全專家在對軟體進行反編譯後發現,“震網”病毒結構非常複雜,因此它應該是一個“受國家資助高級團隊研發的結晶”。據悉,這種病毒可以破壞世界各國的化工、發電和電力傳輸企業所使用的核心生產控制電腦軟體,並且代替其對工廠其他電腦“發號施令”。

人們確信,在去年開發成功的“震網”病毒可承擔“網路飛彈”的重任。它不再以刺探情報為己任,而是能根據指令,分辨和破壞某些“極具爭議”的要害目標。微軟公司的研究發現,“震網”感染的重災區集中在伊朗境內。美國和以色列因此被懷疑是“震網”的發明人。

安全建議

安全防護建議

由於Stuxnet蠕蟲病毒是首個針對工業控制系統編寫的破壞性病毒,對大型工業、企業用戶存在一定的風險,所以,冠群金辰公司病毒防護專家給企業用戶提出如下安全防護建議,以提高企業抵禦未知安全風險的能力:

 在終端設備上開啟防火牆功能。

 為終端設備上所有的套用系統安裝最新的補丁程式。

 在終端上安裝防病毒系統,設定為實時更新病毒庫,並將病毒庫升級到最新版本。

 在終端上的用戶設定最小用戶許可權。

 在打開附屬檔案或通過網路接收檔案時,彈出安全警告或提示。

 在打開網路連結時,發出安全警告或提示。

 儘量避免下載未知的軟體或程式。

 使用強口令,以保護系統免受攻擊。

防範建議:

1. 禁用隨身碟的自動播放功能,防止插入隨身碟後就自動瀏覽資料夾導致中毒。另外隨身碟插入以後一定要使用防毒軟體右鍵掃描該隨身碟。最好禁止隨身碟的寫入功能。

2. 及時更新微軟作業系統的補丁,針對該病毒的防範要更新以下漏洞的補丁:MS08-067,MS10-046,MS10-061

3. 給本機設定一個足夠複雜的密碼,並儘量避免設定共享。如果一定要設定已分享檔案夾,儘量給該資料夾以唯讀許可權。

4. 及時更新防毒軟體到最新,並保持監控各項開啟。使用瑞星防毒軟體的用戶無需升級,其木馬行為防禦功能即可防範此類病毒的未知變種。

徹底修復

2010年12月15日凌晨,微軟發布修復的“Windows計畫任務本地許可權提升漏洞”(公告編號:MS10-092),是被“超級工廠”病毒利用的最後一個Windows0day漏洞。

Windows計畫任務本地許可權提升漏洞

MS10-092級別:重要

描述:Windows計畫任務服務存在一處許可權提升漏洞,攻擊者可以在已經運行惡意代碼的系統上將自身的許可權從低許可權提升到系統許可權,從而徹底控制系統。

相關詞條

相關搜尋

熱門詞條

聯絡我們