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