摘要:特洛伊木馬作為一種新型的計(jì)算機(jī)網(wǎng)絡(luò)入侵程序,比其他病毒對(duì)網(wǎng)絡(luò)環(huán)境中計(jì)算機(jī)信息資源的危害都要大。提出利用木馬的一個(gè)重要特征——自啟動(dòng)特性對(duì)其進(jìn)行監(jiān)控。通過(guò)掛接系統(tǒng)服務(wù),對(duì)注冊(cè)表和文件系統(tǒng)進(jìn)行監(jiān)控,從而實(shí)現(xiàn)木馬檢測(cè)。與傳統(tǒng)的檢測(cè)方法相比,這種方法能有效地檢測(cè)已知的和新出現(xiàn)的木馬。由于是在內(nèi)核中實(shí)現(xiàn)監(jiān)控,一般木馬很難逃避這種檢測(cè)。
關(guān)鍵詞:木馬; 自啟動(dòng)特性; 系統(tǒng)服務(wù)調(diào)度表; 掛接
中圖分類(lèi)號(hào):TP309.5文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2007)05-0141-03
0引言
隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,網(wǎng)絡(luò)安全日益引起人們的重視,因?yàn)橛?jì)算機(jī)病毒、特洛伊木馬、網(wǎng)絡(luò)蠕蟲(chóng)等惡意軟件會(huì)給正常的社會(huì)生活造成巨大的損失。在這些惡意軟件中,特洛伊木馬因?yàn)槠洫?dú)特的作用,備受黑客的青睞,被廣泛使用。
特洛伊木馬是指一種計(jì)算機(jī)程序,這種程序通常偽裝成一個(gè)正常的程序,以欺騙的方式誘使用戶(hù)運(yùn)行,運(yùn)行以后潛伏在入侵主機(jī)中,偷偷地搜集用戶(hù)的敏感資料;當(dāng)接收到控制端發(fā)送來(lái)的特定命令時(shí),就將這些敏感資料通過(guò)網(wǎng)絡(luò)發(fā)送出去,造成泄密事件,或控制入侵主機(jī),造成鎖定主機(jī)、重新啟動(dòng)甚至破壞系統(tǒng)等,具有極大的危害性。特洛伊木馬不同于普通的計(jì)算機(jī)病毒,病毒的危害一般是造成數(shù)據(jù)的破壞或是造成網(wǎng)絡(luò)的擁塞,而木馬的危害在于信息的泄漏。特別是對(duì)政府、軍隊(duì)等保密性要求比較高的部門(mén)來(lái)說(shuō),木馬的危害性更大。
目前,木馬檢測(cè)所采用的技術(shù)主要是特征碼檢測(cè)技術(shù),即將木馬看做是一種特殊的病毒,提取木馬樣本的特征碼,放到病毒庫(kù)中;掃描系統(tǒng)時(shí),如果被掃描的文件與特征碼符合,則斷定其是木馬程序。特征碼技術(shù)對(duì)檢測(cè)已知病毒、木馬和蠕蟲(chóng)等惡意代碼非常有效,算法簡(jiǎn)單,檢測(cè)迅速,因此目前也被業(yè)界所廣泛使用。但特征碼技術(shù)有一個(gè)先天缺陷就是只能檢測(cè)已知的惡意代碼,面對(duì)每天大量涌現(xiàn)的新惡意代碼卻無(wú)能為力。
本文提出一種新的檢測(cè)方法,此方法利用木馬所共同具有的一個(gè)特征來(lái)進(jìn)行檢測(cè),使其不僅能夠檢測(cè)已知的木馬程序,而且能夠檢測(cè)新出現(xiàn)的或未知的木馬。
1木馬的共有特征
自第一個(gè)特洛伊木馬誕生以來(lái),經(jīng)過(guò)多年的發(fā)展,特別是隨著互聯(lián)網(wǎng)的普及,到現(xiàn)在為止,已經(jīng)有幾萬(wàn)種木馬程序。雖然這些程序使用不同的程序設(shè)計(jì)語(yǔ)言編寫(xiě),在不同的環(huán)境下運(yùn)行,但是木馬不同于普通的病毒程序,因?yàn)樗闹饕康氖窍嗨频模际菫榱诉h(yuǎn)程控制和竊取資料,因而所有的木馬存在一些共同的特征。其中,一個(gè)木馬必須具備的特征可以總結(jié)為以下幾個(gè):
(1)隱蔽性
隱蔽性是木馬的首要特征。木馬程序?yàn)榱饲那牡亻L(zhǎng)期運(yùn)行于入侵主機(jī)中,往往會(huì)千方百計(jì)地隱藏自己,不被發(fā)現(xiàn)。比較簡(jiǎn)單的木馬一般要隱藏自己的窗口;技術(shù)比較復(fù)雜一些的木馬會(huì)將自己偽裝成系統(tǒng)進(jìn)程或是系統(tǒng)服務(wù),還有的木馬將自己的代碼注入到別的合法進(jìn)程中去;技術(shù)比較高級(jí)一些木馬會(huì)以驅(qū)動(dòng)程序的形式修改內(nèi)核,讓用戶(hù)查看不到它的存在。
(2)自動(dòng)運(yùn)行性
木馬為了長(zhǎng)期控制入侵主機(jī),一般會(huì)修改系統(tǒng)的注冊(cè)表或配置文件,以便在系統(tǒng)重新啟動(dòng)以后,自動(dòng)加載木馬程序;如果一個(gè)木馬程序不能自動(dòng)運(yùn)行,那么每次重啟,入侵者都要重新攻擊。在注冊(cè)表的某些項(xiàng)例如HKLM\\Software\\Microsoft\\Windows\\Current Version\\Run中設(shè)置內(nèi)容為“c:\\Windows\\system32\rojan.exe”,則系統(tǒng)啟動(dòng)以后會(huì)自動(dòng)運(yùn)行trojan.exe這個(gè)程序。修改系統(tǒng)的win.ini、system.ini、autorun.bat等系統(tǒng)配置文件也可以達(dá)到同樣的效果。
(3)功能特殊性
木馬的目的就是控制入侵主機(jī)或者竊取敏感資料,因而木馬必然會(huì)具有一些特殊的功能,如搜索計(jì)算機(jī)的口令、記錄鍵盤(pán)操作、遠(yuǎn)程抓屏,甚至?xí)i定鍵盤(pán)和鼠標(biāo)、刪除系統(tǒng)文件、破壞系統(tǒng)等功能。
(4)網(wǎng)絡(luò)通信
為了遠(yuǎn)程控制入侵主機(jī),木馬程序肯定會(huì)有網(wǎng)絡(luò)通信功能。初期的木馬會(huì)在服務(wù)器端開(kāi)一個(gè)端口,監(jiān)聽(tīng)控制端發(fā)來(lái)的命令。現(xiàn)在的木馬為了更加隱蔽自己,不再開(kāi)啟通信端口,而是利用ICMP包通信,或者是采用反彈端口形式實(shí)現(xiàn)通信。但不管采用哪種技術(shù),網(wǎng)絡(luò)通信是木馬必須具有的功能。
一個(gè)成功的木馬必須具備上面的五個(gè)特征,如果用S表示木馬成功植入和運(yùn)行,C1~C4表示上述的四個(gè)木馬必備的特征,則可用表達(dá)式如下表示它們之間的關(guān)系:
因此,可以利用上述的任何一個(gè)特征來(lái)防范木馬入侵。一旦阻止了一個(gè)木馬程序的某一特征的實(shí)現(xiàn),它就不能成功安裝或不能完成入侵以及竊取等功能。本文主要針對(duì)木馬的自啟動(dòng)特性來(lái)完成對(duì)木馬的防范。
2木馬自啟動(dòng)的實(shí)現(xiàn)
為了使木馬程序在系統(tǒng)重新啟動(dòng)以后能夠自動(dòng)運(yùn)行,木馬程序利用了很多操作系統(tǒng)的特性。例如修改注冊(cè)表,很多木馬利用了注冊(cè)表中RUN、RUNSERVICE等鍵值,實(shí)現(xiàn)自啟動(dòng);還有的木馬修改系統(tǒng)配置文件,如win.ini、system.ini文件等。下面介紹木馬最為常用的自啟動(dòng)機(jī)制:
(1)系統(tǒng)啟動(dòng)文件夾
在Windows的文件系統(tǒng)中,有個(gè)文件夾是專(zhuān)門(mén)存放系統(tǒng)啟動(dòng)以后自動(dòng)運(yùn)行的程序。下面給出系統(tǒng)的文件夾:
C:\\Windows\\start menu\\programs\\startup
C:\\WINDOWS\\All Users\\Start Menu\\Programs\\Startup
這是最基本、最常用的Windows啟動(dòng)方式,主要用于啟動(dòng)一些應(yīng)用軟件的自啟動(dòng)項(xiàng)目,如Office的快捷菜單。一般用戶(hù)希望啟動(dòng)時(shí)所要啟動(dòng)的文件也可以通過(guò)這里啟動(dòng),只需把所需文件或其快捷方式放入文件夾中即可。這個(gè)文件夾是可以更改的,雖然文件夾中的內(nèi)容在默認(rèn)狀態(tài)下可以被用戶(hù)看得一清二楚,但通過(guò)改動(dòng)還是可以達(dá)到相當(dāng)隱蔽的啟動(dòng)目的。
(2)系統(tǒng)配置文件
由于系統(tǒng)的配置文件對(duì)于大多數(shù)的用戶(hù)來(lái)說(shuō)都是相當(dāng)陌生的,這就造成了這些啟動(dòng)方法相對(duì)來(lái)說(shuō)都是相當(dāng)隱蔽的。有的木馬就是通過(guò)修改配置文件實(shí)現(xiàn)自啟動(dòng)的。這兩個(gè)系統(tǒng)配置文件是WIN.INI和SYSTEM.INI。
WIN.INI文件格式如下:
[Windows]
Load=trojan.exe
這樣設(shè)置,程序Trojan就會(huì)在系統(tǒng)啟動(dòng)以后自動(dòng)在后臺(tái)運(yùn)行。
SYSTEM.INI文件格式如下:
[Boot]
Shell=Explorer.exe
可以將Shell的內(nèi)容改為Shell=Explorer.exe trojan.exe,這樣,系統(tǒng)啟動(dòng)后就會(huì)自動(dòng)運(yùn)行Explorer和Trojan兩個(gè)程序。
(3)注冊(cè)表啟動(dòng)
注冊(cè)表中的啟動(dòng)應(yīng)該是被使用最頻繁的啟動(dòng)方式,但這樣的方式也有一些隱蔽性較高的方法。常規(guī)的啟動(dòng)方法是在下列鍵值中設(shè)置要啟動(dòng)的程序:
HKLM\\Software\\Microsoft\\Windows\\Current Version\\Run
HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce
HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunServices
HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\RunServicesOnce
HKCU\\Software\\Microsoft\\Windows\\Current Version\\Run
HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce
例如,在HKLM\\Software\\Microsoft\\Windows\\Current Version\\Run中,新建一個(gè)字符串型的值,字符串的內(nèi)容為C:\\WINDOWS\\System32 \ewtrojan.exe,那么系統(tǒng)再次啟動(dòng)以后,就會(huì)自動(dòng)運(yùn)行newtrojan.exe這個(gè)程序。除此之外,注冊(cè)表中還有一些地方經(jīng)常被特洛伊木馬所利用。例如在HKEY_CLASSES_ROOT\xtfile\\shell\\open\\command中,系統(tǒng)默認(rèn)的值為%SystemRoot%\\system32\\NOTEPAD.EXE%1,這樣就將以.txt為后綴的文本文件和NOTEPAD.EXE這個(gè)應(yīng)用程序關(guān)聯(lián)起來(lái),每次用戶(hù)打開(kāi)文本文件時(shí),系統(tǒng)就會(huì)自動(dòng)調(diào)用NOTEPAD這個(gè)應(yīng)用程序。而有的木馬,如冰河,就修改了這個(gè)鍵值,將其修改為%SystemRoot%\\system32\\SYSEXPLR.EXE %1,這樣,當(dāng)用戶(hù)每次打開(kāi)文本文件時(shí),系統(tǒng)就會(huì)自動(dòng)調(diào)用SYSEXPLR這個(gè)程序,這實(shí)際上是一個(gè)木馬程序。木馬程序運(yùn)行后,再去啟動(dòng)NOTEPAD程序,這樣用戶(hù)可能很難察覺(jué)系統(tǒng)已經(jīng)運(yùn)行了木馬程序。綜上可以看出,只要能夠從底層對(duì)上述的幾個(gè)文件和目錄以及注冊(cè)表中與自啟動(dòng)相關(guān)的目錄進(jìn)行監(jiān)控,就可以監(jiān)控木馬的入侵。而如何從底層進(jìn)行監(jiān)控呢,筆者采用的是從驅(qū)動(dòng)層掛接系統(tǒng)服務(wù)調(diào)度表的技術(shù)。
3Windows系統(tǒng)服務(wù)調(diào)用機(jī)制
所謂系統(tǒng)服務(wù)是由操作系統(tǒng)提供的一個(gè)函數(shù)集,應(yīng)用程序可以通過(guò)API函數(shù)直接或間接地調(diào)用系統(tǒng)服務(wù)。在Windows操作系統(tǒng)中,應(yīng)用程序是運(yùn)行在Win32子環(huán)境中的。Win32子環(huán)境為應(yīng)用程序提供了一套動(dòng)態(tài)鏈接庫(kù)。其中包括Kernel32.dll、Advapi32.dll、User32.dll和Gdi32.dll等。應(yīng)用程序調(diào)用系統(tǒng)服務(wù)主要是通過(guò)上面的動(dòng)態(tài)鏈接庫(kù)提供的API函數(shù)實(shí)現(xiàn)的。
在操作系統(tǒng)中存在兩種模式,即用戶(hù)模式和內(nèi)核模式。一般的應(yīng)用程序都是運(yùn)行在用戶(hù)模式,只有操作系統(tǒng)等關(guān)鍵組件才運(yùn)行于內(nèi)核模式。將系統(tǒng)分為用戶(hù)模式和內(nèi)核模式有利于系統(tǒng)的安全和穩(wěn)定。從用戶(hù)模式調(diào)用本機(jī)系統(tǒng)服務(wù)是通過(guò)NTDLL.DLL來(lái)實(shí)現(xiàn)的。例如Kernel32.dll通過(guò)Ntdll.dll這個(gè)動(dòng)態(tài)鏈接庫(kù)來(lái)真正地觸發(fā)系統(tǒng)調(diào)用服務(wù),Ntdll.dll執(zhí)行INT指令產(chǎn)生陷阱,由用戶(hù)態(tài)進(jìn)入到內(nèi)核態(tài),系統(tǒng)服務(wù)真正地實(shí)現(xiàn)是在ntoskrnl.exe中完成的。也就是說(shuō)NTDLL.DLL只是系統(tǒng)服務(wù)調(diào)用接口在用戶(hù)模式下的一個(gè)外殼。
創(chuàng)建一個(gè)文件和創(chuàng)建一個(gè)注冊(cè)表的項(xiàng)對(duì)于Windows的系統(tǒng)服務(wù)調(diào)用機(jī)制是一樣的,只是調(diào)用的函數(shù)不同而已。下面就以注冊(cè)表為例。而注冊(cè)表操作的系統(tǒng)服務(wù)是在ntoskrnl.exe中實(shí)現(xiàn)的,所以以ntoskrnl.exe為例。它們之間的關(guān)系如圖1所示。
當(dāng)應(yīng)用程序在注冊(cè)表中創(chuàng)建一個(gè)新的項(xiàng)目時(shí),就會(huì)調(diào)用Advapi32.dll 中的RegCreateKey函數(shù),RegCreateKey函數(shù)檢查傳進(jìn)來(lái)的參數(shù)是否有效,并將它們都轉(zhuǎn)換成Unicode碼。接下來(lái),RegCreateKey就會(huì)調(diào)用Ntdll.dll中的NtCreateKey函數(shù)。由于每一個(gè)系統(tǒng)服務(wù)都對(duì)應(yīng)著一個(gè)系統(tǒng)服務(wù)號(hào),NtCreateKey函數(shù)將系統(tǒng)服務(wù)號(hào)填入到寄存器EAX中,然后再將參數(shù)在堆棧中的指針賦給寄存器EDX,最后觸發(fā)INT 2E指令,從用戶(hù)態(tài)進(jìn)入到內(nèi)核態(tài)。系統(tǒng)服務(wù)調(diào)用模型大體如下:
mov eax, ServiceId
lea edx, ptrParameter
int 2eh
ret
其中,ServiceId是系統(tǒng)服務(wù)號(hào),ptrParameter是參數(shù)在堆棧中的位置。
進(jìn)入內(nèi)核態(tài)之后,系統(tǒng)調(diào)用KiSystemService函數(shù),內(nèi)核根據(jù)系統(tǒng)服務(wù)號(hào)在中斷描述表(IDT)中查找相應(yīng)的系統(tǒng)服務(wù)指針。這個(gè)指針指向函數(shù)ZwCreateKey,然后執(zhí)行這個(gè)服務(wù)程序。服務(wù)程序首先將參數(shù)從用戶(hù)態(tài)的堆棧空間拷貝到內(nèi)核態(tài)的堆??臻g,最后執(zhí)行具體的服務(wù)功能。
Windows中默認(rèn)存在兩個(gè)系統(tǒng)服務(wù)調(diào)度表,它們對(duì)應(yīng)了兩類(lèi)不同的系統(tǒng)服務(wù)。這兩個(gè)調(diào)度表分別是KeServiceDescriptorTable和KeServiceDescriptorTableShadow。系統(tǒng)服務(wù)調(diào)度表KeServiceDescriptorTable定義了在ntoskrnl.exe中實(shí)現(xiàn)的系統(tǒng)服務(wù),通常在kernel32.dll/advapi32.dll中提供函數(shù)接口均是調(diào)用的這個(gè)系統(tǒng)服務(wù)調(diào)度表中的函數(shù);KeServiceDescriptor-TableShadow除了包含上面的系統(tǒng)服務(wù),還包含在Win32k.sys中實(shí)現(xiàn)的相關(guān)Win32USER和GDI函數(shù),它們是屬于另一類(lèi)系統(tǒng)服務(wù)調(diào)用,它提供了內(nèi)核模式實(shí)現(xiàn)的USER和GDI服務(wù)。
在Windows 2000操作系統(tǒng)中存在兩類(lèi)系統(tǒng)服務(wù)。一類(lèi)是Win32內(nèi)核API經(jīng)過(guò)Kernel32.dll/advapi32.dll進(jìn)入NTDLL.dll后使用int 0x2e中斷進(jìn)入內(nèi)核,最后在ntoskrnl.exe中實(shí)現(xiàn)了真正的函數(shù)調(diào)用;另一類(lèi)是Win32 USER和GDI API直接通過(guò)User32.dll/Gdi32.dll進(jìn)入了內(nèi)核,最后是在Win32k.sys中實(shí)現(xiàn)了真正的函數(shù)調(diào)用。
要實(shí)現(xiàn)對(duì)注冊(cè)表和文件系統(tǒng)的寫(xiě)操作的監(jiān)控,就需要將系統(tǒng)服務(wù)調(diào)度表中相應(yīng)的函數(shù)指針重新定位,使它指向本文自定義的函數(shù),在該函數(shù)進(jìn)行完預(yù)處理之后,再根據(jù)具體情況決定,或者調(diào)用原來(lái)的系統(tǒng)服務(wù)函數(shù),或直接運(yùn)行后面的程序,這就是系統(tǒng)服務(wù)掛接(HOOKING)技術(shù)。
4掛接系統(tǒng)服務(wù)調(diào)度表實(shí)現(xiàn)監(jiān)控
掛接(HOOKING)技術(shù)也稱(chēng)為鉤子技術(shù),是Windows操作系統(tǒng)中一種通用的技術(shù),它可以攔截或監(jiān)聽(tīng)可執(zhí)行代碼在執(zhí)行過(guò)程中的一些信息,可以更改操作系統(tǒng)的行為。可以幫助人們了解系統(tǒng)內(nèi)部結(jié)構(gòu)、運(yùn)作機(jī)制等。被廣泛應(yīng)用于事件追蹤、修改系統(tǒng)行為等操作中。
為了實(shí)現(xiàn)文件系統(tǒng)以及注冊(cè)表的監(jiān)控,首先要在系統(tǒng)服務(wù)調(diào)度表中找到需要替換的函數(shù)指針,將這個(gè)指針指向本文自定義的函數(shù);當(dāng)調(diào)用相應(yīng)的系統(tǒng)服務(wù)時(shí),首先就會(huì)執(zhí)行本文自定義的函數(shù)。這樣,就實(shí)現(xiàn)了系統(tǒng)服務(wù)的掛接。
由于文件系統(tǒng)和注冊(cè)表監(jiān)控只是Hook的內(nèi)核中的函數(shù)不同而已,在此仍以RegCreateKey為例。當(dāng)它調(diào)用Ntdll.dll中的NtCreateKey時(shí),通過(guò)軟中斷進(jìn)入到內(nèi)核態(tài),每個(gè)在Ntdll.dll中導(dǎo)出的以Nt開(kāi)頭的系統(tǒng)服務(wù)占位函數(shù)在內(nèi)核中都有一個(gè)相應(yīng)的以Zw開(kāi)頭函數(shù)與之對(duì)應(yīng),系統(tǒng)就會(huì)根據(jù)中斷服務(wù)號(hào)在系統(tǒng)服務(wù)調(diào)度表中查找到ZwCreateKey函數(shù),然后執(zhí)行調(diào)用這個(gè)函數(shù)。如圖2所示,現(xiàn)在,將系統(tǒng)服務(wù)調(diào)度表中的函數(shù)指針指向本文自定義的函數(shù)myZwCreateKey,這樣,執(zhí)行系統(tǒng)服務(wù)調(diào)用時(shí),就會(huì)先執(zhí)行函數(shù)myZwCreateKey,在這個(gè)函數(shù)中進(jìn)行筆者所需要的預(yù)處理。首先顯示目前試圖添加自啟動(dòng)特性的進(jìn)程,然后再根據(jù)使用者的選擇。如果用于允許該進(jìn)程自啟動(dòng),則執(zhí)行原來(lái)的ZwCreateKey函數(shù);否則跳過(guò)這個(gè)系統(tǒng)服務(wù)函數(shù),直接執(zhí)行后面的代碼。
由于系統(tǒng)服務(wù)調(diào)度表是在內(nèi)核的ntoskrnl.exe中定義的,如果要對(duì)其進(jìn)行修改,必須使修改程序也要運(yùn)行在內(nèi)核態(tài)。這樣就需要編寫(xiě)驅(qū)動(dòng)程序,驅(qū)動(dòng)程序是運(yùn)行在內(nèi)核態(tài)的。關(guān)于驅(qū)動(dòng)程序的編寫(xiě)在這里就不作詳細(xì)描述,下面只給出監(jiān)控注冊(cè)表的掛接注冊(cè)程序的主要示意代碼。
//聲明系統(tǒng)服務(wù)表
extern PSRVTABLE KeServiceDescriptorTable ;
//定義系統(tǒng)服務(wù)入口的宏定義
#define SYSCALL(_function)ServiceTable->ServiceTable[ *(PULONG) ((PUCHAR) _function+1) ]
//掛接注冊(cè)表系統(tǒng)服務(wù)函數(shù)
void HookRegistry(void)
{
//保存原來(lái)的服務(wù)函數(shù)
OldZwCreateKey=SYSCALL(ZwCreateKey);
//掛接自定義函數(shù)
SYSCALL(ZwCreateKey)=myZwCreateKey;
}
文件系統(tǒng)監(jiān)控的掛接代碼與上述代碼基本一樣,只是把ZwCreateKey函數(shù)換成NTCreateFile即可。
程序編譯后得到驅(qū)動(dòng)程序,由應(yīng)用程序加載該驅(qū)動(dòng)程序,就完成了對(duì)文件系統(tǒng)和注冊(cè)表的監(jiān)控。由于是在內(nèi)核態(tài)實(shí)現(xiàn)的,一般的木馬程序很難逃過(guò)這種檢測(cè),具有很好的可靠性。
5結(jié)束語(yǔ)
目前檢測(cè)特洛伊木馬的應(yīng)用軟件大多是采用特征碼技術(shù),特征碼技術(shù)對(duì)檢測(cè)已知的木馬等惡意代碼效率很高,但對(duì)新出現(xiàn)的木馬無(wú)能為力。本文提出并且實(shí)現(xiàn)了一種根據(jù)木馬的自啟動(dòng)特性來(lái)對(duì)其進(jìn)行監(jiān)控的方法。實(shí)驗(yàn)證明,本方法能夠成功地檢測(cè)出已知的木馬,如冰河、BO2K、SUBSEVEN等,同時(shí),能夠檢測(cè)到新的木馬以及有自啟動(dòng)特性的程序。
本文第2章已經(jīng)總結(jié)了木馬具有五個(gè)特性,能夠監(jiān)控其中任何一個(gè)特性,都可以阻止一個(gè)木馬程序的入侵。本文只是拋磚引玉地實(shí)現(xiàn)了利用自啟動(dòng)特性來(lái)監(jiān)控木馬入侵。筆者下一步工作是綜合木馬的這五個(gè)特性中的全部或一部分,來(lái)判斷一個(gè)程序或進(jìn)程是否為木馬。一個(gè)程序具有的這些特性越多,則與木馬的相似度越高。
參考文獻(xiàn):
[1]張友生,米安然.計(jì)算機(jī)病毒與木馬程序剖析[M].北京:北京科海電子出版社,2003:213-303.
[2]BAKER A, LOZANO J.The Windows 2000 Device Driver Book[M]. [S.l.]:Prentice Hall PTR, 2000:6-300.
[3]RUSSINOVICH M,COGSWELL B.Regmon for Windows NT/9x. [EB/OL]. (2005-08-28)[2005-09-09].http://www.sysinternals.com/ntw2k/source/regmon.shtml.
[4]IVANOV I. API Hooking Revealed[EB/OL].(2005-08-28)[2005-09-09].http://www.codeproject.com/system/hooksys.asp.
[5]RICHTER J. Windows 核心編程[M].王建華,等譯.北京:機(jī)械工業(yè)出版社,2000:30-43
[6]王雨,傅鶴崗. 掛接系統(tǒng)服務(wù)調(diào)度表對(duì)Win2k的訪(fǎng)問(wèn)控制[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2005,2(6):407-409.
注:“本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文”