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