簡介
Stuxnet又名“震網”,是針對微軟件系統以及西門子工業系統的最新病毒,到2013年的今天已感染多個國家及地區的工業系統和個人用戶,此病毒可通過網絡傳播,與以往病毒不同,其代碼非常精密。
造成伊朗核電站推遲發電的全球首個“超級工廠病毒”Stuxnet,2010-09-25侵入我國。瑞星昨日發布的預警顯示,國内已有近500萬網民及多個行業的領軍企業遭Stuxnet蠕蟲病毒攻擊,而且由于安全制度上的缺失,該病毒還存在很高的大規模傳播風險。
據瑞星安全專家介紹,Stuxnet蠕蟲病毒是世界上首個專門針對工業控制系統編寫的破壞性病毒,能夠利用對windows系統和西門子SIMATICWinCC系統的7個漏洞進行攻擊。特别是針對西門子公司的SIMATICWinCC監控與數據采集(SCADA)系統進行攻擊,由于該系統在我國的多個重要行業應用廣泛,被用來進行鋼鐵、電力、能源、化工等重要行業的人機交互與監控。
Stuxnet及其變種是一種利用最新的WindowsShell漏洞傳播惡意文件的蠕蟲。造成這個漏洞的原因是Windows錯誤地分析快捷方式,當用戶單擊特制快捷方式的顯示圖标時可能執行惡意代碼(文件帶有、LNK擴展名)。
技術分析報告
病毒名稱
Worm、Win32、Stuxnet
病毒概述
這是一個可以通過微軟MS10-046漏洞(lnk文件漏洞),MS10-061(打印服務漏洞),MS08-067等多種漏洞傳播的惡性蠕蟲病毒。另外該病毒還可以專門針對西門子的SCADA軟件進行特定攻擊,以獲取其需要的信息。
傳播方式
1、通過MS10-046漏洞傳播
病毒運行後會拷貝自身到移動存儲上并命名為~WTR數字、Tmp(動态庫)和一個注入下列文件名的lnk文件組成:
CopyofShortCutto、lnk
CopyofCopyofShortCutto、lnk
CopyofCopyofCopyofShortCutto、lnk…
在存在MS10-046漏洞的機器上,隻需浏覽這些lnk,Explorer、exe就會将~WTR數字、Tmp加載起來。
2、通過MS10-061漏洞傳播
該病毒還會利用打印機或打印機共享漏洞MS10-061漏洞傳播。病毒會将自身拷貝到存在該漏洞的遠程機器的%system%目錄下,并利用WMI将其執行起來。
3、通過共享文件夾傳播
該病毒還會試圖将自身拷貝到局域網共享文件夾下,并命名為類似DEFRAG(随機數字)、tmp的名稱。
4、通過MS08-067漏洞傳播
該病毒還會利用MS08-067漏洞傳播。
主要功能以及大緻流程
當用戶浏覽可移動存儲上的CopyofShortCutto、lnk文件後,Explorer、exe會加載~WTR數字、Tmp,然後病毒會加載自身的另一個名為~WTR數字、Tmp的動态庫。在加載該惡意dll時,病毒并沒有通過普通的LoadLibrary函數加載,為了隐藏自身模塊,同時為了達到不釋放文件來加載病毒模塊的目的,它采取了一個特殊方式。
病毒會首先hookntdll的一些導出函數,然後,它會構造一個特殊的并不存在的文件名如Kernel32、dll、aslr,然後以此為參數調用LoadLibrary,正常情況下,該調用會失敗因為該文件并不存在,但是因為病毒已經提前Hook了Ntdll,hook函數會監控對此類特殊文件名的打開操作。如果發現是自身構造的虛假文件名,則會重定向到其他位置,比如另一個文件或者通常情況下是一塊已經被病毒解密過的内存,這樣,外界看到的是一個常見的模塊名比如Kernel32,而實際上是病毒模塊。這樣病毒就達到了隐藏自身的目的。
之後病毒會運行lsass、exe并修改程序的内存,然後釋放如下文件:
%System%driversmrxcls、sys
%System%driversmrxnet、sys
%Windir%infoem6C、PNF
%Windir%infoem7A、PNF
%Windir%infmdmcpq3、PNF
%Windir%infmdmeric3、PNF
并在可移動存儲上創建~WTR數字、Tmp和CopyofShortCutto、lnk等文件。
Mrxcls、sys和Mrxnet、sys具有合法的數字簽名。
由于調用了lsass、exe這個系統進程做壞事,因此在中毒機器内會看到至少3個lsass、exe進程。(有兩個是病毒啟動的)
然後病毒會将自身注入到services、exe,在services中,病毒會通過查找SOFTWARESIEMENSSTEP7,SOFTWARESIEMENSWinCCSetup等注冊表項檢測西門子軟件。病毒還能禁用WindowsDefender等殺毒軟件的保護。
病毒具有後門功能:病毒會通過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)的攻擊功能
病毒會利用SieMensSimaticWincc的默認密碼安全繞過漏洞利用默認的用戶名和密碼并利用已經編寫好的SQL語句讀取數據庫數據。漏洞詳情:
嘗試從數據庫中讀取特定數據:
GracScc_tag、sav
GracScc_alg、sav
GracSdb_log、sav
GracScc_tlg7、sav
*、S7P
*、MCP
*、LDF
目前的工控系統都包括一個可編程控制器,該控制器實際相當于一個小型的計算機系統,通過配置該系統,可以向控制器中寫入新的控制邏輯,從而完成不同的功能。該控制器可以通過專門的軟件連接到計算機,從計算機中可以編寫工控程序并下載到工控系統中運行。
工控軟件要進行控制和編程,需要通過西門子Step7軟件來進行控制,該軟件要通過使用内部的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、禁用U盤的自動播放功能,防止插入U盤後就自動浏覽文件夾導緻中毒。另外U盤插入以後一定要使用殺毒軟件右鍵掃描該U盤。最好禁止U盤的寫入功能。
2、及時更新微軟操作系統的補丁,針對該病毒的防範要更新以下漏洞的補丁:MS08-067,MS10-046,MS10-061
3、給本機設置一個足夠複雜的密碼,并盡量避免設置共享。如果一定要設置共享文件夾,盡量給該文件夾以隻讀權限。
4、及時更新殺毒軟件到最新,并保持監控各項開啟。使用瑞星殺毒軟件的用戶無需升級,其木馬行為防禦功能即可防範此類病毒的未知變種。
特點
超級工廠病毒最大的特點為:打破惡意程序隻攻擊用戶電腦的“慣例”,将攻擊目标偏向于用戶的生活與生存環境上來。一旦用戶的電腦不幸遭受“超級工廠病毒”-Stuxnet入侵,不但會使用戶電腦變成任由其擺布的“肉雞”,嚴重影響到用戶的日常生活,而且還會引發“多米諾骨牌效應”,導緻與受害用戶聯網的人群遭受同樣攻擊。
感染原理
如何選擇需要感染的PLC
Stuxnet會根據目标系統的特點,使用不同的代碼來感染PLC。
一個感染的序列包括了許多PLC模塊(代碼模塊和數據模塊),用以注入PLC來改變目标PLC的行為。這個威脅包括了三個感染序列。其中兩個非常相似,功能也相同,我們将其命名為序列A和B。第三個序列我們命名為序列C。Stuxnet通過驗證“指紋”來判斷系統是否為計劃攻擊的目标。它會檢查:
PLC種類/家族:隻有CPU6ES7-417和6ES7-315-2會被感染。系統數據模塊:SDB會被解析;根據他們包含的數據,感染進程會選擇A,B或其它感染方式開始行動。當解析SDB時,代碼會搜索這兩個值是否存在--7050hand9500h;然後根據這兩個數值的出現次數,選擇序列A或B中的一種來感染PLC。代碼還會在SDB模塊的50h子集中搜索字節序2CCB0001,這個字節序反映了通信處理器CP342-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):
StuxnetPLCrootkit代碼全部藏身于假冒的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的總體情況,請務必關注我們即将于VirusBulletin會議中發布的白皮書。
專殺工具
9月28日,AVG率先向用戶發布安全警告,“超級工廠病毒”(Stuxnet)在國内進入爆發期,目前,已有600萬個人用戶及近千企業用戶遭到此病毒攻擊。針對“超級工廠病毒”肆虐的這種情況,AVG研發團隊緊急研發出了專殺工具,廣大用戶可從AVG官方網站免費下載使用該工具。
傳播方式
據介紹,該病毒主要通過U盤和局域網進行傳播。
《基督教科學箴言報》報道,這種新病毒采取了多種先進技術,因此具有極強的隐身和破壞力。隻要電腦操作員将被病毒感染的U盤插入USB接口,這種病毒就會在神不知鬼不覺的情況下(不會有任何其他操作要求或者提示出現)取得一些工業用電腦系統的控制權。
與傳統的電腦病毒相比,“震網”病毒不會通過竊取個人隐私信息牟利。由于它的打擊對象是全球各地的重要目标,且無需借助網絡連接進行傳播,因此被一些專家定性為全球首個投入實戰舞台的“網絡武器”。一旦這種軟件流入黑市出售,其後果将不堪設想。
計算機安全專家在對軟件進行反編譯後發現,“震網”病毒結構非常複雜,因此它應該是一個“受國家資助高級團隊研發的結晶”。據悉,這種病毒可以破壞世界各國的化工、發電和電力傳輸企業所使用的核心生産控制電腦軟件,并且代替其對工廠其他電腦“發号施令”。
人們确信,在去年開發成功的“震網”病毒可承擔“網絡導彈”的重任。它不再以刺探情報為己任,而是能根據指令,分辨和破壞某些“極具争議”的要害目标。微軟公司的研究發現,“震網”感染的重災區集中在伊朗境内。美國和以色列因此被懷疑是“震網”的發明人。
安全建議
安全防護建議
由于Stuxnet蠕蟲病毒是首個針對工業控制系統編寫的破壞性病毒,對大型工業、企業用戶存在一定的風險,所以,冠群金辰公司病毒防護專家給企業用戶提出如下安全防護建議,以提高企業抵禦未知安全風險的能力:
1、在終端設備上開啟防火牆功能。
2、為終端設備上所有的應用系統安裝最新的補丁程序。
3、在終端上安裝防病毒系統,設置為實時更新病毒庫,并将病毒庫升級到最新版本。
4、在終端上的用戶設置最小用戶權限。
5、在打開附件或通過網絡接收文件時,彈出安全警告或提示。
6、在打開網絡鍊接時,發出安全警告或提示。
7、盡量避免下載未知的軟件或程序。
8、使用強口令,以保護系統免受攻擊。
防範建議
1、禁用U盤的自動播放功能,防止插入U盤後就自動浏覽文件夾導緻中毒。另外U盤插入以後一定要使用殺毒軟件右鍵掃描該U盤。最好禁止U盤的寫入功能。
2、及時更新微軟操作系統的補丁,針對該病毒的防範要更新以下漏洞的補丁:MS08-067,MS10-046,MS10-061
3、給本機設置一個足夠複雜的密碼,并盡量避免設置共享。如果一定要設置共享文件夾,盡量給該文件夾以隻讀權限。
4、及時更新殺毒軟件到最新,并保持監控各項開啟。使用瑞星殺毒軟件的用戶無需升級,其木馬行為防禦功能即可防範此類病毒的未知變種。
徹底修複
2010年12月15日淩晨,微軟發布修複的“Windows計劃任務本地權限提升漏洞”(公告編号:MS10-092),是被“超級工廠”病毒利用的最後一個Windows0day漏洞。
Windows計劃任務本地權限提升漏洞
MS10-092級别:重要
描述:Windows計劃任務服務存在一處權限提升漏洞,攻擊者可以在已經運行惡意代碼的系統上将自身的權限從低權限提升到系統權限,從而徹底控制系統。