軟件安全技術(shù)課件:惡意代碼分析基礎(chǔ)_第1頁(yè)
軟件安全技術(shù)課件:惡意代碼分析基礎(chǔ)_第2頁(yè)
軟件安全技術(shù)課件:惡意代碼分析基礎(chǔ)_第3頁(yè)
軟件安全技術(shù)課件:惡意代碼分析基礎(chǔ)_第4頁(yè)
軟件安全技術(shù)課件:惡意代碼分析基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

惡意代碼分析基礎(chǔ)本講要點(diǎn)1.計(jì)算機(jī)啟動(dòng)過(guò)程2.程序的生成和運(yùn)行3.PE文件4.程序的逆向分析5.應(yīng)用案例1.計(jì)算機(jī)啟動(dòng)過(guò)程(1)計(jì)算機(jī)初始化啟動(dòng)過(guò)程及其安全性:1)計(jì)算機(jī)初始化啟動(dòng)過(guò)程按下電源開(kāi)關(guān),電源就開(kāi)始向主板和其它設(shè)備供電BIOS的啟動(dòng)代碼進(jìn)行加電后自檢(Power-OnSelf-Test,POST)BIOS的啟動(dòng)代碼選擇啟動(dòng)盤(pán)1.計(jì)算機(jī)啟動(dòng)過(guò)程(1)計(jì)算機(jī)初始化啟動(dòng)過(guò)程及其安全性:計(jì)算機(jī)初始化啟動(dòng)過(guò)程中的安全問(wèn)題由于BIOS芯片和COMSRAM芯片能夠被改寫(xiě),所以,通過(guò)改寫(xiě)B(tài)IOS可以加載病毒程序或者損壞BIOS內(nèi)容,著名的CIH病毒就是這類(lèi)惡意代碼的代表。當(dāng)COMS感染病毒時(shí),由于存儲(chǔ)空間較小和不可自動(dòng)執(zhí)行的特性,經(jīng)常被忽略。BIOS芯片的恢復(fù)方式主要通過(guò)芯片編輯器寫(xiě)入或直接找主板經(jīng)銷(xiāo)商更新,若能顯示,也可通過(guò)軟件進(jìn)行更新?,F(xiàn)階段的BIOS,都有關(guān)于BIOS寫(xiě)入有效或無(wú)效的設(shè)置,作為預(yù)防,建議將BIOS寫(xiě)入設(shè)置成無(wú)效。1.計(jì)算機(jī)啟動(dòng)過(guò)程(1)操作系統(tǒng)啟動(dòng)過(guò)程及其安全性分析:2)操作系統(tǒng)啟動(dòng)過(guò)程讀取指定啟動(dòng)順序中的存儲(chǔ)設(shè)備的主引導(dǎo)記錄硬盤(pán)啟動(dòng)操作系統(tǒng)啟動(dòng)1.計(jì)算機(jī)啟動(dòng)過(guò)程(2)操作系統(tǒng)啟動(dòng)過(guò)程及其安全性分析:2)操作系統(tǒng)啟動(dòng)過(guò)程的安全問(wèn)題在操作系統(tǒng)啟動(dòng)過(guò)程,病毒主要存在于主引導(dǎo)扇區(qū)、引導(dǎo)扇區(qū)和分區(qū)表中,這種類(lèi)型的病毒稱(chēng)為引導(dǎo)區(qū)病毒。隨著操作系統(tǒng)的發(fā)展,尤其是Windows7、Windows8出現(xiàn)以后,分區(qū)方式發(fā)生了改變,一部分引導(dǎo)區(qū)病毒已經(jīng)失效了。內(nèi)核裝載階段是病毒隨啟動(dòng)而加載的主要階段,在這個(gè)啟動(dòng)過(guò)程中,內(nèi)核裝載主要與Smss.exe和Winlogon.exe等進(jìn)程有關(guān),因此,病毒也可能存于其中。2.程序的生成和運(yùn)行(1)程序生成和運(yùn)行的典型過(guò)程:1)編譯型程序。程序在執(zhí)行前編譯成機(jī)器語(yǔ)言代碼,運(yùn)行時(shí)直接供機(jī)器執(zhí)行。2.程序的生成和運(yùn)行(1)程序生成和運(yùn)行的典型過(guò)程:2)解釋型程序。程序在用編程語(yǔ)言編寫(xiě)后,不需要編譯,以文本方式存儲(chǔ)原始代碼,在運(yùn)行時(shí),通過(guò)對(duì)應(yīng)的解釋器解釋成機(jī)器碼后再運(yùn)行,如JavaScript、Basic語(yǔ)言編寫(xiě)的程序,執(zhí)行時(shí)逐條讀取解釋每個(gè)語(yǔ)句,然后再執(zhí)行。2.程序的生成和運(yùn)行(2)編譯/鏈接與程序的構(gòu)建:1)程序的編譯編譯器(含匯編器)的基本功能是,將使用一種高級(jí)語(yǔ)言編寫(xiě)的程序(源程序)翻譯成目標(biāo)代碼(機(jī)器語(yǔ)言代碼)。編譯過(guò)程主要包含3個(gè)步驟:預(yù)處理。編譯、優(yōu)化。目標(biāo)代碼生成。2.程序的生成和運(yùn)行(2)編譯/鏈接與程序的構(gòu)建:2)程序的鏈接鏈接器的基本功能是,將編譯器產(chǎn)生的多個(gè)目標(biāo)文件合成為一個(gè)可以在目標(biāo)平臺(tái)下執(zhí)行的文件。這里說(shuō)的目標(biāo)平臺(tái)是指程序的運(yùn)行環(huán)境,包括CPU和操作系統(tǒng)。其核心工作是符號(hào)表解析和重定位。鏈接按照工作模式分為兩類(lèi):靜態(tài)鏈接。動(dòng)態(tài)鏈接。2.程序的生成和運(yùn)行(3)加載與程序的運(yùn)行:為什么雙擊一個(gè)exe程序文件(PE文件)它就會(huì)被Windows運(yùn)行?為什么系統(tǒng)要把程序文件裝載到內(nèi)存再執(zhí)行呢?3.PE文件(1)PE文件的概念:1)什么是PE文件?微軟Windows環(huán)境下可執(zhí)行文件的標(biāo)準(zhǔn)格式是PE(PortableExecutable,可移植執(zhí)行體)文件,其目的是為所有Windows平臺(tái)設(shè)計(jì)統(tǒng)一的文件格式,即為Windows平臺(tái)的應(yīng)用軟件提供良好的兼容性和擴(kuò)展性。微軟自WindowsNT3.1首次引入PE文件格式以來(lái),后續(xù)操作系統(tǒng)結(jié)構(gòu)變化、新特性添加、文件存儲(chǔ)格式轉(zhuǎn)換等都沒(méi)有改變PE文件格式。64位的Windows只對(duì)PE格式作了一些簡(jiǎn)單的修飾,新格式叫做PE+或PE32+,并未加入新的結(jié)構(gòu),只簡(jiǎn)單的將以前的32位字段擴(kuò)展為64位。3.PE文件(1)PE文件的概念:2)PE文件的作用PE文件不僅包含了二進(jìn)制的機(jī)器代碼,還自帶許多其他信息,如字符串、菜單、圖標(biāo)、位圖、字體等在程序被執(zhí)行時(shí),操作系統(tǒng)會(huì)按照PE文件格式的約定去相應(yīng)的地方準(zhǔn)確地定位各種類(lèi)型的資源,并分別裝入內(nèi)存的不同區(qū)域。PE文件數(shù)據(jù)資源定位采用鏈表與固定格式相結(jié)合的方式,前者利用鏈表管理資源,資源的具體位置靈活,后者要求數(shù)據(jù)結(jié)構(gòu)大小固定,其位置也相對(duì)固定。3.PE文件(1)PE文件的概念:

3)PE文件與惡意代碼PE——“可移植的執(zhí)行體”意味著此文件格式可用于所有Windows操作系統(tǒng)平臺(tái)和所有CPU上。對(duì)PE文件結(jié)構(gòu)及相關(guān)技術(shù)的研究是惡意代碼研究的基礎(chǔ),因?yàn)閻阂獯a的執(zhí)行必將直接或者間接地依賴(lài)于PE文件。例如,Win32病毒感染文件時(shí),基本上都會(huì)將EXE和DLL文件作為目標(biāo)。計(jì)算機(jī)病毒等許多惡意代碼本身也是可執(zhí)行的,其文件也遵循PE文件結(jié)構(gòu)。。3.PE文件(2)PE文件結(jié)構(gòu):1)PE文件總體結(jié)構(gòu)3.PE文件(2)PE文件結(jié)構(gòu):

2)PE文件執(zhí)行基本過(guò)程當(dāng)PE文件被執(zhí)行時(shí),PE裝載器檢查DOSMZ文件頭里的PE頭偏移量。如果找到,則跳轉(zhuǎn)到PE頭。PE裝載器會(huì)檢查PE頭的有效性,確定該P(yáng)E文件的總體信息,緊接著讀取節(jié)表中的節(jié)信息,并采用文件映射方法將相應(yīng)節(jié)映射到內(nèi)存,PE裝載器將處理PE文件中最重要的導(dǎo)入表,從導(dǎo)入表中獲取函數(shù)字符串名稱(chēng)信息、DLL名稱(chēng)信息、導(dǎo)入函數(shù)地址表項(xiàng)起始偏移地址等,最終完成PE文件的執(zhí)行。3.PE文件(3)地址映射:1)什么是虛擬內(nèi)存?Windows的內(nèi)存可以被分為兩個(gè)層面:物理內(nèi)存和虛擬內(nèi)存。其中,物理內(nèi)存比較復(fù)雜,需要進(jìn)入Windows內(nèi)核級(jí)別ring0才能看到。通常,在用戶模式下,我們用調(diào)試器看到的內(nèi)存地址都是虛擬內(nèi)存。3.PE文件(3)地址映射:2)PE文件與虛擬內(nèi)存之間的映射3.PE文件(3)地址映射:3)地址映射的計(jì)算虛擬地址(VA)與相對(duì)虛擬地址(RVA)的轉(zhuǎn)化規(guī)則文件偏移是相對(duì)于PE文件開(kāi)始處0字節(jié)的偏移,相對(duì)虛擬地址RVA則是相對(duì)于映像基址的偏移。因此,虛擬內(nèi)存地址VA、映像基址ImageBase、相對(duì)虛擬內(nèi)存地址RVA三者之間有如下關(guān)系。VA=ImageBase+RVA3.PE文件(3)地址映射:3)地址映射的計(jì)算文件偏移地址(FOA)與虛擬地址(VA)的轉(zhuǎn)化規(guī)則因?yàn)橛校耗硵?shù)據(jù)在PE文件中的偏移地址-該數(shù)據(jù)所在節(jié)的起始文件偏移地址=某數(shù)據(jù)的RVA-該數(shù)據(jù)所在節(jié)的起始RVA所以有:某數(shù)據(jù)在PE文件中的偏移地址=某數(shù)據(jù)的RVA-(該數(shù)據(jù)所在節(jié)的起始RVA-該數(shù)據(jù)所在節(jié)的起始文件偏移地址)其中的關(guān)鍵是計(jì)算節(jié)偏移:該數(shù)據(jù)所在節(jié)的起始RVA-該數(shù)據(jù)所在節(jié)的起始文件偏移地址=節(jié)偏移最終有:某數(shù)據(jù)在PE文件中的偏移地址=某數(shù)據(jù)的RVA-節(jié)偏移3.PE文件(4)導(dǎo)入函數(shù)地址表和導(dǎo)入表:1)導(dǎo)入函數(shù)地址表(ImportAddressTable,IAT)3.PE文件(4)導(dǎo)入函數(shù)地址表和導(dǎo)入表:2)導(dǎo)入函數(shù)目錄表(ImportDirectoryTable,IT)緊跟IAT后的是導(dǎo)入函數(shù)目錄表,簡(jiǎn)稱(chēng)導(dǎo)入表IT。導(dǎo)入表是一個(gè)IMAGE_IMPORT_DESCRIPTOR結(jié)構(gòu)體數(shù)組,其中記錄著PE文件要導(dǎo)入的庫(kù)文件及函數(shù)的信息。3.PE文件由PE文件頭中的數(shù)據(jù)目錄表找到導(dǎo)入表起始偏移地址位置的過(guò)程4.程序的逆向分析(1)逆向工程:1)逆向分析工程的概念逆向分析工程,簡(jiǎn)稱(chēng)逆向工程(ReverseEngineering),源于商業(yè)及軍事領(lǐng)域中的硬件分析。其主要目的是,在不能輕易獲得必要的生產(chǎn)信息下,直接從對(duì)成品的分析,推導(dǎo)出產(chǎn)品的設(shè)計(jì)原理。逆向工程則是按照與系統(tǒng)工程的相反方向,將其由系統(tǒng)到要素、由大至小一件件地拆卸開(kāi),分析各要素、各部件的結(jié)構(gòu)原因、生成原理及成型過(guò)程中的成功思路,再結(jié)合自己的實(shí)際,對(duì)其進(jìn)行必要的調(diào)整和改進(jìn),進(jìn)而形成新的系統(tǒng)。逆向工程從應(yīng)用范圍來(lái)看,可以分成硬件和軟件兩大部分。4.程序的逆向分析(1)逆向工程:2)軟件逆向工程的概念軟件逆向工程的定義軟件逆向分析工程,簡(jiǎn)稱(chēng)逆向工程(本書(shū)談及的逆向工程均是指軟件逆向分析工程),是一系列對(duì)運(yùn)行于機(jī)器上的低級(jí)代碼進(jìn)行等價(jià)的提升和抽象,最終得到更加容易被人所理解的表現(xiàn)形式的過(guò)程。4.程序的逆向分析逆向工程的作用對(duì)于軟件設(shè)計(jì)與開(kāi)發(fā)人員,為了保護(hù)自身開(kāi)發(fā)軟件的知識(shí)產(chǎn)權(quán),—般不會(huì)將源程序公開(kāi),然而,他們又往往通過(guò)對(duì)感興趣的軟件進(jìn)行逆向工程,來(lái)了解和學(xué)習(xí)這些軟件的設(shè)計(jì)理念及開(kāi)發(fā)技巧,以幫助自己在軟件市場(chǎng)競(jìng)爭(zhēng)中取得優(yōu)勢(shì)。對(duì)于惡意軟件開(kāi)發(fā)者或網(wǎng)絡(luò)攻擊者,他們使用逆向分析方法對(duì)加密保護(hù)技術(shù)、數(shù)字版權(quán)保護(hù)技術(shù)進(jìn)行跟蹤分析,進(jìn)而實(shí)施破解。他們還常常利用逆向工程技術(shù)挖掘操作系統(tǒng)和應(yīng)用軟件的漏洞,進(jìn)而開(kāi)發(fā)或使用漏洞利用程序,獲取應(yīng)用軟件關(guān)鍵信息的訪問(wèn)權(quán),甚至完全控制整個(gè)系統(tǒng)。對(duì)于軟件開(kāi)發(fā)人員尤其是信息安全人員,可以使用逆向分析技術(shù)對(duì)二進(jìn)制代碼審核,跟蹤分析程序執(zhí)行的每個(gè)步驟,主動(dòng)挖掘軟件中的漏洞;也可以進(jìn)一步對(duì)代碼實(shí)現(xiàn)的質(zhì)量和魯棒性進(jìn)行評(píng)估,這為無(wú)法通過(guò)查閱軟件源代碼評(píng)估代碼的質(zhì)量和可靠性提供了新途徑;還可以對(duì)惡意程序進(jìn)行解剖和分析,為清除惡意程序提供幫助。4.程序的逆向分析(1)逆向工程:2)軟件逆向工程的概念逆向工程的正確應(yīng)用合理利用逆向工程技術(shù),將有利于打破一些軟件企業(yè)對(duì)軟件技術(shù)的壟斷,有利于中小軟件企業(yè)開(kāi)發(fā)出更多具有兼容性的軟件,從而促進(jìn)軟件產(chǎn)業(yè)的健康發(fā)展。技術(shù)從來(lái)都是一把雙刃劍,逆向工程技術(shù)也已成為剽竊軟件設(shè)計(jì)思想,侵犯軟件著作權(quán)的利器。許多國(guó)家,包括中國(guó)的相關(guān)法律部門(mén)都認(rèn)為:只要反編譯并非以復(fù)制軟件為目的,在實(shí)施反編譯行為的過(guò)程中所涉及的復(fù)制只是一種中間過(guò)渡性的復(fù)制,反編譯最終所達(dá)到的目的是使公眾可以獲得包含在軟件中不受著作權(quán)保護(hù)的成分,這樣的反編譯并不會(huì)被認(rèn)為是侵權(quán)。4.程序的逆向分析(1)逆向工程:3)軟件逆向分析的方法動(dòng)態(tài)逆向分析方法將目標(biāo)代碼變換為易讀形式的逆向分析過(guò)程,但是,這里不是僅僅靜態(tài)閱讀變換之后的程序,而是在一個(gè)調(diào)試器或調(diào)試工具中加載程序,然后一邊運(yùn)行程序一邊對(duì)程序的行為進(jìn)行觀察和分析。這些調(diào)試器或調(diào)試工具包括:一些集成開(kāi)發(fā)環(huán)境(IntegratedDevelopmentEnvironment,IDE)提供的調(diào)試工具、操作系統(tǒng)提供的調(diào)試器以及軟件廠商開(kāi)發(fā)的調(diào)試工具。4.程序的逆向分析(1)逆向工程:3)軟件逆向分析的方法靜態(tài)逆向分析方法是指不執(zhí)行代碼而是使用反編譯、反匯編工具,把程序的二進(jìn)制代碼翻譯成匯編語(yǔ)言,之后,分析者可以手工分析,也可以借助工具自動(dòng)化分析。靜態(tài)分析方法能夠精確地描繪程序的輪廓,從而可以輕易地定位自己感興趣的部分來(lái)重點(diǎn)分析。靜態(tài)逆向分析的常用工具有IDAPro、C32Asm、Win32Dasm、VBDecompilerpro等。4.程序的逆向分析(1)逆向工程:3)軟件逆向分析的方法動(dòng)靜結(jié)合的逆向分析方法基于靜態(tài)和動(dòng)態(tài)逆向分析的優(yōu)點(diǎn)與不足,人們經(jīng)常采用動(dòng)靜結(jié)合的逆向分析。通過(guò)靜態(tài)分析達(dá)到對(duì)代碼整體的掌握,通過(guò)動(dòng)態(tài)分析觀察程序內(nèi)部的數(shù)據(jù)流信息。動(dòng)態(tài)和靜態(tài)分析需要相互配合,彼此為對(duì)方提供數(shù)據(jù)以幫助對(duì)方更好地完成分析工作。動(dòng)靜結(jié)合的逆向分析能夠很好地達(dá)到軟件逆向分析的要求,但也存在著結(jié)構(gòu)復(fù)雜、難以實(shí)現(xiàn)等不足之處。4.程序的逆向分析(1)逆向工程:4)軟件逆向分析的一般過(guò)程軟件逆向分析的一般過(guò)程涉及文件裝載、指令解碼、語(yǔ)義映射、相關(guān)圖構(gòu)造、過(guò)程分析、類(lèi)型分析、結(jié)果輸出7個(gè)階段。4.程序的逆向分析(2)逆向工程相關(guān)工具及應(yīng)用:程序的虛擬分析環(huán)境搭建編譯器調(diào)試功能動(dòng)態(tài)調(diào)試工具OllyDbg反匯編?kù)o態(tài)分析工具IDA文本及數(shù)據(jù)分析工具UltraEdit5.應(yīng)用案例【案例11-1】構(gòu)造一個(gè)PE格式的

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論