999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

RootKit攻防和檢測技術

2008-12-31 00:00:00張貴強李蘭蘭
電腦知識與技術 2008年31期

摘要:隨著計算機網絡技術的發展,網絡安全問題越來越多的受到人們的關注,同時,也出現了各種類型的計算機病毒和木馬程序。最近,出現了一種特殊木馬程序——Rootkit,該文詳細的介紹了Rootkit的隱藏技術和檢測方法。

關鍵詞:Rootkit;木馬程序;網絡安全;隱藏;檢測

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)31-0838-02

Defence and Detection Technology Against RootKit

ZHANG Gui-qiang1,LI Lan-lan2

(Lanzhou Petrochemical College of Vocational Technology, Lanzhou 730060, China; 2.Lanzhou University, Lanzhou 730030, China)

Abstract: With the development of computer network, security of network attracts more and more attention. Meanwhile, all kinds of computer viruses and Trojan programs arised, inluding a special Trojan program: RootKit. A detailed introduction of hidden technology and detection method of RootKit has been put forward in this paper.

Key words: rootkit; trojan program; network security; hidden technology; detection

眾所周知,木馬病毒是指寄生于用戶計算機系統中,盜竊用戶信息,并通過網絡發送給作者的一類病毒程序。但是隨著安全技術的發展和計算機用戶安全技術的提高,普通的木馬越來越難生存,于是一部分有能力的后門作者把眼光投向了系統底層——ring 0。利用系統驅動模塊以驅動形式隱藏木馬程序,這就是讓人聞之色變的Rootkit。

1 什么是Rootkit

ring 0 層的是系統核心模塊和各種驅動程序模塊,因此,位于這一層的木馬也是以驅動形式生存的,而不是一般的exe。后門作者把后門寫成符合wdm規范(windows driver model)的驅動程序模塊,把自身添加進注冊表的驅動程序加載入口,便實現了“無啟動項”運行。一般的進程查看器都只能枚舉可執行文件exe的信息,所以通過驅動模塊和執行文件結合的后門程序便得以生存下來,由于它運行在 ring 0 級別,擁有與系統核心同等級的權限,因此它可以更輕易的把自己隱藏起來,無論是進程信息還是文件體,甚至通訊的端口和流量也能被隱藏起來,在如此強大的隱藏技術面前,無論是任務管理器還是系統配置實用程序,甚至系統自帶的注冊表工具都失去了效果,這種木馬就是Rootkit。所以,Rootkit是通過加載特殊的驅動,修改系統內核,進而達到隱藏信息的目的。

2 rootkit的隱藏技術

2.1 刪除進程雙項鏈表上的進程對象。

現在所有人查看進程一般都是通過任務管理器(taskmgr.exe)來查看。任務管理器枚舉進程信息是靠的NtQuerySystemInformation 也就是ZwQuerySystemInformation 函數。其中,Native Api枚舉進程是要通過進程活動鏈表的,如果我們將進程對象從進程雙向鏈表中移除,那么調用NtQuerySystemInformation來枚舉進程的任務管理器taskmgr.exe中就不會看到我們的進程了。那么就有人會擔心了。如果進程從鏈表中刪除,那還會被運行么?答案是,會。因為windows的ds,也就是線程分派器,也叫任務調度分配器(dispatcher scheduler)使用的是另一個數據結構,也就是說,進線程是否被調度處理與進程雙向活動鏈表無關,不會被CPU忽略。所以,rootkit會將進程雙向鏈表中的相關對象刪除,這樣使用任務管理器是看不到的。

2.2 修改系統調用表(sst)

系統調用,就是操作系統提供給用戶程序調用的一組“特殊”接口。用戶程序可以通過這組“特殊”接口來獲得操作系統內核提供的服務,比如用戶可以通過文件系統相關的調用請求系統打開文件、關閉文件或讀寫文件,可以通過時鐘相關的系統調用獲得系統時間或設置定時器等。在相應寄存器中儲存著系統調用號,中斷處理程序把該寄存器里的值作為查找表中的索引,去找到最終的目標函數,這個表就是系統服務表SST。rootkit可以通過在系統調用表中添加自己的服務然后運行想要執行的任務。He4HookInv就是這樣,He4HookInv也是一個比較有名的windows rootkit。

2.3 端口隱藏

很多人檢查自己中沒中木馬或后門,都會一些方法來查看自己本機所開的端口來判斷是否有木馬監聽,而有些rootkit就開始想如何隱藏端口了。最簡單的枚舉當前所開放的端口信息是調用iphlpapi.dll中的AllocateAndGetTcpTableFromStack和AllocateAndGetUdpTableFromStack函數,或者AllocateAndGetTcpExTableFromStack和AllocateAndGetUdpExTableFromStack函數。還有另外一種方法。當程序創建了一個套接字并開始監聽時,它就會有一個為它和打開端口的打開句柄。我們在系統中枚舉所有的打開句柄并通過NtDeviceIoControlFile把它們發送到一個特定的緩沖區中,來找出這個句柄是否是一個打開端口的。這樣也能給我們有關端口的信息。因為打開句柄太多了,所以我們只檢測類型是File并且名字是DeviceTcp或DeviceUdp的。打開端口只有這種類型和名字。而通過察看iphlpapi.dll的代碼。就會發現這些函數同樣都是調用NtDeviceIoControlFile并發送到一個特定緩沖區來獲得系統中所有打開端口的列表。也就是說,我們掛接NtDeviceIoControlFile函數就可以隱藏端口。

2.4 文件隱藏

在WINNT里在某些目錄中尋找某個文件的方法是枚舉它里面所有的文件和它的子目錄下的所有文件。文件的枚舉是使用NtQueryDirectoryFile函數。與隱藏文件相關的重要參數是FileHandle、FileInformation、FileInformationClass。如果我們想要隱藏一個文件,我們需要分別通知FileDirectoryInformation、FileFullDirectoryInformation、FileBothDirectoryInformation 、FileNamesInformation這4種類型,對每種類型的返回記錄我們需要和我們打算隱藏的文件比較名字。如果我們打算隱藏第一個記錄,我們可以把后面的結構向前移動,移動長度為第一個結構的長度,這樣會導致第一個記錄被改寫。如果我們想要隱藏其它任何一個,只需要很容易的改變上一個記錄的NextEntryOffset的值就行。如果我們要隱藏最后一個記錄就把它的NextEntryOffset改為0,否則NextEntryOffset的值應為我們想要隱藏的那個記錄和前一個的NextEntryOffset值的和。然后修改前一個記錄的Unknown變量的值,它是下一次搜索的索引。把要隱藏的記錄之前一個記錄的Unknown變量的值改為我們要隱藏的那個記錄的Unkown變量的值即可。

3 隱藏技術的應對方法

像剛才提到的將進程對象從進程雙向鏈表中刪除就有辦法突破。雖然NtQuerySystemInformation所需要的鏈表已經被做了手腳,但windows dispatcher scheduler跟他所用的鏈表不一樣,那么我門可以通過讀取windows dispatcher scheduler所用的另一個鏈表來列出進程。也就是說可以直接通過讀取KiWaitInListHead和KiWaitOutListHead來列舉進程,這樣就突破了修改雙向鏈表隱藏進程的方法,pjf通過讀取KiWaitInListHead列出隱藏的進程中給出了代碼。不過這種檢測方法不久又被突破了,就是替換內核的進程鏈表。

還有人提出使用HOOK SwapContext方法來檢測,只要被處理器調度的線程就逃不掉。

WINDOWS 2K/NT/XP系統中,處理器的調度對象是線程,在非SMP的OS中某時間段內當前 CPU 處理的進程只可能有一個。每個進程分配特定的 CPU 時間片來達到執行目的,而系統的 CPU 時鐘中斷確定了每個進程分配的時間片。也就是當系統 CPU 時鐘中斷觸發時,產生的進程調度請求。處理器時鐘中斷發生的時候會調用KiDispatchInterrupt(),比較當前進程分配的時間片,如用完后會調用 KiQuantumEnd() 根據各線程優先級等信息用特定的調度算法選擇新的線程(ETHREAD),然后將其返回值,一個 ETHREAD 結構作為參數,來調用 SwapContext() 設置 ETHREAD,EPROCESS 中的各項參數,并替換 KPCR 中的相應結構完成線程切換,調度到另一個進程(EPROCESS)的線程(ETHREAD)繼續執行。可以說CPU的線程切換離不開SwapContext函數,當然,rootkit所執行線程的都會通過SwapContext函數來切換使之被CPU處理。

而在這之后有人就提出自己替換線程的調度就可以躲過這種檢測。在我看來,這種檢測方法會占用很大的資源,畢竟CPU的線程切換非常頻繁。如果誰有條件可以自己看看,一秒內會發生多少次的線程切換。

4 rootkit的檢測

我們可以借助一些rootkit檢測工具,如RootkitRevealer(成名的和令人尊敬的安全專家Mark Russinovich和Bryce Cogswell制作的)、Blacklight(知名安全軟件廠商F-Secure公司制作的)、Klister(卑鄙的內核模式rootkitFU的作者制作的)。這些工具都有自己獨特的功能和缺陷。但是,惡意軟件作者不斷地更新他們的工具以便避開最新的檢測應用程序,因此,某一種工具也許也不能檢測出所有的惡意軟件。你也許需要手工執行微軟研究院2004年發布的工具軟件“Strider GhostBuster”的白皮書中解釋的那些程序。簡言之,你要在系統啟動的時候拍下系統的快照,收集每個硬盤的目錄列表等信息。然后,你使用替代的操作系統啟動計算機,用你在干凈的操作系統中所看到的東西與被攻破的操作系統中的東西進行比較。

計算機網絡技術在不斷的發展和更新,而一些惡意軟件的作者也在不斷的更新自己的技術和攻擊工具,所以,要達到100%絕對安全的計算機系統是不可能的。但是,計算機用戶要不斷提高自己的安全意識,在日常的使用過程中隨時更新自己的系統,不斷加強防范措施。

參考文獻:

[1] 崔甲.Rootkit的分類方法和檢測技術研究[D].電子科技大學,2007.

[2] 顏仁仲.實時檢測Rootkit并自動修復系統的研究與實現[D].中國科學院研究生院(計算技術研究所),2006.

[3] 王松濤,吳灝.Linux下基于可執行路徑分析的內核rootkit檢測技術研究[J].計算機工程與應用,2005(11):121-123.

[4] 吳昆.Windows Rootkit技術概述[D].湖南大學軟件學院,2008(05)

[5] 馮萬利.基于內核入侵的木馬設計與實現[J].微計算機信息,2006(18):59-60,92.

主站蜘蛛池模板: 丰满的少妇人妻无码区| 麻豆精品国产自产在线| 播五月综合| 99在线观看视频免费| 最新国产成人剧情在线播放| 国产伦精品一区二区三区视频优播| 色综合中文字幕| 亚洲一级毛片免费观看| 亚洲欧美精品一中文字幕| 中文字幕在线视频免费| 人人91人人澡人人妻人人爽| 精品国产三级在线观看| 毛片网站观看| 亚洲男女天堂| 亚洲国产精品VA在线看黑人| 色婷婷国产精品视频| 亚洲黄色成人| 国产96在线 | 青青草原国产一区二区| 国产精品尤物在线| 亚洲va在线∨a天堂va欧美va| 亚欧美国产综合| 国产精品爽爽va在线无码观看 | 乱人伦中文视频在线观看免费| 一区二区三区国产精品视频| 青青草国产一区二区三区| 全午夜免费一级毛片| 激情午夜婷婷| 亚洲欧美国产高清va在线播放| 国产免费a级片| 日本亚洲最大的色成网站www| 99激情网| 丁香婷婷在线视频| 91麻豆精品国产高清在线| 日韩A级毛片一区二区三区| 国产91九色在线播放| 影音先锋亚洲无码| 伊人色在线视频| 欧美三级自拍| 中文字幕2区| 直接黄91麻豆网站| 国产91麻豆视频| 欧美19综合中文字幕| 亚洲伊人电影| 欧美黑人欧美精品刺激| 黄色网在线| 欧美在线国产| 国模极品一区二区三区| 亚洲天堂首页| 国产免费怡红院视频| 亚洲人成色77777在线观看| 国产精品尤物铁牛tv| 人妻中文久热无码丝袜| 好紧太爽了视频免费无码| 国产精品爽爽va在线无码观看| 欧美一区二区三区不卡免费| 欧美一道本| 亚洲va在线∨a天堂va欧美va| 亚洲精品国产综合99久久夜夜嗨| 又污又黄又无遮挡网站| 99re在线视频观看| 久热re国产手机在线观看| 成人av手机在线观看| 久久人妻xunleige无码| 九色综合视频网| 国产在线拍偷自揄观看视频网站| 国产毛片基地| 色综合中文综合网| 伊人久久久大香线蕉综合直播| 免费福利视频网站| 亚洲天堂啪啪| 伊人91在线| 亚洲午夜天堂| 最近最新中文字幕免费的一页| 午夜国产理论| 国产福利在线免费| 亚洲欧洲自拍拍偷午夜色| 国产精品亚洲а∨天堂免下载| 亚洲免费三区| 色偷偷一区| 色综合网址| 韩日免费小视频|