專利名稱:驅(qū)動(dòng)型惡意軟件防御方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種驅(qū)動(dòng)型惡意軟件防御方法和裝置,屬于計(jì)算機(jī)安全技術(shù) 領(lǐng)域。
背景技術(shù):
隨著計(jì)算機(jī)的廣泛使用,各種計(jì)算機(jī)病毒的數(shù)量和種類也迅速增多,尤 其隨著網(wǎng)絡(luò)的發(fā)展,病毒的傳播和危害更加嚴(yán)重,為計(jì)算機(jī)用戶造成困擾和 損失。在現(xiàn)有的病毒防護(hù)中,隨著安全軟件逐步采用基于行為的惡意程序判 定方法,使得基于用戶態(tài)應(yīng)用程序的惡意程序逐步向內(nèi)核態(tài)驅(qū)動(dòng)型發(fā)展,這
些惡意程序通過(guò)驅(qū)動(dòng)方式加載到Windows操作系統(tǒng)的內(nèi)核中,從而實(shí)現(xiàn)對(duì)用 戶數(shù)據(jù)的破壞和盜取行為。
在現(xiàn)有技術(shù)中,安全軟件對(duì)這種驅(qū)動(dòng)型程序采取的監(jiān)控措施主要有兩種, 一種是監(jiān)控驅(qū)動(dòng)加載行為,在驅(qū)動(dòng)加載時(shí)詢問用戶是否允許驅(qū)動(dòng)加載。另一 種措施是鉤掛需要監(jiān)控的系統(tǒng)函數(shù)的入口代碼,使其先運(yùn)行安全軟件監(jiān)控代 碼,在被監(jiān)控的系統(tǒng)函數(shù)被調(diào)時(shí),先執(zhí)行安全軟件的監(jiān)控代碼,進(jìn)行邏輯判 斷,判定調(diào)用行為是否合法。對(duì)于第一種監(jiān)控措施來(lái)說(shuō),它將由于放行惡意 驅(qū)動(dòng)加載后對(duì)系統(tǒng)損害的責(zé)任完全推卸到用戶身上,不具有智能性。對(duì)于第 二種措施來(lái)說(shuō),首先,由于鉤掛方式需要i'務(wù)改被監(jiān)控的系統(tǒng)函數(shù)的入口代碼, 使其跳轉(zhuǎn)到安全軟件的監(jiān)控代碼中進(jìn)行邏輯判斷,此種鉤掛方式較容易被發(fā) 現(xiàn),因此也較容易被恢復(fù),現(xiàn)在已有驅(qū)動(dòng)型惡意軟件通過(guò)讀^U茲盤上原始內(nèi) 核文件,對(duì)安全軟件鉤掛的函數(shù)入口代碼進(jìn)行恢復(fù),讓函數(shù)執(zhí)行原有邏輯, 躲避安全軟件的監(jiān)控;其次,被鉤掛的系統(tǒng)函數(shù)調(diào)用可能也是系統(tǒng)本身或者 正常內(nèi)核模塊頻繁調(diào)用的函數(shù),每次調(diào)用都會(huì)執(zhí)行一次安全軟件的判斷邏輯, 對(duì)系統(tǒng)性能有極大的影響;另外,如果用戶計(jì)算機(jī)上安裝多種用此方式鉤掛
5被監(jiān)控的系統(tǒng)函數(shù)時(shí),會(huì)造成沖突,要么造成安全軟件部分功能失效,要么 由于鉤掛是判斷邏輯不嚴(yán)謹(jǐn),造成系統(tǒng)崩潰。
發(fā)明內(nèi)容
本發(fā)明的目的是針對(duì)上述現(xiàn)有技術(shù)的缺陷,提供一種驅(qū)動(dòng)型惡意軟件防 御方法和裝置,以實(shí)現(xiàn)對(duì)驅(qū)動(dòng)型惡意程序進(jìn)行有效防御的同時(shí),具有智能性、 防御性能安全可靠且不易被恢復(fù)以及不會(huì)對(duì)系統(tǒng)性能產(chǎn)生影響的效果。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種驅(qū)動(dòng)型惡意軟件防御方法,包括
根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址 信息替換為安全軟件監(jiān)控函數(shù)的地址信息;
應(yīng)用所述安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的執(zhí)行動(dòng)作,并在執(zhí)行 動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
為實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種驅(qū)動(dòng)型惡意軟件防御裝置,包括
替換處理模塊,用于根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng) 函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息;
監(jiān)控處理模塊,用于應(yīng)用所述替換處理模塊替換后的安全軟件監(jiān)控函數(shù), 監(jiān)控所述驅(qū)動(dòng)程序的執(zhí)行動(dòng)作,并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
本發(fā)明在驅(qū)動(dòng)程序執(zhí)行之前的時(shí)間點(diǎn)上,將所需監(jiān)控的系統(tǒng)函數(shù)替換成 安全軟件監(jiān)控函數(shù)后,可以應(yīng)用該安全軟件監(jiān)控函數(shù)監(jiān)控驅(qū)動(dòng)程序是否執(zhí)行 了非法操作,當(dāng)判斷執(zhí)行動(dòng)作即行為特征異常時(shí),即可發(fā)送報(bào)警信息,從而 有效防御驅(qū)動(dòng)型惡意軟件的攻擊。本發(fā)明可以由系統(tǒng)自行完成而不需要任何 人工操縱,因此不需要用戶進(jìn)行任何判斷即可有效防止驅(qū)動(dòng)型惡意軟件的攻 擊,具有智能性;本發(fā)明充分利用驅(qū)動(dòng)程序必須調(diào)用系統(tǒng)函數(shù)才能實(shí)現(xiàn)其功 能的特征,在特定的時(shí)間點(diǎn)上進(jìn)行安全軟件替換操作,因此,防御性能安全 可靠且不易被恢復(fù);另外,本發(fā)明僅需要將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函 數(shù)地址信息進(jìn)行一次替換,即可完成后續(xù)邏輯判斷,而不需要反復(fù)調(diào)用系統(tǒng) 函數(shù),從而不會(huì)對(duì)系統(tǒng)性能產(chǎn)生影響。
下面通過(guò)附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
圖1為本發(fā)明驅(qū)動(dòng)型惡意軟件防御方法第一實(shí)施例的流程圖; 圖2為本發(fā)明驅(qū)動(dòng)型惡意軟件防御方法第二實(shí)施例的流程圖; 圖3為本發(fā)明驅(qū)動(dòng)型惡意軟件防御方法第三實(shí)施例的流程圖; 圖4為本發(fā)明驅(qū)動(dòng)型惡意軟件防御裝置第一實(shí)施例的結(jié)構(gòu)示意圖; 圖5為本發(fā)明驅(qū)動(dòng)型惡意軟件防御裝置第二實(shí)施例的結(jié)構(gòu)示意圖; 圖6為本發(fā)明驅(qū)動(dòng)型惡意軟件防御裝置第三實(shí)施例的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
圖1為本發(fā)明驅(qū)動(dòng)型惡意軟件防御方法第一實(shí)施例的流程圖,如圖1所 示,本實(shí)施例的方法包括
步驟101、根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān) 的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息;
驅(qū)動(dòng)程序加載時(shí),會(huì)存在一個(gè)時(shí)間點(diǎn),在此時(shí)間點(diǎn)上,驅(qū)動(dòng)程序已經(jīng)加 載到系統(tǒng)內(nèi)核中,通過(guò)解析也獲取到該驅(qū)動(dòng)程序的導(dǎo)入表信息,下一步就是 調(diào)用驅(qū)動(dòng)程序所需的系統(tǒng)函數(shù),從而實(shí)現(xiàn)驅(qū)動(dòng)功能。在此時(shí)間點(diǎn)安裝安全軟 件監(jiān)控函數(shù),能在驅(qū)動(dòng)程序執(zhí)行前,將驅(qū)動(dòng)程序所需調(diào)用的系統(tǒng)函數(shù)替換為 安全軟件監(jiān)控函數(shù)。該替換過(guò)程即可為將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù) 地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息。該安全軟件監(jiān)控函數(shù)具有邏 輯判斷功能,能夠在后續(xù)根據(jù)該安全軟件監(jiān)控函數(shù)判斷驅(qū)動(dòng)程序是否執(zhí)行了 異常操作。
根據(jù)操作系統(tǒng)的基本知識(shí)可知,驅(qū)動(dòng)型惡意軟件要實(shí)現(xiàn)其功能,必定要 在其運(yùn)行時(shí)調(diào)用系統(tǒng)函數(shù)。而驅(qū)動(dòng)程序調(diào)用所需的系統(tǒng)函數(shù)的方式只有兩種,
一種是靜態(tài)獲取所需調(diào)用的系統(tǒng)函數(shù)的方式;另一種是動(dòng)態(tài)獲取所需調(diào)用的 系統(tǒng)函數(shù)的方式。對(duì)于靜態(tài)獲取的方式來(lái)說(shuō),在編寫該驅(qū)動(dòng)程序時(shí),需要直 接調(diào)用系統(tǒng)函數(shù),在編譯該驅(qū)動(dòng)程序時(shí),編譯器會(huì)自動(dòng)將需要調(diào)用的系統(tǒng)函 數(shù)的信息保存在驅(qū)動(dòng)文件的導(dǎo)入表中。而對(duì)于動(dòng)態(tài)獲取的方式來(lái)說(shuō),在驅(qū)動(dòng)程序運(yùn)行過(guò)程中,需要調(diào)用系統(tǒng)函數(shù)時(shí),可以將該系統(tǒng)函數(shù)名稱作為
MmGetSystemRoutineAddress 這類函凄史的輸入?yún)?shù),通過(guò)調(diào)用 MmGetSystemRoutineAddress這類函數(shù),獲取所需調(diào)用的系統(tǒng)函數(shù)的入口地址。
針對(duì)上述驅(qū)動(dòng)程序獲取系統(tǒng)函數(shù)的兩種方式,本實(shí)施例在將所需監(jiān)控的 系統(tǒng)函數(shù)替換為安全軟件監(jiān)控函數(shù)時(shí),可以采用兩種方式。具體來(lái)說(shuō),對(duì)于 驅(qū)動(dòng)程序靜態(tài)獲取系統(tǒng)函數(shù)的方式,本實(shí)施例可以在驅(qū)動(dòng)程序已經(jīng)加載到內(nèi) 核中,調(diào)用驅(qū)動(dòng)模塊入口函數(shù)前,可以搜索驅(qū)動(dòng)模塊內(nèi)存,在驅(qū)動(dòng)模塊導(dǎo)入 表信息中解析出驅(qū)動(dòng)程序?qū)氲南到y(tǒng)函數(shù),如果是需要監(jiān)控的系統(tǒng)函數(shù),則 可將該系統(tǒng)函數(shù)的地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息,從而使得 驅(qū)動(dòng)模塊再調(diào)用該所需監(jiān)控的系統(tǒng)函數(shù)時(shí),調(diào)用的是已經(jīng)替換完成的安全軟 件監(jiān)控函數(shù)。對(duì)于驅(qū)動(dòng)程序動(dòng)態(tài)獲取系統(tǒng)函數(shù)的方式來(lái)說(shuō),由于所有Windows 操作系統(tǒng)都是通過(guò)調(diào)用函數(shù)MmGetSystemRoutineAddress,傳入需要獲取的 系統(tǒng)函數(shù)地址的系統(tǒng)函數(shù)名,調(diào)用MmGetSystemRoutineAddress就能獲取系 統(tǒng)函數(shù)入口地址,而對(duì)于驅(qū)動(dòng)程序來(lái)說(shuō),只能通過(guò)靜態(tài)獲取的方式來(lái)調(diào)用 MmGetSystemRoutineAddress函數(shù),因此,可以將驅(qū)動(dòng)程序的導(dǎo)入表信息中 調(diào)用MmGetSystemRoutineAddress函數(shù)的函數(shù)地址信息替換為調(diào)用安全軟件 監(jiān)控函數(shù)的地址信息。當(dāng)驅(qū)動(dòng)才莫塊再調(diào)用該MmGetSystemRoutineAddress函 數(shù)時(shí),事實(shí)上調(diào)用的是安全軟件監(jiān)控函數(shù),該安全軟件監(jiān)控函數(shù)可以獲取到 所需調(diào)用的系統(tǒng)函數(shù)的函數(shù)名,然后判斷所需調(diào)用的系統(tǒng)函數(shù)是否是所需監(jiān) 控的系統(tǒng)函數(shù),如果是需要監(jiān)控的系統(tǒng)函數(shù),則可將該安全軟件監(jiān)控函數(shù)的 入口地址反饋給驅(qū)動(dòng)程序,從而使得再調(diào)用所需監(jiān)控的系統(tǒng)函數(shù)時(shí),均調(diào)用 的是該安全軟件監(jiān)控函數(shù)。
步驟102、應(yīng)用所述安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的執(zhí)行動(dòng)作, 并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
在完成步驟101之后,本實(shí)施例不管在驅(qū)動(dòng)程序是動(dòng)態(tài)獲取系統(tǒng)函數(shù)還 是靜態(tài)獲取系統(tǒng)函數(shù)的方式下,均可以采用該安全軟件監(jiān)控函數(shù)來(lái)監(jiān)控該驅(qū) 動(dòng)程序的執(zhí)行動(dòng)作,即基于行為特征的判定過(guò)程。監(jiān)控驅(qū)動(dòng)程序的執(zhí)行動(dòng)作的操作可以采用下述四個(gè)例子來(lái)舉例說(shuō)明。事實(shí)上,該執(zhí)行動(dòng)作是否符合邏 輯即是否正??梢愿鶕?jù)行為知識(shí)庫(kù)進(jìn)行判定,而不限于下述幾種情況。
例一、對(duì)于調(diào)用KelnsertQueueApc系統(tǒng)函數(shù)注入進(jìn)程的判斷規(guī)。 KelnsertQueueApc函數(shù)有四個(gè)參數(shù),其中第一個(gè)參數(shù)是指向一KAPC結(jié)構(gòu) 的指針,一KAPC結(jié)構(gòu)可在微軟公司公開的編程接口說(shuō)明中查閱到, typedef struct JCAPC {
CSHORT Type;
CSHORT Size;
ULONG Spare0;
struct 一KTHREAD *Thread;
LIST—ENTRY ApcListEntry;
PKKERNEL—ROUTINE KernelRoutine;
PKRUNDOWN—ROUTINE RundownRoutine;
PKNORMAL—ROUTINE NormalRoutine;
PVOID NormalContext;
〃
〃 N.B. The following two members MUST be together.
〃
PVOID SystemArgumentl; PVOID SystemArgument2; CCHAR ApcStatelndex; KPROCESSOR—MODE ApcMode; BOOLEAN Inserted; } KAPC, *PKAPC, *RESTRICTED POINTER PRKAPC; 其中ApcMode為1是不正常調(diào)用,可直接報(bào)警拒絕。 例二、對(duì)于調(diào)用IoCallDriver直接寫磁盤操作的判斷規(guī)則。 IoCallDriver是微軟公司公開的編程接口,有兩個(gè)參數(shù), 一個(gè)目的設(shè)備設(shè) 備對(duì)象指針, 一個(gè)請(qǐng)求包指針,如果目的設(shè)備對(duì)象指針指向的驅(qū)動(dòng)設(shè)備是磁 盤設(shè)備或者分區(qū)設(shè)備時(shí),解析請(qǐng)求包指針指向的數(shù)據(jù),如果請(qǐng)求包對(duì)應(yīng)的請(qǐng) 求時(shí)寫請(qǐng)求時(shí),這是一個(gè)非法調(diào)用,可能造成直接磁盤寫,可報(bào)警拒絕。例三、 出的判斷規(guī)則。
通過(guò)MmUnmapViewOfSection可以釋放制定進(jìn)程空間內(nèi)制定地址的映射 內(nèi)存,造成進(jìn)程退出,這個(gè)函數(shù)不應(yīng)該被驅(qū)動(dòng)直接調(diào)用,有驅(qū)動(dòng)直接調(diào)用該 函數(shù)釋放進(jìn)程映射內(nèi)存時(shí),可直接報(bào)警。
例四、記錄未知驅(qū)動(dòng)調(diào)用PsCreateSystemThread創(chuàng)建系統(tǒng)線程,根據(jù)系 統(tǒng)線程動(dòng)作報(bào)警。
未知驅(qū)動(dòng)調(diào)用PsCreateSystemThread時(shí),可將新創(chuàng)建的系統(tǒng)線程信息和 未知驅(qū)動(dòng)關(guān)聯(lián),如果經(jīng)過(guò)其他邏輯能判定系統(tǒng)線程有危險(xiǎn)動(dòng)作時(shí),報(bào)警時(shí)可 將關(guān)聯(lián)的位置驅(qū)動(dòng)一起報(bào)出來(lái)。
通過(guò)上述描述可知,本實(shí)施例在驅(qū)動(dòng)程序執(zhí)行之前的時(shí)間點(diǎn)上,將所需 監(jiān)控的系統(tǒng)函數(shù)替換成安全軟件監(jiān)控函數(shù)后,可以應(yīng)用該安全軟件監(jiān)控函數(shù) 監(jiān)控驅(qū)動(dòng)程序是否執(zhí)行了非法操作,當(dāng)判斷執(zhí)行動(dòng)作即行為特征異常時(shí),即 可發(fā)送報(bào)警信息,從而有效防御驅(qū)動(dòng)型惡意軟件的攻擊。本實(shí)施例可以由系 統(tǒng)自行完成而不需要任何人工操縱,因此不需要用戶進(jìn)行任何判斷即可有效 防止驅(qū)動(dòng)型惡意軟件的攻擊,具有智能性;本實(shí)施例充分利用驅(qū)動(dòng)程序必須 調(diào)用系統(tǒng)函數(shù)才能實(shí)現(xiàn)其功能的特征,在特定的時(shí)間點(diǎn)上進(jìn)行安全軟件替換 操作,因此,防御性能安全可靠且不易被恢復(fù);另外,本實(shí)施例僅需要對(duì)通 過(guò)程序識(shí)別為未知或者可能不安全的的驅(qū)動(dòng)程序所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的 函數(shù)地址信息進(jìn)行一次替換,即可完成后續(xù)邏輯判斷,而被監(jiān)控的系統(tǒng)函數(shù) 被其他驅(qū)動(dòng)調(diào)用時(shí)可以不做監(jiān)控,從而不會(huì)對(duì)系統(tǒng)性能產(chǎn)生影響。
圖2為本發(fā)明驅(qū)動(dòng)型惡意軟件防御方法第二實(shí)施例的流程圖,如圖2所 示,本實(shí)施例對(duì)驅(qū)動(dòng)程序采用靜態(tài)獲取方式調(diào)用系統(tǒng)函數(shù)的情況下,如何防 御惡意程序攻擊的過(guò)程進(jìn)行詳細(xì)說(shuō)明,具體的,本實(shí)施例的方法可以包括
步驟201、根據(jù)所述導(dǎo)入表信息中的系統(tǒng)函數(shù)入口地址信息,獲取與所 述系統(tǒng)函數(shù)入口地址信息對(duì)應(yīng)的導(dǎo)入函數(shù),判斷所述導(dǎo)入函數(shù)是否是所需監(jiān) 控的系統(tǒng)函數(shù),并在所述導(dǎo)入函數(shù)是所需監(jiān)控的系統(tǒng)函數(shù)時(shí),將所述導(dǎo)入函 數(shù)的地址信息替換為所述安全軟件監(jiān)控函數(shù)的地址信息。驅(qū)動(dòng)程序加載時(shí),會(huì)存在一個(gè)時(shí)間點(diǎn),在此時(shí)間點(diǎn)上,驅(qū)動(dòng)程序已經(jīng)加 載到系統(tǒng)內(nèi)核中,通過(guò)解析也獲取到該驅(qū)動(dòng)程序的導(dǎo)入表信息,然后將導(dǎo)入 表信息中的函數(shù)名稱信息替換為系統(tǒng)函數(shù)入口地址信息。下一步就是調(diào)用驅(qū) 動(dòng)程序所需的系統(tǒng)函數(shù),從而實(shí)現(xiàn)驅(qū)動(dòng)功能。
本實(shí)施例可以通過(guò)搜索驅(qū)動(dòng)模塊內(nèi)存,查找獲取與該系統(tǒng)函數(shù)入口地址 信息對(duì)應(yīng)的導(dǎo)入函數(shù),即該驅(qū)動(dòng)程序需要調(diào)用的系統(tǒng)函數(shù)。在具體實(shí)施過(guò)程
中,該導(dǎo)入表信息中的導(dǎo)入模塊可以從ntoskrnl.exe導(dǎo)入,根據(jù)該導(dǎo)入才莫塊即 可獲取導(dǎo)入函數(shù)。然后可以判斷該導(dǎo)入函數(shù)是否是需要監(jiān)控的系統(tǒng)函數(shù),如 果是需要監(jiān)控的系統(tǒng)函數(shù),則可將該系統(tǒng)函數(shù)的地址信息替換為安全軟件監(jiān) 控函數(shù)的地址信息,從而使得驅(qū)動(dòng)模塊再調(diào)用該所需監(jiān)控的系統(tǒng)函數(shù)時(shí),調(diào) 用的是已經(jīng)替換完成的安全軟件監(jiān)控函數(shù)。
需要說(shuō)明的是,該導(dǎo)入表信息中可以存在多個(gè)導(dǎo)入模塊,而需要監(jiān)控的 系統(tǒng)函數(shù)是由ntoskrnl.exe導(dǎo)入,因此,可以通過(guò)ntoskrnl.exe導(dǎo)入模塊獲取 多個(gè)導(dǎo)入函數(shù),進(jìn)而可以依次判斷獲取的多個(gè)導(dǎo)入函數(shù)是否是所需監(jiān)控的系 統(tǒng)函數(shù)。
另外,本實(shí)施例在上述才艮據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系 統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息之前,還可 以包括
為所述安全軟件監(jiān)控函數(shù)注冊(cè)模塊加載回調(diào)函數(shù)。
從而使得將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件 監(jiān)控函數(shù)的地址信息可以具體包括應(yīng)用所述才莫塊加載回調(diào)函數(shù),將與所需 監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息。
系統(tǒng)可以提供一種回調(diào)機(jī)制,在驅(qū)動(dòng)模塊加載時(shí),如果有注冊(cè)回調(diào)函數(shù), 系統(tǒng)會(huì)以當(dāng)前加載的模塊信息作為參數(shù),調(diào)用已經(jīng)注冊(cè)的模塊加載回調(diào)函數(shù), 安全軟件監(jiān)控函數(shù)可以注冊(cè)一個(gè)模塊加載回調(diào)函數(shù),在模塊加載回調(diào)函數(shù)中 實(shí)現(xiàn)對(duì)驅(qū)動(dòng)模塊導(dǎo)入表中需要監(jiān)控的系統(tǒng)函數(shù)的替換。
步驟202、根據(jù)所述安全軟件監(jiān)控函數(shù)的地址信息,調(diào)用所述安全軟件 監(jiān)控函數(shù)。當(dāng)驅(qū)動(dòng)程序執(zhí)行時(shí),該驅(qū)動(dòng)程序再需要調(diào)用所需監(jiān)控的系統(tǒng)函數(shù)時(shí),即 可調(diào)用該安全軟件監(jiān)控函數(shù),從而對(duì)后續(xù)該驅(qū)動(dòng)程序的執(zhí)行動(dòng)作進(jìn)行有效監(jiān) 控。
步驟203、應(yīng)用所述安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的執(zhí)行動(dòng)作, 并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
本實(shí)施例在采用靜態(tài)方式獲取系統(tǒng)函數(shù)的驅(qū)動(dòng)程序執(zhí)行之前的時(shí)間點(diǎn) 上,將所需監(jiān)控的系統(tǒng)函數(shù)替換成安全軟件監(jiān)控函數(shù)后,可以應(yīng)用該安全軟 件監(jiān)控函數(shù)監(jiān)控驅(qū)動(dòng)程序是否執(zhí)行了非法操作,當(dāng)判斷執(zhí)行動(dòng)作即行為特征 異常時(shí),即可發(fā)送報(bào)警信息,從而有效防御驅(qū)動(dòng)型惡意軟件的攻擊。本實(shí)施 例的方法具有智能性、防御性能安全可靠且不易被恢復(fù)以及不會(huì)對(duì)系統(tǒng)性能 產(chǎn)生影響等特點(diǎn)。
圖3為本發(fā)明驅(qū)動(dòng)型惡意軟件防御方法第三實(shí)施例的流程圖,如圖3所 示,本實(shí)施例對(duì)驅(qū)動(dòng)程序采用動(dòng)態(tài)獲取方式調(diào)用系統(tǒng)函數(shù)的情況下,如何防 御惡意程序攻擊的過(guò)程進(jìn)行詳細(xì)說(shuō)明,具體的,本實(shí)施例的方法可以包括
步驟301、判斷所述導(dǎo)入表信息中是否存在用于獲取系統(tǒng)函數(shù)入口地址 的函數(shù),并在存在時(shí),將所述用于獲取系統(tǒng)函數(shù)入口地址的函數(shù)的地址信息 替換為所述安全軟件監(jiān)控函數(shù)的地址信息。
對(duì)于動(dòng)態(tài)獲取系統(tǒng)函數(shù)的方式來(lái)說(shuō),所有Windows操作系統(tǒng)中都是通過(guò) 調(diào)用函數(shù)MmGetSystemRoutineAddress,傳入需要獲取的系統(tǒng)函數(shù)的系統(tǒng)函 數(shù)名,調(diào)用函數(shù)MmGetSystemRoutineAddress就能獲取系統(tǒng)函數(shù)入口地址, 而驅(qū)動(dòng)程序只能通過(guò)靜態(tài)獲取的方式調(diào)用函凄t MmGetSystemRoutineAddress, 即在驅(qū)動(dòng)程序編寫時(shí),將該函數(shù)MmGetSystemRoutineAddress寫入驅(qū)動(dòng)程序 中。因此,當(dāng)獲取該驅(qū)動(dòng)程序的導(dǎo)入表信息時(shí),可以通過(guò)查找的方式判斷是 否存在函數(shù)MmGetSystemRoutineAddress , 本實(shí)施例在存在函數(shù) MmGetSystemRoutineAddress時(shí),將該函數(shù)MmGetSystemRoutineAddress的 地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息。再調(diào)用函數(shù) MmGetSystemRoutineAddress獲取系統(tǒng)函數(shù)的入口地址時(shí),事實(shí)上調(diào)用的是 安全軟件監(jiān)控函數(shù)。
12步驟302、根據(jù)所述安全軟件監(jiān)控函數(shù)的地址信息,調(diào)用所述安全軟件 監(jiān)控函數(shù),判斷所述安全軟件監(jiān)控函數(shù)獲取的系統(tǒng)函數(shù)入口地址是否對(duì)應(yīng)于 所需監(jiān)控的系統(tǒng)函數(shù),并在對(duì)應(yīng)時(shí),將所述安全軟件監(jiān)控函數(shù)的入口地址反 饋給所述驅(qū)動(dòng)程序,供所述驅(qū)動(dòng)程序根據(jù)所述安全軟件監(jiān)控函數(shù)的入口地址 調(diào)用所述安全軟件監(jiān)控函數(shù)。
在根據(jù)替換后的地址信息調(diào)用函數(shù)時(shí),即可調(diào)用與該地址信息對(duì)應(yīng)的安 全軟件監(jiān)控函數(shù)。該安全軟件監(jiān)控函數(shù)根據(jù)獲取的系統(tǒng)函數(shù)入口地址即可判 斷所需調(diào)用的系統(tǒng)函數(shù)是否所需監(jiān)控的系統(tǒng)函數(shù)的入口地址,該過(guò)程可是采 用安全軟件監(jiān)控函數(shù)過(guò)濾函數(shù)名的方式來(lái)實(shí)現(xiàn)。如果是,則將安全軟件監(jiān)控 函數(shù)的入口地址反饋給驅(qū)動(dòng)程序,從而使得驅(qū)動(dòng)程序后續(xù)再調(diào)用所需監(jiān)控系 統(tǒng)函數(shù)時(shí),即可根據(jù)該安全軟件監(jiān)控函數(shù)的入口地址調(diào)用安全軟件監(jiān)控函數(shù)。 如果不是,則可以將該系統(tǒng)函數(shù)的入口地址返回給驅(qū)動(dòng)程序。
步驟303、應(yīng)用所述安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的執(zhí)行動(dòng)作, 并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
另外,本實(shí)施例在上述根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將所述用于獲取系 統(tǒng)函數(shù)入口地址的函數(shù)的地址信息替換為所述安全軟件監(jiān)控函數(shù)的地址信息 之前,還可以包括
為所述安全軟件監(jiān)控函數(shù)注冊(cè)模塊加載回調(diào)函數(shù)。
從而使得將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件 監(jiān)控函數(shù)的地址信息可以具體包括應(yīng)用所述模塊加載回調(diào)函數(shù),將與所需 監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息。
系統(tǒng)可以提供一種回調(diào)機(jī)制,在驅(qū)動(dòng)模塊加載時(shí),如果有注冊(cè)回調(diào)函數(shù), 系統(tǒng)會(huì)以當(dāng)前加載的模塊信息作為參數(shù),調(diào)用已經(jīng)注冊(cè)的模塊加栽回調(diào)函數(shù), 安全軟件監(jiān)控函數(shù)可以注冊(cè)一個(gè)才莫塊加載回調(diào)函數(shù),在模塊加載回調(diào)函數(shù)中 實(shí)現(xiàn)對(duì)驅(qū)動(dòng)模塊導(dǎo)入表中與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)的替換。
本實(shí)施例在采用動(dòng)態(tài)方式獲取系統(tǒng)函數(shù)的驅(qū)動(dòng)程序執(zhí)行之前的時(shí)間點(diǎn) 上,將用于調(diào)用系統(tǒng)函數(shù)的入口地址的函數(shù)的地址信息替換成安全軟件監(jiān)控 函數(shù)的地址信息后,可以應(yīng)用該安全軟件監(jiān)控函數(shù)判斷所需反饋的系統(tǒng)函數(shù)的入口地址是否是所需監(jiān)控的系統(tǒng)函數(shù)的入口地址,并在是所需監(jiān)控的系統(tǒng) 函數(shù)的入口地址時(shí),將該安全軟件監(jiān)控函數(shù)的入口地址反饋給驅(qū)動(dòng)程序,從 而可以利用該安全軟件監(jiān)控函數(shù)來(lái)監(jiān)控驅(qū)動(dòng)程序是否執(zhí)行了非法操作,當(dāng)判 斷執(zhí)行動(dòng)作即行為特征異常時(shí),即可發(fā)送報(bào)警信息,從而有效防御驅(qū)動(dòng)型惡 意軟件的攻擊。本實(shí)施例的方法具有智能性、防御性能安全可靠且不易被恢 復(fù)以及不會(huì)對(duì)系統(tǒng)性能產(chǎn)生影響等特點(diǎn)。
圖4為本發(fā)明驅(qū)動(dòng)型惡意軟件防御裝置第一實(shí)施例的結(jié)構(gòu)示意圖,如圖 4所示,本實(shí)施例的裝置包括替換處理模塊1和監(jiān)控處理模塊2。其中,替 換處理模塊1用于根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相 關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息;監(jiān)控處理模塊2用 于應(yīng)用替換處理模塊1替換后的安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的執(zhí) 行動(dòng)作,并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
驅(qū)動(dòng)程序加載時(shí),會(huì)存在一個(gè)時(shí)間點(diǎn),在此時(shí)間點(diǎn)上,驅(qū)動(dòng)程序已經(jīng)加 載到系統(tǒng)內(nèi)核中,通過(guò)解析也獲取到該驅(qū)動(dòng)程序的導(dǎo)入表信息,下一步就是 調(diào)用驅(qū)動(dòng)程序所需的系統(tǒng)函數(shù),從而實(shí)現(xiàn)驅(qū)動(dòng)功能。在此時(shí)間點(diǎn)安裝安全軟 件監(jiān)控函數(shù),能在驅(qū)動(dòng)程序執(zhí)行前,將驅(qū)動(dòng)程序所需調(diào)用的系統(tǒng)函數(shù)替換為 安全軟件監(jiān)控函數(shù)。該替換過(guò)程即可為將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù) 地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息。該安全軟件監(jiān)控函數(shù)具有邏 輯判斷功能,能夠在后續(xù)根據(jù)該安全軟件監(jiān)控函數(shù)判斷驅(qū)動(dòng)程序是否執(zhí)行了 異常操作。
根據(jù)操作系統(tǒng)的基本知識(shí)可知,驅(qū)動(dòng)型惡意軟件要實(shí)現(xiàn)其功能,必定要 在其運(yùn)行時(shí)調(diào)用系統(tǒng)函數(shù)。而驅(qū)動(dòng)程序調(diào)用所需的系統(tǒng)函數(shù)的方式只有兩種, 一種是靜態(tài)獲取所需調(diào)用的系統(tǒng)函數(shù)的方式;另一種是動(dòng)態(tài)獲取所需調(diào)用的 系統(tǒng)函數(shù)的方式。對(duì)于靜態(tài)獲取的方式來(lái)說(shuō),在編寫該驅(qū)動(dòng)程序時(shí),需要直 接調(diào)用系統(tǒng)函數(shù),在編譯該驅(qū)動(dòng)程序時(shí),編譯器會(huì)自動(dòng)將需要調(diào)用的系統(tǒng)函 數(shù)的信息保存在驅(qū)動(dòng)文件的導(dǎo)入表中。而對(duì)于動(dòng)態(tài)獲取的方式來(lái)說(shuō),在驅(qū)動(dòng) 程序運(yùn)行過(guò)程中,需要調(diào)用系統(tǒng)函數(shù)時(shí),可以將該系統(tǒng)函數(shù)名稱作為 MmGetSystemRoutineAddress 這類函H的輸入?yún)?shù),通過(guò)調(diào)用MmGetSystemRoutineAddress這類函數(shù),獲取所需調(diào)用的系統(tǒng)函數(shù)的入口地 址。
針對(duì)上述驅(qū)動(dòng)程序獲取系統(tǒng)函數(shù)的兩種方式,本實(shí)施例在將所需監(jiān)控的 系統(tǒng)函數(shù)替換為安全軟件監(jiān)控函數(shù)時(shí),可以采用兩種方式。具體來(lái)說(shuō),對(duì)于 驅(qū)動(dòng)程序靜態(tài)獲取系統(tǒng)函數(shù)的方式,本實(shí)施例中的替換處理模塊1可以在驅(qū) 動(dòng)程序已經(jīng)加載到內(nèi)核中,調(diào)用驅(qū)動(dòng)模塊入口函數(shù)前,將導(dǎo)入表信息中的函 數(shù)名稱信息替換為系統(tǒng)函數(shù)入口地址,此時(shí),可以搜索驅(qū)動(dòng)模塊內(nèi)存,在驅(qū) 動(dòng)模塊導(dǎo)入表信息中解析出驅(qū)動(dòng)程序?qū)氲南到y(tǒng)函數(shù),如果是需要監(jiān)控的系 統(tǒng)函數(shù),則可將該系統(tǒng)函數(shù)的地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息, 從而使得驅(qū)動(dòng)模塊再調(diào)用該所需監(jiān)控的系統(tǒng)函數(shù)時(shí),調(diào)用的是已經(jīng)替換完成 的安全軟件監(jiān)控函數(shù)。對(duì)于驅(qū)動(dòng)程序動(dòng)態(tài)獲取系統(tǒng)函數(shù)的方式來(lái)說(shuō),由于所 有Windows操作系統(tǒng)都是通過(guò)調(diào)用函數(shù)MmGetSystemRoutineAddress,傳入 需要獲取的系統(tǒng)函數(shù)地址的系統(tǒng)函數(shù)名,調(diào)用MmGetSystemRoutineAddress 就能獲取系統(tǒng)函數(shù)入口地址,而對(duì)于驅(qū)動(dòng)程序來(lái)說(shuō),只能通過(guò)靜態(tài)獲取的方 式來(lái)調(diào)用MmGetSystemRoutineAddress函數(shù),因此,替換處理才莫塊1可以將 驅(qū)動(dòng)程序的導(dǎo)入表信息中調(diào)用MmGetSystemRoutineAddress函凄t的函凄t地址 信息替換為調(diào)用安全軟件監(jiān)控函數(shù)的地址信息。當(dāng)驅(qū)動(dòng)模塊再調(diào)用該 MmGetSystemRoutineAddress函數(shù)時(shí),事實(shí)上調(diào)用的是安全軟件監(jiān)控函數(shù), 該安全軟件監(jiān)控函數(shù)可以獲取到所需調(diào)用的系統(tǒng)函數(shù)的函數(shù)名,然后判斷所 需調(diào)用的系統(tǒng)函凄tA否是所需監(jiān)控的系統(tǒng)函數(shù),如果是需要監(jiān)控的系統(tǒng)函數(shù), 則可將該安全軟件監(jiān)控函數(shù)的入口地址反饋給驅(qū)動(dòng)程序,從而使得再調(diào)用所 需監(jiān)控的系統(tǒng)函數(shù)時(shí),均調(diào)用的是該安全軟件監(jiān)控函數(shù)。
不管在驅(qū)動(dòng)程序是動(dòng)態(tài)獲取系統(tǒng)函數(shù)還是靜態(tài)獲取系統(tǒng)函數(shù)的方式下, 監(jiān)控處理模塊2均可以采用該安全軟件監(jiān)控函數(shù)來(lái)監(jiān)控該驅(qū)動(dòng)程序的執(zhí)行動(dòng) 作,即基于行為特征的判定過(guò)程。監(jiān)控驅(qū)動(dòng)程序的執(zhí)行動(dòng)作的操作可以采用 方法實(shí)施例中所述的四個(gè)例子來(lái)舉例說(shuō)明。事實(shí)上,該執(zhí)行動(dòng)作是否符合邏 輯即是否正常可以根據(jù)行為知識(shí)庫(kù)進(jìn)行判定,而不限于下述幾種情況。
通過(guò)上述描述可知,本實(shí)施例中的替換處理模塊在驅(qū)動(dòng)程序執(zhí)行之前的時(shí)間點(diǎn)上,將所需監(jiān)控的系統(tǒng)函數(shù)替換成安全軟件監(jiān)控函數(shù)后,監(jiān)控處理模 塊可以應(yīng)用該安全軟件監(jiān)控函數(shù)監(jiān)控驅(qū)動(dòng)程序是否執(zhí)行了非法操作,當(dāng)判斷 執(zhí)行動(dòng)作即行為特征異常時(shí),即可發(fā)送報(bào)警信息,從而有效防御驅(qū)動(dòng)型惡意 軟件的攻擊。本實(shí)施例可以由系統(tǒng)自行完成而不需要任何人工操縱,因此不
需要用戶進(jìn)行任何判斷即可有效防止驅(qū)動(dòng)型惡意軟件的攻擊,具有智能性; 本實(shí)施例充分利用驅(qū)動(dòng)程序必須調(diào)用系統(tǒng)函數(shù)才能實(shí)現(xiàn)其功能的特征,在特 定的時(shí)間點(diǎn)上進(jìn)行安全軟件替換操作,因此,防御性能安全可靠且不易被恢
復(fù);另外,本實(shí)施例僅需要將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息進(jìn)
行一次替換,即可完成后續(xù)邏輯判斷,而不需要反復(fù)調(diào)用系統(tǒng)函數(shù),從而不 會(huì)對(duì)系統(tǒng)性能產(chǎn)生影響。
圖5為本發(fā)明驅(qū)動(dòng)型惡意軟件防御裝置第二實(shí)施例的結(jié)構(gòu)示意圖,如圖 5所示,本實(shí)施例的裝置包括替換處理模塊1和監(jiān)控處理模塊2。其中,替 換處理才莫塊1用于根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相 關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息;監(jiān)控處理模塊2用 于應(yīng)用替換處理模塊1替換后的安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的執(zhí) 行動(dòng)作,并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
進(jìn)一步的,為了在驅(qū)動(dòng)程序采用靜態(tài)獲取方式調(diào)用系統(tǒng)函數(shù)時(shí),有效防 雄卩惡意程序的攻擊,本實(shí)施例的裝置中,替換處理模塊l可以包括第一獲 取單元ll、第一判斷單元12以及第一替換處理單元13。該第一獲取單元ll 用于根據(jù)所述導(dǎo)入表信息中的系統(tǒng)函數(shù)入口地址信息,獲取與所述系統(tǒng)函數(shù) 入口地址信息對(duì)應(yīng)的導(dǎo)入函數(shù);第一判斷單元12用于判斷第一獲取單元11 獲取的導(dǎo)入函數(shù)是否是所需監(jiān)控的系統(tǒng)函數(shù);第一替換處理單元13用于在第 一判斷單元12判斷所述導(dǎo)入函數(shù)是所需監(jiān)控的系統(tǒng)函數(shù)時(shí),將所述導(dǎo)入函數(shù) 的地址信息替換為所述安全軟件監(jiān)控函數(shù)的地址信息。
具體來(lái)說(shuō),驅(qū)動(dòng)程序加載時(shí),會(huì)存在一個(gè)時(shí)間點(diǎn),在此時(shí)間點(diǎn)上,驅(qū)動(dòng) 程序已經(jīng)加載到系統(tǒng)內(nèi)核中,通過(guò)解析也獲取到該驅(qū)動(dòng)程序的導(dǎo)入表信息, 然后將導(dǎo)入表信息中的函數(shù)名稱信息替換為系統(tǒng)函數(shù)入口地址信息。下一步 就是調(diào)用驅(qū)動(dòng)程序所需的系統(tǒng)函數(shù),從而實(shí)現(xiàn)驅(qū)動(dòng)功能。本實(shí)施例中,第一獲取單元11可以通過(guò)搜索驅(qū)動(dòng)模塊內(nèi)存,查找獲取與 該系統(tǒng)函數(shù)入口地址信息對(duì)應(yīng)的導(dǎo)入函數(shù),即該驅(qū)動(dòng)程序需要調(diào)用的系統(tǒng)函
數(shù)。在具體實(shí)施過(guò)程中,該導(dǎo)入表信息中的導(dǎo)入模塊可以從ntoskrnl.exe導(dǎo)入, 根據(jù)該導(dǎo)入模塊即可獲取導(dǎo)入函數(shù)。然后第一判斷單元12可以判斷該導(dǎo)入函 數(shù)是否是需要監(jiān)控的系統(tǒng)函數(shù),如果是需要監(jiān)控的系統(tǒng)函數(shù),則第一替換處 理單元13可將該系統(tǒng)函數(shù)的地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息, 從而使得驅(qū)動(dòng)模塊再調(diào)用該所需監(jiān)控的系統(tǒng)函數(shù)時(shí),調(diào)用的是已經(jīng)替換完成 的安全軟件監(jiān)控函數(shù)。
需要說(shuō)明的是,該導(dǎo)入表信息中可以存在多個(gè)導(dǎo)入模塊,而需要監(jiān)控的 系統(tǒng)函數(shù)是由ntoskrnl.exe導(dǎo)入,因此,可以通過(guò)ntoskrnl.exe導(dǎo)入才莫塊獲取 多個(gè)導(dǎo)入函數(shù),進(jìn)而可以依次判斷獲取的多個(gè)導(dǎo)入函數(shù)是否是所需監(jiān)控的系 統(tǒng)函數(shù)。
當(dāng)驅(qū)動(dòng)程序執(zhí)行時(shí),該驅(qū)動(dòng)程序再需要調(diào)用所需監(jiān)控的系統(tǒng)函數(shù)時(shí),即 可調(diào)用該安全軟件監(jiān)控函數(shù),從而對(duì)后續(xù)該驅(qū)動(dòng)程序的執(zhí)行動(dòng)作進(jìn)行有效監(jiān) 控。
監(jiān)控處理模塊2可以應(yīng)用所述安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的 執(zhí)行動(dòng)作,并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
本實(shí)施例的裝置在采用靜態(tài)方式獲取系統(tǒng)函數(shù)的驅(qū)動(dòng)程序執(zhí)行之前的時(shí) 間點(diǎn)上,將所需監(jiān)控的系統(tǒng)函數(shù)替換成安全軟件監(jiān)控函數(shù)后,監(jiān)控處理模塊 可以應(yīng)用該安全軟件監(jiān)控函數(shù)監(jiān)控驅(qū)動(dòng)程序是否執(zhí)行了非法操作,當(dāng)判斷執(zhí) 行動(dòng)作即行為特征異常時(shí),即可發(fā)送報(bào)警信息,從而有效防御驅(qū)動(dòng)型惡意軟 件的攻擊。本實(shí)施例的方法具有智能性、防御性能安全可靠且不易被恢復(fù)以 及不會(huì)對(duì)系統(tǒng)性能產(chǎn)生影響等特點(diǎn)。
圖6為本發(fā)明驅(qū)動(dòng)型惡意軟件防御裝置第三實(shí)施例的結(jié)構(gòu)示意圖,如圖 6所示,本實(shí)施例的裝置包括替換處理模塊1和監(jiān)控處理模塊2。其中,替 換處理模塊1用于根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相 關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息;監(jiān)控處理模塊2用 于應(yīng)用替換處理模塊1替換后的安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的執(zhí)行動(dòng)作,并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
進(jìn)一步的,為了在驅(qū)動(dòng)程序采用靜態(tài)獲取方式調(diào)用系統(tǒng)函數(shù)時(shí),有效防
御惡意程序的攻擊,本實(shí)施例的裝置中,替換處理模塊l可以包括第二判 斷單元14和第二替換處理單元15。該第二判斷單元14用于判斷所述導(dǎo)入表 信息中是否存在用于獲取系統(tǒng)函數(shù)入口地址的函數(shù);第二替換處理單元15用 于在第二判斷單元14判斷所述導(dǎo)入表信息中存在用于獲取系統(tǒng)函數(shù)入口地 址的函數(shù)時(shí),將所述用于獲取系統(tǒng)函數(shù)入口地址的函數(shù)的地址信息替換為所 述安全軟件監(jiān)控函數(shù)的地址信息。
進(jìn)一步地,本實(shí)施例的裝置還可以包括調(diào)用處理單元3,該調(diào)用處理 單元3用于根據(jù)所述安全軟件監(jiān)控函數(shù)的地址信息,調(diào)用所述安全軟件監(jiān)控 函數(shù),判斷所述安全軟件監(jiān)控函數(shù)獲取的系統(tǒng)函數(shù)入口地址是否對(duì)應(yīng)于所需 監(jiān)控的系統(tǒng)函數(shù),并在對(duì)應(yīng)時(shí),將所述安全軟件監(jiān)控函數(shù)的入口地址反饋給 所述驅(qū)動(dòng)程序,供所述監(jiān)控處理模塊根據(jù)所述安全軟件監(jiān)控函數(shù)的入口地址 調(diào)用所述安全軟件監(jiān)控函數(shù)。
具體來(lái)說(shuō),第二判斷單元14判斷所述導(dǎo)入表信息中是否存在用于獲取系
統(tǒng)函數(shù)入口地址的函數(shù),并在存在時(shí),第二替換處理單元15將所述用于獲取
系統(tǒng)函數(shù)入口地址的函數(shù)的地址信息替換為所述安全軟件監(jiān)控函數(shù)的地址信 自
對(duì)于動(dòng)態(tài)獲取系統(tǒng)函數(shù)的方式來(lái)說(shuō),所有Windows操作系統(tǒng)中都是通過(guò) 調(diào)用函數(shù)MmGetSystemRoutineAddress,傳入需要獲取的系統(tǒng)函數(shù)的系統(tǒng)函 數(shù)名,調(diào)用函凄t MmGetSystemRoutineAddress就能獲取系統(tǒng)函數(shù)入口地址, 而驅(qū)動(dòng)程序只能通過(guò)靜態(tài)獲取的方式調(diào)用函數(shù)MmGetSystemRoutineAddress, 即在驅(qū)動(dòng)程序編寫時(shí),將該函數(shù)MmGetSystemRoutineAddress寫入驅(qū)動(dòng)程序 中。因此,當(dāng)獲取該驅(qū)動(dòng)程序的導(dǎo)入表信息時(shí),可以通過(guò)查找的方式判斷是 否存在函凄t MmGetSystemRoutineAddress , 本實(shí)施例在存在函數(shù) MmGetSystemRoutineAddress時(shí),第二替換處理單元15將該函數(shù) MmGetSystemRoutineAddress的地址信息替換為安全軟件監(jiān)控函數(shù)的地址信 息。再調(diào)用函數(shù)MmGetSystemRoutineAddress獲耳又系統(tǒng)函數(shù)的入口地址時(shí),事實(shí)上調(diào)用的是安全軟件監(jiān)控函數(shù)。
調(diào)用處理模塊3在根據(jù)替換后的地址信息調(diào)用函數(shù)時(shí),即可調(diào)用與該地址 信息對(duì)應(yīng)的安全軟件監(jiān)控函數(shù)。該安全軟件監(jiān)控函數(shù)根據(jù)獲取的系統(tǒng)函數(shù)入口 地址即可判斷所需調(diào)用的系統(tǒng)函數(shù)是否所需監(jiān)控的系統(tǒng)函數(shù)的入口地址,該過(guò) 程可是采用安全軟件監(jiān)控函數(shù)過(guò)濾函數(shù)名的方式來(lái)實(shí)現(xiàn)。如果是,則將安全軟 件監(jiān)控函數(shù)的入口地址反饋給驅(qū)動(dòng)程序,從而使得驅(qū)動(dòng)程序后續(xù)再調(diào)用所需監(jiān) 控系統(tǒng)函數(shù)時(shí),即可根據(jù)該安全軟件監(jiān)控函數(shù)的入口地址調(diào)用安全軟件監(jiān)控函 數(shù)。如果不是,則可以將該系統(tǒng)函數(shù)的入口地址返回給驅(qū)動(dòng)程序。
監(jiān)控處理模塊2應(yīng)用該安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的執(zhí)行動(dòng) 作,并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
本實(shí)施例在采用動(dòng)態(tài)方式獲取系統(tǒng)函數(shù)的驅(qū)動(dòng)程序執(zhí)行之前的時(shí)間點(diǎn) 上,將用于調(diào)用系統(tǒng)函數(shù)的入口地址的函數(shù)的地址信息替換成安全軟件監(jiān)控 函數(shù)的地址信息后,可以應(yīng)用該安全軟件監(jiān)控函數(shù)判斷所需反饋的系統(tǒng)函數(shù) 的入口地址是否是所需監(jiān)控的系統(tǒng)函數(shù)的入口地址,并在是所需監(jiān)控的系統(tǒng) 函數(shù)的入口地址時(shí),將該安全軟件監(jiān)控函數(shù)的入口地址反饋給驅(qū)動(dòng)程序,從 而可以利用該安全軟件監(jiān)控函數(shù)來(lái)監(jiān)控驅(qū)動(dòng)程序是否執(zhí)行了非法操作,當(dāng)判 斷執(zhí)行動(dòng)作即行為特征異常時(shí),即可發(fā)送報(bào)警信息,從而有效防御驅(qū)動(dòng)型惡
意軟件的攻擊。本實(shí)施例的方法具有智能性、防御性能安全可靠且不易被恢 復(fù)以及不會(huì)對(duì)系統(tǒng)性能產(chǎn)生影響等特點(diǎn)。
需要說(shuō)明的是,本發(fā)明驅(qū)動(dòng)型惡意軟件防御裝置第二實(shí)施例和第三實(shí)施 例也可以結(jié)合在一個(gè)系統(tǒng)中,從而使得本發(fā)明驅(qū)動(dòng)型惡意軟件防御裝置既可 以對(duì)驅(qū)動(dòng)程序靜態(tài)獲取系統(tǒng)函數(shù)是的惡意攻擊進(jìn)行有效防御,又可以對(duì)驅(qū)動(dòng) 程序靜態(tài)獲取系統(tǒng)函數(shù)是的惡意攻擊進(jìn)行有效防御。
最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn) 行限制,盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技 術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換, 而這些修改或者等同替換亦不能使修改后的技術(shù)方案脫離本發(fā)明技術(shù)方案的 精神和范圍。
權(quán)利要求
1、一種驅(qū)動(dòng)型惡意軟件防御方法,其特征在于,包括根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息;應(yīng)用所述安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的執(zhí)行動(dòng)作,并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
2、 根據(jù)權(quán)利要求1所述的驅(qū)動(dòng)型惡意軟件防御方法,其特征在于,所述 根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息,包括才艮據(jù)所述導(dǎo)入表信息中的系統(tǒng)函數(shù)入口地址信息,獲取與所述系統(tǒng)函數(shù) 入口地址信息對(duì)應(yīng)的導(dǎo)入函數(shù),判斷所述導(dǎo)入函數(shù)是否是所需監(jiān)控的系統(tǒng)函 數(shù),并在所述導(dǎo)入函數(shù)是所需監(jiān)控的系統(tǒng)函數(shù)時(shí),將所述導(dǎo)入函數(shù)的地址信 息替換為所述安全軟件監(jiān)控函數(shù)的地址信息。
3、 根據(jù)權(quán)利要求2所述的驅(qū)動(dòng)型惡意軟件防御方法,其特征在于,所述 應(yīng)用所述安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的執(zhí)行動(dòng)作之前,還包括根據(jù)所述安全軟件監(jiān)控函數(shù)的地址信息,調(diào)用所述安全軟件監(jiān)控函數(shù)。
4、 根據(jù)權(quán)利要求1所述的驅(qū)動(dòng)型惡意軟件防御方法,其特征在于,所述 根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息 替換為安全軟件監(jiān)控函數(shù)的地址信息,包括判斷所述導(dǎo)入表信息中是否存在用于獲取系統(tǒng)函數(shù)入口地址的函數(shù),并 在存在時(shí),將所述用于獲取系統(tǒng)函數(shù)入口地址的函數(shù)的地址信息替換為所述 安全軟件監(jiān)控函數(shù)的地址信息。
5、 根據(jù)權(quán)利要求4所述的驅(qū)動(dòng)型惡意軟件防御方法,其特征在于,所述 應(yīng)用所述安全軟件監(jiān)控函數(shù),監(jiān)控所述驅(qū)動(dòng)程序的執(zhí)行動(dòng)作之前,還包括根據(jù)所述安全軟件監(jiān)控函數(shù)的地址信息,調(diào)用所述安全軟件監(jiān)控函數(shù), 判斷所述安全軟件監(jiān)控函數(shù)獲取的系統(tǒng)函數(shù)入口地址是否對(duì)應(yīng)于所需監(jiān)控的系統(tǒng)函數(shù),并在對(duì)應(yīng)時(shí),將所述安全軟件監(jiān)控函數(shù)的入口地址反饋給所述驅(qū) 動(dòng)程序,供所述驅(qū)動(dòng)程序根據(jù)所述安全軟件監(jiān)控函數(shù)的入口地址調(diào)用所述安 全軟件監(jiān)控函數(shù)。
6、 根據(jù)權(quán)利要求1~5中任一權(quán)利要求所述的驅(qū)動(dòng)型惡意軟件防御方法, 其特征在于,所述根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相 關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息之前,還包括為所述安全軟件監(jiān)控函數(shù)注冊(cè)模塊加載回調(diào)函數(shù)。
7、 根據(jù)權(quán)利要求6所述的驅(qū)動(dòng)型惡意軟件防御方法,其特征在于,所述 將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息,包括應(yīng)用所述模塊加載回調(diào)函數(shù),將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址 信息替換為安全軟件監(jiān)控函數(shù)的地址信息。
8、 一種驅(qū)動(dòng)型惡意軟件防御裝置,其特征在于,包括 替換處理模塊,用于根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息;監(jiān)控處理模塊,用于應(yīng)用所述替換處理才莫塊替換后的安全軟件監(jiān)控函數(shù), 監(jiān)控所述驅(qū)動(dòng)程序的執(zhí)行動(dòng)作,并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。
9、 根據(jù)權(quán)利要求8所述的驅(qū)動(dòng)型惡意軟件防御裝置,其特征在于,所述 替換處理模塊包括第一獲取單元,用于根據(jù)所述導(dǎo)入表信息中的系統(tǒng)函數(shù)入口地址信息, 獲取與所述系統(tǒng)函數(shù)入口地址信息對(duì)應(yīng)的導(dǎo)入函數(shù);第一判斷單元,用于判斷所述第一獲取單元獲取的導(dǎo)入函數(shù)是否是所需監(jiān)控的系統(tǒng)函數(shù);第一替換處理單元,用于在所述第一判斷單元判斷所述導(dǎo)入函數(shù)是所需 監(jiān)控的系統(tǒng)函數(shù)時(shí),將所述導(dǎo)入函數(shù)的地址信息替換為所述安全軟件監(jiān)控函 數(shù)的地址信息。
10、 根據(jù)權(quán)利要求8所述的驅(qū)動(dòng)型惡意軟件防御裝置,其特征在于,所 述替換處理模塊包括第二判斷單元,用于判斷所述導(dǎo)入表信息中是否存在用于獲取系統(tǒng)函數(shù) 入口i也i止的函數(shù);第二替換處理單元,用于在第二判斷單元判斷所述導(dǎo)入表信息中存在用 于獲取系統(tǒng)函數(shù)入口地址的函數(shù)時(shí),將所述用于獲取系統(tǒng)函數(shù)入口地址的函 數(shù)的地址信息替換為所述安全軟件監(jiān)控函數(shù)的地址信息。
11、 根據(jù)權(quán)利要求10所述的驅(qū)動(dòng)型惡意軟件防御裝置,其特征在于,還包括調(diào)用處理單元,用于才艮據(jù)所述安全軟件監(jiān)控函^t的地址信息,調(diào)用所述 安全軟件監(jiān)控函數(shù),判斷所述安全軟件監(jiān)控函數(shù)獲取的系統(tǒng)函數(shù)入口地址是 否對(duì)應(yīng)于所需監(jiān)控的系統(tǒng)函數(shù),并在對(duì)應(yīng)時(shí),將所述安全軟件監(jiān)控函數(shù)的入 口地址反饋給所述驅(qū)動(dòng)程序,供所述監(jiān)控處理模塊根據(jù)所述安全軟件監(jiān)控函 數(shù)的入口地址調(diào)用所述安全軟件監(jiān)控函數(shù)。
全文摘要
本發(fā)明公開一種驅(qū)動(dòng)型惡意軟件防御方法和裝置,該方法包括根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息;應(yīng)用安全軟件監(jiān)控函數(shù),監(jiān)控驅(qū)動(dòng)程序的執(zhí)行動(dòng)作,并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。該裝置包括替換處理模塊,用于根據(jù)驅(qū)動(dòng)程序的導(dǎo)入表信息,將與所需監(jiān)控的系統(tǒng)函數(shù)相關(guān)的函數(shù)地址信息替換為安全軟件監(jiān)控函數(shù)的地址信息;監(jiān)控處理模塊,用于應(yīng)用替換處理模塊替換后的安全軟件監(jiān)控函數(shù),監(jiān)控驅(qū)動(dòng)程序的執(zhí)行動(dòng)作,并在執(zhí)行動(dòng)作異常時(shí)發(fā)送報(bào)警信息。本發(fā)明對(duì)驅(qū)動(dòng)型惡意程序進(jìn)行有效防御的同時(shí),具有智能性、防御性能安全可靠且不易被恢復(fù)以及不會(huì)對(duì)系統(tǒng)性能產(chǎn)生影響等特點(diǎn)。
文檔編號(hào)G06F9/46GK101599113SQ20091008668
公開日2009年12月9日 申請(qǐng)日期2009年6月17日 優(yōu)先權(quán)日2009年6月17日
發(fā)明者強(qiáng) 郭 申請(qǐng)人:北京東方微點(diǎn)信息技術(shù)有限責(zé)任公司