殺毒軟件:排斥與兼容的戰(zhàn)爭 |
發(fā)布時間: 2012/7/4 11:42:28 |
需要指出的是,絕大多數(shù)情況下,反病毒產(chǎn)品之間的兼容性沖突問題,都是技術與協(xié)調(diào)的問題,有其工作機理上的必然性,并往往具有一定的不可避免性。 反病毒產(chǎn)品兼容沖突問題 反病毒產(chǎn)品從最開始的行命令掃描工具發(fā)展至今,已經(jīng)形成了帶有文件、注冊表、內(nèi)存等多種本地監(jiān)控機制;瀏覽器、郵件客戶端等多種保護環(huán)節(jié);以及整合了主機防火墻、入侵檢測機制、主動防御機制的綜合型產(chǎn)品。而其核心價值早在上世紀末,就已經(jīng)從最開始的靜態(tài)的文件掃描檢測,變成實時化的主機防護。而實時化的防護推動了反病毒產(chǎn)品使用更多的服務、驅動等底層技術,運行于更接近系統(tǒng)內(nèi)核的位置,這也為反病毒產(chǎn)品產(chǎn)生相互兼容性問題打下了伏筆。 隨著操作系統(tǒng)的復雜化,威脅的不斷離散化等影響,反病毒的監(jiān)控保護點也日趨復雜,又加之反病毒廠商數(shù)量也在增加,而操作系統(tǒng)廠商并沒提供比較標準的技術規(guī)范,因此反病毒產(chǎn)品因互不兼容,發(fā)生共存沖突等問題越來越多,并間接影響了用戶對反病毒產(chǎn)品的信任。 目前己經(jīng)發(fā)現(xiàn)并被報道過的兼容性問題包括: 造成系統(tǒng)崩潰和其他嚴重故障:從2000年以來,根據(jù)公開報道,已經(jīng)出現(xiàn)多起因反病毒產(chǎn)品之間相互沖突,而導致系統(tǒng)藍屏、死鎖等事件。 資源占用:反病毒掃描、監(jiān)控和其他防護機制,都會帶來系統(tǒng)資源的占用。如病毒庫的內(nèi)存展開對內(nèi)存的資源使用,文件監(jiān)控、定時掃描可能導致更多的I/O開銷、以及各種保護機制對CPU時間片的占用等等。這些對用戶操作有一定影響,如系統(tǒng)延遲、文件復制操作時間變長等等。而由于消息傳遞等機制,有可能在多種反病毒產(chǎn)品共存時,其對資源和時間的影響不是簡單的線性疊加,而是出現(xiàn)明顯的性能惡化。 失效:由于監(jiān)控機制之間的沖突,多種監(jiān)控機制共存時,有可能造成其中之一失效,或者部分機制雙雙失效的風險。上述后果,可以在兼容性測試中被復現(xiàn)。 相互誤報:由于廠商之間互信互通機制尚不夠通暢,以及少數(shù)惡意的“誤報構造”攻擊的存在,廠商之間出現(xiàn)相互誤報的情況,也時常發(fā)現(xiàn)。由于被報警為病毒而嚴重地影響了用戶對產(chǎn)品的信心,因此,各廠商對被誤報的問題也均比較敏感。 但需要指出的是,絕大多數(shù)情況下,反病毒產(chǎn)品之間的兼容性沖突問題,都是技術與協(xié)調(diào)的問題,有其工作機理上的必然性,并往往具有一定的不可避免性。相關問題多數(shù)并不是由商業(yè)競爭引發(fā)的,商業(yè)競爭也不是反病毒產(chǎn)品兼容沖突問題的本質。本文主要介紹當前反病毒產(chǎn)品沖突的主因,以澄清公眾誤解。 下文中涉及到安天實驗室和兄弟廠商產(chǎn)品所使用的技術點,均用于說明反病毒產(chǎn)品之間兼容性沖突的必然性,不是對實現(xiàn)水平進行評價。 實時監(jiān)控、主動防御等技術的發(fā)展是一柄雙刃劍,一方面隨著監(jiān)控點的增加能應對新的安全威脅,另一方面也使反病毒產(chǎn)品的穩(wěn)定性遇到挑戰(zhàn),測試難度普遍加大。反病毒產(chǎn)品自身的穩(wěn)定性壓力都在呈現(xiàn)幾何級數(shù)增長,相互之間的兼容則變得更加困難。以下從文件監(jiān)控、防火墻、瀏覽器防護、主動防御四個主要技術點,描述導致反病毒產(chǎn)品自身的穩(wěn)定性下降、與操作系統(tǒng)之間和相互之間出現(xiàn)嚴重沖突問題的成因。 文件監(jiān)控的潛在兼容性問題 文件監(jiān)控是反病毒廠商普遍采用的技術手段,其主要機理是對文件的創(chuàng)建、讀取、關閉等行為進行監(jiān)控觸發(fā)對文件病毒檢測,以阻斷病毒的執(zhí)行和部分相關行為。 文件監(jiān)控的實現(xiàn)方式主要有以下兩大類型: 1. API掛鉤。 根據(jù)鉤掛API的層次不同我們又可以分為 : (a) Ring3文件監(jiān)控。 多采用inline hook的方式修改文件操作相關函數(shù)的前幾個字節(jié),跳轉到自己的函數(shù),然后對將要操作的文件和緩沖區(qū)進行檢測。 由于實現(xiàn)跳轉的方式有多種,所以不同軟件的實現(xiàn)策略有所不同,很難保證多個軟件共存時前一軟件修改后不影響到后一個軟件,而且很可能導致相關進程崩潰。 由于此類技術也多被惡意軟件使用,一些安全軟件不會在執(zhí)行完自己的代碼后執(zhí)行修改前的自己,而是采用從原始文件中讀取、分析、執(zhí)行的方式,導致多個安全軟件同時監(jiān)控一個API時,只有一個生效。 出于性能考慮,不傳遞給原API處理而采用自己實現(xiàn)的代碼完成該API的相應功能,那么也不會將相關信息傳遞給其他軟件。 部分軟件在執(zhí)行完自己的函數(shù)后會把修改后的字節(jié)還原,然后調(diào)用原系統(tǒng)API完成功能后再次修改、掛鉤。兩個使用此實現(xiàn)的軟件同時工作則可能造成互相調(diào)用導致死鎖,程序沒有響應。 (b) Ring0文件監(jiān)控。與ring3的情況類似,但是后果更加嚴重。 由于inline hook不同實現(xiàn)造成的不兼容性很可能導致系統(tǒng)API無法正常工作,導致系統(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)用,會導致死鎖,系統(tǒng)死機; 采用替換SSDT的方式,則只有自己的掛鉤有效,其他軟件的掛鉤均無效。 例如:360安全衛(wèi)士等產(chǎn)品采用替換SSDT的方式,與其共存的安全軟件通過標準方法獲取的SSDT是無效的,導致其他安全軟件功能出現(xiàn)缺失; Vista以后微軟對內(nèi)核進行保護,部分對內(nèi)核函數(shù)的修改會導致系統(tǒng)藍屏。 例如:多個產(chǎn)品在內(nèi)測和對外版本都出現(xiàn)過對關鍵內(nèi)核函數(shù)進行修改,但是并沒有仔細判斷版本,導致兼容性出現(xiàn)問題而使系統(tǒng)藍屏。 2. 文件過濾驅動 File System Filter Drivers File System Minifilter Drivers 過濾驅動的本質依然是掛鉤,但微軟為了方便廠商調(diào)用,對其進行了封裝,屬于官方的技術。此類技術本身已經(jīng)力求穩(wěn)定與兼容,多數(shù)都提供了一定的兼容性保障。微軟自己的安全產(chǎn)品在驅動層面也多使用類似的方式。 但是在安全產(chǎn)品的實際應用中,多層監(jiān)控逐層傳遞會造成效率的降低,一些廠商在實現(xiàn)時會繞過后續(xù)的過濾驅動,直接將IRP請求發(fā)給下一層驅動完成相關的功能。 防火墻的潛在兼容性問題 目前反病毒產(chǎn)品普遍使用單機防火墻技術來過濾出入數(shù)據(jù),應對來自網(wǎng)絡的威脅。 目前防火墻的實現(xiàn)方式包括: TDI NDIS IP Filter Windows Filtering Platform Winsock Kernel 在以Windows XP為主的時期,多數(shù)防火墻選擇前三者中的某一種或者某兩種結合的方式。在實際應用的過程中,同樣存在多個共存無法同時生效的現(xiàn)象。其原因有: 1.過濾時出于效率考慮,直接將允許通過的包交給下層驅動處理,而不是后續(xù)的防火墻驅動。 2.由于NDIS和IP Filter比TDI更接近底層,前兩者實現(xiàn)的防火墻會對TDI層造成影響。 3.XP自帶的IP Filter存在誰先設置誰先生效的問題。安天盾防火墻與金山防火墻某版本同時使用該方式,如果同時安裝在用戶的機器中,則出現(xiàn)誰先啟動誰先生效的現(xiàn)象。 WFP和Winsock Kernel是自Vista之后引入的方式,兼容性相對而言更好,只要實現(xiàn)得當,一般沒有兼容性的問題。特別是WFP針對防火墻和IDS類軟件做了設計上的考慮,兼容性問題得到了較好的解決。這也說明,操作系統(tǒng)提供相對規(guī)范的接口是解決安全產(chǎn)品沖突的較好方式。 瀏覽器防護的潛在兼容性問題 瀏覽器防護多使用ring3 API HOOK。下面結合網(wǎng)頁防護類的主流產(chǎn)品分析其潛在的兼容性問題。 使用ring3 api hook實現(xiàn)的瀏覽器保護,不可避免的要遇到和文件監(jiān)控一樣的問題。在實際對抗中,網(wǎng)馬不斷發(fā)展升級,已經(jīng)開始將瀏覽器中的ring3 hook摘除,為了對抗此類威脅,主流軟件多會采取不斷檢測自己的hook是否存在,發(fā)現(xiàn)不存在則重新將函數(shù)掛鉤。造成多款軟件爭搶一個API的現(xiàn)象,導致瀏覽器無響應或者響應緩慢。特別是與CreateProcesss相關的。 在瀏覽器防護軟件進行行為分析的時候,由于其他瀏覽器防護軟件的參與會對瀏覽器的行為造成一定影響,這些影響可能是對堆棧的影響(由于多了一層Hook,實際調(diào)用的堆棧可能會增加一層)。以某瀏覽器防護軟件為例,其堆棧檢測只會向上追溯5層,如果同時共存3 個軟件,那么其想要檢測的那層調(diào)用,則會由原來的第5層變?yōu)榈?層,原來的檢測方式就失效了。 例如:360和金山網(wǎng)盾共存時,網(wǎng)馬在創(chuàng)建進程時360進行檢測。如果放行則會通過360的函數(shù)調(diào)用系統(tǒng)API,進而再次調(diào)用金山的進程創(chuàng)建檢測,此時金山追溯堆棧會發(fā)現(xiàn)是360的模塊調(diào)用,而不是JS腳本解釋引擎調(diào)用,予以放行。 即使不考慮對堆棧的影響,由于不同瀏覽器防火軟件都進行了攔截,對瀏覽器的行為也就產(chǎn)生了影響,造成相互的行為分析干擾,無法正確分析惡意行為,進而出現(xiàn)漏報或者誤報的現(xiàn)象。 例如:金山網(wǎng)盾在腳本解釋層根據(jù)特征檢出了惡意腳本,構筑在其上層的其他防護的行為分析就無法發(fā)現(xiàn)該惡意腳本的行為。 再例如:360網(wǎng)盾會不斷檢測監(jiān)控點是否存在,而檢測的機制是基于二進制比較的,如果發(fā)現(xiàn)其他軟件進行了HOOK,則用自己的進行替換,導致其他軟件失效。 本文出自:億恩科技【www.allwellnessguide.com】 |