史上首次網絡戰爭(上)用病毒破壞伊朗鈾濃縮廠 比炸燬效果還要好

史上首次網絡戰爭(上)用病毒破壞伊朗鈾濃縮廠 比炸燬效果還要好

伊朗位於納茲坦的濃縮鈾工廠

5月初,美國總統特朗普宣佈退出伊核協議,在世界範圍內引起軒然大波。然而回望當初,作為擁有初級核工業家底也不缺資源的伊朗,當年為什麼會放棄提煉濃縮鈾,同意伊核協議?是因為他們突然想開了要維護世界和平還是他們覺得不需要核武器也能安心生存?沒人知道個所以然。但隨著2010年一個計算機病毒的發現,我們才能揭開這背後的奧秘。

伊朗核危機再起波瀾

2006年,內賈德總統宣佈啟動核計劃,伊朗核危機重新爆發。

伊朗濃縮鈾工廠所使用的離心機是通過走私獲得的一款法國1960年代末的產品。伊朗以此為基礎製造了自己的IR-1離心機,但由於加工精度不足,只能以比原版離心機低的速度運轉,也不能承受太大的氣體壓力,生產效率只有原版的一半,他還很容易壞,每年都得更換10%的機器。好在還算便宜,伊朗人可以大規模的生產這種離心機。

史上首次網絡戰爭(上)用病毒破壞伊朗鈾濃縮廠 比炸燬效果還要好

挨個串聯起來的離心機,其外殼材料為鋁

由於離心機需要多臺串聯為一組工作,而且生產過程中不能出一點岔子,伊朗人設計了一些安全機制來保證這些不靠譜的離心機就算出問題了也不影響生產。首先是給每個離心機安裝隔離閥門,可以把出問題的離心機隔離出來更換,但是這將導致整組的離心機氣壓升高而更容易導致損壞。所以他們還給每一組離心機設置一個排氣閥以避免氣壓過高。這套安全系統由西門子公司提供的S7系列工業控制器操縱。

整座工廠建設完成後完全隔絕外網運行。然而系統運行了沒多久,就出現了離心機頻繁損壞的問題。期初伊朗人並不在意:本來這些產品質量就不怎麼樣。但是漸漸地發現問題嚴重起來了,監控畫面上的各項參數都運行良好,但是離心機的損壞率就是居高不下,鈾濃縮生產進度僅為設計值的一半左右。到底哪裡出問題了?

史上首次網絡戰爭(上)用病毒破壞伊朗鈾濃縮廠 比炸燬效果還要好

內賈德視察鈾濃縮工廠的照片,從眾人的表情看來情況很不樂觀。

面對危機 美國想出了新招式

2006年的小布什政府深陷反恐戰爭的泥潭。阿富汗和伊拉克鬧得焦頭爛額,伊朗這時候宣佈恢復濃縮鈾無疑是火上澆油。以色列第一個站出來反對,飽受生存困擾的猶太人不能容忍一個敵對的國家掌握核武器,否則他們將被輕易從地圖上抹去。

首選的行動方式當然是像當年的伊拉克一樣,直接炸燬對方的核設施。然而美國人不願意被以色列拖入新的戰爭泥潭,否決了武力打擊的計劃。而經濟制裁對於伊朗而言也早就是蝨子多了不怕癢,毫無壓力。想要破壞伊朗的核設施,只能另想它法。

史上首次網絡戰爭(上)用病毒破壞伊朗鈾濃縮廠 比炸燬效果還要好

1981年6月7日,色列列空襲伊拉克核反應堆

這時候中情局建議小布什給伊朗的核工廠弄點病毒,給他們製造些麻煩,拖延時間以利於解決問題,並拉上猶太人一起幹,讓他們打消空襲的念頭。以色列聽說很上心,立馬送來摩薩德搞到的伊朗核工廠設計圖!於是計劃大改,從製造點小麻煩升級成干擾整個工廠的運作。

美國和以色列的情報安全部門按圖紙還原了伊朗核工廠進行模擬攻擊,電腦專家、核物理專家和工程專家積極配合,完成了病毒武器的開發。

最強病毒騰空出世

這個病毒在日後被稱作“STUXNET”震網病毒,病毒一口氣使用了4個零日漏洞(就是從未公開,操作系統提供商所不知道也無法防範的漏洞)以確保病毒植入系統。在黑客市場,這種類型的漏洞一個就價值數十萬美元,通常一次只會使用一個。病毒研究人員表示,震網病毒的開發者只能是國家級的隊伍,擁有極其雄厚的資金和人才實力。

震網病毒到底有多強?他的大小超過500k,而通常的惡意代碼文件一般不超過幾十k,震網病毒比以往的病毒要複雜得多,它將30多個dll和其他組件層層打包加密,還包括一個超過400個設置項目的配置文件。震網病毒在被發現之前成功拖延了伊朗鈾濃縮計劃長達兩年之久,比直接摧毀整個工廠產生的拖延效果還要好。而且伊朗人在這期間完全搞不明白是怎麼一回事。

讓我們來看看這個病毒是如何工作和被發現的。看看人類歷史上首次國家之間的“黑客戰爭”是怎樣進行的。

不惜工本的入侵方式

通常而言,病毒分為兩個部分:導彈(missile portion)和載荷(payload)。前者負責病毒的傳播和潛伏,後者則負責竊取和破壞活動。

先說“導彈”部分。由於工廠內部控制網絡和外界是物理隔離的,只能通過U盤來傳播,而伊朗濃縮鈾工廠又不是那麼好混進去的,最好是讓伊朗人自己把病毒帶進去。該怎麼辦呢?

和通常利用Autorun(U盤自動運行)執行代碼的普通U盤病毒不同,震網病毒使用的是4個惡意.lnk文件構成的漏洞利用程序來傳播(每一個文件對應不同版本的操作系統)。

在Windows系統中,.lnk文件負責渲染文件圖標,當我們插入U盤時系統就會自動掃描其中的.lnk文件以顯示U盤中的各種文件。震網病毒利用了這一點,在這時候秘密的將惡意文件送入計算機。從而繞過了大家都熟知的“關掉autorun防病毒”操作。此外他還嵌入系統,使殺毒軟件看不到病毒的文件名。如果殺軟要掃描U盤,木馬就修改掃描命令並返回一個正常的掃描結果。

除了利用.lnk漏洞潛入系統之外(漏洞1),震網病毒還利用Windows鍵盤文件中的漏洞非法獲得System權限(漏洞2),利用Windows打印緩衝功能漏洞,實現病毒在共享打印機的各臺計算機之間的傳播(漏洞3)。

史上首次網絡戰爭(上)用病毒破壞伊朗鈾濃縮廠 比炸燬效果還要好

S7-300系列PLC

震網病毒的目標是西門子的S7-315和S7-417這兩個型號的PLC(可編程邏輯控制器,廣泛用於控制工業生產和基礎設施配置)。於是它在感染計算機之後就開始尋找電腦內是否安裝有西門子SIMATIC Step 7或SIMATIC WINCC軟件,如果病毒沒有找到這些軟件時就什麼都不做。

找到目標後,震網病毒利用Step 7軟件中的漏洞突破後臺權限並感染數據庫,於是所有使用這個軟件連接數據庫的工程師所使用的電腦和U盤都將被感染。加上之前提到過的3個,震網病毒一口氣使用了4個零日漏洞,說明設計者一方面手中握有大量尚未公開的系統漏洞,一方面為了震網病毒高速大範圍傳播完全不惜工本,這不是民間黑客可以做到的。

這樣一來,通過利用Windows系統和西門子工業控制數據庫的漏洞,震網病毒將所有可能接觸到的相關係統的工程人員和他們的U盤電腦都變成了運送者。只需要感染一臺電腦或者網絡,比如說西門子公司或者他們PLC客戶或者別的相關人員所用的機器,就可以讓病毒進入伊朗的鈾濃縮工廠。

史上首次網絡戰爭(上)用病毒破壞伊朗鈾濃縮廠 比炸燬效果還要好

震網病毒的版本升級

震網除了利用零日漏洞進行傳播之外,還有8種不同的感染方法。並且會自動尋找網絡中的新版本進行更新,不需要連接外網,只要內網中有一臺機器插入了帶新版本的U盤,全內網計算機上的震網病毒都會自動更新。

巧妙的躲避系統和殺軟的監測

系統在安裝沒有安全證書的程序時會彈窗提示。那麼病毒進入系統後,是如何在沒有任何提示的情況下完成驅動安裝的呢?而震網病毒擁有瑞昱公司(常見的聲卡網卡供應商)的合法簽名。他們驅動的數字簽名處於微軟系統的白名單之列。微軟以這個偽裝的驅動文件名mrxnet.sys將這個病毒命名為Stuxnet,即“震網”。此外,瑞昱公司旁邊的智微科技(JMicron Technology USB和SATA驅動和橋接芯片供應商)的數字簽名也被盜用了。以至於反病毒研究者一開始還以為這個病毒是大陸做的。

震網病毒進入計算機後的21天內,開始感染插入計算機的所有USB存儲設備,並運行其主文件,將巨大的dll文件解開。

一般而言,操作系統打開、讀取或者保存文件的代碼都是保存在系統.dll文件(動態鏈接庫)中的,這也是殺毒軟件經常掃描的地方。而震網病毒則是將惡意代碼直接調入內存。當然,一些歷害的病毒也會這麼做,只不過他們還會讓系統加載硬盤上其他文件中的代碼,這也會被殺毒軟件發現。

然而震網病毒更加高明:他把所需的代碼存放在虛擬文件中,還重寫了系統的API(應用程序調用系統函數的接口)將自己藏了進去,每當系統有程序需要訪問這些API時就會將震網的代碼調入內存。如果殺毒軟件檢查這些API的時候,卻只能看到“空文件”。震網病毒在運行時,還會把自己的代碼替換進另一個正在運行的進程A裡,再將A被換下來代碼放到進程B去。

由於震網病毒只在內存中運行,並同時判斷CPU負載情況,只有在輕載時他才運行以避免拖累系統速度而被發現異常。計算機關機之後這些代碼就會消失,下次開機時病毒重新啟動。

那麼,震網病毒是怎麼進行破壞的?又是怎麼被發現的?我們下期接著說。


分享到:


相關文章: