震網的秘密兄弟
震網病毒破壞伊朗核設施過程的復雜程度遠遠超乎所有人的預料。
從震網病毒發現到現在已經3年多了,作為第一個被曝光的網絡武器,時至今日依然讓軍事戰略家,信息安全專家,政治決策者和廣大的公眾對它感到迷惑不解。我們已經聽過它的故事了:它是怎樣攻擊納坦茲的伊朗核設施的,它是怎么隱藏的,它是如何違背了制造者的期望從納坦茲逃離的。但是這個故事的大部分都是不正確或者說是不完整的。
這是因為震網病毒其實不是一個,而是有兩個。大部分的注意力都被那個較簡單的攻擊程序吸引了,就是改變鈾濃縮離心機轉子速率的那個。另外一個被“遺忘”的程序復雜度和隱蔽性都高了一個量級。對那些懂得工業工業控制系統安全的人來說可以稱得上是一個夢魘。奇怪的是這個更復雜的攻擊程序是先出現的,較簡單的,被熟知的攻擊程序出現在一年以后,他們被發現的時間間隔很短。
伊朗的核計劃成為世界輿論的中心有助于我們理解利用程序破壞這個計劃的企圖。震網對伊朗核計劃的影響尚不清楚,因為沒有關于多少控制器被感染的消息傳出來。不過,經過深度的分析發現這次攻擊的目的在于實現攻擊,以及實現攻擊的過程。我花了3年時間來做分析,不僅僅是計算機代碼,包括被攻擊的核工廠環境的物理特點以及這個核工廠運作的流程。我發現的整個全貌,包括震網的第一個和不為人知的變種,會對這次攻擊帶來一次全新的認識。事實證明震網遠比公眾認知的網絡武器危險的多。
2007年,有人在VirusTotal上提交了一個程序,后來證明這是第一個震網病毒變種,至少是我們目前已知的第一個。當然,這是在5年之后,掌握了震網的第二個變種的相關知識才意識到的。要是沒有后來較簡單的版本,可能這個最初的震網到今天還躺在反病毒專家的檔案庫里。今天,我們已經知道這個程序包含的載體可以嚴重干擾納坦茲的鈾濃縮工廠里離心機的保護系統。
后來的震網,被人們熟知的那個,試圖讓離心機轉子轉速過快從而讓轉子破碎。這個最初的震網卻使用了不同的策略。它通過破壞級聯離心機的保護系統讓納坦茲的離心機在壓力過大的環境下運行。保護系統無處不在,因為任何反常的運行都可能導致設備損壞,危害操作員的健康和周圍的環境。在納坦茲我們看到了一個獨一無二的保護系統,它維持著那些老式的不可靠的IR-1型的鈾濃縮離心機運行。這個保護系統是伊朗核計劃的重要組成部分,沒有這個系統,那些古老的IR-1就沒什么用了。
IR-1離心機是伊朗鈾濃縮工作的支柱。它是上個世紀60年代末70年代初歐洲設計的,后來設計被巴基斯坦的核販子A.Q.Khan偷走。IR-1是全金屬的設計,這樣才能運行可靠。當然前提是零件的制造精密度高,重要的配件像頻率轉換器和恒轉矩驅動器質量也高。但是伊朗從來沒想過高標準的實現這個設計。所以在納坦茲不得不降低離心機的運行壓力。較低的運行壓力意味著對轉子受到的機械壓力也小,這樣損壞就會降低。同樣產出和效率也會降低。最好的情況下,這些IR-1也就只有設計的一半產能。
這些低效不穩定的IR-1也存在優勢,那就是伊朗可以大規模制造。伊朗通過數量來提高產量,接受在生產過程中存在一定的離心機損壞。因為制造的離心機比損壞的多多了。不過要讓這么多離心機工作,伊朗也下了一番功夫。最初,這些離心機是非常敏感的工業流程,不允許任何的微小故障。伊朗構建了一個級聯的保護系統,使得即使一個離心機破碎了,整個濃縮過程依然可以繼續。
從離心機的層面上來說,這個保護系統使用了3個關閉閥,每個離心機上都有安裝。關閉這些閥門,出問題的離心機就從整個系統上分離出來。維護工程師就可以在整個流程依然繼續的情況下替換這些有問題的離心機。
上圖是在2008年,當時的總統馬哈茂德·艾哈邁迪-內賈德在納坦茲控制室觀看SCADA的場景。面對攝影師的屏幕顯示,兩個離心機是孤立的,提示存在問題,但這并不影響整個流程繼續。(紅色高亮顯示有問題的離心機)。
但是這個隔離閥的解決方式也帶了很多問題。因為離心機非常不可靠,經常會被關掉。處于同一梯隊的離心機可能同時損壞,維護工程師來不及在第一時間替換。一旦這種情況發生,鈾濃縮過程中非常敏感的運行壓力就會升高。壓力一升高就會導致各種各樣的問題。
伊朗人民非常有創造力的解決了這個問題。每一個濃縮階段,都安裝了一個排氣閥門。有一個傳感器檢測壓力,一旦超過閾值,閥門自動打開,降低壓力。
這個系統可以保證納坦茲的離心機運轉。但是這也讓它陷入了可能被遠程網絡攻擊的泥潭。有時候會讓人懷疑設計這個系統的人是不是頭腦混亂。
納坦茲的級聯保護系統是基于西門子S7-417的工業控制器的。它控制閥門操作,六個層級的壓力傳感器和6個164臺離心機的機組。控制器可以理解成直接連接到設備的嵌入式電腦系統。震網設計成可以感染這些控制器,通過某種方式獲取控制權。這個場景用戶幾乎無法想象,也沒有在任何工控系統的會議上討論過。
感染了震網的控制器就變成了一個傀儡。正常的控制邏輯看到的都是震網像讓他看到的。在攻擊序列執行之前(大約每個月一次攻擊),震網會讓控制室的工程師看到真實的數據,但是一旦攻擊開始就不一樣了。
這個震網變種做的第一步是隱藏它的活動。震網記錄了21秒級聯保護系統的傳感器正常情況下的數據。然后在攻擊過程中不斷循環重放這21秒的數據。控制室里的監控端看上去一切都很正常。
然后震網就開始了它的活動。它關閉了前兩級和最后兩級濃縮步驟的閥門。阻止了受影響的離心機內的氣體流出,反過來導致其余離心機的壓力升高。壓力的增加將導致更多的六氟化鈾進入離心機,給轉子更高的機械應力。最終,壓力可能會導致氣體六氟化鈾固化,從而嚴重損害離心機。
攻擊者一直在監控離心機真正的工作狀態,這種攻擊一直持續到攻擊者覺得足夠了。如果他們是為了毀滅性的破壞,那么很簡單。在納坦茲的案例中,一個控制器控制的氣體固化可以輕易損壞上百臺離心機。聽起來這個目標非常有價值,但它也會暴露攻擊者。伊朗的工程師在后期的分析中可以輕易的找到事故發生的原因。這次攻擊的實現過程中,攻擊者密切監視運行的壓力和離心機的狀態表明,他們小心翼翼的避免毀滅性的損壞。增大運行壓力的方式看起來更像是為了讓轉子壽命更短一些。
不管怎樣,攻擊者非常謹慎的實施了這次攻擊。攻擊的代碼設計如此精細,因為細小的改變或者配置錯誤都可能帶來很大的影響,甚至導致程序崩潰,一旦崩潰,就會被伊朗的工程師發現從而暴露行蹤。
這次過壓的攻擊結果也是未知的。不管是什么,在2009年的時候,攻擊者決定嘗試一些新的東西。
[譯自foreignpolicy]