• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于關(guān)聯(lián)技術(shù)檢測(cè)Rootkits的方法與實(shí)現(xiàn)

      2012-08-06 12:51:14徐敏王玲芬王鵬杰
      關(guān)鍵詞:注冊(cè)表內(nèi)核程序

      徐敏 王玲芬 王鵬杰

      大連民族學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院 遼寧 116600

      0 引言

      Rootkits最早是一組用于UNIX操作系統(tǒng)的工具集,黑客使用它們隱藏入侵活動(dòng)的痕跡,它能在操作系統(tǒng)中隱藏惡意程序,進(jìn)而達(dá)到某種不可告人的目的。隨著互聯(lián)網(wǎng)和個(gè)人電腦的普及和廣泛的使用,Rootkits也在不斷的演化和發(fā)展中,許多功能更強(qiáng),技術(shù)更新,破壞更大的Rootkits程序應(yīng)運(yùn)而生,它從之前較簡(jiǎn)單的對(duì)信息的隱藏發(fā)展到通過獲取用戶的隱私信息來謀取私利,給用戶帶來了直接或者間接的經(jīng)濟(jì)財(cái)產(chǎn)上的損失。

      針對(duì)上述情況,開發(fā)出一款能夠?qū)π滦蚏ootkits進(jìn)行檢測(cè)的安全軟件就尤為重要了。本文提出了一種基于關(guān)聯(lián)檢測(cè)技術(shù)對(duì)惡意Rootkits進(jìn)行有效檢測(cè)的方法,為清除Rootkits提供了重要的信息。

      1 Rootkits一般檢測(cè)方法及缺陷

      當(dāng)前,國(guó)內(nèi)外在對(duì)Rootkits的檢測(cè)方面主要提出了以下幾種方法:

      (1) 基于特征碼的匹配技術(shù):該檢測(cè)方法依賴于病毒分析人員取得病毒樣本后,首先分析其在內(nèi)存中惟一特征碼,然后利用特征碼去匹配內(nèi)存塊來檢測(cè)Rootkits,但是,這種方法無法檢測(cè)出新Rootkits程序,因?yàn)闄z測(cè)技術(shù)通常滯后于Rootkits的發(fā)展。

      (2) 基于交叉視圖的檢測(cè)技術(shù):該檢測(cè)方法是通過對(duì)比兩種不同系統(tǒng)調(diào)用獲取到的系統(tǒng)信息進(jìn)行對(duì)比,進(jìn)而判斷是否存在Rootkits程序。例如:當(dāng)要檢測(cè)系統(tǒng)是否存在隱藏的進(jìn)程時(shí),可以通過在應(yīng)用層獲取一張快照的方式得到當(dāng)前的進(jìn)程信息,進(jìn)而與直接使用內(nèi)核程序接口獲取的當(dāng)前進(jìn)程信息進(jìn)行對(duì)比。該檢測(cè)方法的缺點(diǎn)是當(dāng)Rootkits程序運(yùn)行比檢測(cè)驅(qū)動(dòng)更低層時(shí),該檢測(cè)方法就無效了,同時(shí),此方法只能檢測(cè)系統(tǒng)是否存在Rootkits程序,并不能直接找出Rootkits程序。

      (3) 基于程序完整性檢測(cè)技術(shù):該檢測(cè)方法是通過解析磁盤文件,獲取文件的相關(guān)信息,利用獲取到的信息與當(dāng)前內(nèi)存中的信息進(jìn)行對(duì)比。它的缺點(diǎn)是無法檢測(cè)通過內(nèi)嵌鉤子的方式修改系統(tǒng)執(zhí)行流程的Rootkits程序。

      2 Windows Rootkits的實(shí)現(xiàn)技術(shù)

      2.1 修改系統(tǒng)服務(wù)描述表中相關(guān)函數(shù)地址

      圖1 SSDT的表項(xiàng)

      如圖1所示,Rootkits可通過修改系統(tǒng)服務(wù)描述表(System Service Descriptor Table,SSDT)中的對(duì)應(yīng)的函數(shù)地址達(dá)到更改系統(tǒng)服務(wù)執(zhí)行流程的目的。這里以NtQueryDirectoryFile函數(shù)為例進(jìn)行說明。如圖2所示,當(dāng)應(yīng)用層調(diào)用FindNextFile的時(shí)候,它最終會(huì)在內(nèi)核中調(diào)用NtQueryDirectoryFile,而NtQuery DirectoryFile的地址存放在系統(tǒng)服務(wù)描述表中。假如,它被替換為Rootkits的函數(shù)地址,Rootkits就可以隱藏掉某些文件的相關(guān)信息,當(dāng)應(yīng)用層執(zhí)行文件查詢時(shí),就不能查詢到被隱藏的文件。

      圖2 替換NtQueryDirectoryFile函數(shù)

      2.2 修改中斷描述表中斷函數(shù)的入口地址

      獲取到修改中斷描述表( Interrupt Descriptor Table,IDT )入口地址后,可以替換掉相應(yīng)的中斷處理函數(shù),改變系統(tǒng)中斷的處理流程。比如,修改響應(yīng)鍵盤中斷處理的函數(shù)地址,就可以攔截下用戶的輸入信息。

      2.3 修改Windows下的相關(guān)驅(qū)動(dòng)程序的分發(fā)函數(shù)的指針

      驅(qū)動(dòng)的分發(fā)函數(shù)總是用來處理發(fā)給這個(gè)驅(qū)動(dòng)程序的各種I/O請(qǐng)求包(I/O Request Package,IRP)。當(dāng)有IRP發(fā)給這個(gè)驅(qū)動(dòng)時(shí),Windows總是調(diào)用DRIVER_OBJECT下的分發(fā)函數(shù)來處理這些請(qǐng)求。DRIVER_OBJECT下的分發(fā)函數(shù)指針被保存在一個(gè)數(shù)組中。Rootkits可以通過替換這個(gè)數(shù)組中的函數(shù)地址,進(jìn)而能在驅(qū)動(dòng)響應(yīng)這個(gè)IRP前,提前攔截下這個(gè)IRP,執(zhí)行相關(guān)操作。

      這里以Hook鍵盤的分發(fā)函數(shù)的指針進(jìn)行說明。首先,可以通過鍵盤名獲取到鍵盤類驅(qū)動(dòng)對(duì)象,然后,利用鍵盤類驅(qū)動(dòng)對(duì)象修改驅(qū)動(dòng)中分發(fā)函數(shù)的指針,進(jìn)而替換為Rootkits的函數(shù)地址,從而達(dá)到了攔截鍵盤信息的目的。

      2.4 編寫?yīng)毩⒌尿?qū)動(dòng)模塊

      如圖3中左邊是一個(gè)設(shè)備對(duì)象棧,設(shè)備對(duì)象是操作系統(tǒng)為幫助軟件管理而創(chuàng)建的數(shù)據(jù)結(jié)構(gòu)。它為每個(gè)硬件至少創(chuàng)建一個(gè)物理設(shè)備對(duì)象(PDO)和功能設(shè)備對(duì)象(FDO),它們中間會(huì)存在一些過濾設(shè)備對(duì)象(FIDO)。驅(qū)動(dòng)程序?qū)ο蟀艘唤M處理IRP的例程。分層結(jié)構(gòu)使IRP的過程更加清晰,影響到設(shè)備的每個(gè)操作都使用IRP,每個(gè)IRP均有I/O管理器發(fā)出,并且依次從相應(yīng)設(shè)備棧的棧頂向下傳遞。每一層的對(duì)應(yīng)的驅(qū)動(dòng)程序?qū)ο蠖伎梢哉{(diào)用相應(yīng)的例程來處理IRP。

      圖3 Windows驅(qū)動(dòng)模型的分層結(jié)構(gòu)

      這種分層結(jié)構(gòu)非常利于第三方的驅(qū)動(dòng)程序加載到操作系統(tǒng)中的對(duì)應(yīng)層次中,Rootkits同樣也可以創(chuàng)建自己的設(shè)備對(duì)象掛載到相應(yīng)的設(shè)備棧的棧頂,并對(duì)所有發(fā)往此設(shè)備棧的IRP進(jìn)行攔截,執(zhí)行其某些特定的功能。

      3 基于關(guān)聯(lián)檢測(cè)的Windows Rootkits的原理和實(shí)現(xiàn)

      當(dāng)前的Windows Rootkits結(jié)構(gòu)具有多樣化的特點(diǎn),單一的檢測(cè)方法很難對(duì)其進(jìn)行有效檢測(cè)。本文提出了一種基于關(guān)聯(lián)檢測(cè)的方法,它能有效對(duì)當(dāng)前絕大部分的Windows檢測(cè)?;陉P(guān)聯(lián)檢測(cè)技術(shù)主要由三部分構(gòu)成:完整性檢測(cè)、流程結(jié)構(gòu)檢測(cè)和模塊特征檢測(cè)。此三部分不僅具有自身獨(dú)特的檢測(cè)特點(diǎn),而且能夠相互補(bǔ)充,使三種不同檢測(cè)方式可以有效被整合在一起,最大程度發(fā)揮三種不同檢測(cè)技術(shù)對(duì)Windows Rootkits檢測(cè)方面的優(yōu)勢(shì)。

      3.1 完整性檢測(cè)

      Rootkits在執(zhí)行Hook時(shí),都會(huì)修改相關(guān)信息,進(jìn)而破壞原始數(shù)據(jù)結(jié)構(gòu),可通過重新將磁盤中原始文件加載到內(nèi)存中,獲取要檢測(cè)數(shù)據(jù)在程序中的偏移地址,將獲取到的偏移地址與當(dāng)前數(shù)據(jù)的偏移地址進(jìn)行比較,假如數(shù)據(jù)與獲取到偏移地址不一致,則可以斷定數(shù)據(jù)被修改了。

      如圖4所示,這里以ntoskrnl.exe的導(dǎo)出表中導(dǎo)出函數(shù)為例進(jìn)行說明。首先,重新加載ntoskrnl.exe到內(nèi)存中,解析其PE文件結(jié)構(gòu),記錄獲取到的導(dǎo)出表中導(dǎo)出函數(shù)的偏移地址,然后,將其與當(dāng)前SSDT中的函數(shù)地址進(jìn)行對(duì)比,就可以實(shí)現(xiàn)對(duì)當(dāng)前SSDT中相關(guān)地址進(jìn)行檢測(cè)。

      圖4 ntoskrnl.exe導(dǎo)出函數(shù)的信息

      3.2 流程結(jié)構(gòu)檢測(cè)

      使用完整性檢測(cè)對(duì)Rootkits進(jìn)行檢測(cè)的方法具有實(shí)現(xiàn)簡(jiǎn)單、檢測(cè)結(jié)果準(zhǔn)確、穩(wěn)定性好等特點(diǎn)。然而,對(duì)于當(dāng)前的一些功能比較強(qiáng)大,技術(shù)比較隱秘的Rootkits程序而言,它的缺點(diǎn)就暴露了出來。例如,Rootkits不直接替換原始的函數(shù)地址,而是替換掉這個(gè)函數(shù)執(zhí)行前的某些指令,轉(zhuǎn)而去執(zhí)行Rootkits的功能函數(shù)時(shí)。由于Rootkits沒有修改當(dāng)前函數(shù)的地址,那么,使用完整性檢測(cè)的方法對(duì)相關(guān)函數(shù)的地址進(jìn)行檢測(cè)就不能夠發(fā)現(xiàn)Rootkits了,但是,當(dāng)這個(gè)函數(shù)被外界調(diào)用時(shí),Rootkits同樣會(huì)先于這個(gè)函數(shù)攔截到這個(gè)操作,轉(zhuǎn)而去執(zhí)行相關(guān)的操作。

      如圖5所示,Inline Hook就是一種不能利用完整性檢測(cè)來發(fā)現(xiàn)Rootkits的技術(shù)。它的實(shí)現(xiàn)原理如圖5中所示。通過修改相關(guān)執(zhí)行函數(shù)指令前的指令代碼,轉(zhuǎn)而去執(zhí)行Rootkits的功能函數(shù)代碼,達(dá)到Rootkits的相關(guān)目的。對(duì)于這種隱蔽性極強(qiáng)的Inline Hook技術(shù),通過使用反匯編引擎對(duì)相關(guān)指令進(jìn)行分析,根據(jù)反匯編引擎對(duì)代碼進(jìn)行反匯編后的結(jié)果,分析其結(jié)構(gòu)來判斷是否存在Inline Hook。

      圖5 Inline Hook內(nèi)核函數(shù)流程示意圖

      3.3 模塊特征檢測(cè)

      無論內(nèi)核級(jí)Rootkits使用什么樣的Hook技術(shù),它都必須作為一個(gè)模塊加載到內(nèi)存中,而模塊中的相關(guān)函數(shù)地址必須滿足于一定的要求。具體來說,假設(shè)可疑的轉(zhuǎn)移地址為u1,當(dāng)前的模塊地址和模塊大小為u2和u3。假如u2

      利用這種特征,可以通過遍歷當(dāng)前系統(tǒng)中所有加載的模塊,獲取它們的完整信息。通過與可疑地址進(jìn)行比對(duì),確定出可疑地址的真實(shí)來源,進(jìn)而判斷是否是Rootkits。

      4 檢測(cè)結(jié)果及分析

      Rootkit Revealer V1.71是一款著名反Rootkits的工具,用戶通過它可檢測(cè)當(dāng)前隱藏進(jìn)程、文件、注冊(cè)表、SSDT、IDT等重要系統(tǒng)部件的信息,為用戶查找Rootkits提供了極大的幫助。

      如圖6所示,RegHook.sys是一種能夠隱藏注冊(cè)表啟動(dòng)項(xiàng)的Rootkits程序,它能夠?qū)⒚Q:My,類型:REG_SZ,數(shù)據(jù):C:WINDOWSUM.exe的注冊(cè)表項(xiàng)給隱藏,從而達(dá)到隱藏開機(jī)啟動(dòng)程序的目的。通過利用這款國(guó)外的反Rootkits工具與基于關(guān)聯(lián)技術(shù)進(jìn)行檢測(cè)所得到的結(jié)果對(duì)比分析。

      圖6 利用Rootkit Revealer V1.71進(jìn)行檢測(cè)得到的結(jié)果

      當(dāng)執(zhí)行RegHook.sys后,運(yùn)行RootkitRevealer.exe進(jìn)行檢測(cè),并不能發(fā)現(xiàn)被Rootkits程序隱藏的注冊(cè)表鍵值,如圖7所示,利用基于關(guān)聯(lián)檢測(cè)的方法卻能成功檢測(cè)和恢復(fù)出被隱藏的注冊(cè)表鍵值信息。

      圖7 利用關(guān)聯(lián)檢測(cè)技術(shù)進(jìn)行檢測(cè)得到的結(jié)果

      圖8是清除掉Rootkits程序后,注冊(cè)表顯示出被隱藏的相關(guān)信息情況。

      圖8 清除Rootkits后注冊(cè)表的情況

      5 結(jié)語

      基于關(guān)聯(lián)技術(shù)檢測(cè)Rootkits惡意程序的方法能夠準(zhǔn)確的檢測(cè)出針對(duì)內(nèi)核態(tài)的Rootkits程序,并且能夠提供完整的Rootkits的種類、路徑、相關(guān)模塊的當(dāng)前地址和原始地址等相關(guān)的詳細(xì)信息,幫助我們發(fā)現(xiàn)和清除Rootkits提供了重要的信息來源。

      基于關(guān)聯(lián)技術(shù)的方法采用大量Windows內(nèi)核技術(shù)對(duì)Rootkits進(jìn)行檢測(cè),程序的兼容性和穩(wěn)定性將是下一步工作的重點(diǎn)。

      [1] Greg H,James B.Rootkits:Subverting the Windows kernel[J].Addison Wesley Professional.2005.

      [2] Levine J,Grizzard J,Owen H.Detecting and categorizing kernel-level Rootkits to aid future detection[J].IEEE Security&Privacy.2006.

      [3] Kruegel C,Robertson W,Vigna G.Detecting kernel-level Rootkits through binary analysis[C].Tucson,AZ,USA:20th Annual Computer Security Applications Conference.2004.

      [4] 陳曉蘇,黃文超,肖道舉.一種基于交叉視圖的Windows Rootkit檢測(cè)方法[J].計(jì)算機(jī)工程與科學(xué).2007.

      [5] Pankaj Gupta, Nick McKeown. Design and implementation of a fast crossbar scheduler[J].IEEE Micro Magazine.1999.

      [6] 顏仁仲,鐘錫昌,張倪.一種自動(dòng)檢瀏內(nèi)核級(jí) Rootkit 并恢復(fù)系統(tǒng)的方法[J].計(jì)算機(jī)工程.2006.

      [7] 龍海,郝東白,黃皓.Windows下系統(tǒng)服務(wù)Rootkits的檢測(cè)與恢復(fù)[J].計(jì)算機(jī)工程與設(shè)計(jì).2008.

      [8] 易宇,金然.基于符號(hào)執(zhí)行的內(nèi)核級(jí)Rootkit 靜態(tài)檢測(cè)[J].計(jì)算機(jī)工程與設(shè)計(jì).2006.

      [9] 梁升榮,范明鈺,王光衛(wèi),鄭秀林.一種新的內(nèi)核級(jí) Rootkit的檢測(cè)方法[J].計(jì)算機(jī)應(yīng)用研究.2009.

      [10] 王建華,張煥生,侯麗坤等譯.Richter J.Windows 核心編程[M].北京:機(jī)械工業(yè)出版社.2006.

      猜你喜歡
      注冊(cè)表內(nèi)核程序
      萬物皆可IP的時(shí)代,我們當(dāng)夯實(shí)的IP內(nèi)核是什么?
      強(qiáng)化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      試論我國(guó)未決羈押程序的立法完善
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計(jì)
      Linux內(nèi)核mmap保護(hù)機(jī)制研究
      更上一層樓 用好注冊(cè)表編輯器
      “程序猿”的生活什么樣
      英國(guó)與歐盟正式啟動(dòng)“離婚”程序程序
      創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
      學(xué)習(xí)器揭開注冊(cè)表面紗
      海原县| 尚义县| 阿尔山市| 麻城市| 满城县| 禄劝| 富平县| 叙永县| 临汾市| 南涧| 建水县| 乌审旗| 儋州市| 武冈市| 易门县| 垣曲县| 杂多县| 定兴县| 堆龙德庆县| 饶阳县| 兴和县| 乌兰察布市| 兰州市| 当阳市| 仁怀市| 灵山县| 上思县| 双柏县| 池州市| 新民市| 漳浦县| 兴山县| 和硕县| 凤山县| 化隆| 沙坪坝区| 河间市| 吐鲁番市| 邯郸县| 沅江市| 平泉县|