freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

碩士基于行為監(jiān)測(cè)的antirbootkit的研究與實(shí)現(xiàn)畢業(yè)論文(編輯修改稿)

2025-07-25 16:27 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 22 Windows PE 文件格式示意idata 節(jié)中包含函數(shù)輸入表,IAT中記錄著該文件運(yùn)行中需調(diào)用的所有鏈接庫(kù),以及鏈接庫(kù)中需調(diào)用的所有庫(kù)函數(shù)。PE文件運(yùn)行時(shí),文件自身和IAT中記錄的鏈接庫(kù)都加載到內(nèi)存,將調(diào)用導(dǎo)入函數(shù)的指令和函數(shù)實(shí)際所處的地址聯(lián)系起來(lái),以后就通過(guò) IAT來(lái)調(diào)用這些函數(shù)。IAT Hook的原理是:在進(jìn)程加載時(shí)修改 IAT,將要 Hook的API函數(shù)地址改為自定義函數(shù)的地址。這樣,進(jìn)程每次調(diào)用此函數(shù)時(shí),其實(shí)執(zhí)行的是Rootkit代碼,然后再跳轉(zhuǎn)回原來(lái)的正常代碼。(4) 修改函數(shù)輸出表(EAT,Export Address Table)EAT存在于PE文件中的edata節(jié),保存了可執(zhí)行文件(如DLL 文件)的導(dǎo)出的可供其他模塊來(lái)調(diào)用的函數(shù)和公共變量,包括函數(shù)名稱(chēng)和地址等。通過(guò)替換Windows 系統(tǒng)某些重要DLL中的輸出函數(shù)地址,即可實(shí)現(xiàn)目標(biāo)函數(shù)的掛接。(5) 修改API 函數(shù)常見(jiàn)修改API 函數(shù)的方法:a) 通過(guò)某個(gè)CPU 控制轉(zhuǎn)移指令(如CALL 或JMP) 修改目標(biāo)API 的頭幾個(gè)字節(jié);具體操作如下[19]:找到目標(biāo)API 函數(shù)在內(nèi)存中的地址,然后修改這個(gè)API 函數(shù)前幾個(gè)字節(jié)(修改前需另外開(kāi)辟空間存儲(chǔ)被修改的字節(jié)),把它改為跳轉(zhuǎn)到替換API 函數(shù)的JMP指令。取消API 函數(shù)的掛接時(shí),取出事先保存的字節(jié),并將它們放回掛接函數(shù)的開(kāi)頭即可。b) 通過(guò)中斷指令(Int 3)代替目標(biāo)API 第1 個(gè)字節(jié)。通過(guò)Int 3 產(chǎn)生異常,截獲異常實(shí)現(xiàn)掛接API。(6) 其它技術(shù)除了以上技術(shù),用戶(hù)態(tài)布控技術(shù)還包括:內(nèi)存映射技術(shù);dll插入技術(shù),如遠(yuǎn)程線(xiàn)程插入,內(nèi)存映射文件插入、調(diào)試程序插入等;2. 內(nèi)核級(jí)Hook[46]用戶(hù)級(jí)Hook 比較簡(jiǎn)單,但容易被Rootkit之類(lèi)的隱藏植入工具輕易繞過(guò)。如果將掛接深入到系統(tǒng)內(nèi)核,使它與檢測(cè)工具處于相同的運(yùn)行環(huán)境,將極大的提高掛接的深層布控效果。常見(jiàn)的方式有:(1) 修改系統(tǒng)服務(wù)分配表(System Service Description Table,SSDT)系統(tǒng)調(diào)用是操作系統(tǒng)內(nèi)核向應(yīng)用程序提供的操作硬件設(shè)備、請(qǐng)求內(nèi)核服務(wù)的接口。系統(tǒng)調(diào)用接口位于用戶(hù)態(tài)與核心態(tài)之間,應(yīng)用程序通過(guò)系統(tǒng)調(diào)用向操作系統(tǒng)內(nèi)核請(qǐng)求服務(wù),操作系統(tǒng)內(nèi)核完成服務(wù)后將結(jié)果返回給應(yīng)用程序。系統(tǒng)服務(wù)調(diào)度表中存放了所有系統(tǒng)服務(wù)函數(shù)的入口地址,在系統(tǒng)服務(wù)調(diào)用過(guò)程中,系統(tǒng)通過(guò)服務(wù)號(hào)到系統(tǒng)服務(wù)分配表中查找對(duì)應(yīng)的中斷服務(wù)過(guò)程的地址,到系統(tǒng)服務(wù)參數(shù)表(System Service Parameter Table,SSPT)中得到調(diào)用的參數(shù),然后執(zhí)行中斷服務(wù)過(guò)程。通過(guò)替換系統(tǒng)服務(wù)分配表中某些服務(wù)號(hào)對(duì)應(yīng)的中斷服務(wù)過(guò)程的地址,就可實(shí)現(xiàn)對(duì)指定API 函數(shù)的掛接[20]。(2) 修改中斷描述符表(Interruption Descriptor Table,IDT)所謂中斷,是一個(gè)過(guò)程,即CPU在正常執(zhí)行程序的過(guò)程中,遇到外部/內(nèi)部的緊急事件需要處理,暫時(shí)中斷(中止)當(dāng)前程序的執(zhí)行,而轉(zhuǎn)去為事件服務(wù),待服務(wù)完畢,再返回到暫停處(斷點(diǎn))繼續(xù)執(zhí)行原來(lái)的程序。為事件服務(wù)的程序稱(chēng)為中斷服務(wù)程序或中斷處理程序。每個(gè)中斷用一個(gè)0255 的數(shù)字標(biāo)識(shí),Intel 稱(chēng)這個(gè)數(shù)字為向量。中斷描述符表是一個(gè)有256 個(gè)入口的線(xiàn)性表,每個(gè)IDT的入口是個(gè)8字節(jié)的中斷門(mén)描述符指向相應(yīng)的中斷處理過(guò)程。當(dāng)中斷發(fā)生時(shí),CPU 會(huì)根據(jù)中斷向量和中斷描述符表中的值,轉(zhuǎn)移到相應(yīng)的中斷處理程序。IDT鉤掛的原理是:首先保存出特定的中斷向量的ISR,然后直接修改該中斷向量的ISR為自定義的函數(shù),每當(dāng)這個(gè)中斷向量對(duì)應(yīng)的中斷產(chǎn)生時(shí),就會(huì)調(diào)用自定義的函數(shù)。由于我們自定義的函數(shù)里面執(zhí)行完我們的功能后再跳轉(zhuǎn)到原ISR處執(zhí)行。(3) SYSENTER指令鉤掛由于之前的int2e系統(tǒng)調(diào)用機(jī)制,涉及到的Interrupt/ExceptionHandler的調(diào)用都是通過(guò)call/trap/task這一類(lèi)的gate來(lái)實(shí)現(xiàn)的,這種方式會(huì)進(jìn)行棧切換,并且系統(tǒng)棧的地址等信息由TSS提供,可能會(huì)引起多次內(nèi)存訪(fǎng)問(wèn)(來(lái)獲取這些切換信息),系統(tǒng)開(kāi)銷(xiāo)較大。SYSENTER/SYSEXIT這對(duì)指令匯編指令作為快速系統(tǒng)調(diào)用機(jī)制的一部分是在Pentium174。II處理器及以上處理器中提供的。SYSENTER指令鉤掛的原理是:首先Ntdll 加載相應(yīng)的請(qǐng)求服務(wù)號(hào)到EAX 寄存器中,同時(shí)EDX 寄存器存貯當(dāng)前的棧指針ESP,然后Ntdll發(fā)出SYSENTER 指令,該指令轉(zhuǎn)移控制權(quán)到寄存器IA32_SYSENTER_EIP 存貯的地址中[21],通過(guò)修改這個(gè)地址,可實(shí)現(xiàn)相應(yīng)的掛接。(4) 修改IRP (I/O Request Packet) 函數(shù)表Windows驅(qū)動(dòng)程序由一組例程組成,這些例程在處理I/O請(qǐng)求的不同階段時(shí)被調(diào)用。其中分發(fā)例程(dispatch routines)負(fù)責(zé)處理不同種類(lèi)的IRP,實(shí)現(xiàn)打開(kāi)、關(guān)閉、讀、寫(xiě) 等主要功能。修改驅(qū)動(dòng)程序的函數(shù)表,將要Hook的分發(fā)例程的入口地址替換為新的IRP處理函數(shù),在其中的Rootkit惡意代碼負(fù)責(zé)截取相應(yīng)IRP進(jìn)行額外處理,經(jīng)過(guò)信息過(guò)濾之后再調(diào)用原來(lái)的IRP處理函數(shù)。示意的IRP掛接如圖23所示:圖 23 IRP掛接(5) 分層驅(qū)動(dòng)HookWindows的驅(qū)動(dòng)程序模型采用分層棧式結(jié)構(gòu)。對(duì)設(shè)備的訪(fǎng)問(wèn)請(qǐng)求從驅(qū)動(dòng)棧頂開(kāi)始,處理后再傳遞到下一層驅(qū)動(dòng)。這就方便了系統(tǒng)的擴(kuò)展,當(dāng)需要新功能時(shí),只要編寫(xiě)新的驅(qū)動(dòng)程序,并指定其在驅(qū)動(dòng)棧中的位置即可,無(wú)須修改原有系統(tǒng)。而完成例程(pletion routines)在下層驅(qū)動(dòng)處理完IRP返回時(shí)被調(diào)用,把Rootkit代碼設(shè)置為完成例程,可以在不修改驅(qū)動(dòng)原有函數(shù)功能的情況下修改 IRP的返回結(jié)果。 直接內(nèi)核對(duì)象操作技術(shù)(Direct Kernel Object Modify,DKOM)Windows系統(tǒng)經(jīng)常要?jiǎng)?chuàng)建、打開(kāi)和操作各種各樣的內(nèi)核對(duì)象,比如存取符號(hào)對(duì)象、事件對(duì)象、文件對(duì)象、設(shè)備對(duì)象、驅(qū)動(dòng)對(duì)象、文件映射對(duì)象、I/O 完成端口對(duì)象、管道對(duì)象、進(jìn)程對(duì)象等。每個(gè)內(nèi)核對(duì)象只是內(nèi)核分配的一個(gè)內(nèi)存塊,并且只能由該內(nèi)核訪(fǎng)問(wèn),應(yīng)用程序由于特權(quán)級(jí)別的限制無(wú)法在內(nèi)存中找到內(nèi)核對(duì)象的數(shù)據(jù)結(jié)構(gòu),也就不能直接修改它們的內(nèi)容。操作系統(tǒng)提供的很多具有Ring0特權(quán)級(jí)別的原始服務(wù)API (Native API)都是通過(guò)查詢(xún)相應(yīng)內(nèi)核對(duì)象,從而返回相應(yīng)結(jié)果的。DKOM的實(shí)質(zhì)就是直接修改Native API 訪(fǎng)問(wèn)的內(nèi)核對(duì)象,影響Native API 的返回結(jié)果實(shí)現(xiàn)某些隱藏功能。典型的使用DKOM技術(shù)的Rootkit是用來(lái)隱藏進(jìn)程[7]。Windows系統(tǒng)枚舉進(jìn)程使用的是活動(dòng)進(jìn)程列表PsActive ProcessList,它是一個(gè)雙向鏈表,每個(gè)結(jié)點(diǎn)對(duì)應(yīng)一個(gè)進(jìn)程的 EPROCESS數(shù)據(jù)結(jié)構(gòu),所有結(jié)點(diǎn)通過(guò)EPROCESS結(jié)構(gòu)中的 ActivePr0cessLinks雙向指針鏈在一起。要隱藏某個(gè)進(jìn)程,只需修改對(duì)應(yīng) EPROCESS的ActiveProcessLinks,將其從鏈表中摘除即可。由于系統(tǒng)執(zhí)行線(xiàn)程調(diào)度使用的是線(xiàn)程鏈表而不進(jìn)程鏈表,因此這樣的修改不會(huì)影響進(jìn)程運(yùn)行。 Bootkit啟動(dòng)劫持技術(shù) Windows啟動(dòng)流程Windows啟動(dòng)主要分為:BIOS、MBR、系統(tǒng)引導(dǎo)程序Ntldr、內(nèi)核初始化。如圖24所示:圖 24 Windows啟動(dòng)流程1. BIOS啟動(dòng)在CPU上電之后,若由硬盤(pán)啟動(dòng),則BIOS將硬盤(pán)的主引導(dǎo)記錄(位于0柱面、0磁道、1扇區(qū))讀入物理地址0:7C00處,然后將控制權(quán)交給主引導(dǎo)代碼。2. MBR啟動(dòng)MBR(Master Boot Record )主引導(dǎo)記錄包含兩部分的內(nèi)容,前446字節(jié)為啟動(dòng)代碼及數(shù)據(jù),而從446(0x1BE)開(kāi)始則是分區(qū)表,分區(qū)表由四個(gè)分區(qū)項(xiàng)組成,每個(gè)分區(qū)項(xiàng)數(shù)據(jù)為16字節(jié),記錄了啟動(dòng)時(shí)需要的分區(qū)參數(shù)。在CPU上電之后,若由硬盤(pán)啟動(dòng),則BIOS將硬盤(pán)的主引導(dǎo)記錄(位于0柱面、0磁道、1扇區(qū))讀入物理地址0:7C00處,然后將控制權(quán)交給主引導(dǎo)代碼。主引導(dǎo)代碼的任務(wù)包括:(1) 掃描分區(qū)表,找到一個(gè)激活可引導(dǎo)分區(qū)(bootable partition);(2) 找到激活分區(qū)的起始扇區(qū)(Boot sector);(3) 將激活分區(qū)的引導(dǎo)扇區(qū)裝載到物理內(nèi)存7C00處;(4) 將控制權(quán)交給引導(dǎo)扇區(qū)代碼;3. OBR(OS Boot Record,系統(tǒng)引導(dǎo)記錄)啟動(dòng)OBR找到Ntldr,把Ntldr讀入物理地址2000:0000,Ntldr進(jìn)32位,加載內(nèi)核;4. Ntldr啟動(dòng)Ntldr是由兩部分構(gòu)成,一部分是被稱(chēng)作Su Module的16位匯編代碼,另一部分則是名為Osloader的PE文件。Su module位于Ntldr的頭部,Osloader緊隨其后。OBR將Ntldr加載到物理地址2000:0000開(kāi)始的地方,然后跳轉(zhuǎn)到這個(gè)地址,將控制權(quán)交給Ntldr進(jìn)行引導(dǎo),而這個(gè)地址也就是Su的入口。Su的主要功能是為Osloader準(zhǔn)備內(nèi)存環(huán)境,包括GDT、IDT、打開(kāi)保護(hù)模式(未分頁(yè))和將Osloader按編譯時(shí)的虛擬地址移動(dòng)Osloader等等。在MP(多處理器)版本的Ntldr中,Su還負(fù)責(zé)檢測(cè)Osloader的完整性,如果它檢測(cè)到Ntldr被修改,就會(huì)中止啟動(dòng)。至于Osloader,它的作用可以簡(jiǎn)單歸納為為內(nèi)核準(zhǔn)備執(zhí)行環(huán)境,、 Driver加載進(jìn)內(nèi)存。Osloader最終會(huì)調(diào)用Osloader!(SystemEntry)(BlLoaderBlock)也即Ntoskrnl!KiSystemStartup真正啟動(dòng)內(nèi)核。5. 內(nèi)核啟動(dòng)Ntoskrnl和Hal模塊作為內(nèi)核會(huì)被加載駐留內(nèi)存直到操作系統(tǒng)關(guān)閉。 Bootkit 劫持方式1. BIOS Hook當(dāng)計(jì)算機(jī)開(kāi)機(jī)時(shí),根據(jù)硬件特性就由CPU從主板的BIOS芯片內(nèi)取得程序代碼,用BIOS內(nèi)部的程序代碼獲得控制權(quán)。從CPU內(nèi)外部的檢測(cè)設(shè)置、激活DRAM以及針對(duì)芯片組與各種外圍設(shè)備做初始化設(shè)置之后,最后驅(qū)動(dòng)軟盤(pán)或硬盤(pán),直到把操作系統(tǒng)加載成功,BIOS的開(kāi)機(jī)引導(dǎo)工作就此告一段落,轉(zhuǎn)向從事幕后的支持、協(xié)調(diào)工作,并幫助操作系統(tǒng)或應(yīng)用程序,來(lái)處理外圍設(shè)備溝通的各種操作。典型的如eeyebootroot,IceLord等。2. Ntldr 劫持Ntldr是Windows NT系列內(nèi)核的Osloader,當(dāng)開(kāi)機(jī)以后BIOS載入MBR,MBR載入OBR,然后OBR載入Ntldr,并將執(zhí)行權(quán)轉(zhuǎn)交給Ntldr,最后再來(lái)啟動(dòng)內(nèi)核。理論上講Ntldr是最接近內(nèi)核的,而且對(duì)Ntldr做Hook,可以避免針對(duì)各種外設(shè)的編碼工作,提高通用性。3. SMM (System Management Mode)劫持SMM是Intel在386SL之后引入x86體系結(jié)構(gòu)的一種CPU的執(zhí)行模式,是IA32架構(gòu)具備的四種運(yùn)行模式之一(其他三種模式分別為實(shí)模式、V86模式和保護(hù)模式)。為了實(shí)現(xiàn)SMM,Intel在其CPU上新增了一個(gè)引腳SMI Pin,當(dāng)這個(gè)引腳上為高電平的時(shí)候,CPU會(huì)進(jìn)入該模式。在SMM模式下一切被都屏蔽,包括所有的中斷。SMM模式下的執(zhí)行的程序被稱(chēng)作SMM處理程序,所有的SMM處理程序只能在稱(chēng)作系統(tǒng)管理內(nèi)存(System Management RAM,SMRAM)的空間內(nèi)運(yùn)行。可以通過(guò)設(shè)置SMBASE的寄存器來(lái)設(shè)置SMRAM的空間。SMM處理程序只能由系統(tǒng)固件實(shí)現(xiàn)。SMM下可以執(zhí)行一切特權(quán)指令,并且使得一切內(nèi)存保護(hù)均失效。從某種意義上說(shuō),SMM是對(duì)系統(tǒng)進(jìn)行監(jiān)控的終極方法。SMM漏洞利用的致命之處在于它能將自身隱藏在SMM空間中,SMM權(quán)限高于任何其他運(yùn)行模式,操作系統(tǒng)根本不知道系統(tǒng)何時(shí)進(jìn)入SMM模式,也無(wú)法感知SMM模式曾經(jīng)執(zhí)行過(guò), 不受任何操作系統(tǒng)控制、關(guān)閉或禁用。實(shí)際應(yīng)用中唯一能確認(rèn)SMM空間中運(yùn)行代碼的方法只有物理性的分離計(jì)算機(jī)固件。由于SMI優(yōu)先于任何系統(tǒng)調(diào)用,任何操作系統(tǒng)都無(wú)法控制或讀取SMM,使得SMM RootKit有超強(qiáng)的隱匿性。典型的如SMMPS/2Keyboardsniffer。4. 內(nèi)核劫持內(nèi)核屬于PE文件,所有針對(duì)PE文件鏡像的修改技術(shù)都可以屬于內(nèi)核劫持。典型的包括IAT Hook,EAT Hook,inline Hook等。 本章小結(jié)由于R/Bootkit之所以較傳統(tǒng)惡意軟件更為隱蔽、底層,難以預(yù)防和檢測(cè),是在入侵感染技術(shù)上有所突破,為此本章研究了探索當(dāng)前主流B/Rootkit的危害原理、分類(lèi)方式、以及深入分析了其技術(shù)要點(diǎn)實(shí)現(xiàn),從而為在R/Bootkit和AntiR/Bootkit的技術(shù)對(duì)抗中占據(jù)優(yōu)勢(shì)提供技術(shù)上的支持。第 3 章 行為語(yǔ)義抽取和形式化描述研究 引言為對(duì)抗R/Bootkit而發(fā)展出來(lái)的主動(dòng)防御技術(shù),可以在新威脅破壞計(jì)算機(jī)之前檢測(cè)并消除威脅。但是由于缺乏關(guān)聯(lián)行為序列的分析與判斷,這種方式存在誤報(bào)率較高的問(wèn)題。例如:有些惡意程序會(huì)偽裝成正常干凈的程序逃避監(jiān)控;還有的軟件會(huì)用到類(lèi)似惡意程序的方式,進(jìn)行安裝和調(diào)用,以獲得更高一級(jí)的加載權(quán)和啟動(dòng)權(quán),因此二者行為的混淆,不僅造成主動(dòng)防御比較高的誤報(bào)率,同時(shí)也增加了識(shí)別和判定的難度,從而造成惡意軟件入住系統(tǒng)和危及計(jì)算機(jī)的安全與穩(wěn)定。由于主動(dòng)防御并不能完美發(fā)現(xiàn)所有形式的病毒或者攻擊(據(jù)一些行業(yè)數(shù)據(jù)統(tǒng)計(jì)表明它的成功率大概在60%左右),因此很多對(duì)于可疑操作放行與拒絕的判定還需要用戶(hù)必須具備某些高級(jí)專(zhuān)業(yè)知識(shí)來(lái)自行判定。缺乏惡意軟件行為語(yǔ)義的自主識(shí)別能力,帶給用戶(hù)必要的高交互性。而發(fā)現(xiàn)并且提取惡意軟件的行為語(yǔ)義,通過(guò)截獲一系列的潛在惡意行為特征可以有效解決上述問(wèn)題。 R/Bootkit行為特征分析 典型Rootkit Klog行為剖析Klog作為Windows操作系統(tǒng)下當(dāng)前主流的密碼竊取工具之一,屬于典型的內(nèi)核級(jí)鍵盤(pán)鉤掛Rootkit,在被植入了Klog Rootkit之后的系統(tǒng)上,所有的鍵盤(pán)擊鍵操作所對(duì)應(yīng)的鍵盤(pán)掃描碼都會(huì)被秘密記錄下來(lái)保存到特定的日志文件之中,而不管當(dāng)前的擊鍵操作是否發(fā)生在被激活的進(jìn)程中。由于沒(méi)有調(diào)用任何的Ring3下的編程接口或者操作系
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1