反病毒軟件江湖:排斥與兼容的戰(zhàn)爭(zhēng)(1)
文件監(jiān)控的潛在兼容性問(wèn)題
文件監(jiān)控是反病毒廠商普遍采用的技術(shù)手段,其主要機(jī)理是對(duì)文件的創(chuàng)建、讀取、關(guān)閉等行為進(jìn)行監(jiān)控觸發(fā)對(duì)文件病毒檢測(cè),以阻斷病毒的執(zhí)行和部分相關(guān)行為。
文件監(jiān)控的實(shí)現(xiàn)方式主要有以下兩大類型:
1. API掛鉤。
根據(jù)鉤掛API的層次不同我們又可以分為 :
(a) Ring3文件監(jiān)控。
多采用inline hook的方式修改文件操作相關(guān)函數(shù)的前幾個(gè)字節(jié),跳轉(zhuǎn)到自己的函數(shù),然后對(duì)將要操作的文件和緩沖區(qū)進(jìn)行檢測(cè)。
由于實(shí)現(xiàn)跳轉(zhuǎn)的方式有多種,所以不同軟件的實(shí)現(xiàn)策略有所不同,很難保證多個(gè)軟件共存時(shí)前一軟件修改后不影響到后一個(gè)軟件,而且很可能導(dǎo)致相關(guān)進(jìn)程崩潰。
由于此類技術(shù)也多被惡意軟件使用,一些安全軟件不會(huì)在執(zhí)行完自己的代碼后執(zhí)行修改前的自己,而是采用從原始文件中讀取、分析、執(zhí)行的方式,導(dǎo)致多個(gè)安全軟件同時(shí)監(jiān)控一個(gè)API時(shí),只有一個(gè)生效。
出于性能考慮,不傳遞給原API處理而采用自己實(shí)現(xiàn)的代碼完成該API的相應(yīng)功能,那么也不會(huì)將相關(guān)信息傳遞給其他軟件。
部分軟件在執(zhí)行完自己的函數(shù)后會(huì)把修改后的字節(jié)還原,然后調(diào)用原系統(tǒng)API完成功能后再次修改、掛鉤。兩個(gè)使用此實(shí)現(xiàn)的軟件同時(shí)工作則可能造成互相調(diào)用導(dǎo)致死鎖,程序沒(méi)有響應(yīng)。
(b) Ring0文件監(jiān)控。與ring3的情況類似,但是后果更加嚴(yán)重。
由于inline hook不同實(shí)現(xiàn)造成的不兼容性很可能導(dǎo)致系統(tǒng)API無(wú)法正常工作,導(dǎo)致系統(tǒng)藍(lán)屏。
例如:安天客戶端產(chǎn)品(Antiy Ghostbusters4.0)早期版本采用大量inline hook,后因與其他產(chǎn)品嚴(yán)重沖突放棄;360安全衛(wèi)士中inline hook有幾種不同實(shí)現(xiàn)方式共存的現(xiàn)象,并且與360安全瀏覽器有重合的監(jiān)控點(diǎn);
掛鉤之間相互調(diào)用,會(huì)導(dǎo)致死鎖,系統(tǒng)死機(jī);
采用替換SSDT的方式,則只有自己的掛鉤有效,其他軟件的掛鉤均無(wú)效。
例如:360安全衛(wèi)士等產(chǎn)品采用替換SSDT的方式,與其共存的安全軟件通過(guò)標(biāo)準(zhǔn)方法獲取的SSDT是無(wú)效的,導(dǎo)致其他安全軟件功能出現(xiàn)缺失;
Vista以后微軟對(duì)內(nèi)核進(jìn)行保護(hù),部分對(duì)內(nèi)核函數(shù)的修改會(huì)導(dǎo)致系統(tǒng)藍(lán)屏。
例如:多個(gè)產(chǎn)品在內(nèi)測(cè)和對(duì)外版本都出現(xiàn)過(guò)對(duì)關(guān)鍵內(nèi)核函數(shù)進(jìn)行修改,但是并沒(méi)有仔細(xì)判斷版本,導(dǎo)致兼容性出現(xiàn)問(wèn)題而使系統(tǒng)藍(lán)屏。
2. 文件過(guò)濾驅(qū)動(dòng)
- File System Filter Drivers
- File System Minifilter Drivers
過(guò)濾驅(qū)動(dòng)的本質(zhì)依然是掛鉤,但微軟為了方便廠商調(diào)用,對(duì)其進(jìn)行了封裝,屬于官方的技術(shù)。此類技術(shù)本身已經(jīng)力求穩(wěn)定與兼容,多數(shù)都提供了一定的兼容性保障。微軟自己的安全產(chǎn)品在驅(qū)動(dòng)層面也多使用類似的方式。
但是在安全產(chǎn)品的實(shí)際應(yīng)用中,多層監(jiān)控逐層傳遞會(huì)造成效率的降低,一些廠商在實(shí)現(xiàn)時(shí)會(huì)繞過(guò)后續(xù)的過(guò)濾驅(qū)動(dòng),直接將IRP請(qǐng)求發(fā)給下一層驅(qū)動(dòng)完成相關(guān)的功能。
反病毒軟件排斥與兼容問(wèn)題分析的更多內(nèi)容請(qǐng)讀者閱讀:
反病毒軟件江湖:排斥與兼容的戰(zhàn)爭(zhēng)(2)
反病毒軟件江湖:排斥與兼容的戰(zhàn)爭(zhēng)(3)
反病毒軟件江湖:排斥與兼容的戰(zhàn)爭(zhēng)(4)
【編輯推薦】