瑞星:Stuxnet病毒技術分析報告
2010-09-27 16:01:34目前的工控系統(tǒng)都包括一個可編程控制器,該控制器實際相當于一個小型的計算機系統(tǒng),通過配置該系統(tǒng),可以向控制器中寫入新的控制邏輯,從而完成不同的功能。該控制器可以通過專門的軟件連接到計算機,從計算機中可以編寫工控程序并下載到工控系統(tǒng)中運行。
工控軟件要進行控制和編程,需要通過西門子Step 7軟件來進行控制,該軟件要通過使用內(nèi)部的s7otbxdx.dll同設備進行通信,病毒通過替換此dll來截獲所有與設備間的訪問。病毒自身導出了所有原始s7dotbxdx.dll的功能,然后病毒將原始的s7otbxdx.dll重命名為s7otbxsx.dll,然后將自身命名為s7otbxdx.dll,病毒內(nèi)部再加載s7otbxsx.dll,這樣,如果是病毒感興趣的訪問,則病毒可以替換設備傳入或者傳出的結果,對于其他訪問,病毒直接重定向到原始的s7otbxdx.dll。
當向工控系統(tǒng)中寫入控制代碼時,病毒會修改寫入的控制代碼,從而感染工控系統(tǒng)。
實際上,在內(nèi)部,病毒一共hook了16個函數(shù),分別是:
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
通過對這些函數(shù)的掛鉤從而可以任意修改從計算機中寫入到工控軟件中的代碼。當向工控軟件正常寫入程序時,病毒會感染寫入的代碼,將自身寫入工控軟件代碼塊的頭部并修改工控軟件的控制結構,使其入口點指向病毒代碼。
另外病毒會監(jiān)控所有與工控軟件之間的讀寫通信,如果發(fā)現(xiàn)訪問到被感染的塊,則會修改返回結果隱藏塊中的病毒代碼,從而使用戶不會發(fā)現(xiàn)。
防范建議:
1.?禁用U盤的自動播放功能,防止插入U盤后就自動瀏覽文件夾導致中毒。另外U盤插入以后一定要使用殺毒軟件右鍵掃描該U盤。最好禁止U盤的寫入功能。
2.?及時更新微軟操作系統(tǒng)的補丁,針對該病毒的防范要更新以下漏洞的補丁:MS08-067,MS10-046,MS10-061
3.?給本機設置一個足夠復雜的密碼,并盡量避免設置共享。如果一定要設置共享文件夾,盡量給該文件夾以只讀權限。
4.?及時更新殺毒軟件到最新,并保持監(jiān)控各項開啟。使用瑞星殺毒軟件的用戶無需升級,其木馬行為防御功能即可防范此類病毒的未知變種。



