震網病毒又名Stuxnet病毒,是一個席卷全球工業(yè)界的病毒。震網(Stuxnet)病毒于2010年6月首次被檢測出來,是第一個專門定向攻擊真實世界中基礎(能源)設施的“蠕蟲”病毒,比如核電站,水壩,國家電網?;ヂ?lián)網安全專家對此表示擔心。作為世界上首個網絡“超級破壞性武器”,Stuxnet的計算機病毒已經感染了全球超過 45000個網絡,伊朗遭到的攻擊最為嚴重,60%的個人電腦感染了這種病毒。計算機安防專家認為,該病毒是有史以來最高端的“蠕蟲”病毒。蠕蟲是一種典型的計算機病毒,它能自我復制,并將副本通過網絡傳輸,任何一臺個人電腦只要和染毒電腦相連,就會被感染。
文章來源:安天cert
1.小序
2010年7月,“震網”(Stuxnet)蠕蟲攻擊事件浮出水面,引發(fā)了國際主流安全廠商和安全研究者的全面關注,卡巴斯基、賽門鐵克、安天等安全廠商,Ralph Langne等著名安全研究者,以及多國的應急組織和研究機構,都投入到了全面的分析接力中。最終使這場攻擊的大量細節(jié)被呈現(xiàn)出來:這是一起經過長期規(guī)劃準備和入侵潛伏作業(yè);借助高度復雜的惡意代碼和多個零日漏洞作為攻擊武器;以鈾離心機為攻擊目標;以造成超壓導致離心機批量損壞和改變離心機轉數(shù)導致鈾無法滿足武器要求為致效機理,以阻斷伊朗核武器進程為目的的攻擊。
9年的時間過去了,這一安全事件依然在安天的研究視野中。安天從2010年7月15日展開對震網的分析工作,搭建了模擬環(huán)境,在9月27日發(fā)布了《對Stuxnet蠕蟲攻擊工業(yè)控制系統(tǒng)事件的綜合分析報告》[1],在后續(xù)形成了對其傳播機理進行分析的《對Stuxnet蠕蟲的后續(xù)分析報告》[2],以及分析其對工業(yè)生產過程作用機理的《WinCC后發(fā)生了什么》[3]系列分析報告。
安天提出了震網與毒曲(Duqu)同源的猜測,并先后發(fā)表了兩篇驗證性報告,并啟動了對火焰(Flame)惡意代碼的馬拉松式的模塊分析。在工作推進中,安天逐步認識到震網、毒曲、高斯(Gauss)、火焰,這些高度復雜的惡意代碼間存在著同樣的背景聯(lián)系。這些研究工作對安天后續(xù)展開對方程式組織(Equation)的深度分析起到了非常重要的作用。
由于歷史原因,其中部分研究文獻并未公開,而一些分析進展是碎片化的,雖然在我們的對外技術演講中有所提及,但并未作為文獻發(fā)布。這是安天編寫這篇文獻的原因之一。震網的整體運行框架、USB擺渡機理和傳播失控分析,以及圖解Tilded框架與Flamer框架的關聯(lián),將震網、火焰、毒曲、高斯、Fanny、Flowershop之間的關系進行串接的相關章節(jié),是對這些成果的整理。
今天看來,在前期分析震網系列事件的過程中,我們缺少一種真正意義上的框架化方法。依然更多的是從自身習慣的反惡意代碼視角來看待整個攻擊過程。盡管我們給震網這樣的復雜攻擊提出了一個A2PT(即高級的高級可持續(xù)性威脅)的命名,但分析中始終缺乏作業(yè)到作戰(zhàn)視角的思考。在相關專家的指導下,我們對網空博弈、敵情想定有了新的體悟,逐漸從威脅框架視角進行方法論切換,實現(xiàn)自我能力完善。也希望通過威脅框架這一視角來解讀“震網”這場看起來依然高度復雜的“昨天的戰(zhàn)爭”。
本文也詳細解讀了一個值得思考的問題,震網作為一種沒有感染屬性的蠕蟲,為何會有大量的樣本存在。這個原理我們在早期的分析工作中已經發(fā)現(xiàn),即震網的載荷投放程序,在每落地一臺機器時,會有一個內嵌配置數(shù)據的自我更新,從而導致震網的每次落地形成的主執(zhí)行體的HASH均不同,同時其實際攻擊載荷多數(shù)均被包裹在主DLL之中,并不落地。而震網的相關域名則是在其已經達成其主體作業(yè)效果的情況下才被曝光的。這從某種意義上也昭示了面對更高級、隱蔽的攻擊行動,以HASH、域名等為主體的威脅情報實際上早就面對著無效的危機。
圖 1-1 震網事件時間軸
2.為什么是震網
在信息技術發(fā)展歷史上,出現(xiàn)過大量典型的安全事件,但為什么“震網”被視為具有威脅里程碑意義?震網被認為是第一個以現(xiàn)實世界中的關鍵工業(yè)基礎設施為目標的惡意代碼,并達到了預設的攻擊目標,或者說,這是第一個“網絡空間”意義上的重大攻擊事件,而非傳統(tǒng)的網絡攻擊事件。盡管此前也存在著一些通過信息攻擊手段影響工業(yè)設施的傳聞,但基本都缺乏技術層面的實證支撐。
從安天此前提出的觀點來看,震網的里程碑意義并不是在于其相對其他簡單的網絡攻擊的復雜性和高級性,而在于其證實了通過網絡空間手段進行攻擊,可以達成與傳統(tǒng)物理空間攻擊(甚至是火力打擊)的等效性。在2016年的報告中,安天研究人員將上世紀70、80年代的“凋謝利刃與巴比倫行動”(在1977年~1981年間發(fā)生的以、美聯(lián)合,在兩伊戰(zhàn)爭期間針對伊拉克核反應堆進行軍事打擊的事件)與震網事件進行對比分析看出,通過大量復雜的軍事情報和成本投入才能達成的物理攻擊效果僅通過網絡空間作業(yè)就可以達成,而且成本也大大降低。正如美國陸軍參謀長前高級顧問Maren Leed所講的——網絡武器可以有許多適應環(huán)境的屬性,從生命周期的成本角度看,它們比其他的武器系統(tǒng)更為優(yōu)越[4]。
震網系列攻擊也全面昭示了工業(yè)基礎設施可能被全面入侵滲透乃至完成戰(zhàn)場預制的風險,震網的成功是建立在火焰、毒曲惡意代碼的長期運行、信息采集的基礎上。在攻擊伊朗鈾離心設施之前,攻擊方已經入侵滲透了伊朗的多家主要國防工業(yè)和基礎工業(yè)廠商,包括設備生產商、供應商、軟件開發(fā)商等,表2-2是多個企業(yè)遭遇入侵的事件。
表 2-2 伊朗基礎工業(yè)體系遭遇滲透的情況
3.震網整體結構和運行邏輯
震網的結構非常復雜。其中又經歷了從0.5到1.x的版本更迭,其破壞機理從以干擾離心機閥門、造成超壓導致離心機批量損壞調整為修改離心機轉數(shù)。同時其開發(fā)框架也發(fā)生了變化。我們以流行更為廣泛的1.x版本為對象,進行整體結構和運行邏輯梳理。震網的核心是僅在內存中解密存在的DLL文件(以下簡稱主DLL文件)。DLL文件包含32種不同的導出函數(shù)以及15種不同的資源,每一個導出函數(shù)都有不同的控制功能,其中主要涉及導出函數(shù)15(初始入口點)、導出函數(shù)16(安裝)、導出函數(shù)32(感染連接的移動設備,啟動RPC服務)、導出函數(shù)2(鉤掛API以感染Step7工程文件)等;每個資源也分別執(zhí)行不同的功能,主要涉及資源250、資源201、資源242等;導出函數(shù)正是利用這些不同功能的資源來控制震網執(zhí)行不同的分支操作。
Stuxnet Dropper的資源在安裝執(zhí)行過程中會釋放載荷,震網落地文件如表3-2所示。
按資源類型,對照其編譯時間戳,獲得PE類型資源版本迭代,如圖3-1所示,由圖能夠看出資源202、210都存在3個可能的版本,資源208存在2個可能的版本,其余各資源都僅有1個版本。另外資源207、231僅存在少數(shù)樣本,在后續(xù)版本的Stuxnet中已經刪除。
圖 3-1 PE類型資源版本迭代
安天CERT基于對震網樣本集及已有數(shù)據的分析,繪制了震網整體運行框架,它包含傳播和安裝執(zhí)行。
圖 3-2 震網整體運行框架圖
震網的傳播主要包括兩種方式,一種是移動設備感染,利用LNK漏洞或者通過autorun.inf文件進行傳播;另一種是網絡傳播,涉及WinCC數(shù)據庫感染、網絡共享傳播、打印機后臺處理程序漏洞傳播、Windows服務器漏洞傳播等多種方式。這兩種傳播方式雖然不同,但最終都會釋放主DLL文件,進行后續(xù)的安裝和執(zhí)行操作。震網感染目標系統(tǒng)后,會啟動RPC服務器監(jiān)聽網絡,將網絡上其他感染計算機都連接到RPC服務器,并查詢遠程計算機安裝的震網版本,以執(zhí)行對等通信和更新,如果遠程計算機上的震網版本較新,則本地計算機就會請求新版本并自我更新,如果遠程機器上的震網版本較舊,則本地計算機上的震網就將自身副本發(fā)送給遠程機器。這樣,震網可以在任何感染機器上更新并最終傳播到所有機器。
在安裝執(zhí)行中,傳播釋放的主DLL文件首次加載時調用導出函數(shù)15執(zhí)行一系列檢查工作,包括檢查配置數(shù)據是否為最新、檢查操作系統(tǒng)是否為64位、檢查操作系統(tǒng)版本是否匹配,如果不符合其安裝執(zhí)行要求,則退出;此外,檢查目標系統(tǒng)是否具備管理員權限,如果不具備,則利用資源250中兩個當時的零日漏洞進行提權以獲取最高權限;之后,檢查目標系統(tǒng)安裝了哪些反病毒軟件以及哪個進程適合注入;導出函數(shù)15完成上述規(guī)定的檢查后,震網就會調用導出函數(shù)16。
導出函數(shù)16是震網的主安裝程序。首先,檢查目標系統(tǒng)配置是否匹配、注冊表鍵值是否為特定值、當前時間是否小于終止時間,如果不符合這些安裝執(zhí)行要求,則退出;繼續(xù)執(zhí)行,震網通過創(chuàng)建全局互斥量與不同的組件通信,并再次檢查目標系統(tǒng)當前時間,確保只在小于終止時間的目標系統(tǒng)上執(zhí)行;從磁盤中讀取其加密版本,解密、加載到內存中,從新加載的文件中調用導出函數(shù)6,獲取自身配置數(shù)據的版本信息,如果與磁盤文件的版本相同,則繼續(xù)執(zhí)行;震網提取、解密資源201和資源242,并將兩個驅動文件寫入磁盤,分別用于持久化和隱藏惡意文件,為了規(guī)避檢測,震網會修改這兩個文件的時間以匹配目標系統(tǒng)目錄下的其他文件時間;創(chuàng)建rootkit服務和注冊表,以實現(xiàn)震網的持久化,并再次創(chuàng)建全局互斥量;為了繼續(xù)安裝和傳播,震網將控制權傳遞給其他導出函數(shù),一種是將主DLL文件注入service.exe進程,并調用導出函數(shù)32,以感染新連接的移動設備,以及啟動RPC服務器,另一種是將主DLL文件注入Step7進程,并調用導出函數(shù)2,以感染所有指定的Step7文件。
4.威脅框架視角下的震網解讀
能夠研發(fā)類似震網的復雜高級的惡意代碼,是源自高級網空威脅行為體具有充足資源和成本支撐能力。其作業(yè)過程具有龐大的工程體系和人員團隊為支撐條件,是一系列復雜的動作組合。與此同時,復雜的過程并不必然全部由“高級”攻擊手段和“高級”裝備支撐。防御方的一些低級配置錯誤和未及時修補的漏洞會成為威脅行為體攻擊的入口;高級網空威脅行為體也會劫持和利用低級網空威脅行為體所掌控的僵尸網絡等資源,這些都使局面更為復雜。
解讀復雜的攻擊行動,并驅動防御的改善,需要有更理想的結構化方法。殺傷鏈等模型用于解構震網式的復雜攻擊,依然顯得不足,需要進一步改善。威脅框架作為一種對攻擊過程更為結構化和數(shù)據化的描述方法,開始成為改善防御能力的威脅認知基礎。當前較為流行的威脅框架主要有MITRE提出的ATT&CK,和NSA提出的《NSA/CSS技術網空威脅框架》(NSA/CSS Technical Cyber Threat Framework)。后者對前者做了一定的借鑒工作。鑒于NSA/CSS技術網空威脅框架,更具有情報機構的背景,因此更適合推演類似震網級別的A2PT攻擊。
從威脅框架出發(fā),針對威脅每個階段、逐個行為推演,無論對評估當前防御體系及相關安全產品能力的有效性和合理性,還是對形成體系化的防御規(guī)劃與建設目標,都是一種有益的工作。2019年6月,安天發(fā)布的“方程式組織”攻擊SWIFT服務提供商EastNets事件復盤分析報告中[5],將事件涉及的威脅行為映射到了“NSA/CSS威脅框架”V2版本中。
將震網事件涉及到的威脅行為映射到威脅框架的類別與動作,如圖4-1所示。
圖 4-1 震網事件映射到威脅框架
在震網行動中共涉及21個目標中的83種行為,其中包括推測的和確定執(zhí)行的行為。
表 4-1 震網事件中涉及的類別與動作
針對震網級別的攻擊,需要重點關注的是其決策和準備過程,類似如此復雜精密的攻擊,如果不搭建一個完全等效的模擬靶場環(huán)境,是很難達成效果的。如果僅僅把目光放在惡意代碼和漏洞利用工具本身,而不能就行動管理與資源保障、目標勘察與環(huán)境整備等前期環(huán)節(jié)進行深入的分析,就一定程度上失去了引入威脅框架的意義。但無疑,這一部分的分析更為困難和復雜。
從威脅框架視角重新梳理震網,也讓我們可以解開“Michael之問”。2014年3月,洛克希德·馬丁公司的高級研究員Michael在博客上對震網事件的意圖和能力兩個方面進行了分析,提出了“Why Stuxnet Isn't APT?”[6]這一設問。在這篇文獻中,Michael 以震網的傳播失控和明顯的物理空間后果不符合APT的高度定向性和隱蔽性、震網比常見的APT攻擊更為高級等方面進行了論述,其更傾向于震網是一種作戰(zhàn)行動,而非APT攻擊。Michael關于震網是一種比APT更高級的觀點,與安天將震網級別的攻擊命名為A2PT觀點是相近的。但從Michael的根本觀念是將APT與CNE(網絡情報利用)相映射的,因此當震網以達成CNA(網絡攻擊、作戰(zhàn))為目的的情況下,則提出這種質疑是有道理的。但在現(xiàn)實場景下,很難生硬的把CNE與CNA割裂開,CNE通常是CNA的基礎。CNE轉化為CNA可能只是指令與策略的調整。在威脅框架體系中,CNA的動作是致效能力運用中的中的若干動作環(huán)節(jié),這就將CNE與CNA良好的統(tǒng)合到一個框架體系中,從而能更好的推動分析與防御改善的體系的改善。
5.震網的USB擺渡與傳播“失控”的原因
震網是針對非常特殊的工業(yè)場景進行攻擊的惡意代碼,2019年,有相關媒體報道,震網病毒進入到伊朗相關物理隔離的工業(yè)網,是依靠荷蘭情報人員在攻擊方的要求下招募了“內鬼”[7]。而在內網中,震網主要的傳播方式為借助USB擺渡+基于漏洞的橫向移動。其預設的攻擊場景是與互聯(lián)網隔離的內部網絡。安天在最早的分析報告中,對于其傳播機理[1],以如圖5-1進行了說明:
圖 5-1 樣本的多種傳播方式
整體的傳播思路是:染毒U盤利用快捷方式文件解析漏洞,傳播到內部網絡;在內網中,通過快捷方式解析漏洞、RPC遠程執(zhí)行漏洞、打印機后臺程序服務漏洞,實現(xiàn)聯(lián)網主機之間的傳播;最后抵達安裝了WinCC軟件的主機,展開攻擊。在這一過程中,亦存在染毒主機對插入的U盤進行感染的過程,但經過安天分析這一動作并非是無條件的。
圖 5-2 U盤感染過程中配置文件解析
感染震網的計算機會監(jiān)控接入的設備,一旦發(fā)現(xiàn)U盤插入且滿足條件即開始寫入U盤擺渡文件,具體條件如下:
●當前時間的U盤沒有被感染;
●根據配置標記(不是默認設置)來感染磁盤,如果默認配置不感染,那么感染的發(fā)生取決于日期;
●感染當前計算機少于21天;
●U盤至少有5MB的剩余空間;
●U盤至少有3個文件。
USB文件和加載攻擊邏輯如圖5-3所示,含4個適用于不同Windows版本的LNK快捷方式漏洞(CVE-2010-2568)文件和2個TMP文件(~WTR4141.tmp是USB Loader,~WTR4132.tmp是Dropper,均為DLL格式,文件屬性為隱藏、系統(tǒng)),震網通過rootkit隱藏這6個文件,因此被震網感染的計算機上并不能看到U盤里的這些文件。
U盤擺渡攻擊過程為:被感染的U盤插入新的計算機,用戶打開此U盤,系統(tǒng)開始遍歷U盤目錄文件,當遍歷到LNK文件時漏洞觸發(fā)加載~WTR4141.tmp執(zhí)行,~WTR4141.tmp首先會掛鉤文件相關函數(shù)隱藏這6個文件(在打開U盤的一瞬間可以看到這4個LNK文件,如果開啟了顯示隱藏和系統(tǒng)文件選項,還可以看到2個TMP文件,但瞬間漏洞觸發(fā)這6個文件全部隱藏在文件夾下看不到了),隨后~WTR4141.tmp在內存中加載調用~WTR4132.tmp完成震網的主模塊執(zhí)行。
圖 5-3 USB文件和加載攻擊邏輯示意圖
Stuxnet是否感染到U盤,取決于加密配置文件mdmcpq3.pnf中的多個值,包括:
●偏移0x6c、0x70、0xc8處的標記位;
●偏移0x78、0x7c處的時間戳;
●偏移0x80、0x84處的數(shù)值。
只有當每個值對應的條件都滿足時,才會感染U盤。其中,偏移0xc8處的位默認設置為不感染。
Stuxnet不會主動修改配置數(shù)據,配置的更新通過版本更新來完成。因此,我們認為它是嘗試連接因特網來判斷自己是否在內部網絡中。如果是,就只通過其他途徑傳播;只有通過連接服務器或其他被感染主機更新之后,才感染U盤。
當Stuxnet感染U盤時,拷貝多個.lnk快捷方式文件和兩個.tmp文件到根目錄。這兩個.tmp文件,一個是用于隱藏它們自身的驅動程序,帶有數(shù)字簽名;另一個是病毒體本身以及一個投放器,配置信息已經存在于病毒體中。
根據賽門鐵克在2010年7月-10月監(jiān)測的震網攻擊數(shù)據,全球155個國家的計算機被感染,其中約60%的受害主機位于伊朗境內[8]。對于一次被認為是應具有高度定向性質的作業(yè)行動,卻呈現(xiàn)出發(fā)散性傳播效果的原因,目前各分析方給出了多種不同猜測:
⊕第一種猜測是,各種原因導致了傳播失控。
盡管震網本身的USB擺渡+橫向移動設計,使其只能在內網傳播。但由于其本身的傳播和攻擊策略是基于隔離網絡目標設計,要達成一種無實時遠控作業(yè),因此多數(shù)條件下只能以預設停止傳播時間等因素,而無法像基于互聯(lián)網的攻擊作業(yè)一樣,進行遠程遙控和調整。由于蠕蟲感染了供應商工程師帶入現(xiàn)場的筆記本設備,之后又被帶入到供應商自身的網絡中和其他客戶的內網中。內網的VPN互聯(lián)也加劇了這種傳播,最終導致震網的傳播失控。這種觀點與一些實際情況有一定沖突,比如震網0.5版本,作業(yè)周期較長,達成了攻擊目的,但并未發(fā)生擴散傳播。
⊕第二種猜測是,這是作業(yè)方為獲取更多信息有意為之。
其目的是根據感染鏈條,進一步了解伊朗核工業(yè)體系供應商的情況。德國控制系統(tǒng)安全顧問Ralph Langner在《Stuxnet’s Secret Twin》(震網蠕蟲的秘密變種)[9]中的一個推測是這種外部擴散,是因為攻擊者希望借機獲取到與伊朗相關設施的供應商的情報。他指出“鑒于Stuxnet將受感染系統(tǒng)的IP地址、主機名以及基本配置信息上報給其C&C服務器,看來攻擊者顯然預期(并接受)傳播到非軍用系統(tǒng),且相當渴望密切監(jiān)測它—攻擊者最終將獲取在納坦茲工作的承包商以及其客戶的信息,甚至伊朗秘密核設施的信息。”
⊕第三種猜測是作業(yè)方為了掩蓋定向攻擊意圖,以感染范圍的擴大提升取證溯源的難度。
包括干擾對真實攻擊目標更準確的判斷和定位。
⊕第四種猜測是攻擊方展示能力,達成對他國恐嚇甚至訛詐的需要。
如果事件單一的發(fā)生于伊朗,可能導致此事件最終不會浮出水面。而只有放任其“越獄”傳播,才有可能更快達成此種效果。在《Stuxnet’s Secret Twin》(震網蠕蟲的秘密變種)一文中,Ralph Langner同樣猜想,“Stuxnet被發(fā)現(xiàn)意味著行動的終結,但是它的實用性并不一定結束,它將向世界展示網絡武器在超級大國手中可以做什么。因為不同于實體軍事裝備的展示,閱兵時是無法展示U盤。攻擊者也可能關注另一個國家,最壞的情況下是一個對手;而且將第一個證明其在數(shù)字領域的能力--這個場景簡直可以說是超級大國歷史上的另一個Sputnik(放衛(wèi)星)的時刻。所有這些理由使得攻擊者不必太過擔心被檢測到?!?/p>
震網的發(fā)散性傳播到底是一種“失控”,還是攻擊方有意所為,或者兩者因素都存在。最終的效果可能并非是某個單一原因,而是多個因素的組合。
6.震網為何有數(shù)千個樣本?
作為一種目標高度定向的攻擊行動,一個曾令人費解的事實是,震網并不具備感染其他宿主文件的屬性,但卻有大量的樣本存在。
在惡意代碼對抗工作中,樣本被視為一種重要的基礎資源。樣本被視為惡意代碼所對應的一種實體文件形態(tài),包括帶有感染式病毒的宿主文件、非感染式惡意代碼的文件、以及惡意代碼所存在的扇區(qū)或內存的文件鏡像。在威脅對抗的深度從最初的檢測、查殺,逐漸擴展到響應,深度機理分析和溯源中,我們也發(fā)現(xiàn)對樣本的需求和定義開始發(fā)生一些變化。調查/獵殺意義上的樣本和傳統(tǒng)檢測意義上的樣本存在著差異,傳統(tǒng)檢測意義的樣本既包含在現(xiàn)場場景中所采集的文件,同時也包含了為了測試反病毒引擎的能力以及分析中所二次構造出的樣本變換結果。對于檢測和清除能力來說,進行這種樣本構造是必須完成的,例如在樣本規(guī)范中,特別是對于感染式病毒來說,為保證檢測和清除效果的檢驗,相關業(yè)內標準在DOS時代就提出過根據DOS_COM、DOS_MZ等文件大小,被感染文件要達到規(guī)定的數(shù)量,對于變形病毒的樣本,還有需要構造出更多數(shù)量的樣本的要求。而對調查/獵殺意義來說,在攻擊場景中客觀存在則成為一種重要的需要被標識出的樣本屬性。
安天捕獲的震網樣本集合是數(shù)以千計的,但這些樣本可以分成幾個不同的標識維度,基于U盤擺渡的原始載荷形態(tài)、在主機上落地的文件、不落地的模塊(需要靜態(tài)拆離或動態(tài)Dump)等等。一類是從其中拆解出的最終攻擊載荷(在實際的攻擊中多數(shù)是不落地的)和一些輔助的驅動等。從磁盤介質提取的實體文件數(shù)量較多的主要分為三種:攻擊載荷釋放器Dropper(原始文件名為~WTR4132.tmp)、移動介質載荷加載器USB Loader(~WTR4141.tmp)和LNK漏洞利用文件,其中Dropper樣本數(shù)量呈現(xiàn)發(fā)散態(tài),從安天所掌握的數(shù)量來看,在千數(shù)量級別。而最終的攻擊功能模塊載荷和輔助驅動在百數(shù)量級,總數(shù)呈現(xiàn)收斂態(tài)。
震網樣本集的分類情況如圖6-1所示。
圖 6-1 震網樣本集分類
安天CERT分析發(fā)現(xiàn),造成震網樣本集基數(shù)較大的原因是:
1.Dropper樣本在落地時寫入目標配置導致文件變化
攻擊載荷釋放器Dropper存在一個名為stub的資源段,攻擊載荷(即主DLL)即存在于這個字段中。而在病毒落地時,stub段中存儲的配置數(shù)據會被當前感染節(jié)點的相關信息數(shù)據更新,這是導致震網樣本集數(shù)量多的一個最主要原因。也就是說,每次落地震網都會再形成一個HASH不同的Dropper。這就導致了震網的樣本集從HASH數(shù)量上看,呈現(xiàn)發(fā)散狀態(tài)。而樣本集中Dropper功能的真實“版本”是有限的,Dropper中98.84%的導入表相同,有91%的樣本text段單獨拆離出的文件是完全一致的,MD5值均為17e2270d82d774b7f06902fa7d630c74,這是一個發(fā)生規(guī)模感染的Dropper主力版本。
圖 6-2 Dropper導入表統(tǒng)計
stub段作為主DLL存放的位置,其布局解析如表6-1所示。
解密主DLL的函數(shù)如下:
圖 6-3 主DLL函數(shù)解密
主DLL之后的數(shù)據中存在加密的配置信息,能夠在感染過程中控制震網的具體行為,使得震網具備在無法遠程控制的情況下,依然可以按照預設策略工作,確保其復雜的作業(yè)可以成功。其配置文件也記錄了被感染機器信息和時間等特征,這樣做的目的可能是攻擊者希望這些信息在感染時被提取記錄,一旦聯(lián)網時可以直接將相關信息提交給C2,而不用做二次提取操作,減少對主機環(huán)境操作,以減少暴露的機會。
部分解密后的配置信息如下:
圖 6-4 部分解密后的配置信息
表6-2是部分配置內容的解析,這些值能夠控制震網在受害主機上的行為,具體內容包括:通過+A4值控制開始感染時間,如果這個值不能滿足感染要求,則退出;通過+78值控制控制終止感染USB的時間,以及涉及控制震網傳播、版本更新等值。在解密后的配置信息中這種控制震網行為的值有近百個,正是這些值來控制震網的復雜行為。
表 6-2 部分配置內容解析
Dropper的配置文件校驗函數(shù):
圖 6-5 Dropper的配置文件校驗函數(shù)
配置塊的一些關鍵信息:如感染路徑、感染時間、配置塊長度,通過提取配置數(shù)據分析后發(fā)現(xiàn),由于在每次感染新的設備后,其自身都會更新數(shù)據配置塊,致使每感染一臺設備,Stuxnet就會多出一個含有新配置的Dropper樣本,圖6-6為震網開始感染時間的數(shù)量分布圖,其中2008年-2010年為可信度較高的感染時間,而2000年-2007年為可信度較低的感染時間。
圖 6-6 開始感染時間數(shù)量分布圖(由于內網主機可能的存在時鐘不同步問題導致錯誤的起始時間)
在震網的安裝執(zhí)行過程中會多次檢查目標系統(tǒng)當前時間,如果目標系統(tǒng)時間大于終止時間,震網就會退出安裝執(zhí)行過程。圖6-7是震網1.x版本終止U盤感染時間的統(tǒng)計,它有三個終止U盤感染時間:2010年7月31日、2010年8月31日、2010年12月31日,其中絕大多數(shù)的終止U盤感染時間為2010年12月31日。
圖 6-7 終止U盤感染時間統(tǒng)計
2.分析提取工作導致的
將震網的各個功能載荷從主DLL中剝離出來,是震網分析中的重要工作,這帶來了一種新的樣本統(tǒng)計上需要考慮的因素,即何為原始樣本,何為處理中的過程數(shù)據。震網主DLL文件在Dropper中采用UPX壓縮的方式進行存儲,防止樣本大小過大,減少傳播機會。在實際感染過程中主DLL不會落地,在樣本集中有UPX加殼的主DLL文件,在實際樣本集中存在,因Dump導致的不同版本,未脫殼版本,不同脫殼方式生成的版本等情況。
在A2PT組織作業(yè)使用落地的樣本中,很少看到使用殼的情況,這可能與一些殺毒軟件會對殼報警、或輸出日志相關。但震網主DLL文件在Dropper是采用UPX殼壓縮的(毒曲也是如此),究其原因,應是出于減小文件體積的考慮。
圖 6-8 未完全脫殼文件
3.干擾數(shù)據
在震網的USB Loader樣本集中,有數(shù)以百計的樣本文件簽名損壞,且大量該類文件的尾部還追加了其他的LNK文件和某種反病毒產品的報警日志,從目前分析來看,這是某款反病毒產品的產品Bug導致的,其某版本在掃描樣本時,會錯誤的樣本后面追加數(shù)據,從而引入數(shù)百被破壞的樣本。
圖 6-9 USB Loader尾部追加LNK文件
7.惡意代碼框架與多起A2PT的事件關聯(lián)
在震網事件曝光前后,包括毒曲、高斯、火焰等高級惡意代碼被陸續(xù)曝光,由于這些惡意代碼都空前復雜,且往往多在中東國家被發(fā)現(xiàn),因此懷疑其相互間存在某種意義的關聯(lián),也成為了一種比較自然的猜想。
安天CERT在2011初提出了震網和毒曲可能存在某種關聯(lián)關系的猜測,但直到次年初,才完成比較系統(tǒng)的驗證。發(fā)布了《探索Duqu木馬的身世之謎》[10]、《從Duqu病毒與Stuxnet蠕蟲的同源性看工業(yè)控制系統(tǒng)安全》[11]兩篇文獻,分別從模塊結構相似性分析、編譯器架構相似性分析、關鍵功能實現(xiàn)相似性分析、密鑰與其他關鍵數(shù)據相似性分析、編碼心理特點分析、相同的程序Bug分析等角度,證實了兩者存在同源關聯(lián)關系。
圖 7-1 毒曲病毒與震網蠕蟲的代碼片斷比較
圖 7-2 毒曲病毒與震網蠕蟲使用相同密鑰
安天在當時做出的結論是“通過對毒曲病毒與震網蠕蟲關鍵代碼結構、密鑰使用方法和代碼邏輯等的比較,我們發(fā)現(xiàn)了大量相同或相似的代碼片斷,這說明兩者間存在代碼復用關系,或者兩者基于相同的代碼框架開發(fā)?!钡珜τ谑菑陀藐P系,還是同框架開發(fā)這一問題,當時并未給出定論。而融合其他機構的后期分析成果和進展,可以形成的結論是,相關A2PT攻擊組織至少維護了Tilded和Flamer兩個惡意代碼框架。震網、毒曲與火焰、高斯分別是基于Tilded和Flamer框架開發(fā)的。2012年6月11日,卡巴斯基發(fā)布報告稱2009年早期版本的(即0.5版)Stuxnet模塊(稱為“Resource 207”)實際上是一個Flame插件。而這一成果也將Flamer和Tilded這兩個完全不同的框架串接了起來?;谶@兩個框架的惡意代碼在感染目標系統(tǒng)和執(zhí)行主要任務方面具有獨特的技巧,均用來開發(fā)不同的網空攻擊裝備。卡巴斯基提出的結論是:兩個框架背后的團隊曾經共享過至少一個模塊的源代碼,表明他們至少有一次團隊合作,是屬于同一機構的兩個平行項目[12]。基于更多的線索,還可以把Fanny和Flowershop與上述事件串接到一起,它們的關系如圖7-3所示。
圖 7-3 震網和毒曲、火焰、高斯、Fanny、Flowershop關系圖
7.1Flamer框架
Flamer框架的開發(fā)時間可以追溯至2006年12月,火焰和高斯是基于Flamer框架開發(fā)的。安天于2012年5月28日起陸續(xù)捕獲到火焰蠕蟲的樣本[13],并成立了專門的分析小組進行持續(xù)分析,發(fā)現(xiàn)火焰是采用多模塊化復雜結構實現(xiàn)的信息竊取類型的惡意軟件。其主模塊文件大小超過6MB,包含了大量加密數(shù)據、內嵌腳本(如Lua等)、漏洞攻擊代碼、模塊配置文件、多種加密壓縮算法,信息盜取等多種模塊。
火焰的兩個主要版本為Flame 1.0和Flame 2.0,兩個版本均由依賴于嵌入式Lua VM的主協(xié)調器指示的多個子模塊組成?;鹧婧透咚怪g包含一些相同代碼,同時共享MiniFlame惡意軟件插件。
7.2Tilded框架
震網和毒曲是基于Tilded框架開發(fā)的。Tilded框架感染方式一般可以歸納為利用驅動程序文件,加載一個設計為加密庫的主模塊。同時,整個惡意復合體有一個單獨的配置文件,系統(tǒng)注冊表中有一個加密塊,用于定義正在加載的模塊的位置和注入過程的名稱。
震網已知的版本包括Stuxnet0.5、Stuxnet1.001和Stuxnet1.100。Stuxnet0.5是震網的早期版本,但是后被發(fā)現(xiàn)曝光,該變種在2009年7月4日停止了對計算機的攻擊。Stuxnet0.5與Stuxnet1.x版本的主要區(qū)別包括:Stuxnet1.x版本顯著增加了傳播和漏洞利用能力;Stuxnet0.5是部分基于Flamer框架的,而Stuxnet1.x版本主要基于Tilded框架;Stuxnet0.5采用導致超壓的方式,大規(guī)模破壞離心機,而Stuxnet1.x版本采取了新的攻擊策略,從鈾濃縮閥破壞變成對離心機速度的修改。
表 7-1 震網0.5與1.x版本技術細節(jié)全面對比
毒曲的主要版本包括Duqu1.0、Duqu1.5和Duqu2.0。Duqu與Duqu2.0之間使用統(tǒng)一算法以及復用大量相同代碼,Duqu1.0和Duqu2.0之間攻擊目標有很多重合,Duqu1.5和Duqu2.0之間均使用了Pipe Backdoor插件。
震網和毒曲之間在模塊結構、編譯器結構、關鍵功能、數(shù)據結構、病毒作者心理等方面具有同源性[14],此外,震網和Duqu1.0、Duqu2.0均采用竊取自中國臺灣IT廠商的數(shù)字證書。
7.3震網與Fanny、Flowershop的關聯(lián)
從圖7-3中能夠看出,震網除了與毒曲、火焰具有一定關聯(lián)之外,其與Fanny、Flowershop也具有一定的關聯(lián)。
Stuxshop是震網的早期組件,用于管理早期C2。Stuxshop與Flowershop(活躍于2002年至2013年的惡意軟件平臺)之間存在代碼重疊或共享。
方程式早期組件Fanny,其使用了兩個震網的0day漏洞,即LNK漏洞(CVE-2010-2568)以及嵌入在“Resource 207”中的提權漏洞。此外,震網和方程式開發(fā)者之間共享編碼風格,或者使用同樣的開發(fā)規(guī)范手冊。
8.直面檢測引擎與威脅情報面臨的挑戰(zhàn)
在安天此前的分析報告中,針對A2PT帶來的防御挑戰(zhàn),進行過一些論述和探討,而針對震網的復盤,我們希望聚焦一個具體的問題,高級惡意代碼對檢測引擎和威脅情報的挑戰(zhàn)。
作為攻擊載荷的惡意代碼是網空攻擊的“戰(zhàn)斗部”,幾乎絕大多數(shù)的網空攻擊事件中都會出現(xiàn)惡意代碼的身影,在高能力網空威脅行為體的攻擊活動中更是如此。從威脅框架的視角來看,高能力網空威脅行為體要針對目標完成接觸目標與進攻突防、持久化駐留潛伏、全程持續(xù)支撐作業(yè),并進一步達成各種致效能力運用,在整個過程中,既需要針對業(yè)務場景達成作業(yè)意圖,又要繞開體系化的防護,達成深度持久化和隱蔽通訊等動作,其必然要完成高度復雜的邏輯功能執(zhí)行。這導致了APT攻擊對惡意代碼的依賴程度在不斷加深,高級惡意代碼呈現(xiàn)出框架日趨龐大、模塊眾多和指令體系原子化等趨勢。
在過去對網空威脅的分析和對網空威脅行為體的追蹤中,安天對震網、火焰、毒曲、方程式等擁有完整、嚴密的作業(yè)框架與方法體系的攻擊活動,以及其自研使用的的高級惡意代碼進行了持續(xù)關注分析;同時也分析了一些組合使用“商業(yè)軍火”、開源免費工具即較低水平的自研惡意代碼的定向攻擊活動。這些分析工作是長期的、高代價的,但這些工作是實現(xiàn)更有效地防御和獵殺的基礎。賦能客戶建設動態(tài)綜合防御體系是我們的目標;而針對攻擊裝備(惡意代碼、漏洞利用程序和其他的工具)的斗爭一直是其中的焦點。
在這種對抗中,傳統(tǒng)的反病毒引擎和威脅情報成為兩個具有互補作用的機制,前者針對海量的惡意代碼的檢測、辨識能力,并且通過深度預處理、虛擬執(zhí)行等機制來應對惡意代碼的變種、變換,因此在載荷檢測方面,有無以倫比的識別與解析深度,而且對海量載荷對象提供了精準的判定機制。但傳統(tǒng)病毒引擎在威脅對抗中的短板也很明顯,其是最容易被攻擊方獲得的安全資源,絕大多數(shù)反病毒軟件都可以公開的下載或低成本的購買、同時Virustotal等公開的多引擎掃描機制也會成為攻擊方的測試資源。因此反病毒引擎面對自動化構造的免殺測試等方法,有被繞過的必然性。同時其本地檢測定期升級庫的機制,或者是云引擎對遠程的依賴,對內網用戶也都帶來了一定的部署成本。另一個問題是,傳統(tǒng)反病毒引擎的工作視角是基于樣本檢出率為核心指標的,其信息輸出缺少從威脅對抗方面更明確的指向性。這些短板都需要威脅情報進行彌補。在威脅情報金字塔中,HASH、IP、域名等“狹義情報”被列入底層,即獲取難度低、應用成本低。較為容易的被分析防御方提取為攻擊指示器(信標),同時可以與多種安全設備、管理設備、防護軟件等現(xiàn)有擴展接口實現(xiàn)對接。
圖 8-1 威脅情報金字塔模型
盡管與傳統(tǒng)的反病毒檢測引擎相比,HASH檢測機制毫無魯棒性可言,但由于HASH的唯一性,其在可靠的知識運營支撐的情況下,可以建立起對攻擊組織的精準的指向性。例如兩個不同的攻擊組織,分別定制了同一個版本的商用木馬,在文件尾部附著了各自的C2配置。對于反病毒引擎來說,這是同一種樣本,而對于HASH情報在分析支撐下輸出,反而能將其區(qū)別出來。但HASH情報其可用前提也很明顯,那就是存在著二進制形態(tài)不變的樣本復用。對IP和域名規(guī)則也是如此,當情報供給方能將惡意活動指向某個確定的通訊基礎設施(C2),來完成心跳、控制、升級、回傳等操作,并將這個惡意活動指向某個攻擊組織時,那么相應的網絡IoC就可以命中在其他攻擊活動中的行為,從而建立起攻擊行為和組織的關聯(lián)。這種低層次的攻擊指向器,盡管效用機理比反病毒引擎和流量檢測引擎都要簡單,但基于其可以快速發(fā)布,廣泛擴展,精準定義,一定程度上帶了一種快速的、更為普適的監(jiān)測和普查能力。因此傳統(tǒng)檢測引擎+IoC情報可以形成一定的互補組合的效果。這種組合模式也是過去數(shù)年安天所推動的模式。
但通過復盤9年前的震網事件就可以看到,這個層面的情報對于A2PT攻擊近乎無效。每一臺主機上提取到Dropper文件的HASH都不可能命中另一臺主機上的等效文件。我們不能認為震網Dropper的落地自寫更新機制,主要目的是為了對抗HASH檢測機制,但其客觀上構成了這樣的效果。而更需要看到的是,盡管在分析過程中,可以看到震網攻擊的相關域名從2005年已經被注冊。但在分析方將相關通訊特性作為規(guī)則時,震網的攻擊效果已經達成,而在毒曲等的攻擊中,我們亦廣泛看到內網C2等機制的存在。如果反病毒引擎是一種會被攻擊者重點繞過的重載機制,而攻擊指示器(信標)又作為一種穩(wěn)定性極低的情報機制的話,這對雙保險的效果就會大打折扣。
安天基于傳統(tǒng)檢測引擎在威脅對抗中,是攻擊方重點繞過環(huán)節(jié)的特點,自2016年起開始研發(fā)下一代威脅檢測引擎。安天下一代引擎延續(xù)并深化了安天傳統(tǒng)引擎格式識別、深度解析等特點,繼承對海量惡意代碼精準的分類到變種的識別能力。同時,以沒有可信的格式和對象為前提,形成對檢測對象全格式識別,對更多重點格式形成深度解析能力。不止為調用環(huán)節(jié)輸出判定結果,同時也可以將檢測對象的向量拆解結果結構化輸出,形成支撐產品場景和態(tài)勢感知場景研判分析、關聯(lián)與追溯的數(shù)據資源。
探索檢測引擎與威脅情報更好的結合,建立起更可靠的基礎標識能力與響應機制,更有效的支撐TTP,乃至人員組織相關的情報,建立起更完善的知識工程運營體系,這對我們來說,將是一個需要長期努力的方向。