原創:明昊觀察
連載1:美國超級病毒破壞伊朗核工廠 效果比全炸毀還好
2009年的短時間內,震網病毒就感染了伊朗國內外的10多萬臺計算機。國際原子能機構(IAEA)的監測表明,伊朗位于納坦茲的鈾濃縮工廠出現了大面積的離心機損壞,產量直線下降。震網病毒是怎么對工廠進行破壞的?又是怎樣被外界發現的?我們接著說。
偽裝和破壞:你從未見過如此精巧的病毒
前面說過,震網病毒的目標是西門子的SIMATIC Step 7和SIMATIC WINCC兩個軟件。Step 7是用來為其S7系列PLC編寫、編譯指令和代碼用的工具軟件。而且必須配合Simatic WinCC軟件使用。Simatic WinCC是一種可視化工具,PLC會向其發送自身運行及數據的報告。工程師可以通過Simatic WinCC來監視其所控制的PLC運行狀況。
在震網病毒打包的大量dll文件中,具有和Step 7軟件中同名dll文件的全部功能,并增加了一些讀取和寫入的指令。當系統對目標PLC執行這種操作的時候,就對其進行劫持。這意味著震網病毒成了“史上第一個”針對工業控制系統的后門。震網病毒將原本的s7otbxdx.dll文件改名為s7otbxsx.dll,然后把假冒的s7otbxdx.dll文件放進去。這樣,當系統調用這個文件執行任務的時候,病毒文件就生效了。
震網病毒震網病毒針對S7-315型PLC的代碼有15段。在攻擊之前,會確認PLC系統所控制的是芬蘭產的某型變頻器或者它的伊朗山寨版。這種變頻器的工作頻率在807hz至1210hz之間,屬于美國核管委限制出口的產品。震網病毒要找的目標就是一個安裝有186個這種變頻器的工廠。

一臺S7-315控制6X31共計186個變頻器的控制機構
每當操縱員向PLC發送指令時,震網病毒都會把自己的惡意指令跟著一起發送出去。震網病毒并不會替換命令代碼,而是在正常的代碼前面增加一段。為確保惡意指令的執行,病毒還PLC上嵌入代碼廢掉了PLC的自動報警系統,防止安全系統發現離心機轉速異常時將其離心機關機停車。同時病毒為防被發現,會在工程師檢查PLC代碼時反饋給他們“清潔版”的代碼。如果工程師重新發送指令,病毒就會重新對指令代碼進行感染。
為了進行偽裝,震網病毒會在PLC上潛伏并記錄下正常的運行數據。當惡意代碼開始運行之后,就將之前記錄的正常數據發送給負責監控的Simatic WinCC。所以當值班工程師檢查運行情況的時候,他們看到的是“運行正常”。于是,破壞行動就這樣開始了。
在13天的潛伏后,震網病毒通過變頻器把離心機的旋轉頻率提升至1410赫茲,并持續15分鐘;然后降低至正常范圍內的1064赫茲,持續26天。在這26天當中,震網會將所需信息全部收集完畢。之后它會讓頻率在2赫茲的水平上持續50分鐘,然后再恢復到1064赫茲。再過26天,攻擊會再重復一遍。
而針對S7-417型PLC的攻擊代碼很奇怪,共有40段,他的目標系統是一個由每組164臺,共6組合計984臺離心機組成的運行網絡,并破壞其中的110臺離心機。納坦茲的每臺離心機上有3個控制氣體出入的閥門,還有其他的聯機機組的輔助閥門。如果按照震網病毒的控制模式來開關閥門,這些離心機也將損壞。
然而這段攻擊代碼上有一個故意留下的錯誤導致其無法執行。或許其他未知版本的震網病毒會通過升級來將攻擊動作重新激活。
這樣一來,伊朗人將陷入莫名其妙的工廠事故中去,當他們檢查設備的時候又只能發現他們運轉正常。 那么,隱匿如此之深的震網病毒是如何被發現的呢?
國際馬拉松:病毒的發現和破解
根據國際原子能機構(IAEA)的核查報告,2009年11月,納坦茲大概有8700臺離心機,根據正常的10%損壞率,一年大約只需要替換800臺。但IAEA的官員發現,在2009年12月到2010年1月短短兩個月內,離心機的替換率高得不正常,大約有2000臺離心機被替換。而鈾濃縮的產量也同時驟減。某車間的18個機組中甚至有11個出現了故障。

病毒的傳播和破壞
2010年6月,白俄羅斯的一家小殺毒軟件公司Ada的伊朗客戶出現了電腦反復重啟的毛病,因此他們對客戶電腦進行了掃描,并發現了可疑的驅動程序文件(盜用了臺灣瑞昱公司的數字簽名)。這個驅動正是用于隱藏那些在u盤中的lnk文件的。
這個病毒在中東大量發現并快速傳播,于是他們將這個發現公布在國際安全論壇上。微軟開始針對這兩個漏洞制作補丁。
7月17日,捷克的ESET安全公司則發現了另個一帶合法數字簽名(臺灣智微)的惡意驅動,它和震網病毒所用的非常相似。這讓人們懷疑是制作者對病毒進行了升級,他們要搶在病毒被破解前不惜代價進行擴散并生效。
根據病毒文件內的感染標記,震網病毒從2009年6月就出現了,病毒的一個編程錯誤使其擴散到了Windows 95和98等不支持的操作系統上,導致電腦頻繁藍屏死機,從而引起了懷疑被Ada公司揪了出來。

賽門鐵克公司
著名殺軟公司賽門鐵克的病毒分析師開始接力對震網病毒進行分析。他們破解了震網病毒在計算機上隱匿自己的復雜方法,并為其精巧的設計感到震驚。在震網病毒的代碼中,他們發現了SIMATIC Step 7和SIMATIC WINCC軟件的說明文字。這讓他們大致明白震網病毒并不是常見的電腦病毒,而是攻擊生產設施用的特種病毒。
震網病毒在傳播的過程中,會記錄下它感染的每一臺計算機的ip地址、域名和感染事件,并將其發送給特定的服務器。賽門鐵克攔截了這些日志的流向,將它們導向自己的“槽洞”并加以分析。他們發現病毒的主要感染對象都在伊朗境內,多達2萬臺,其他國家最多也就幾百臺感染。而其傳播的源頭則是伊朗的5家公司。其中一家Kala公司正是為鈾濃縮項目打幌子的卡拉揚電力公司。
8月17日,賽門鐵克公開了他們的研究結果:震網并不是什么間諜工具,而是專門用來實施物理破壞的數字武器。但是他們很謹慎,沒有發布進一步的聲明,沒說震網病毒到底對PLC做了些什么。
消息發布5天之后,并沒有在媒體上引起任何波瀾。然而震網病毒發往槽流的流量突然消失。看來,一定是伊朗內部有人看到了他們發布的消息。為了防止攻擊者或其他人繼續通過遠程方式感染計算機并造成損害,伊朗方面終于下令,切斷了國內所有染毒計算機與指揮控制服務器之間的連接。

美國國土安全部可不光干那些監視的活兒
然而,與此高度相關的西門子公司、德國國家計算機應急響應團隊和美國國土安全部的工業控制系統網絡應急響應團隊(ICS-CERT)保持了沉默。
這讓民間研究者非常憤怒,德國一個研究工業控制系統安全的3人小公司覺得賽門鐵克專注于PC病毒,對于PLC并不熟悉所以沒有得出進一步的結果。而他們的大客戶正好是西門子公司,于是他們主動開始繼續研究震網病毒。他們確定了震網病毒的攻擊目標:西門子生產的兩個型號的PLC。因為病毒的惡意配置清單非常獨特,所以只會感染與其配置相同的PLC,也就是某個特定使用相同配置的生產工廠。而他們從自己的消息渠道了解到布什爾核電廠所采用的PLC型號正是S7-417。他們將這些發現公開給多家頂級媒體,然而并沒有人回應他們。
賽門鐵克的病毒專家被震網病毒的“載荷”難住了。因為PLC的使用的編程語言和計算機上的C語言完全不同,是一種使用STL語言編碼編譯的PL7匯編語言,然后再匯編成PLC可以執行的機器語言。經過費事的反編譯,他們發現震網病毒注入PLC幾千字節的代碼瞬間膨脹為針對S7-315的4000行指令和針對S7-417的13000行指令。太復雜了!
賽門鐵克在2010年11月12日公布了震網病毒針對S7-315型PLC的攻擊方式。指出其目標僅限于特定型號的變頻器,攻擊范圍非常有限。4天后,伊朗全面暫停了鈾濃縮活動但并沒有說明原因。當然,這其中的因果大家都看得非常清楚了。而此后的幾天,伊朗的兩名核專家同時遭遇謀殺,一死一傷。(中子運輸專家馬吉德·沙利亞里死亡,同位素分離專家法雷多·艾巴西輕傷)
這兩起謀殺給民間病毒研究人員帶來了極大的震撼。他們對于病毒制作者的模糊認識迅速清醒過來,他們已經陷入了巨大的危機:國家之間的較量不是民間力量能隨意插手的。
研究核擴散問題的頂尖智庫科學與國際安全研究所(ISIS)也對這個病毒感興趣。他們聯絡了賽門鐵克的研究人員并詳細了解了病毒的行為。根據ISIS所掌握的數據,震網病毒中設置的頻率值1064hz恰好是伊朗IR-1離心機的最佳工作頻率,而且是IR-1離心機所獨有的。1410hz也恰好是IR-1離心機可承受的轉速上限,再快點就會直接損毀。另一個針對S7-417型PLC所訂的164臺離心機規模設置,也恰好是伊朗鈾濃縮工廠的機組構成數量,它的攻擊目標就是排氣閥門。
于是,震網病毒的攻擊目標,總算是實錘了!那么,這場史無前例的網絡大戰中,美國的政府部門到底扮演了什么樣的角色?震網病毒將給我們的社會帶來怎樣的影響?我們下回繼續。
|