目 錄
一、工控安全現狀
二、工控類攻擊事件匯總
三、十大工控網絡武器分析
3.1 Stuxnet:工控網絡攻擊的裡程碑
3.2 Duqu-Stuxnet之子
3.3 Flame
3.4 Havex
3.5 Dragonfly2.0
3.6 BlackEnergy
3.7 Industroyer
3.8 GreyEnergy
3.9 VPNFilter
3.10 Triton
四、結語
工控即工業控制系統是水力、電力、石油化工、製造、航空航天、交通運輸、軍工等國家命脈行業的重要基礎設施。這些重要的系統一旦受到攻擊,便會嚴重威脅到居民生活甚至是國家安全。而傳統的工控系統安全偏向於功能安全、設備硬體安全屬於生產事故或者故障範濤,卻極少關注信息安全,由於這些工業控制系統和設備大都比較老舊,生產、製造和使用的過程也較為封閉,使得信息安全問題(包含軟體、固件、網絡等安全問題)暴露的機率極低。更嚴重的是即使發現信息安全問題或者黑客攻擊,部分系統卻難以更新甚至沒有更新接口。這些工控系統中存在的安全問題就像是一個個定時炸彈一樣隱藏在其中,嚴重威脅到工控行業的安全。通過對CNVD公開披露的工控漏洞數據的統計分析發現(如圖1-1),截至目前有2743個工控漏洞,其中高危漏洞佔比為33%,有907個,中危漏洞佔比為42%,達1163個,大大高於傳統行業的高中危漏洞比例。其中部分硬體級別的漏洞修復極為困難,只能進行硬體更新。
圖1-1 工控漏洞等級分布圖
通過每年的漏洞披露數量繪製的柱狀圖如圖1-2可以看出,2011年工控類的漏洞數量激增,這可能是因為2010年「震網」攻擊伊朗核設施的事件所致。「震網」事件使得工控安全迅速得到了普遍的重視,甚至被各國提升到了國家安全戰略的位置,因而信息安全企業和相關安全研究人員持續關注工業控制系統安全問題及工業控制系統廠商在客戶的壓力下開始注重自己所存在的一些歷史遺留安全問題。由此使得接下來的幾年裡,漏洞披露的數量均保持在較高水平。但由於工業控制系統的封閉性使得工控安全研究進展緩慢,工業控制系統是使用方對信息安全從認識到真正能夠實施信息安全相關政策需要一定時間,因而在2015年至2016年多起工控攻擊事件如烏克蘭電廠兩次大規模停電攻擊、紐約鮑曼水庫防洪控制系統攻擊、德國核電站網絡攻擊、針對西門子ICS/SCADA的IronGate病毒攻擊等的刺激,再一次地對工控系統安全發起警告,使得2016的工控漏洞再一次出現了高增長,直到2018年工控安全漏洞數量高達469個。
圖1-2 工控漏洞數量
同樣,在震網攻擊伊朗核設施的事件之後,工控類安全攻擊事件的披露數量也得到明顯的提升。由於普遍的關注和信息安全廠商的介入,使得這些攻擊威脅被提前發現並終止,其中大部分均在情報收集階段便被披露如Duqu、Flame、Havex(Dragonfly1.0)、Dragonfly2.0、Triton、VPNFilter等,並未造成重大後果,僅有少數攻擊是在造成嚴重事故後才被發現(烏克蘭電力系統攻擊的BlackEnery和Industroyer)。
值得注意的是,近幾年瘋狂肆虐的勒索病毒也已經盯上工業控制系統。其中除了2016年爆發的wannacry已經染指工控行業外,去年2018年8月3日臺積電開始遭到針對性的勒索病毒攻擊致使該企業高達18億的損失,而2019年3月18日位於挪威全球最大鋁生產商之一的海德魯(Norsk Hydro)公司同樣也遭到了針對性的勒索軟體攻擊,致使其位於歐洲和美國的部分自動化生產線被迫關閉。
本文首先會就2000年之後的工控網絡攻擊事件進行梳理並選取其中最具影響的攻擊事件及相關的攻擊武器進行詳細闡述。將會對這些攻擊事件進行深入探討並對其中10個重要的攻擊武器進行一次總結歸納,通過分析其攻擊背景、目標、手法以及技術特性,以使大家對工業控制系統所面臨的安全威脅有一個更為全面的認識。
在2019年3月7日,委內瑞拉全國發生大規模停電事件,影響23個州中的18個州,美國被指導演了這場針對委內瑞拉的「電力戰爭」,但目前並沒有直接證據. 但美國國務卿邁克•蓬佩奧在3月7日晚上發布了一條推特:「No food. No medicine. Now, no power. Next, no Maduro.」,似乎印證了該指責。邁克•蓬佩奧的Twitter截圖如圖2-1所示。
圖2-1 蓬佩奧Twitter截圖
如果委停電事故的確有國家級網絡攻擊所致,那麼該事件便是一起比以往任何工控攻擊事件都嚴重的網絡攻擊事件,該次事件導致本已政局不穩的委內瑞拉更加動蕩不安。在曾經的工控攻擊事件中,有兩次是針對電力系統並且成功導致大範圍停電的網絡攻擊,分別為2015年12月和2016年12月的烏克蘭電力系統攻擊事件。除了這幾起導致了嚴重後果的工控攻擊外,從2000年開始已經有持續不斷的工控惡意攻擊事件,本節將會從2000年到目前的39起攻擊事件進行回顧分析。而其中許多都是具有政府背景的網絡安全攻擊如:攻擊伊朗的Stuxnet、針對能源行業的Duqu、攻擊烏克蘭電廠的Blackenergy和Industroyer等等,我們將目前能夠收集到該類黑客攻擊事件繪製成了一個時間線,如圖2-2所示。
圖2-2 工控攻擊事件時間線
(1)澳大利亞馬盧奇汙水處理廠非法入侵事件
2000年3月,澳大利亞昆士蘭新建的馬盧奇汙水處理廠出現故障,故障表現為:無線連接信號丟失、汙水泵工作異常、報警器也沒有報警。經過調查後發現是該廠前工程師Vitek Boden因不滿工作續約被拒而蓄意報復所為。Vitek Boden通過一臺手提電腦和一個無線發射器控制150個汙水泵站長達三個多月,在此期間,共計有100萬公升的汙水未經處理直接經雨水渠排入自然水系,進而導致當地環境受到嚴重破壞。
(2) 加州電力運營商被入侵
2001年5月11日,黑客入侵監管加州多數電力傳輸系統的獨立運營商被發現。Cal ISO的官員說,安全漏洞已經被修復,電網沒有受到威脅。但是,據了解內情的人稱,黑客已經非常接近進入控制系統的關鍵部分了,一旦進入核心控制部分,可能會破壞整個加州的電網。事後的一份內部調查報告顯示:該攻擊最早於4月25日開始,直到5月11日才被發現。
(3)美國Davis-Besse核電站受到Slammer 蠕蟲攻擊事件
2003年1月,美國俄亥俄州Davis-Besse核電站和其它電力設備受到SQL Slammer(也被稱為「藍寶石」)蠕蟲攻擊,導致該核電站計算機處理速度變緩、安全參數顯示系統和過程控制計算機長達5小時無法正常工作。經調查發現,該病毒利用SQL Server 2000中1433埠的緩衝區溢出漏洞進行攻擊,在攻擊成功後,它會嘗試感染隨機生成的IP位址對應的主機,進而使得網絡擁堵,造成SQL Server無法正常工作甚至宕機。
(4)龍泉、政平、鵝城換流站控制系統感染病毒事件
2003年12月30日,龍泉、政平、鵝城換流站控制系統感染病毒。事後調查發現,由於外國工程師在系統調試中使用筆記本電腦上網,因此導致控制系統感染病毒。
(5)美國Browns Ferry核電站受到網絡攻擊事件
2006年8月,美國阿拉巴馬州的Browns Ferry核電站3號機組受到網絡攻擊,反應堆再循環泵和冷凝除礦控制器失靈,導致3號機組被迫關閉。事後調查發現,調節再循環泵馬達速度的變頻器(VFD)和用於冷凝除礦的可編程邏輯控制器(PLC)中都內嵌了微處理器。通過微處理器,VFD和PLC可以在以太區域網中接受廣播式數據通訊。但是,由於當天核電站區域網中出現了信息洪流,VFD和PLC無法及時處理,致使兩臺設備癱瘓。
(6)黑客通過網際網路控制哈裡斯堡汙水處理廠計算機事件
2006年10月, 黑客通過一臺受感染的筆記本電腦訪問位於賓夕法尼亞州哈裡斯堡的水處理廠的計算機系統,並以此為跳板在工廠內部計算機中安裝病毒和間諜軟體,而該受感染筆記本電腦系汙水廠員工所有。美國聯邦調查局費城辦事處的特工傑裡威廉士說,黑客不是為了破壞汙水處理廠,而只是將計算機作為分發電子郵件的資源或者用作其他用途。美國水工協會賓夕法尼亞分部安全協調員Mike Snyder說,如果黑客是針對汙水處理廠發起的攻擊,那可能會產生極其嚴重的後果,因為一旦攻擊者提高水中的氯的含量,會使汙水變得非常危險。
(7)黑客入侵加拿大的一個水利SCADA控制系統事件
2007年,黑客入侵了加拿大一個水利SCADA控制系統,並破壞了用於取水調度的控制計算機。
(8)14歲男孩入侵有軌電車事件
2008年1月8日,14歲波蘭男孩利用自己改裝的電視遙控器「入侵」羅茲市有軌電車系統的軌道控制系統,改變電車運行軌道,致使四輛電車脫軌,所幸沒有人員遇害。
(9) 震網病毒攻擊伊朗核電站
2010年6月,Stuxnet被白俄羅斯安全公司VirusBlokAda首次發現,它的傳播是從2009年6月開始甚至更早,它攻擊伊朗布希爾核電站,致使鈾濃縮設備的出現故障,成功推遲了伊朗核計劃,是第一個專門定向攻擊真實世界中基礎(能源)設施的惡意代碼。
(10)Duqu(Stuxnet變種)收集工控系統周邊情報
Duqu是2011年9月1日在布達佩斯技術經濟大學的密碼學與系統安全(CrySyS)實驗室中發現的惡意軟體,被認為是Stuxnet的一個新型變種並且由以色列的「8200部隊」創建。其目的是潛伏並收集攻擊目標的各種信息,以便在獲得遠程進入的能力,為將來發動網絡襲擊做技術儲備。
(11)全新網絡間諜Flame攻擊能源領域
Flame是2012年5月被發現的惡意代碼,在中東地區大範圍傳播。其構造複雜,可以通過USB存儲器以及網絡複製和傳播,並能接受來自世界各地多個伺服器的指令。
(12) 全球最大的石油公司被黑客攻擊
2012年8月15日,沙烏地阿拉伯國營石油公司阿美石油公司(Aramco)遭到Shamoon電腦病毒的侵襲。該病毒清除了四分之三的阿美公司企業PC上的數據(電子表格、電子郵件等文件),並用一張燃燒的美國國旗圖片改寫了硬碟的主引導記錄。美國官員進而暗示,這起攻擊事件是在某個國家政府的支持下進行的,其中有些報導援引有些人的猜測表示,Shamoon電腦病毒來自伊朗。然而,在這場電腦病毒襲擊事件發生後,一個自稱為「正義利劍」(Cutting Sword of Justice)的黑客行動主義者組織聲稱對這起事件負責,他們表示,他們此舉是為了抗議沙特政府採取的相關行動。
(13)USB病毒攻擊美國電廠竊取工控系統數據
2012年,兩座美國電廠遭受USB病毒攻擊。隨後美國工控應急響應中心表示,包含惡意程序的U盤插入系統,導致工廠的工控系統被病毒感染,攻擊者可以遠程控制受感染的電腦並竊取相關數據。
(14)Havex襲擊工業控制系統
Havex於2013年被發現,主要攻擊對象是歐洲的使用和開發工業應用程式和機械設備的公司,並成功入侵1000多家歐洲和北美能源公司。
(15) 俄羅斯一座核電廠被震網感染
2013年11月12日,卡巴斯基披露,臭名昭著的「震網」病毒感染了俄羅斯的一座核電廠,據說這家爾羅斯核電站並未接入網際網路。
(16)日本Monju核電廠控制室被入侵,部分數據被洩露。
2014年1月2日,Monju核電站控制室中的一臺計算機遭到入侵。網絡管理員發現,在員工更新了某電腦中的一個免費應用程式後,反應堆控制室中的系統在過去5天內被訪問了30多次。該計算機中存有42000多封電子郵件和員工培訓資料。調查次事件的專家認為這是一次基於惡意軟體的攻擊。惡意代碼可能是通過軟體更新感染到核電站內部並竊取了一些數據,然後發送到C&C伺服器。網絡出站流量日誌顯示,C&C伺服器在韓國。
(17)韓國水力核電廠計算機系統被入侵,內部資料外洩。
2014年12月,運行韓國23個核反應堆的韓國水電核電有限公司(KoreaHydro and Nuclear Power Co.,Ltd)表示,其計算機系統遭到黑客攻擊,但只有非關鍵數據被盜。
(18)德國鋼鐵廠遭受APT攻擊
2014年12月,德國聯邦信息安全辦公室公布消息稱:德國一家鋼鐵廠遭受高級持續性威脅(APT)網絡攻擊,並造成巨大的經濟損失。攻擊者使用魚叉式釣魚郵件和社會工程手段,獲得鋼廠辦公網絡的訪問權。然後利用這個網絡,設法進入到鋼鐵廠的生產網絡。攻擊者的行為導致工控系統的控制組件和整個生產線被迫停止運轉,由於不是正常的關閉煉鋼爐,從而對設備造成重大物理傷害。
(19)中石化華東公司內鬼破壞SCADA系統騙取維修費
2015年5月23日,上海市奉賢區人民法院宣判了一起破壞SCADA系統謀取私利的案件。涉案人員徐某、王某以謀取維修費用為目的,由徐某針對中石化華東公司SCADA系統開發了一套病毒程序,王某利用工作之便,將此病毒程序植入到華東公司SCADA系統的伺服器中,導致SCADA系統無法正常運行,軟體公司先後安排十餘名中外專家均無法解決問題。此時,兩名嫌疑人再裡應外合,由公司內部的王某推薦開發病毒程序的徐某前來「維修」,騙取高額維修費用,實現非法牟利。
(20) 波蘭航空公司作業系統遭遇黑客攻擊
2015年6月21日,LOT波蘭航空公司的地勤系統遭黑客攻擊,無法制定飛行計劃,致使預定航班無法出港,導致長達5個小時的系統癱瘓,至少10個班次的航班被迫取消,超過1400名乘客被迫滯留在波蘭華沙蕭邦機場。所幸,黑客攻擊沒有對正在飛行的飛機和機場系統產生影響,否則後果不堪設想。該事件是全球首次發生的航空公司作業系統被黑事件。
(21) 烏克蘭大停電
2015年12月23日,烏克蘭電力部門遭受到惡意代碼攻擊,烏克蘭新聞媒體TSN在24日報導稱:「至少有三個電力區域被攻擊,並於當地時間15時左右導致了數小時的停電事故」;「攻擊者入侵了監控管理系統,超過一半的地區和部分伊萬諾-弗蘭科夫斯克地區斷電幾個小時。
(22)黑客入侵紐約鮑曼水庫
2016年3月24日,美國司法部公開指責7名伊朗黑客入侵了紐約鮑曼水壩(Bowman Avenue Dam)的一個小型防洪控制系統。幸運的是,經執法部門後期調查確認,黑客還沒有完全獲得整個大壩計算機系統的控制權,僅只是進行了一些信息獲取和攻擊嘗試。這些伊朗黑客可能為伊朗伊斯蘭革命衛隊服務,他們還涉嫌攻擊了包括摩根大通、美國銀行、紐約證券交易所在內的46家金融機構。
(23)德國核電站遭網絡攻擊
2016年4月,德國Gundremmingen核電站的計算機系統,在常規安全檢測中發現了Conficker和Ramnit惡意軟體。核電站的操作員RWE為防不測,關閉了發電廠。
(24)Stuxnet震網病毒的高仿版IronGate——專攻西門子ICS/SCADA
2016年6月2日,FireEye稱,他們於2015年下半年發現一款惡意軟體——IronGate(鐵門),該惡意軟體利用了和Stuxnet相同的技術和功能,並將目標鎖定在了西門子工業控制系統上。在2014年,兩個不同來源的該惡意代碼被上傳到VirusTotal,但是當時所有的防病毒廠商都沒有將其標記為惡意。IronGate的特點是針對工業過程模擬中的過程輸入輸出(IO)和過程操作員軟體的中間人(MITM)攻擊。Irongate用惡意DLL替換正常的DLL,惡意DLL充當可編程序邏輯控制器(PLC)與合法監控系統之間的中間人。該惡意DLL從PLC到用戶界面記錄「正常」的流量並進行替換,同時將不同的數據再發回PLC。這就允許攻擊者在操作者不知情的情況下改動受控過程。由此可見,Irongate和Stuxnet的相似之處:均利用尋找和替代專用的DLL文件,來實現中間人攻擊。從複雜性上說,IronGate與Stuxnet相比根本不在一個量級,但是它使用了一些新技術和方法。二者的不同點:Stuxnet檢測殺毒軟體,而IronGate檢測運行環境(VMware、Cuckoo);Stuxnet不會隱藏過程操作,而是暫停了S7-315的正常運行,但IronGate主動記錄和回放過程數據以隱藏操作。該惡意軟體似乎是為在某種特定仿真環境下運行編寫的,因此FireEye的研究人員認為該軟體可能是一種工控系統攻擊技術測試、概念驗證或研究活動。
(25)「食屍鬼」網絡攻擊
2016年8月,卡巴斯基揭露了針對工控行業的「食屍鬼」網絡攻擊,該攻擊針對30多個國家的工業、製造業和工程管理機構發起了定向滲透入侵,利用魚叉式釣魚郵件攻擊目標機構的高級管理人員的PC,攻擊中使用鍵盤記錄程序HawkEye收集受感染系統的輸入數據。攻擊範圍包括西班牙、巴基斯坦、阿聯、印度、中國、埃及等國。
(26)黑客入侵美國供水電腦系統作業系統
2016年10月9日,黑客利用美國賓夕法尼亞州哈裡斯堡市一家自來水廠員工的個人電腦入侵了該廠負責水過濾的電腦系統,並在水過濾電腦上安裝間諜軟體,利用受感染主機向外發送電子郵件和盜版軟體,與此同時,黑客還修改了該電腦的登錄密碼,致使水廠管理員也不能夠進入作業系統。
(27)Shamoon v2攻擊沙烏地阿拉伯民用航空管理局
2016年12月,安全研究人員發現Shamoon出現了新變種,並稱它為「Shamoon 2」。黑客利用它對沙烏地阿拉伯民用航空管理局(Saudi Arabia’s General Authority of Civil Aviation,GACA)發起有針對性的攻擊。
(28)烏克蘭電網遭攻擊,造成大範圍停電
2016年12月17日當地時間23點左右,烏克蘭的國家電力部門又一次遭遇了黑客襲擊,這次停電持續了 30 分鐘左右,受影響的區域是烏克蘭首都基輔北部及其周邊地區。推測2016年12月那次半個小時的烏克蘭停電事件是由Industroyer攻擊導致。
(29) WannaCry利用永恆之藍漏洞肆虐全球
2017年5月12日,WannaCry勒索病毒利用MS17-010漏洞襲擊全球,至少150個國家、30萬名用戶中招,造成損失達80億美元,已經影響到金融,能源,醫療等眾多行業。中國部分普通用戶和企事業單位受到感染,導致大量文件被加密,無法正常工作,影響巨大。
(30) Dragonfly 2.0出現
2017年9月6日,賽門鐵克發布消息稱,著名俄羅斯黑客組織「Dragonfly」近期活動更加頻繁。「Dragonfly」是一個專門以能源電力機構、ICS設備製造廠商、石油管道運營商等為攻擊目標的黑客組織。最近發現的「Dragonfly」從攻擊目的和惡意代碼技術上都有所提升,被稱為「蜻蜓二代」或者「Dragonfly2.0」。
(31)Triton被FireEye披露
2017年11月中旬,Dragos Inc.團隊發現了針對ICS量身定做的惡意軟體,並將此惡意軟體命名為TRISIS(又被稱為 Triton 和 HatMan),該惡意軟體的攻擊目標是沙烏地阿拉伯的一家石油化工廠。同年12月,FireEye發布了Triton的分析報告。Triton惡意代碼當時的攻擊目的是破壞其運營並引發爆炸,因為攻擊者的一個失誤觸發了關鍵系統緊急關停,導致攻擊失敗,暴露自身。
(32)俄黑客對美國核電站和供水設施攻擊事件
2018年3月15日,US-CERT對外公告(TA18-074A)稱俄羅斯黑客發起針對美國某發電廠的網絡攻擊。本次攻擊的主要目的是以收集情報為主,攻擊者植入了收集信息的程序,該程序捕獲屏幕截圖,記錄有關計算機的詳細信息,並在該計算機上保存有關用戶帳戶的信息。
(33)臺積電遭勒索病毒入侵,3天損失18億
2018年8月3日晚間,臺積電位於臺灣新竹科學園區的12英寸晶圓廠和營運總部,遭遇勒索軟體攻擊且生產線全數停擺。直到8月6日臺積電官方才發表聲明,稱已經恢復生產。官方發言人還表示這三天的停擺,將會直接導致臺積電第三季度的營收下降3%!而據此前對臺積電第三季度營收的預測為600億,3%也就是18億!臺灣媒體爆料稱,這次攻擊臺積電設備的是勒索病毒Wannacry,而中毒的原因可能是Windows 7系統沒有升級補丁,或者沒有關閉445埠,導致WannaCry病毒入侵就迅速傳播到其他生產線中。
(34)GreyEnergy攻擊烏克蘭和波蘭能源公司
2018年10月 18日,ESET團隊稱發現一個新的APT組織GreyEnergy,該APT組織被認為是BlackEnergy的繼承者。在過去三年內,GreyEnergy主要針對烏克蘭和波蘭的能源公司等高價值目標。GreyEnergy的惡意軟體框架與BlackEnergy具有很多相似之處。研究人員並沒有觀察到專門針對ICS的惡意軟體模塊,但GreyEnergy的攻擊策略一直是針對關鍵基礎設施中的SCADA工作站和伺服器等。
(35) 義大利石油與天然氣服務公司Saipem遭遇網絡攻擊
2018年12月10日,義大利石油與天然氣開採公司Saipem遭受網絡攻擊,主要影響了其在中東的伺服器,包括沙烏地阿拉伯、阿拉伯聯合大公國和科威特,造成公司10%的主機數據被破壞。Saipem發布公告證實此次網絡攻擊的罪魁禍首是Shamoon惡意軟體的變種。McAfee研究人員Shamoon磁碟擦除攻擊歸咎於伊朗黑客組織APT33。
註:APT33是一個可疑的伊朗威脅組織,自2013年以來一直在運營。該組織針對的是美國、沙烏地阿拉伯和韓國的多個行業,其中尤其關注航空和能源領域。
(36)VPNFilter攻擊
VPNFilter惡意代碼旨在入侵物聯網設備(路由器、網絡存儲設備等)從事可能由國家發起的全球性的高級惡意軟體攻擊。它能夠根據遠程的指令,安裝不同特定功能的模塊,並運行相應的功能,不同場合安裝的模塊可能會不一樣,如在工業控制設備上會安裝Modbus、SCADA相關的組件,在需要監聽通信內容時安裝Tor、ssller模塊等。其中,ssller模塊可用於中間人攻擊,向網絡注入惡意流量負載,修改發送的流量,嗅探網絡數據,並收集憑證,監督控制和數據、Tor模塊與遠程C&C進行加密通信。
(37)委內瑞拉停電事件
2019年3月7日,委內瑞拉全國發生大規模停電事件,影響23個州中的18個州。據媒體報導,停電是因為南部玻利瓦爾州的一座主要水電站發生故障,事件發生後,委內瑞拉政府立刻組織人力調撥資源全力恢復,與此同時,總統馬杜羅指出,大規模停電是美國方面的攻擊行為造成,但是並未提供上述指控的證據。
(38)全球最大鋁生產商遭LockerGoga勒索軟體攻擊
據外媒報導, 2019年3月18日,位於挪威全球最大鋁生產商之一的海德魯(Norsk Hydro)公司遭勒索軟體攻擊,攻擊致使其位於歐洲和美國的部分自動化生產線被迫關閉,並以手工生產流程運營冶煉廠。如當前情況持續則可能導致延遲交貨,甚至可能會影響鋁價格。據挪威國家安全局(NSM)稱,攻擊者有可能使用了在今年1月首次被發現的LockerGoga勒索軟體,它不是一種大範圍傳播的勒索軟體,但在今年早些時候也曾被用於攻擊法國工程諮詢公司Altran Technologies,而海德魯應該是該勒索軟體近期唯一的受害者。
(39)Triton捲土重來
2019年4月10,FireEye披露了工業控制系統惡意軟體Triton的最新的戰術、技術、流程(TTP),並將其kill chain發布到了MITRE ATT&CK框架,但是並未公布本次受到攻擊基礎設施的類型,行業以及所處地理位置等相關信息。報告稱攻擊者已經在目標網絡中潛伏將近一年,在建立立足點以後,攻擊者使用多種工具進行偵查、橫向移動以及持久化。
從上述的攻擊事件可以看出,工控行業的攻擊從未有所停止,反而更加的頻繁,這些攻擊大多都是具有經濟目的和政治動機的。大都前期利用間諜軟體進行情報獲取,試圖通過情報信息的分析來確定其下一步攻擊,部分攻擊已經切實的導致設備停機網絡斷電等嚴重後果。因此,對於這些工控攻擊所採用的攻擊手法、攻擊工具、攻擊路徑的更深入的理解變得非常重要。下一章我們將從以上39件工控行業的攻擊事件中選出其中影響力較大的攻擊及其攻擊武器進行更加深入的分析。
從已發現的工控網絡攻擊案例可以看出,大部分的攻擊在情報收集階段已經被披露,少部分如震網攻擊、烏克蘭電廠攻擊等事件是因為攻擊成功並導致嚴重後果後才被發現。其中從已被披露的工控惡意代碼來看,基本上所有的工控惡意代碼都具有情報收集的能力,如Duqu、Flame、Havex、Dragonfly2.0、Industroyer、VPNFilter等,它們收集的情報內容包括但不限於目標主機系統信息、目標網絡拓撲結構、工業設施有關的設計圖紙、登錄憑證(VPN、SSH、遠程桌面等)、目標主機中的文檔,圖片,音視頻文件(office,pdf,png, txt等)等等。而在攻擊事件中少部分工控惡意代碼被發現存在破壞性能力,它們可致使目標工控系統癱瘓或者故障。如眾所周知的Stuxnet就是通過突然改變發動機轉速來破壞濃縮鈾工廠的核心部件離心機,進而達到減緩伊朗核進程的目的。以及成功破壞烏克蘭電廠系統並造成大面積停電的BlackEnergy和Industroyer。
工控系統是一個國家極為重要的基礎設施,一旦遭受到網絡攻擊,會嚴重影響正常工業生產造成巨大的經濟損失,甚至可能導致公共安全事故危害人民的生命安全,以至於影響社會穩定,如:道路失去了交通信號燈、醫院裡的病人無法得到及時的救治等。因此,只有更好的掌握工控惡意代碼的攻擊手法、攻擊執行過程才能避免悲劇的發生。
3.1 Stuxnet:工控網絡攻擊的裡程碑
3.1.1 Stuxnet簡介
Stuxnet(又稱作超級工廠、震網,雙子),是Windows平臺上的惡意代碼,於2010年6月被白俄羅斯的一家安全公司(VirusBlokAda)發現。因為惡意代碼中包含「stux」字符,所以被命名為「震網病毒(Stuxnet)」。Stuxnet利用西門子公司控制系統(SIMATIC WinCC/Step7)存在的漏洞感染數據採集與監控系統(SCADA),向可編程邏輯控制器(PLC)寫入代碼並將代碼隱藏。因其代碼及其複雜攻擊手法極其隱蔽,也被稱為有史以來最複雜的網絡武器,同時它也是全球首個在工控領域投入實戰並取得勝利的網絡武器。
研究表明,該病毒60%的感染發生在伊朗。2012年6月1日,美國《紐約時報》的一篇報導也證實了這一研究結果。報導內容大致如下:Stuxnet病毒起源於2006年前後,由美國總統小布希啟動的「奧運會計劃」,是美國國家安全局外交事務局(FAD)在以色列協助下研發,旨在減緩伊朗的核計劃,從而避免採取高風險的空襲。2008年,歐巴馬上任後下令加速該計劃,紐約時報報導內容如圖3-1所示。
圖3-1 紐約時報關於「奧運會計劃」的報導
據估計,「震網」病毒使伊朗的核計劃延遲了至少2年。
加比•阿什克納齊(Gabi Ashkenazi)是以色列國防軍第19任總參謀長,在2007年上任。在2011年加比•阿什克納齊的退役晚宴中的一段視頻顯示,Stuxnet被以色列國防軍當作一次勝利。加比•阿什克納齊在Wikipedia的簡介如圖3-2所示。
圖3-2 加比•阿什克納齊在Wikipedia的簡介
2013年5月,Edward Snowden 在接受採訪中透露:美國國家安全局(NSA)和以色列聯手開發了破壞伊朗鈾濃縮設備的 Stuxnet。在2009年至2010年,Stuxnet滲入伊朗核設施網絡,用於改變數千臺離心機發動機的運轉速度。這種突然的改變發動機轉速會對離心機造成無法修復的傷害,從而達到破壞伊朗核研究的目的。
2013年6月,美國司法部因Stuxnet洩密事件開始調查美國戰略司令部前負責人詹姆斯卡特賴特(James Cartwright)將軍。聯邦調查人員懷疑卡特賴特向「紐約時報」記者洩露了該行動的細節,詹姆斯卡特賴特當即否認這一指控,但是,在2016年10月17日,卡特賴特在美國哥倫比亞特區地方法院認罪。2017年1月17日,巴拉克•歐巴馬(Barack Obama)總統赦免了他,從而使他無罪。詹姆斯卡特賴特在Wikipedia的介紹如圖3-3所示。
圖3-3 詹姆斯卡特賴特在Wikipedia的簡介
根據紐約時報關於Stuxnet的報導,結合在任時間窗口和個人背景,我們推測Stuxnet的實際的執行者有可能是前CIA將軍麥可•海登(Michael Hayden),Michael Hayden在Wikipedia的履歷如圖3-4所示。
圖3-4 麥可.海登在Wikipedia的簡介
直到今天也沒有人正式承認或否認這次對伊朗的網絡打擊這是誰幹的,因為即便是現在Stuxnet仍然具有攻擊性,甚至有可能已經升級成為隱蔽性更好,破壞力更強大的更高級的病毒。
3.1.2 Stuxnet攻擊原理
Stuxnet是一個定向攻擊現實世界中能源設備的惡意代碼,它的成功給很多人敲響了警鐘:內網也不是絕對的安全、工控領域面臨著巨大的風險。讓我們從技術的角度來闡述一下Stuxnet攻擊的實現原理。
Stuxnet的攻擊目標是SIMATIC WinCC(Windows Control Center)--視窗控制中心。WinCC為工業領域提供完備的監控與數據採集(SCADA)功能,部署在專用的內部網絡中,並與外部網際網路實行物理隔離。Stuxnet採取多種手段進行滲透和傳播,如圖3-5所示。
圖3-5 Stuxnet攻擊流程圖
攻擊大致流程如下:Stuxnet首先感染外部主機,然後感染與此主機相連的移動存儲介質,利用快捷方式文件解析漏洞感染區域網電腦,在內網中,通過快捷方式解析漏洞、RPC遠程執行漏洞、印表機後臺程序服務漏洞,實現聯網主機之間的傳播,最後抵達安裝了WinCC軟體的主機,展開攻擊。
Stuxnet為了實現傳播和攻擊,利用了微軟作業系統中4個0Day漏洞,有安全研究員統計Stuxnet中0Day漏洞的總價值超過一百萬美元,Stuxnet中使用的漏洞和在攻擊過程中的功能如下:
這是2008年爆發的一個極嚴重的微軟作業系統漏洞,其特點是利用簡單、波及範圍廣、危害程度高。具體而言,存在此漏洞的系統收到精心構造的RPC請求時,可能允許遠程執行代碼。在Windows 2000、Windows XP和Windows Server 2003系統中,利用這一漏洞,攻擊者可以通過惡意構造的網絡請求直接發起攻擊,無需認證直接執行任意代碼,並且具有完整的權限。Stuxnet利用這個漏洞實現在內部區域網中的傳播。
在Stuxnet攻擊中使用的一個0Day漏洞,該漏洞利用Windows在解析快捷方式文件(例如.lnk文件)時的系統機制缺陷,使系統加載攻擊者指定的DLL文件,從而觸發攻擊行為。Stuxnet蠕蟲會搜索電腦中的可移動存儲設備,一旦發現新設備,就將惡意的快捷方式文件和DLL文件拷貝到其中。如果用戶將這個設備再插入到內部網絡中的其他計算機上使用,就會觸發漏洞,從而實現所謂的「擺渡」攻擊,即利用移動存儲設備對物理隔離網絡的滲入。
在Stuxnet攻擊中使用的一個0Day漏洞,Windows列印後臺程序沒有合理地設置用戶權限。攻擊者可以通過提交精心構造的列印請求,將文件發送到暴露了列印後臺程序接口的主機的%System32%目錄中。成功利用這個漏洞可以以系統權限執行任意代碼,從而實現傳播和攻擊。Stuxnet利用這個漏洞實現在內部區域網中的傳播。
在Stuxnet攻擊中使用的一個0Day漏洞,Stuxnet利用這個漏洞進行提權。
此漏洞允許特權提升。 攻擊者必須擁有有效的登錄憑據並能本地登錄才能利用此漏洞。 Stuxnet利用這個漏洞進行提權。
Stuxnet除了使用多個0Day漏洞進行感染和傳播外,它還盜用了一家臺灣公司(瑞昱半導體公司)的數字證書對惡意代碼進行籤名,從而成功的繞過安全軟體的防護。
Stuxnet在二進位代碼中會用到一個固定的異或算法的密鑰為:0xAE1979DD,相關代碼如圖3-6所示。
圖3-6 異或密鑰
~WTR4141.tmp該模塊還會創建一個名為"{BE3533AB-2DDC-46a1-8F7B-F102B8A5C30A}"的互斥體,關鍵代碼如圖3-7所示。
圖3-7 互斥體名
~WTR4141.tmp該模塊還利用IATHook實現文件隱藏,主要Hook了FindFirstFileW、FindNextFileW、FindFirstFileExW、NtQueryDirectoryFile、ZwQueryDirectoryFile這5個函數,關鍵代碼如圖3-8所示。
圖3-8 被Hook的API
3.1.3 控制域名
www.mypremierfutbol.com
www.todaysfutbol.com
smartclick.org
best-advertising.net
internetadvertising4u.com
ad-marketing.net
註:上表中的域名雖然曾經被用於Stuxnet惡意代碼,但是不排除現在已被用作其他用途。
3.2 Duqu-Stuxnet之子
3.2.1 Duqu簡介
Duqu(中文名:毒區)在2011年9月1日,於布達佩斯技術經濟大學的密碼學與系統安全(CrySyS)實驗室中被發現。由於它創建的臨時文件都是以 ~DQ開頭,因此被命名為Duqu。Duqu與Stuxnet有一定的相似度,它們都使用了相同的加密算法和密鑰,此外,Duqu也盜用了一家臺灣公司(驊訊電子公司)的數字證書對惡意代碼進行籤名。
Duqu2.0是在2015年卡巴斯基的一次安全檢測中被發現的。卡巴斯基經過調查後發現,該惡意代碼已經在其內部網絡潛伏長達數月,進一步研究發現,入侵卡巴斯基和入侵伊朗核問題「六方會談」承辦酒店電腦的都是Duqu2.0。
Duqu主要目的是刺探與伊朗核計劃有關的情報。Duqu2.0 被一些安全機構認定是以色列「8200部隊」的產物,被用來監視伊朗核談判和經濟制裁,因為它感染位於瑞士和奧地利酒店的計算機,這些酒店就是伊核六方會談(「P5+1」組織成員國包括美國、俄羅斯、中國、英國、法國和德國)的國際談判地點。
註:以色列的8200部隊相當於美國的NSA或英國的政府通信總部,是以國防軍中規模最大的獨立軍事單位,從事電子偵查活動,該部隊的正式名稱為「中央情報搜集部隊」,8200是其番號。 它最成功的情報工作是在「六日戰爭」(也稱為第三次阿以戰爭)的第1天,就成功截獲時任埃及總統納賽爾和時任約旦國王海珊的高保密專線電話,因此它被情報專家認為是世界上令人生畏的網絡間諜部隊。
Duqu 2.0除了入侵卡巴斯基和「六方會談」以為,它還針對奧斯維辛-比克瑙集中營解放70周年的紀念活動發動了類似攻擊,它的攻擊目標組織還包括歐洲電信運營商,北非電信運營商和東南亞電子設備製造商等。
Duqu的攻擊目的不是以破壞為主,而是潛伏並收集被攻擊者的各種情報信息,為將來可能發生的網絡戰提供準確的情報。
3.2.2 攻擊原理
Duqu惡意代碼包含兩部分,一部分用於信息偵測,另一部分用於信息傳送。Duqu在執行30天後會自毀並刪除所有的入侵痕跡,但攻擊者也可以通過控制C2伺服器下發額外的配置來推遲自毀時間。Duqu攻擊沒有使用0day漏洞利用程序來幫助其傳播,也不能像Stuxnet那樣自動的傳播,但是一旦機器感染了Duqu,攻擊者只需手動的向受控制的伺服器上發送攻擊指令,它就可以立即感染其他的機器。安全研究人員在代碼中還發現了復活節彩蛋,它包含了一行版權聲明「Copyright (c) 2003 Showtime Inc. All rights reserved. DexterRegularDexter」,Dexter是指在Showtime電視臺放映的《嗜血法醫》。
為了躲避殺毒軟體的查殺:Duqu2.0利用Windows Installer的MSI安裝包加載惡意代碼所需的資源並解密,再將執行權限交給內存中的代碼,進而繞過了反病毒產品的檢測。在反刪除和反檢測功能的實現上:Duqu2.0的惡意代碼只駐留在受感染計算機內存中,沒有文件落地到磁碟;並且在受感染計算機重啟前做自我清理;以及在該計算機再次啟動後,它會被區域網中的其它受感染主機再次感染。因此要想從受感染的主機上完全清除Duqu2.0,必須把區域網中所有的主機同時斷電重啟,而且在重啟前還要找到哪個機器上有惡意的驅動程序,只有把它們卸載掉,才能把Duqu2.0清理乾淨。
除了上述特點外,Duqu2.0還利用了至少3個以上0Day漏洞進行感染,漏洞編號和功能如下表格所示:
漏洞編號
功能
描述
CVE-2015-2360
提升權限
本地提權
CVE-2014-4148
遠程執行任意代碼
遠程執行
CVE-2014-6324
在區域網中橫向移動
利用該漏洞可以把非特權域用戶將憑據提升為域管理員帳戶。
「CTwoPENC.DLL」在 「win32k.sys」 中利用一個0-day漏洞獲取到內核權限並利用這個漏洞來創建多個窗口,名稱分別是「CPer」、「Zero」、「CTwo」、「Vero」,如圖3-9所示。
圖3-9 漏洞利用核心代碼
研究結果表明Duqu 和Stuxnet 共享了大量的代碼,但有效載荷完全不同。Duqu用遠程控制代碼替換了Stuxnet中破壞ICS系統的代碼。對Duqu和Stuxnet所採用的編譯器、核心模塊、功能、數據結構進行相似性分析,比對結果如下表所示:
項目
Duqu
Stuxnet
功能模塊化
是
Ring0注入方式
PsSetLoadImageNotifyRoutine
Ring3注入方式
Hook ntdll.dll
注入系統進程
是
資源嵌入DLL模塊
一個
多個
利用微軟漏洞
是
使用數字籤名
是
包括RPC通訊模塊
是
配置文件解密密鑰
0xae240682
0x01ae0000
註冊表解密密鑰
0xae240682
Magic number
0x90,0x05,0x79,0xae
使用異或加密
是
異或加密密鑰
0xAE1979DD
運行模式判斷代碼存在Bug
是
註冊表操作代碼存在Bug
是
攻擊工業控制系統
否
是
驅動程序編譯環境
Microsoft Visual C++ 6.0
Microsoft Visual C++ 7.0
通過上表可以看出,Duqu和Stuxnet都是模塊化開發,注入方式一樣,具有相同的註冊表解密密鑰、魔數和bug代碼,因此Duqu和Stuxnet極有可能同源,並且由於Stuxnet閉源,所以它們可能由同一個黑客組織即方程式組織所開發。
對SHA256為20a3c5f02b6b79bcac9adaef7ee138763054bbedc298fb2710b5adaf9b74a47d的樣本進行分析,定位到其異或密鑰0xAE1979DD,關鍵代碼位置如圖3-10所示。
圖3-10 異或密鑰
3.2.3 控制命令伺服器
182.253.220.29
186.226.56.103
206.183.111.97
206.183.111.98
註:上表中的IP雖然曾經被用於Duqu惡意代碼,但是不排除現在已被用作其他用途。
3.3 Flame
3.3.1 Flame簡介
Flame(也被稱作Flamer、Da Flame、sKyWiper、Skywiper)於2012年5月28日被卡巴斯基披露,由卡巴斯基在國際電信聯盟(ITU)的一次調查中發現。Flame是一種模塊化的、可擴展的、可更新的,具有廣泛隱蔽性和極強攻擊性的惡意代碼。在收到控制者發出的控制指令後,Flame就能夠通過USB移動存儲介質以及網絡進行複製和傳播,而發出控制指令的伺服器來自世界各地。它會運用包括鍵盤、屏幕、麥克風、移動存儲設備、網絡、WIFI、藍牙、USB和系統進程在內的所有的可能條件去收集信息。Flame還會將用戶瀏覽的網頁、通訊通話(Skype聊天記錄)、帳號密碼以至鍵盤輸入等記錄發送給遠程操控病毒的伺服器。此外,即便與伺服器的聯繫被切斷,攻擊者依然可通過藍牙信號對被感染計算機進行近距離控制。功能極其豐富,覆蓋了用戶使用電腦的所有輸入輸出的接口。目前被定性為「工控病毒」。
Flame 病毒開始主要集中攻擊中東地區,包括伊朗、以色列、巴勒斯坦、敘利亞、蘇丹、黎巴嫩、沙烏地阿拉伯和埃及等國家。據統計,世界範圍內受感染電腦數量大約在 1000 至 5000 臺之間。
2012年6月19日,華盛頓郵報發表了一篇文章,聲稱Flame至少在5年前,由美國國家安全局、中央情報局和以色列軍方聯合開發,該項目據說是代號為奧運會的一部分,旨在緩伊朗發展核武器的進度,為進行網絡破壞活動收集情報。
攻擊伊朗的Flame病毒對AutoCAD文件、PDF文件、TXT文件以及Microsoft Word 和其它Office格式格外關注,它還對桌面上的內容特別感興趣,似乎在有目的的收集被感染電腦中的技術文檔和圖紙類情報。
3.3.2 攻擊原理
Flame 病毒文件達到20MB之巨,並且使用了遊戲開發用Lua腳本語言編寫部分功能與C++代碼配合,實現攻擊者要達到的目的,此外它還能夠加載攻擊者的其它功能模塊。在安全方面,它用上了 5 種不同的加密算法,3 種不同的壓縮技術,和至少 5 種不同的文件格式,包括其專有的格式。並將它感染的系統信息以高度結構化的格式存儲在SQLite 等資料庫中。感染途徑有兩種,一種是利用LNK漏洞(Stuxnet也利用了次漏洞),通過USB存儲設備感染PC,另一種通過惡意連結或郵件附件感染目標PC。
Flame文件信息如圖3-11所示。
圖3-11 Flame模塊關係
mssecmgr.ocx:主模塊,有多個衍生版本,文件大小在6M左右,運行後會釋放多個功能模塊,通過調用Lua來執行腳本完成指定的功能。
nteps32.ocx:由主模塊釋放,主要用來記錄鍵盤按鍵和屏幕信息截取。
msglu32.ocx:它由主模塊釋放,負責讀取特定文件類型的文件信息,將其寫入到sql資料庫中。
advnetcfg.ocx:由主模塊釋放,被Services.exe加載,截取屏幕信息。
Jimmy.dll:由Flame的「146」資源釋放,主要的功能是收集信息。
boot32drv.sys:由Flame的「146」資源釋放,它是一個加密的配置文件。
soapr32.ocx:由Flame的「146」資源釋放,用來收集信息的功能模塊,如:系統安裝的軟體信息,網絡信息,無線網絡信息,USB信息、時間,時區等。
ccalc32.sys:由Flame的「146」資源釋放,存儲配置信息。
通過對mssecmgr.ocx模塊進行深入的分析後發現,該模塊靜態編譯了Lua, Lua版本信息如圖3-12所示。
圖3-12 靜態編譯的Lua版本信息
靜態編譯的Lua模塊的功能函數如圖3-13所示。
圖3-13 Lua的內置函數
目前推測 Flame 病毒與之前發現的 Stuxnet (震網)和 Duqu (毒區)有關聯(早期版本的Stuxnet包含通過USB驅動器傳播的代碼與Flame中該功能代碼幾乎相同)。
3.3.3 控制端域名
admin-on.biz
netproof.info
autosync.info
netsharepoint.info
bannerspot.in
network-acs.biz
bannerzone.in
networkupdate.net
bestcopytoday.com
newsflashsite.com
bizupdate.org
newstatisticfeeder.com
bk2by.com
newsync.info
blogsearchtoday.com
nvidiadrivers.info
bytewiser.com
nvidiasoft.info
bytewiser.info
nvidiastream.info
chchengine.com
phpmanualbox.com
chchengine.net
pingserver.info
conf-net.com
processrep.com
confnet.net
profcenter.biz
crashinfo.info
quick-net.info
dailynewsupdater.com
quickboot.info
dbdrivers.biz
rapidmemorylink.com
diznet.biz
rapidmyhardware.com
dnslocation.info
rendercodec.info
dnsmask.info
rsscenter.webhop.info
dnsportal.info
sec-enhanced.org
dnsupdate.info
serveflash.info
dvmdownload.net
serverss.info
eventshosting.com
smart-access.net
fastestever.net
smartloader.info
fastinfo.biz
smartservicesite.info
fine4all.com
spaceworldpics.com
flashp.webhop.net
specthosting.biz
flashupdates.info
syncdomain.info
flushdns.info
synclock.info
formsupdates.info
syncprovider.info
globemaster.info
syncsource.info
isyncautomation.in
syncstream.info
isyncautoupdater.in
syncupdate.info
liveservice.biz
traffic-spot.biz
living-business.com
traffic-spot.com
living-help.com
ultrasoft.in
localconf.com
update-ver.biz
localgateway.info
videosync.info
loginfo.info
videoupdates.org
micromedia.in
webhop.net
mysync.info
註:上表中的域名雖然曾經被用於Flame惡意代碼,但是不排除現在已被用作其他用途。
3.4 Havex
3.4.1 簡介
Havex於2013年被發現,是一種用於攻擊特定目標的遠程控制木馬(Remote Access Trojan,RAT)。2014年初,Havex開始對工業控制系統發起攻擊,感染SCADA和工控系統中使用的工業控制軟體。網絡安全公司CrowdStrike披露了一項被稱為「Energetic Bear」(該黑客組織也被稱作蜻蜓「Dragonfly」,因此Havex也被稱作Dragonfly1.0)的網絡間諜活動。據CrowdStrike稱:攻擊者試圖通過俄羅斯聯邦滲透歐洲、美國和亞洲的能源公司計算機網絡,在此次攻擊中所用的惡意軟體就是Havex RAT。
攻擊者通過把ICS/SCADA製造商的網站上用來供用戶下載的相關軟體感染木馬,當用戶下載這些軟體並安裝時,實現對目標用戶的感染。
Havex可能是以竊取工控數據情報為目的,因為它利用OPC協議監視受感染主機的數據通信。而OPC協議主要是流程工業上用的比較多,例如石油石化行業,這也是為什麼說Havex是針對工控行業的原因。
3.4.2 攻擊原理
Havex是用PHP編寫的C&C伺服器。可以在伺服器的代碼中看到「Havex」字樣。PHP代碼如圖3-14所示。
圖3-14 PHP代碼中的Havex字符串
OPC(Ole for Process Control)是一種通信標準,採用CLIENT/SERVER模式。針對硬體設備的驅動程序由硬體廠商或專門的公司完成,並提供具有統一OPC接口的SERVER程序,軟體廠商按照OPC標準訪問SERVER程序,即可實現與硬體設備的通信。Havex變種帶有一個OPC掃描模塊,它可以收集被入侵客戶端或服務端的系統中存儲的OPC協議的信息和數據。OPC掃描模塊會探測TCP 44818、105和502埠上運行的設備。這些埠在西門子和羅克韋爾自動化等ICS / SCADA公司的產品上是通用的。
在傳播途徑上,除了利用釣魚郵件、垃圾郵件、重定向到受感染的Web網站等傳統感染方式外,Havex還採用了「水坑」攻擊方式,即通過滲透到目標軟體公司的Web站點,然後把Havex惡意程序(「mbcheck.dll」文件就是攻擊者用作後門的Havex惡意程序)注入到那些合法的安裝程序中,並等待目標被黑客被篡改過的應用。一旦Havex惡意代碼被執行,就會自動安裝OPC客戶端,收集OPC伺服器回應的數據信息,並將其上傳到C&C伺服器。除此以外,它也從受感染機器收集數據,比如:作業系統的相關信息;竊取存儲在瀏覽器中的密碼。
一個名為PE.dll的文件(6bfc42f7cb1364ef0bfd749776ac6d38)。Havex downloader會調用PE.dll的文件的runDll導出函數進行網絡掃描,導出函數如圖3-15所示。
圖3-15導出的runDll關鍵函數
OPC掃描器模塊通過對WNetOpenEnum、WNetEnumResources和WNetCloseEnum的遞歸調用來識別潛在的OPC伺服器,調用掃描功能的代碼如圖3-16所示。
圖3-16 OPC掃描代碼
3.4.3 相關IP及域名
93.188.161.235
93.171.216.118
disney.freesexycomics.com
electroconf.xe0.ru
rapidecharge.gigfa.com
sinfulcelebs.freesexycomics.com
www.iamnumber.com
abainternationaltoursandtravel.com
adultfriendgermany.com
africancranesafaris.com
alexvernigor.com
al-mashkoor.com
alpikaclub.com
antibioticsdrugstore.com
arsch-anus.com
artem.sataev.com
artsepid.com
ask.az
atampy.com
aziaone.com
註:上表中的IP和域名雖然曾經被用於Havex惡意代碼,其中包含一些合法的網站和博客被黑客入侵後作為C&C伺服器,但是不排除現在已被用作其他用途。
3.5 Dragonfly2.0
3.5.1 簡介
「Dragonfly」是著名的俄羅斯黑客組織,該黑客組織自2010年開始活躍,直到2014年被安全公司披露後,一度停止了攻擊活動,但是在2017年9月,它又開始頻繁活動,因為最新發現的「Dragonfly」從攻擊目的和惡意代碼技術上都有所提升,所以被稱為「蜻蜓二代」或者「Dragonfly2.0」。目前的證據表明,實際上蜻蜓二代在2015年12月份就已經有了活動跡象。蜻蜓二代「Dragonfly2.0」和一代一樣,使用多種攻擊方式(惡意電子郵件、水坑攻擊和合法軟體捆綁)對目標進行滲透並植入惡意代碼。早期的Dragonfly活動更像是處於探索性的階段,攻擊者只是試圖進入目標組織的網絡,Dragonfly 2.0的活動則顯示了攻擊者已經進入了一個新的階段,最近的襲擊活動可能為攻擊者提供了訪問作業系統的機會,將來可能被用於更具破壞性的攻擊。
「Dragonfly」是一個專門以能源電力機構、ICS設備製造廠商、石油管道運營商等為攻擊目標的黑客組織,早期攻擊的目標為美國和加拿大的防務和航空公司、美國和歐洲的能源公司、大多數受害者分布在美國、西班牙、法國、義大利、德國、土耳其和波蘭,而「Dragonfly2.0」則重點攻擊美國和土耳其。
3.5.2 攻擊原理
技術上,蜻蜓二代相比蜻蜓一代而言通信更加難以監測,蜻蜓一代幾乎都採用了明文的 HTTP 通信,而二代組件與C&C的通信(包含信息收集、命令交互、文件回傳等操作)普遍採用了 HTTPS 的方式來進行加密傳輸,無法通過 IDS 等流量監測設備進行有效的監測。另外組件進行遠程請求的 URL 也有所改進,蜻蜓一代的 URL 都包含有明確含義的.php(如:「log.php」、「testlog.php」、「source.php」),而蜻蜓二代更具有迷惑性,如採用隨機名且無後綴的URL(如:/A56WY),以及採用後綴名.gif(如:getimage/830411.gif)。蜻蜓二代的 Loader 模塊開始採用實時下載純加密 Shellcode 代碼執行的方式來執行,並不會落地到磁碟,而蜻蜓一代的 Loader 模塊則是下載完整PE文件執行,並且會落地到磁碟。另外,蜻蜓二代還將一些隱蔽性很高的技術應用於其攻擊組件之中,如預初始化劫持技術(Backdoor.Dorshel)、模板注入技術(Trojan.Phisherly)等。蜻蜓二代在收集信息及竊密時,採用組件 Hacktool.Credrix 竊取更為敏感的信息,除了竊取各類瀏覽器相關登錄憑證外,還開始獲取系統帳戶的登錄憑證、遠程桌面登錄憑證以及郵件客戶端的登錄憑證。相關憑證信息及實現方法如下表所示:
竊取的憑證信息
實現方法
RDP憑證信息
注入shellcode到lsass進程中對C:\\Users\\當前用戶名\\AppData\\Local\\Microsoft\\Credentials目錄下的RDP憑證信息解密
系統憑證信息
開源項目mimikatz
Thunderbird憑證信息
讀取\AppData\Roaming\Thunderbird\Profiles目錄下的資料庫文件,並通過應用程式目錄下的nss3..dll對存儲的密碼進行解密
Outlook憑證信息
遍歷註冊表Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows Messaging Subsystem\\Profiles下子鍵進行識別並解密
FileZilla憑證信息
FileZilla憑證信息以明文形式存儲在\\Application Data\\FileZilla\\目錄
Chrome
讀取\AppData\Local\Google\Chrome\User Data\Default\ Login Data資料庫文件進行查詢
Mozilla Firefox
讀取配置路徑下的signons.sqlite資料庫,並通過nss3.dll解密
Internet Explorer
從註冊表解密自動完成的口令
Opera
與Chrome類似
蜻蜓二代各個組件的基本功能及其可能的投放階段,如下表:
組件
基本功能
可能的投放階段
Backdoor.Dorshel
下載模塊執行,通過合法軟體捆綁植入
第一階段
Trojan.Karagany.B
實現上傳、清理、遠程命令執行、遠程執行組件,通過Flash軟體更新的方式植入
第一階段
Trojan.Heriplor
Shellcode下載執行,在一代中類似組件是通過組件Backdoor.Oldrea植入,二代中未知
第二階段
Trojan.Listrix
收集文件受害者主機文件信息,由組件Karagany.B下載執行
第二階段
Hacktool.Credrix
竊取系統帳戶的登錄憑證、瀏覽器頁面登錄憑證、遠程桌面登錄憑證以及郵件客戶端的登錄憑證。植入方式未知,可能由組件Backdoor.Dorshel遠程下載
第二階段或第三階段
Backdoor.Goodor
下載組件執行,通過PowerShell進入
第三階段
Trojan.Phisherly
模板注入,竊取共享文件登錄憑證,通過郵件投遞的方式感染
第二階段或第三階段
Screenutil
屏幕工具,截屏管理等功能,植入方式未知,可能通過Karagany.B組件植入
第二階段
上表中,第一階段投放表示黑客通過各種攻擊手段向受害者投放的第一個可執行組件,主要用於下載第二階段的組件執行以及執行一些必要操作;而第二階段的組件是由第一階段的組件下載執行的,主要以收集情報為主;第三階段可能在已有情報的基礎上對目標下放特定組件,一則可能用於進一步的信息竊取,二則用於掃描受害者主機的環境,這個階段的樣本並不完整,比如缺少 OPC/SCADA 掃描組件等。
3.5.3 控制命令伺服器
184.154.150.66
103.41.177.69
37.1.202.26
註:上表中的IP雖然曾經被用於Dragonfly2.0惡意代碼,但是不排除現在已被用作其他用途。
3.6 BlackEnergy
3.6.1 簡介
BlackEnergy是著名的黑客Cr4sh創造的。在2007年,他聲稱不再開發這款木馬,並且以$700左右賣出原始碼(流通在俄羅斯的地下網絡)。最初,它被設計為一個DDos攻擊工具,主要用於建立殭屍網絡,對定向的目標實施DDos攻擊,源碼賣出後,新的開發者為其開發了各種功能的插件,以滿足各種攻擊需求。BlackEnergy被不同黑客用於各自的用途,有的黑客用它發送垃圾郵件,有的黑客用來盜取銀行憑證,但是,在2008年「俄格衝突」期間,該工具被用來對喬治亞實施網絡攻擊,自此BlackEnergy開始轉向攻擊政治目標。在2014年夏季, BlackEnergy頻繁對烏克蘭政府及企事業單位發起攻擊,通過分析發現它有一款支持對ICS監測控制和數據採集類的插件。這顯示出BlackEnergy還存在的一些特別的能力,不僅僅局限於DDOS攻擊。
在2015年烏克蘭電力系統遭到攻擊後,啟明星辰ADLab實驗室對此次攻擊的惡意代碼進行了深度的分析,並發布了兩篇分析報告《啟明星辰ADLab:烏克蘭電力系統惡意破壞組件分析》和《啟明星辰ADLab:烏克蘭電力系統攻擊過程深度分析》。
烏克蘭的ICS,能源,政府和媒體以及全球的ICS/SCADA公司和能源公司。
2015年11月22日凌晨,克裡米亞遭烏克蘭斷電,近200萬人受影響。2015年12月23日,烏克蘭電力網絡受到黑客攻擊,導致伊萬諾-弗蘭科夫斯克州22.5萬民眾失去電力供應長達6小時。
3.6.2 攻擊原理
經過數年的發展,BlackEnergy逐漸加入了Rootkit技術、插件支持、遠程代碼執行、數據採集等功能,已能夠根據攻擊目的和對象,由黑客來選擇特製插件進行APT攻擊。此外,黑客又對它進一步升級,包括支持代理伺服器,繞過用戶帳戶認證(UAC)技術,運行時動態解密代碼以逃避安全防護軟體的檢測,以及針對64位Windows系統的籤名驅動等等。
它的攻擊插件和功能如下表格所示:
Dll名稱
功能
fs.dll
文件系統操作
si.dll
系統信息,「BlackEnergy Lite」
jn.dll
寄生蟲
ki.dll
按鍵記錄
ps.dll
密碼竊取者
ss.dll
截圖
vs.dll
網絡發現,遠程執行
tv.dll
團隊查看器
rd.dll
簡單的偽「遠程桌面」
up.dll
更新惡意軟體
dc.dll
列出Windows帳戶
bs.dll
查詢系統硬體,BIOS和Windows信息
dstr.dll
銷毀系統
scan.dll
網絡掃描
2015年12月23日,烏克蘭電力網絡受到黑客攻擊。網絡安全專家指出,此次烏克蘭電網攻擊的黑客可能是經驗豐富的俄羅斯黑客集團。美國的iSight Parterns認為盤踞於莫斯科的Sandworm(全球最危險四大黑客組織之一,這個組織的名字由經典科幻小說《沙丘》而來;別名:Electrum、Iridium;主要攻擊目標:北約、烏克蘭,以及一些相關人士)。不過,在同一時期內有多個俄羅斯黑客團體針對烏克蘭與西方世界發起攻擊; Cyberberkut(「CyberBerkut」是在「金雕」(Berkut)特種部隊解散後出現的組織,其成員身份不明,保持匿名行動。該組織將自己定位為「幫助烏克蘭維持獨立、阻止西方保護新納粹政府與軍事入侵企圖」的黑客組織。)有可能就是攻擊者之一,Sandworm此前曾經宣稱為German媒體與NATO站點遭遇的攻擊事件負責。
此次攻擊事件是由黑客通過魚叉攻擊將包含惡意代碼的XLS文件通過郵件的方式推送給電力部門有關人員,並通過設置業務相關的郵件標題誘導被攻擊者打開XLS文件。當XLS文件被打開後,惡意代碼就會把BlackEnergy下載到目標主機並執行,隨後BlackEnergy釋放killdisk(硬碟數據擦擦)插件,導致電網SCADA主機系統崩潰,造成電網故障。
killdisk惡意代碼會破壞系統連接所有硬碟數據,其手法是遍歷所有硬碟設備PhysicalDrive%Num%(Num從0到10)並且直接向硬碟前256個扇區寫零,相關代碼如圖3-17所示。
圖3-17 killdisk模塊破壞硬碟代碼
遍歷進程,結束sec_service.exe並刪除sec_sercice服務,向sec_service.exe中寫入隨機數據。進程sec_service.exe為工業串口轉換伺服器,虛擬串口-網口轉換工具服務程序,這個進程被用於工業控制、或者ELTIMA系列乙太網控制器。通過執行shutdown命令關機,此時系統遭到嚴重破壞,關機之後已經無法重啟,導致電力系統無法恢復運行,致使烏克蘭出現大面積的斷電事件,關機代碼如圖3-18所示。
圖3-18 killdisk模塊關機代碼
3.6.3 相關IP及域名
5.149.254.114
5.9.32.230
31.210.111.154
88.198.25.92
146.0.74.7
188.40.8.72
cazino-game.com
darcks.parfumstudio.com
dive-null.net84.net
noname.street-info.com
sanjaga.esy.es
temich94.phpnet.us
註:上表中的IP和域名雖然曾經被用於BlackEnergy惡意代碼,但是不排除現在已被用作其他用途。
3.7 Industroyer
3.7.1 Industroyer背景介紹
2017年6月12日,一款針對電力變電站系統進行惡意攻擊的工控網絡攻擊武器 Industroyer 被ESET披露。隨後,啟明星辰ADLab立即對該惡意代碼進行深度分析,通過分析我們發現該攻擊武器可以直接控制斷路器,可導致變電站斷電。 Industroyer 惡意軟體目前支持四種工控協議:IEC 60870-5-101、IEC 60870-5-104、IEC 61850以及OLE for Process Control Data Access(簡稱OPC DA)。這些協議廣泛應用在電力調度、發電控制系統以及需要對電力進行控制行業,例如軌道交通、石油石化等重要基礎設施行業,尤其是 OPC 協議作為工控系統互通的通用接口更廣泛應用在各工控行業。可以看出,攻擊者對於工控系統尤其是電力系統相關的工控協議有著深厚的知識背景,並且具有目標工控環境下的各種工控設備,攻擊者需要這些設備來實現惡意代碼的編寫和測試工作。
與2015年襲擊烏克蘭電網最終導致2015年12月23日斷電的攻擊者使用的工具集(BlackEnergy、KillDisk、以及其他攻擊模塊)相比,這款惡意軟體的功能意義重大,它可以直接控制開關和斷路器,Industroyer 身後的黑客團隊無論從技術角度還是從對目標工控系統的研究深度都遠遠超過了2015年12月烏克蘭電網攻擊背後的黑客團隊。
通過對該批惡意軟體的編譯時間推測該惡意軟體曾被利用來攻擊烏克蘭的變電站導致2016年12月那次半個小時的烏克蘭停電事件。目前可以說 Industroyer 惡意軟體是繼 STUXNET、BLACKENERGY 2以及 HAVEX 之後第四款對針對工業控制系統進行攻擊的工控武器。
烏克蘭的ICS,能源,政府和媒體以及全球的ICS/SCADA公司和能源公司。
據推測2016年12月那次半個小時的烏克蘭停電事件是由Industroyer攻擊導致。
3.7.2 攻擊原理
Industroyer 惡意軟體是由一系列的攻擊模塊組成,目前公開的模塊就多達10多個。其中存在一個主後門模塊,它被用於連接C&C下載另外一批模塊執行,這些模塊分別為:實現 DLL Payload 模塊執行的加載器模塊、實現數據及痕跡清理的 haslo 模塊、實現IP埠掃描的 port 模塊以及實現西門子 SIPROTEC 設備 DoS 攻擊的 DoS 攻擊模塊。其中,DLL Payload 模塊包含實現 IEC 101 工控協議的 101.dll 模塊、實現 IEC 104 工控協議的 104.dll 模塊、實現 IEC 61850 協議的61850.dll/61850.exe 模塊以及實現 OPC DA 協議的 OPC.exe/OPCClientDemo.dll 模塊等。
通過主後門模塊程序,攻擊者可以對攻擊行為進行管理:安裝和控制其他組件,連接到遠程伺服器來接受指令,並返回信息給攻擊方。Industroyer有四個 payload 組件,用於直接獲取對於變電站開關和斷電器的控制。每個組件都針對了一種特定的通訊協議:IEC 60870-5-101, IEC 60870-5-104, IEC 61850 和 OLE(OPCDA)。Payload 會在目標映射網絡的階段工作,然後尋找並發出與特定工業控制設備配合使用的命令。
值得注意的是,Main Backdoor 與 C&C 通信的時候是通過內網中的一臺主機作為跳板連接到 C&C 上實施命令控制的,ESET 發現該模塊是通過 Tor 網絡實現與 C&C 的交互。因此根據目前所掌握的信息我們繪製了該惡意軟體大致工作流程如圖3-19所示。
圖3-19 Industryer 攻擊流程圖
從惡意軟體的攻擊流程中我們可以推測該黑客可能的攻擊路徑:首先黑客可以通過電子郵件、辦公網系統、外來運維終端、U盤等途徑成功入侵一臺主機(如:內網的10.15.1.69),並且在該主機聯網時下載必要的模塊執行比如 Tor 網絡客戶端或者代理服務模塊等作為後續攻擊的回連跳板,黑客接下來以該主機為跳板對系統區域網路進行探測掃描,當發現自己感興趣的目標(是否為104從站、OPC伺服器或者操作站等)後對其實施攻擊,一旦攻擊成功,黑客就將這臺可以連接外網的主機 IP 配置為攻擊模塊 Main Backdoor 的代理IP,下發到該主機中,這臺主機是可以直接與 RTUs 或者 PLCs 進行通信的,並且可以做直接的控制。
Main Backdoor模塊主要用於實現與攻擊者C&C通信,在收到控制命令數據後,它會對數據做一定處理,最後創建一個線程來處理黑客端發來的控制請求,如圖3-20所示。
圖3-20 控制命令處理關鍵代碼
其中,控制命令的第五個字節為控制碼,其值為0x1-0xB的整形值,控制命令的控制命令參數位於第16個字節的偏移之後。控制命令分發以及處理功能代碼如圖3-21所示。
圖3-21 控制命令分發關鍵代碼
其中,控制命令以及相應的功能說明如下表所示:
命令ID
功能
0
執行進程
1
在指定用戶帳戶下執行進程,帳戶憑證由攻擊者提供
2
從C&C伺服器下載文件
3
拷貝文件
4
執行shelll命令
5
在指定用戶帳戶下執行shell命令,帳戶憑證由攻擊者提供
6
退出
7
停止服務
8
在指定用戶帳戶下停止服務,帳戶憑證由攻擊者提供
9
在指定用戶帳戶下啟動服務,帳戶憑證由攻擊者提供
10
為服務替換「鏡像路徑」註冊表值
從控制功能上可以看出該後門模塊的主要任務是從C&C下載擴展模塊執行以及做遠程命令執行,並且提供了由帳戶憑證支持的權限控制。如果黑客獲取了管理員權限就可以將已安裝的後門升級到一個更高的權限版本,黑客可以選擇一個現有的、非關鍵的Windows服務,在註冊表中替換它的ImagePath鍵值為新後門的代碼路徑。
3.7.3 相關C&C
195.16.88.6
46.28.200.132
188.42.253.43
5.39.218.152
93.115.27.57
95.16.88.6
註:上表中的IP雖然曾經被用於Industroyer惡意代碼,但是不排除現在已被用作其他用途。
3.8 GreyEnergy
3.8.1 GreyEnergy簡介
2018年10月18日,ESET研究團隊稱發現一個新的APT組織GreyEnergy,且該APT組織是BlackEnergy的繼承者,因BlackEnergy在2015年引發烏克蘭大停電而名聲大噪,此後便銷聲匿跡,而GreyEnergy的活動記錄也同時出現,另外,2015年同期還出現了另一個組織TeleBots(可能是2017年策劃大規模NotPetya病毒的爆發的幕後黑手)。除了兩者幾乎同時出現之外, GreyEnergy在2016年使用的一種破壞性惡意軟體Moonraker Petya。顧名思義,它與NotPetya類似,雖然不太先進,但是這表明GreyEnergy和TeleBots之間的合作,或者至少是思想和代碼的交流。
ESET研究團隊認為BlackEnergy演變為兩個獨立的組織:TeleBots和GreyEnergy,它們給出了一個相似性關係圖,如圖3-22所示。
圖3-22 BlackEnergy和GreyEnergy及TeleBots關聯
GreyEnergy主要針對烏克蘭和波蘭的能源部門、交通部門等高價值目標,攻擊行為主要是網絡偵查(即間諜行為)。GreyEnergy與BlackEnergy具有很多相似之處,它也是採用模塊化結構,目前已經發現的模塊有:注入模塊、獲取系統信息模塊、文件管理模塊、屏幕截圖模塊、鍵盤記錄模塊、密碼和憑證竊取模塊、代理模塊、ssh隧道模塊等,但是至今仍未發現專門針對ICS的惡意軟體模塊。
據目前所獲情報,此次攻擊主要對烏克蘭和波蘭的能源部門及交通部門進行滲透攻擊,以期獲取相關數據和情報。
可能導致烏克蘭和波蘭的能源相關重要部門的信息洩露,內部敏感信息、相關技術資料內部網絡架構等重要信息被竊取。
3.8.2 GreyEnergy攻擊原理
GreyEnergy黑客組織一直對運行SCADA軟體和伺服器的工業控制系統的工作站進行情報收集,它主要通過兩種方式進行傳播,利用魚叉式釣魚攻擊向目標投放帶有惡意附件的郵件;和從網際網路訪問受感染的Web伺服器部署後門。
附件中的word文檔被打開後,會看到左上角有一個宏安全警告,文檔正文是用烏克蘭語編寫的,在文檔第二頁的最頂端用紅色字體突出顯示一段文字,翻譯成中文的意思是:「頁面是交互的,你需要啟用宏!」,以此誘騙「讀者」啟用宏,然後執行惡意代碼,文檔內容如圖3-23所示。
圖3-23 惡意Word文檔內容
一旦宏被開啟,便會觸發宏惡意代碼,以下函數會依次執行:
Document_Open() -> Test() -> HashCheck()
最後,由「HashCheck」函數下載一個名為GreyEnergy mini(也被稱為FELIXROOT)的不需要管理員權限執行的輕量級後門,與下載有關的字符串均被Base64編碼,經過解碼後得到下載連結為:http://pbank.co.ua/favicon.ico,下載後的文件被命名為「TVUNSS3.exe」並保存到臨時目錄中,宏代碼如圖3-24所示。
圖3-24 下載GreyEnergy mini的宏代碼
GreyEnergy mini部署成功後,便使用Nmap和Mimikatz等工具繪製網絡地圖並收集管理憑證。收集到的憑證後,用該憑證部署需要管理員權限執行的主要惡意代碼GreyEnergy。除了nmap和mimikatz外,GreyEnergy還使用了PsExec和WinExe,用於橫向移動。GreyEnergy有兩種部署方式,僅內存模式運行(不需要持久化)和使用DLL服務持久化(在系統重新啟動時存活)運行,GreyEnergy以服務運行的服務入口偽代碼如圖3-25所示。
圖3-25 ServiceMain核心函數
迄今為止,GreyEnergy惡意軟體已經被發現的所有模塊都不會影響ICS,但其攻擊者曾使用磁碟擦除組件(KillDisk)來破壞攻擊目標的系統,已被發現的模塊和功能如下:
模塊名稱
功能
remoteprocessexec
將PE二進位文件注入遠程進程
info
收集有關系統和事件日誌的信息
file
執行文件系統操作
sshot
抓取截圖
keylogger
鍵盤記錄
passwords
收集各種應用程式保存的密碼
mimikatz
使用Mimikatz竊取Windows憑據
plinkPlink
使用Plink創建SSH隧道
3proxy
使用3proxy創建代理
3.8.3 涉事伺服器匯總
109.200.202.7
193.105.134.68
163.172.7.195
163.172.7.196
5.149.248.77
31.148.220.112
62.210.77.169
85.25.211.10
138.201.198.164
124.217.254.55
46.249.49.231
37.59.14.94
213.239.202.149
88.198.13.116
217.12.202.111
176.31.116.140
185.217.0.121
178.150.0.200
176.121.10.137
178.255.40.194
193.105.134.56
94.130.88.50
185.216.33.126
82.118.236.23
註:上表中的IP有一部分來自Tor網絡,可能會發生誤報。
3.9 VPNFilter
3.9.1 簡介
VPNFilter惡意代碼是由思科Talos團隊首次公開,因其危害極其嚴重,Talos並未完成全部分析。啟明星辰ADLab對其進一步分析,並發布了《【深度分析】VPNFilter:危及全球工控設備和辦公網絡的物聯網高級威脅》報告。VPNFilter惡意代碼旨在入侵物聯網設備(路由器、網絡存儲設備等)從事可能由國家發起的全球性的高級惡意軟體攻擊。截止2018年5月23日,至少有54個國家遭入侵,已感染約50萬臺路由器。由於其核心模塊文件為VPNFilter,故該惡意代碼也被命名為「VPNFilter」。FBI稱此次攻擊與俄羅斯政府支持的黑客組織Fancy Bear有關。Fancy Bear又稱作奇幻熊、APT28、Sofacy Group、Pawn Storm、Sednit。
自2007年以來,Fancy Bear一直在進行網絡間諜活動,入侵過北約、歐巴馬白宮、法國電視臺、世界反興奮劑機構和無數非政府組織以及歐洲、中亞和高加索地區的軍事和民間機構,是一個臭名昭著的黑客組織。
在2018年5月8日出現大規模的以烏克蘭為主要目標的攻擊活動,並且在5月17日烏克蘭的受感染設備出現大幅度增加,這些受感染設備均受控於C&C 46.151.209.33, 看起來此次攻擊目標似乎瞄準烏克蘭。
烏克蘭電力系統曾經受到過兩次黑客攻擊,並且導致了停電事故。
3.9.2 攻擊原理
攻擊者利用VPNFilter來控制並監視處於工控網絡、辦公環境中的網絡設備(包含路由器、網關、防火牆以及其他的物聯網設備),其支持工控網絡情報收集、重要敏感的流量(登錄憑證、Modbus SCADA設備流量)截取、流量篡改、定向JS注入、設備破壞性攻擊等功能。
這次的攻擊活動以物聯網入口,利用大量存在漏洞的物聯網設備作為載體進行撒網式攻擊,並且以驚人的速度感染了至少50萬臺設備,其中包含有華為、中興、華碩、Dlink、Ubiquiti、UPVEL、Linksys、MikroTik、NETGEAR 和 TP-Link等設備。同樣,此次惡意代碼與2015年攻擊烏克蘭電網的BlackEnergy使用相同的變形RC4算法對關鍵信息進行加密;並且與之類似的是同樣也有對主機設備進行重要數據擦除與重啟的連環動作以達到讓設備無法啟動的目的(同時也提高了取證的難度)。
VPNFilter的攻擊流程圖如圖3-26所示。
圖3-26 VPNFilter攻擊流程圖
VPNFilter的攻擊共分3個階段:
第一階段:作為dropper獲得感染設備的持續化訪問權限,為第二階段打開入口,該階段的特點是採用了很強的C2隱藏和安全對抗行為。
Loader模塊(文件名為msvf)從多種渠道獲取第二階段的惡意代碼,然後執行所下載惡意代碼,最後退出。下載的第二階段的惡意代碼被保存為文件」/var/vpnfilter」。關鍵代碼如圖3-27所示。
圖3-27 執行第二階段代碼
第二階段,作為信息收集和加載模塊功能的載體,能對設備文件系統,設備常規信息收集,並提供命令執行能力和設備管理能力,並且在某些平臺中實現了自毀,以達到隱匿蹤跡的目的。
控制命令的請求有兩種方式,一種是通過socks5代理方式,一種是通過Tor網絡請求。通過socks5代理請求的C&C地址如下(在新版本中91.121.109.209被移除):
91.121.109.209
217.12.202.40
94.242.222.68
通過Tor網絡請求的地址如下(在新版本中」zuh3vcyskd4gipkm.onion/bin32/update.php」被移除):
6b57dcnonk2edf5a.onion/bin32/update.php
zuh3vcyskd4gipkm.onion/bin32/update.php
tljmmy4vmkqbdof4.onion/bin32/update.php
這兩種方式的請求都是通過ssl協議進行的。請求完成後,惡意代碼解析相應數據並且提取出控制命令和控制參數信息。其實現的遠程控制命令和控制參數信息如下:
控制命令
控制參數
kill
通過擦除設備mtdblock0的前5000個字節達到破壞設備的目的,隨後重啟讓設備變磚。
exec
遠程bash命令執行。
tor
設置Tor標誌,以確定在通信過程中進行模式切換(採用Tor還是其他)
cpy
文件拷貝,將遠程命令中的文件拷貝到工作目錄中,文件名類似於:file_%d_%d_.bin,後面兩個%d會被當前時間值的高低雙字節值所替代。
seturl
遠程配置黑客在Tor網絡中配置的C&C伺服器地址。
proxy
配置socks5代理伺服器的IP位址。
port
配置socks5代理伺服器的埠。
delay
設置延遲時間。
reboot
重啟設備,如果控制參數為all(所以設備)或者為當前build名」pPRXi686QNAPX86」( x86的設備)。
download
根據控制參數將一個指定的遠程文件下載到指定的目錄中。
第三階段,作為第二階段的惡意功能模塊下發,為第二階段提供了更有目的性的攻擊行為能力。目前已經發現大量的組件,其中包含一個為MIPS平臺的流量嗅探器、一個用於破壞設備的dstr模塊、一個用於進行廣泛HTTP流量嗅探和監控的ssler模塊,還有一些輔助性模塊如:Tor client、mikrotik.o、torrc、ip_tables.ko、iptable_filter.ko、iptable_nat.ko等。輔助性模塊如Tor客戶端用於支持第二階段的Tor網絡通信。Tor工程提示如圖3-28所示。
圖3-28 Tor工程提示信息
由於其為標準的Tor客戶端,不具備惡意功能,因此我們僅僅分析核心的三個模塊。
(1)MIPS平臺的TCP流量嗅探模塊
該模塊為MIPS平臺,其主要通過從原始數據包中過濾出TCP/IP數據包,並且通過對TCP的payload數據進行過濾,檢索其中的敏感信息存儲起來。
該流量嗅探模塊通過第二階段惡意代碼遠程下載並啟動執行,其啟動運行參數如下:
{模塊名} DstDir Unkownagr ModbusServer
其中第一個參數為嗅探數據的存放路徑,第二個參數未使用,第三個參數為modbus server的IP位址。
該模塊啟動後並沒有做過多額外的工作,初始化環境後直接調用流量截取函數進行流量嗅探,關鍵代碼如圖3-29所示。
圖3-29 進行流量嗅探函數
(2)ssler HTTP嗅探與監控模塊
該模塊主要針對HTTP層實施更加豐富和強大的處理,其提供有HTTP流量重定向、HTTP流量監控與截取、流量劫持與篡改、定向注入JS以進行精準攻擊等功能。其由第二階段的惡意模塊啟動運行,運行參數說明如下:
參數
功能
dst:ipstr
指定一個可用於流量監控的目的地址或者CIDR 地址範圍。
src:ipstr
指定一個可用於流量監控的源地址或者CIDR 地址範圍。
dump:domain
dump指定主機域名的所有HTTP請求數據到文件reps_*.bin文件中。
site:domain
指定一個網站的域名,當有客戶端訪問該網站時,向其中響應的頁面數據中注入JavaScript。
hook:javascript url
用於指定注入JavaScript中js文件url。
(3)設備破壞模塊(Destroy module)
由於老版本的第二階段模塊單純的只是簡單擦除設備mtdblock0的前5000個字節以破壞設備,有很大機率會失敗,因此新版本的第二階段模塊將kill指令的破壞性功能取消,並採用插件模塊的方式來實現。該插件模塊不僅改進了破壞設備功能,而且還提供了痕跡清理的功能。其目的不僅讓設備無法恢復,而且即便恢復了也無法取證獲取惡意代碼相關痕跡。
模塊啟動後首先刪除自身文件,然後強制關閉所有包含"vpnfilter"、"security"、"tor"關鍵字的進程。關鍵代碼如圖3-30所示。
圖3-30 強制關閉包含關鍵詞的進程
接下來清理掉所有痕跡文件,其中包含有證書文件、Tor客戶端相關文件、版本信息文件等。該模塊還會遍歷mtd分區,並強制擦除整個FLASH。最後採用 "rm -rf /*" 強制遞歸刪除文件系統上的所有文件,並重啟設備,刪除文件代碼如圖3-31所示。
圖3-31 刪除所有文件代碼
3.9.3 涉事伺服器匯總
91.121.109.209
217.12.202.40
94.242.222.68
82.118.242.124
46.151.209.33
217.79.179.14
91.214.203.144
95.211.198.231
195.154.180.60
5.149.250.54
91.200.13.76
94.185.80.82
62.210.180.229
23.111.177.114
photobucket.com
toknowall.com
zuh3vcyskd4gipkm.onion
6b57dcnonk2edf5a.onion
tljmmy4vmkqbdof4.onion
4seiwn2ur4f65zo4.onion
zm3lznxn27wtzkwa.onion
註:上表中的IP和域名雖然曾經被用於VPNFilter惡意代碼,但是不排除現在已被用作其他用途。
3.10 Triton
3.10.1 Triton簡介
2017年11月中旬,Dragos Inc.團隊發現了針對ICS量身定做的惡意軟體,並將此惡意軟體命名為TRISIS(又被稱為 Triton 和 HatMan),同年12月, FireEye發布了Triton的分析報告。Triton是首款針對安全儀表系統進行攻擊的惡意軟體,Triton惡意軟體旨在針對施耐德電氣的工業環境中使用的Triconex安全儀表系統(SIS)控制器,共採用5種不同開發語言構建,僅能在其瞄準的工業設備上執行。TRIRON惡意代碼可對SIS系統邏輯進行重編輯,使SIS系統產生意外動作,對正常生產活動造成影響;能使SIS系統失效,在發生安全隱患或安全風險時無法及時實行和啟動安全保護機制,從而對生產活動造成影響;還可以對DCS系統實施攻擊,並通過SIS系統與DCS系統的聯合作用,對工業設備、生產活動以及人員健康造成破壞。
2018年5月4日,Dragos公司稱Triton背後的黑客組織Xenotime已經擴大了攻擊範圍,除了攻擊施耐德電氣的 Triconex 以外還針對其它的系統。
Xenotime黑客組織可能自2014年開始活躍,於2017年成功攻擊中東一家石油天然氣工廠,致其工廠停運。工業網絡安全和威脅情報公司 CyberX 的研究人員曾認為,Triton的幕後黑手是伊朗,但Dragos並未提供任何有能夠證明此猜測的證據信息。Dragos 公司指出,尚未發現 Xenotime 與其它已知黑客組織存在關聯的線索。
2018年10月23日,FireEye稱他們發現了Triton惡意軟體與位於莫斯科的俄羅斯政府研究機構中央化學與機械科學研究所(CNIIHM)之間的聯繫:樣本中語言西裡爾文和時區與俄羅斯相關;通過分析測試文件PDB路徑的字符串,發現一段特殊字符串可能是俄羅斯信息安全社區活躍用戶(從2011年開始活躍)的暱稱,結合被廢棄的社交媒體資料,推測出這個人是CNIIHM的教授,該教授位於莫斯科 Nagatino-Sadovniki 區的 Nagatinskaya 街附近;該研究所註冊的一個IP位址(87.245.143.140)參與了Triton攻擊。此外,值得一提的是CNIIHM具備開發Triton惡意軟體的能力,它擁有專門研究關鍵基礎設施保護和武器及軍事裝備開發的研究部門,並與廣泛的其他組織合作,包括計算機科學,電氣工程,國防系統和信息技術。
至少針對一個中東地區的組織。其他使用施耐德電氣的Triconex安全儀表系統(SIS)控制器的能源單位也面臨被攻擊的風險,據不完全統計,該型號的控制器被全球1.8萬家工廠使用,其中包含核相關設施。
2017年成功攻擊中東一家石油天然氣工廠,使其停止運營。
3.10.2 攻擊原理
Triton是少數幾個可以直接操控工業控制系統的惡意代碼,它採用Python語言開發,並用打包工具Py2Exe進行打包,然後對特定目標展開攻擊,使用Python開發的一個好處就是開發和調試都極其方便,大大的縮減了攻擊者的開發周期。Triton的攻擊流程大致如圖3-32所示。
圖3-32 Triton攻擊流程圖
通過上圖可知,Triton包括兩部分:基於Windows平臺的Trilog.exe(Python腳本程序),以及兩個惡意代碼inject.bin、imain.bin(打包到Trilog.exe中)。Trilog.exe是Triconex應用軟體中用於記錄日誌的程序。Triton病毒將該程序感染,用來與Triconex控制器通信。一旦檢測控制器在線狀態,就將兩個惡意代碼inject.bin以及imain.bin注入到Triconex控制器中。
樣本名稱
功能描述
trilog.exe
主要可執行文件利用libraries.zip
library.zip
用於與Triconex控制器交互的通信庫。
通過上表可知:library.zip是與Triconex控制器進行交互的通信的庫,其中主要依賴於TsHi.pyc、TsBase.pyc、TsLow.pyc、TS_cnames.pyc、sh.pyc等模塊,它們提供了強大的遠程控制功能,用rar打開該文件,文件基本信息如圖3-33所示。
圖3-33 用rar打開library.zip文件
其中,TS_cnames.pyc是一個常量定位文件,包含TriStation協議功能和響應代碼以及關鍵開關和控制程序狀態的命名查找常量,部分內容如圖3-24所示。
圖3-34部分控制狀態常量數據
TsBase.pyc文件中的TsBase類提供了啟\停程序,上傳\下載程序,取消下載,版本更新執行漏洞利用等功能,代碼如圖3-25所示。
圖3-35 TsBase類中的函數
TsHi.pyc文件用來實現對控制器攻擊的全部過程,主要包含讀\寫函數或程序,解析ProjectInfo信息,獲取ProjectInfo,獲取ProgramTable等功能,相關函數名稱如圖3-36所示。
圖3-36 TsHi.pyc模塊的函數
TsLow.pyc文件實現了TriStation底層網絡通信,其中以udp_ 開頭的函數實現了基礎的UDP協議,以tcm_ 和tc_ 開頭的函數實現了與Triconex安全儀表控制系統控制器的報文數據封裝,tcm_ 負責最外一層數據封裝,tc_ 負責 tcm_ 結構中的數據欄位的封裝。其函數樹形圖如圖3-37所示。
圖3-37 TsLow.pyc模塊中的函數
TsLow.pyc文件的功能包括探測運行Tritation協議的主機,連接主機,數據發送,數據接收,列印錯誤信息等,其中「detect_ip」函數使用1502埠(TriStation協議運行埠為1502)發送UDP廣播,按照TriStation協議發送ping數據,以此判斷目標設備是否在線。在收到目標設備的應答後,先保存目前設備的IP位址,然後再向目標設備發送close數據包,以確保交互成功,代碼如圖3-38所示。
3-38 detect_ip函數實現
除了上面的與TriStation的通信框架外,Triton還包含一個Script_test.pyc腳本,在Script_test.pyc中調用動態加載inject.bin和imain.bin,它們被作為載荷文件打包在exe文件中,此腳本使用TriStation私有網絡協議連接到Tricon,並注入載荷,相關代碼如圖3-39所示。
圖3-39 加載載荷代碼
3.10.3 IOC
我們在對Triton進行逆向後沒有發現其含有與網際網路通信的IP和域名,下表內容相關攻擊樣本的HASH:
文件名
MD5
trilog.exe
6c39c3f4a08d3d78f2eb973a94bd7718
imain.bin
437f135ba179959a580412e564d3107f
inject.bin
0544d425c7555dc4e9d76b571f31f500
library.zip
0face841f7b2953e7c29c064d6886523
通過對十種工控武器的分析可以看出,工控攻擊產生的危害輕則導致工業控制系統內部關鍵信息洩露(如網絡圖譜圖、核心部件的通風散熱、建築關鍵承重點等),重則可能造成重大的安全事故(人員傷亡,環境破壞)。工控安全不但關係著安全生產,也關係到國家的安全和穩定,為避免被網絡工控武器的襲擊,我們提供以下幾條簡單建議:
不要隨意打開郵件中的連結和附件;
刪除或重命名系統默認帳戶;
USB存儲介質不要在連接網際網路的電腦和內網中的電腦之間交叉使用;
安裝實時監控的防病毒軟體;
定期修改密碼,不要使用弱口令;
定期給工控設備和電腦進行升級和打補丁;
定期進行安全檢查,發現潛在的威脅和漏洞;
對控制系統,如非必要,不要連接網際網路,避免直接暴露在網際網路受到攻擊;
分離工業控制系統的開發、測試和生產環境;
通過工業防火牆、網閘等防護設備對工業控制網絡安全區域之間進行邏輯隔離安全防護;
原則上嚴格禁止工業控制系統面向網際網路開通HTTP、FTP、Telnet等高風險通用網絡服務;
在工業控制網絡部署網絡安全監測設備,及時發現、報告並處理網絡攻擊或異常行為。