版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Duqu和Stuxnet同源性分析摘要同源(Homology),是生物遺傳學(xué)領(lǐng)域的重要概念,主要用于描述物種或DNA序列是否具有相同的祖先。計(jì)算機(jī)病毒分析工程師也經(jīng)常通過(guò)分析病毒同源性的方法,追蹤病毒制造者的身份——比如,dvldr(口令蠕蟲(chóng))和lovegate(愛(ài)門蠕蟲(chóng))的制造者曾被認(rèn)為是同一人,安天實(shí)驗(yàn)室的反病毒工程師通過(guò)同源性分析方法,否定了該觀點(diǎn)。本文以對(duì)Duqu木馬與Stuxnet蠕蟲(chóng)的分析比較為例,介紹病毒同源性分析方法。背景介紹2012年3月20日,知名計(jì)算機(jī)反病毒廠商Symantec在其官方博客(NewDuquSampleFoundintheWild)中宣布捕獲到了最新的Duqu木馬變種,樣本的編譯時(shí)間顯示為2012年2月23日。時(shí)隔數(shù)月,曾備受關(guān)注的Duqu木馬又回來(lái)了?或者說(shuō),它從沒(méi)有消失過(guò)?Duqu木馬是什么?為什么會(huì)這樣令人矚目?原來(lái),Duqu木馬一直被認(rèn)為是此前更為著名的Stuxnet蠕蟲(chóng)的第二代。那么,Stuxnet蠕蟲(chóng)又是什么?Stuxnet蠕蟲(chóng)(亦稱震網(wǎng)蠕蟲(chóng)、超級(jí)工作蠕蟲(chóng)),具有對(duì)工業(yè)控制系統(tǒng)的破壞能力,被看作是第一個(gè)以現(xiàn)實(shí)世界中的關(guān)鍵工業(yè)基礎(chǔ)設(shè)施為目標(biāo)的計(jì)算機(jī)蠕蟲(chóng)。有媒體形容它為“超級(jí)武器”和“潘多拉的魔盒”,因?yàn)樗_(kāi)啟了真正意義上的網(wǎng)絡(luò)戰(zhàn),也為以后的網(wǎng)絡(luò)攻擊形式和恐怖主義行為樹(shù)立了“榜樣”。Stuxnet蠕蟲(chóng)曾于2010年7月爆發(fā),利用了微軟公司的4個(gè)Windows操作系統(tǒng)漏洞(其中3個(gè)是當(dāng)時(shí)全新的零日漏洞)和2個(gè)WinCC操作系統(tǒng)漏洞,2個(gè)有效的數(shù)字證書(shū),通過(guò)一套完整的入侵和傳播流程,突破工業(yè)專用局域網(wǎng)的物理限制,攻擊用于數(shù)據(jù)采集與監(jiān)控的工業(yè)控制系統(tǒng)。伊朗政府已經(jīng)確認(rèn)該國(guó)的布什爾核電站遭到Stuxnet蠕蟲(chóng)的攻擊。Stuxnet蠕蟲(chóng)具有以下特點(diǎn):同時(shí)使用了多個(gè)零日漏洞。普通病毒作者一般不會(huì)這樣做(即使是當(dāng)年肆虐橫行的沖擊波蠕蟲(chóng)和震蕩波蠕蟲(chóng),也只是使用了一個(gè)微軟操作系統(tǒng)的RPC漏洞而已)。模塊結(jié)構(gòu)復(fù)雜,制作周期較長(zhǎng)。Stuxnet蠕蟲(chóng)包含了驅(qū)動(dòng)程序、PLC(ProgrammableLogicController,可編程邏輯控制器)指令以及命令與控制服務(wù)器(以下簡(jiǎn)稱C&C服務(wù)器)通訊模塊等,普通病毒作者不需要、也不愿意付出這樣的開(kāi)發(fā)代價(jià)。傳播過(guò)程復(fù)雜而漫長(zhǎng)。普通的病毒作者一般急于獲得利益。主要用于攻擊伊朗的核設(shè)施。據(jù)發(fā)表在德國(guó)新聞雜志《DerSpiegel》的一篇文章(StuxnetVirusOpensNewEraofCyberWar)介紹,該蠕蟲(chóng)感染了伊朗IR-1型離心機(jī)后,將其正常運(yùn)行速度由1,064赫茲增加到1,410赫茲,并在15分鐘后回到正常頻率,從而造成離心機(jī)的損壞。伊朗核計(jì)劃當(dāng)局認(rèn)為Stuxnet蠕蟲(chóng)破壞了約1000臺(tái)離心機(jī)。伊朗也承認(rèn)其核計(jì)劃遭到了阻礙,并遭受了“潛在的重大損失”。普通的病毒作者,顯然無(wú)法由此獲得利益。通過(guò)以上分析不難看出,Stuxnet蠕蟲(chóng)更可能是團(tuán)隊(duì)制作。知名計(jì)算機(jī)反病毒廠商Kaspersky實(shí)驗(yàn)室甚至認(rèn)為,Stuxnet蠕蟲(chóng)的攻擊是具有國(guó)家和政府的支持和協(xié)助的。與Stuxnet蠕蟲(chóng)的復(fù)雜相比,出現(xiàn)于2011年的Duqu木馬則顯得有些單薄,它主要功能是數(shù)據(jù)的采集和回傳。這些功能似乎并不比常見(jiàn)的QQ盜號(hào)木馬具有更大的危害,可是,由于它采用了與Stuxnet蠕蟲(chóng)極為相似的技術(shù)手段,引起了多個(gè)計(jì)算機(jī)反病毒廠商的密切關(guān)注。假設(shè)Duqu木馬與Stuxnet蠕蟲(chóng)具有相同出處(即兩者具有同源性),那么它出現(xiàn)的意義是什么?是否意味著新的Stuxnet蠕蟲(chóng)即將問(wèn)世?新的Stuxnet蠕蟲(chóng)的攻擊目標(biāo)又是哪種工業(yè)設(shè)施?該工業(yè)設(shè)施會(huì)屬于哪個(gè)國(guó)家?另外,通過(guò)對(duì)Duqu木馬的分析,是否可以找出Stuxnet蠕蟲(chóng)的作者或者制作團(tuán)隊(duì)?計(jì)算機(jī)病毒分析工程師通過(guò)判斷新病毒與已有病毒是否在編寫(xiě)上存在相互借鑒、衍生、復(fù)用等關(guān)系,找到新病毒的某些線索,最終確定兩個(gè)病毒是否具有同源性。主要考查病毒樣本的以下幾個(gè)方面:模塊結(jié)構(gòu)相似性編譯器架構(gòu)相似性關(guān)鍵功能實(shí)現(xiàn)相似性數(shù)據(jù)結(jié)構(gòu)相似性病毒作者編碼心理特點(diǎn)Duqu木馬與Stuxnet蠕蟲(chóng)的同源性分析過(guò)程模塊結(jié)構(gòu)相似性分析Duqu木馬的模塊結(jié)構(gòu)如圖1所示,由驅(qū)動(dòng)模塊(使用數(shù)字簽名)、DLL模塊和配置文件組成。其中,驅(qū)動(dòng)模塊為jminet7.sys,用于解密負(fù)載代碼和注入系統(tǒng)進(jìn)程;DLL模塊和配置文件均以加密形式存儲(chǔ)在磁盤上,僅在需要時(shí)解密到內(nèi)存;DLL模塊的資源中還包含一個(gè)負(fù)責(zé)進(jìn)程注入的DLL模塊,因?yàn)椴恍枰4嬖诖疟P,所以沒(méi)有文件名;該無(wú)名模塊提供了多種注入方式,通過(guò)這些注入方式中的一種,將自身的資源節(jié)代碼(用于與C&C服務(wù)器通訊)注入到目標(biāo)進(jìn)程。[圖1]Duqu木馬模塊結(jié)構(gòu)圖Stuxnet蠕蟲(chóng)的模塊結(jié)構(gòu)如圖2所示,由驅(qū)動(dòng)模塊(使用數(shù)字簽名)、DLL模塊和配置文件組成。驅(qū)動(dòng)模塊分為Rootkit功能(主要用于躲避反病毒軟件)的mrxnet.sys文件和負(fù)責(zé)解密和注入的mrxcls.sys文件;DLL模塊和配置文件均以加密形式存儲(chǔ)在磁盤上,僅在需要時(shí)解密到內(nèi)存;Stuxnet蠕蟲(chóng)的漏洞攻擊代碼和工控系統(tǒng)攻擊代碼均存儲(chǔ)在主DLL模塊的資源節(jié)中,在需要的時(shí)候釋放出來(lái),主DLL資源中包含了用于與C&C服務(wù)器通訊的功能。[圖2]Stuxnet蠕蟲(chóng)模塊結(jié)構(gòu)圖通過(guò)模塊結(jié)構(gòu)的對(duì)比,不難看出兩者非常相似。兩者所使用的驅(qū)動(dòng)模塊均采用了有效的數(shù)字簽名,這一情況在一般的病毒中很少出現(xiàn)。至于兩者模塊數(shù)量的差異是由于兩者功能和技術(shù)實(shí)現(xiàn)方式不同造成。比如,Duqu木馬在Stuxnet蠕蟲(chóng)的基礎(chǔ)上又加入了新的注入方法,從而增加了新的模塊。編譯器架構(gòu)相似性分析 Duqu木馬的jminet7.sys使用MicrosoftVisualC++6.0編譯。 Stuxnet蠕蟲(chóng)的mrxcls.sys使用MicrosoftVisualC++7.0編譯。 Duqu木馬和Stuxnet蠕蟲(chóng)的主DLL都使用了UPX壓縮殼。Duqu木馬和Stuxnet蠕蟲(chóng)主DLL模塊資源節(jié)中的DLL文件都是采用MicrosoftVisualC++編譯。很奇怪,后出現(xiàn)的Duqu木馬反而使用了更早的VC編譯器。關(guān)鍵功能實(shí)現(xiàn)相似性分析注入方式Duqu木馬和Stuxnet蠕蟲(chóng)都采用了DLL注入方式來(lái)隱藏自身模塊,以躲避殺毒軟件的檢測(cè),并且都同時(shí)采用了驅(qū)動(dòng)層注入和用戶層注入兩種方式。兩者都通過(guò)PsSetLoadImageNotifyRoutine設(shè)置回調(diào)函數(shù)的方式來(lái)完成驅(qū)動(dòng)層的注入,并且兩者的回調(diào)函數(shù)的功能基本一致。每當(dāng)有PE程序(DLL或者EXE)被加載,這個(gè)函數(shù)都會(huì)發(fā)生回調(diào),從而獲得執(zhí)行機(jī)會(huì)。如果加載的是kernel32.dll文件,則通過(guò)API名稱的哈希值,獲得kernel32.dll上一些特定的API函數(shù)地址。如果被加載是特定的進(jìn)程名稱(該名稱以加密形式保存在注冊(cè)表),則修改此進(jìn)程的入口點(diǎn)函數(shù)跳轉(zhuǎn)到注入代碼執(zhí)行惡意行為,然后跳回到原入口點(diǎn)(很像感染式病毒,不過(guò)是完全內(nèi)存態(tài)的感染),成為蠕蟲(chóng)的傀儡進(jìn)程。從兩者驅(qū)動(dòng)層注入部分代碼邏輯結(jié)構(gòu)可以看出,雖然兩者采用了不同的編譯器(或編譯選項(xiàng)),并且在代碼中存在少量差別,注冊(cè)表和主DLL文件的解密算法也有不同,但是兩者的邏輯總體一致,如圖3.[圖3]驅(qū)動(dòng)層注入實(shí)現(xiàn)方式通過(guò)掛鉤ntdll.dll中的下列函數(shù)來(lái)完成無(wú)實(shí)體文件的用戶層DLL注入:ZwQueryAttriutesFileZwCloseFileZwOpenZwMapViewOfSectionZwCreateSectionZwQuerySection注入過(guò)程為:加載一個(gè)特殊構(gòu)造的DLL名稱,當(dāng)LoadLibrary函數(shù)加載這個(gè)DLL的時(shí)候,模擬PE程序加載執(zhí)行過(guò)程,直接從內(nèi)存中加載這個(gè)DLL(而不是從磁盤上),從而躲避殺毒軟件的文件掃描。圖4展示了系統(tǒng)感染Stuxnet蠕蟲(chóng)后,關(guān)鍵進(jìn)程services.exe中發(fā)現(xiàn)的隱藏模塊情況。[圖4]Stuxnet蠕蟲(chóng)的進(jìn)程隱藏情況RPC服務(wù)Duqu木馬和Stuxnet蠕蟲(chóng)都提供了RPC服務(wù)完成點(diǎn)對(duì)點(diǎn)通訊。下面兩份代碼說(shuō)明兩者使用了相同的rpc綁定方式,分別出現(xiàn)在Duqu木馬的netp191.pnf文件及Stuxnet蠕蟲(chóng)的oam7a.pnf文件。[圖5]Duqu木馬的RPC綁定方式[圖6]Stuxnet蠕蟲(chóng)的RPC綁定方式關(guān)鍵數(shù)據(jù)相似性分析配置文件Duqu木馬和Stuxnet蠕蟲(chóng)都采用了配置與功能分開(kāi)的實(shí)現(xiàn)方式,兩者的配置文件結(jié)構(gòu)非常相似:1、配置文件的前4字節(jié)(被用識(shí)別標(biāo)記)內(nèi)容相同,均為0x90,0x05,0x79,0xae。2、文件偏移4字節(jié)為配置文件頭部長(zhǎng)度。3、文件偏移12字節(jié)處為文件長(zhǎng)度,區(qū)別只是長(zhǎng)度的大小不一樣。4、均包含生存周期。雖然Stuxnet蠕蟲(chóng)配置文件中記錄的時(shí)間為自我卸載日期,而Duqu木馬記錄的日期為感染日期,但后者會(huì)在感染之后指定的時(shí)間完成自我卸載。所以,兩者記錄日期目的相同,都是為了控制生存周期,防止分析人員追蹤、分析樣本。注冊(cè)表數(shù)據(jù)Duqu木馬和Stuxnet蠕蟲(chóng)均由驅(qū)動(dòng)從注冊(cè)表中讀取數(shù)據(jù)(分別記錄在注冊(cè)表特定主鍵的Data鍵和Filter鍵,均為二進(jìn)制數(shù)據(jù)格式),然后實(shí)施DLL注入。其中,Duqu木馬的鍵名有所變化,但兩者注冊(cè)表的數(shù)據(jù)結(jié)構(gòu)幾乎相同。Duqu木馬在注冊(cè)表中保存的二進(jìn)制數(shù)據(jù)解密后結(jié)構(gòu)如下(包括:DLL模塊的解密密鑰、注入目標(biāo)進(jìn)程名、注入目標(biāo)模塊路徑):DWORDcontrol[4]DWORDencryption_keyDWORDsizeof_processnameBYTEprocessname[sizeof_processname]DWORDsizeof_dllpathBYTEdllpath[sizeof_dllpath]Stuxnet蠕蟲(chóng)在注冊(cè)表中保存的二進(jìn)制數(shù)據(jù)解密后結(jié)構(gòu)如下(包括:DLL模塊的解密密鑰、注入目標(biāo)進(jìn)程名、注入目標(biāo)模塊路徑):DWORDcontrol[4]WORDexpNumber;//注入dll調(diào)用的導(dǎo)出函數(shù)WORDFlags;DWORDencryption_keyDWORDreserved
;//ListDWORDsizeof_processnameUNICODEprocessname[sizeof_processname]DWORDsizeof_dllpathUNICODEdllpath[sizeof_dllpath]病毒作者編碼心理特點(diǎn)分析解密密鑰 Duqu木馬采用無(wú)參數(shù)的解密算法解密驅(qū)動(dòng)中的加密數(shù)據(jù),得到注冊(cè)表鍵值和解密注冊(cè)表數(shù)據(jù)的密鑰0xae240682,從解密后的注冊(cè)表數(shù)據(jù)中獲取解密主dll模塊的密鑰0xae240682。Stuxnet蠕蟲(chóng)先用密鑰0解密驅(qū)動(dòng)中的加密數(shù)據(jù),得到注冊(cè)表鍵值和解密注冊(cè)表數(shù)據(jù)的密鑰0xae240682,從解密后的注冊(cè)表數(shù)據(jù)中獲取解密主dll模塊的密鑰0x01ae0000。注冊(cè)表解密密鑰相同,說(shuō)明該數(shù)字對(duì)病毒作者有著特殊意義,或者是由于心理習(xí)慣使然。反跟蹤手段 在兩者的驅(qū)動(dòng)程序中,都有是否需要檢測(cè)系統(tǒng)狀態(tài)的判斷,而且判斷過(guò)程是相同的:從加密配置數(shù)據(jù)中讀取參數(shù),與1進(jìn)行邏輯與運(yùn)算判斷是否需要檢測(cè)系統(tǒng)安全模式,與2進(jìn)行邏輯與運(yùn)算判斷是否需要檢測(cè)系統(tǒng)調(diào)試模式。這兩處判斷的目的是企圖避免被病毒分析工程師跟蹤、調(diào)試。然而,常見(jiàn)病毒樣本對(duì)抗分析與調(diào)試的方法卻并非如此——它們會(huì)直接判斷系統(tǒng)當(dāng)前運(yùn)行狀態(tài),而不是通過(guò)配置參數(shù)來(lái)決定是否進(jìn)行這樣的判斷。見(jiàn)圖7、圖8。[圖7]Duqu木馬判斷系統(tǒng)狀態(tài)[圖8]Stuxnet蠕蟲(chóng)判斷系統(tǒng)狀態(tài)程序Bug從編碼心里學(xué)的角度看,由于知識(shí)體系和編碼習(xí)慣的原因,由一個(gè)作者同一時(shí)期編寫(xiě)的代碼應(yīng)該會(huì)存在類似的錯(cuò)誤(甚至漏洞)。這一特點(diǎn)經(jīng)常被黑客利用——當(dāng)有某系統(tǒng)發(fā)布了新的漏洞補(bǔ)丁之后,黑客會(huì)嘗對(duì)比補(bǔ)丁定位漏洞位置和類型,然后在漏洞位置附近查找類似的漏洞。經(jīng)分析發(fā)現(xiàn),Duqu木馬和Stuxnet蠕蟲(chóng)在處理注冊(cè)表數(shù)據(jù)代碼中存在同樣的緩沖區(qū)溢出漏洞。該漏洞出現(xiàn)在注冊(cè)表數(shù)據(jù)復(fù)制的時(shí)候,兩者都通過(guò)ExAllocatePool申請(qǐng)了大小相同(均為0x10字節(jié))的緩沖區(qū),然后使用memcpy函數(shù)將注冊(cè)表數(shù)據(jù)復(fù)制到緩沖區(qū),但在此之前并沒(méi)有檢測(cè)注冊(cè)表數(shù)據(jù)長(zhǎng)度是否正確。如果注冊(cè)表數(shù)據(jù)經(jīng)過(guò)特殊構(gòu)造,則會(huì)導(dǎo)致兩者出現(xiàn)緩沖區(qū)溢出錯(cuò)誤。經(jīng)對(duì)比發(fā)現(xiàn),兩者代碼實(shí)現(xiàn)的邏輯幾乎完全一樣[圖9]Duqu木馬注冊(cè)表操作代碼[圖10]Stuxnet蠕蟲(chóng)注冊(cè)表操作代碼 Duqu木馬和Stuxnet蠕蟲(chóng)在驅(qū)動(dòng)都存在判斷操作系統(tǒng)的版本,且邏輯非常相似。區(qū)別在于后者將版本獲取函數(shù)化,而前者則是使用inline形式執(zhí)行,這個(gè)區(qū)別很可能是編譯器造成。經(jīng)過(guò)分析發(fā)現(xiàn),兩者在判斷WindowsXP版本時(shí),均將參與比較的MinorVersion和MajorVersion兩個(gè)域稿反了。這是一個(gè)非常低級(jí)的錯(cuò)誤,很少出現(xiàn)在有經(jīng)驗(yàn)的程序員的代碼中。[圖11]判斷系統(tǒng)版本代碼總結(jié)主要的比較項(xiàng)目經(jīng)過(guò)整理,如表1所示。比較項(xiàng)目Duqu木馬Stuxnet蠕蟲(chóng)功能模塊化是Ring0注入方式PsSetLoadImageNotifyRoutineRing3注入方式Hookntdll.dll注入系統(tǒng)進(jìn)程是資源嵌入DLL模塊一個(gè)多個(gè)利用微軟漏洞是使用數(shù)字簽名是包括RPC通訊模塊是配置文件解密密鑰0xae2406820x01ae0000注冊(cè)表解密密鑰0xae240682Magicnumber0x90,0x05,0x79,0xae運(yùn)行模式判斷代碼存在Bug是注冊(cè)表操作代碼存在Bug是攻擊工業(yè)控制系統(tǒng)否是驅(qū)動(dòng)程序編譯環(huán)境Microsoft
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能晾曬系統(tǒng)配套個(gè)人木工裝修合同3篇
- 2025年度個(gè)人閑置物品轉(zhuǎn)讓合同范本3篇
- 2025年度個(gè)人投資理財(cái)咨詢服務(wù)合同范本8篇
- 2025年度個(gè)人住房貸款質(zhì)押合同標(biāo)準(zhǔn)文本及貸款逾期處理規(guī)定3篇
- 2025年度個(gè)人房地產(chǎn)抵押借款合同電子簽名版
- 二零二五年度農(nóng)家樂(lè)民宿設(shè)施使用權(quán)轉(zhuǎn)讓合同4篇
- 2025年度個(gè)人股權(quán)收購(gòu)與轉(zhuǎn)讓合同(資產(chǎn)重組版)3篇
- 2025年版高速路口門衛(wèi)值班管理合同4篇
- 二零二五年度醫(yī)院信息管理人員數(shù)據(jù)保護(hù)合同4篇
- 二零二五年度智能交通設(shè)施安裝合同樣本及維護(hù)細(xì)則4篇
- 射頻在疼痛治療中的應(yīng)用
- 和平精英電競(jìng)賽事
- 四年級(jí)數(shù)學(xué)豎式計(jì)算100道文檔
- “新零售”模式下生鮮電商的營(yíng)銷策略研究-以盒馬鮮生為例
- 項(xiàng)痹病辨證施護(hù)
- 職業(yè)安全健康工作總結(jié)(2篇)
- 懷化市數(shù)字經(jīng)濟(jì)產(chǎn)業(yè)發(fā)展概況及未來(lái)投資可行性研究報(bào)告
- 07FD02 防空地下室電氣設(shè)備安裝
- 教師高中化學(xué)大單元教學(xué)培訓(xùn)心得體會(huì)
- 彈簧分離問(wèn)題經(jīng)典題目
- 部編版高中歷史中外歷史綱要(下)世界史導(dǎo)言課課件
評(píng)論
0/150
提交評(píng)論