郭 璇 龔曉銳 汪秋云 凌 辰
1(湘潭大學信息工程學院 湖南 湘潭 411105)2(中國科學院信息工程研究所 北京 100089)
隨著網絡技術的迅速發展,網絡已悄無聲息地融入了人們的日常生活[1]。但人們不能僅僅沉浸于網絡所帶來的便利,也要重視它所帶來的安全問題,例如:網絡攻擊、木馬入侵、惡意代碼等[2]。如何有效地防范木馬,保護信息安全,逐漸成為了國內外研究者關注的焦點之一[3]。木馬的制作技術發展迅速,每年竊密型木馬造成的泄密都會給人們帶來極大的損失[4]。尤其在軍事方面,由于竊取秘密資料和作戰計劃可以贏得戰爭的主動性,各個國家越來越重視和依賴網絡技術[5]。
目前已經有許多針對性較強的木馬專殺工具了,同時很多殺毒軟件也都新增了木馬查殺功能。但這些工具、軟件主要以行為監控和分析作為木馬檢測的手段,對潛伏的木馬卻無法檢測[6]。而竊取重要信息的竊密型木馬長期處于潛伏狀態,只在關鍵時刻進行通信,僅寄希望于動態行為分析監控來檢測木馬的風險較大。本文研究的木馬檢測系統,基于攻擊指示器,從文件、進程、注冊表、網絡和服務信息這五個方面對單個終端設備進行掃描檢測,并與攻擊指示器中的屬性進行對比,能夠檢測到運行狀態和潛伏狀態的木馬。
木馬是一種特殊惡意程序,與病毒不同,被攻擊者植入到受害者電腦后,不再是單純地為了破壞目標電腦,而是更注重收集和竊取重要信息,甚至遠程控制受害者的電腦,為攻擊者謀利。雖然木馬層出不窮,種類千變萬化,難以檢測,但都具有一些共同特性,即有效性、隱蔽性、頑固性和易植入性[7]。而其功能大致有遠程命令執行、屏幕和鍵盤監控及遠程文件、注冊表、進程操作。依據木馬功能的不同,可將其分為遠程控制型、信息收集型、系統信息修改型、后門服務型等[8]。
木馬植入是指通過種種手段,使木馬傳播到目標主機。根據木馬入侵形式,可將木馬植入方式分為:欺騙下載、利用電子郵件或聊天軟件進行傳播、網站掛馬、木馬和病毒結合及社會工程學等[8]。木馬成功植入受害者電腦后,需要以某種方式自動運行。依據木馬加載方式的不同,目前主流的木馬加載技術可分為:系統啟動自動加載、注冊表關聯、文件關聯等[8]。
目前常用的木馬檢測技術有:通信檢測、實時監測、行為分析、虛擬機技術和特征碼檢測[8]。通信檢測技術依賴監控系統中的網絡連接和流量來發現和阻斷具有木馬特性的網絡通信,或者制定規則直接禁止可疑程序和未知程序的運行;實時監控技術通過監控系統中的網頁、注冊表、郵件、文件等,檢測、處理其中所包含的有害代碼來對傳輸的數據進行過濾;行為分析技術判別木馬的依據是程序在啟動、運行時所表現出的行為特征;虛擬機技術將木馬運行在仿真環境中,根據以往經驗和已有知識,結合其調用系統函數的順序和不同于正常程序的特征,進行啟發式判斷;特征碼檢測技術是通過提取并歸納木馬的特征碼,建立木馬特征庫,然后將待檢測文件的信息與木馬特征庫中相應的信息進行對比來實現檢測,具有低誤報率、高檢測率的特點[9]。但其僅能根據靜態文件進行判別,在木馬程序運行起來刪除自身后,便無法檢測。
本文基于攻擊指示器檢測技術實現了一款木馬檢測系統,該系統擁有特征碼檢測的優點,并加入了對非文件類別的檢測。在保證檢測速度的同時,系統的消耗少、檢測效率高、可靠性高,在攻擊指示器設計合理的情況下,能保證極高的檢出率,并且誤報率和漏報率也較低。
IOC是一種反映主機或網絡行為的攻擊指示器,由一個至多個簡單表達式或復雜表達式連接而成,一個表達式為真即表明一個可疑的入侵行為,當整體表達式為真時即表示檢測到一個木馬[10],其邏輯結構如圖1所示。

圖1 IOC邏輯結構
由于XML語言靈活、豐富,可直接解析讀取,所以IOC使用XML語言來進行描述。同時由于XML語言模塊化的結構,可以根據新獲得的信息或威脅情報對IOC進行調整和進一步優化。
攻擊指示器屬性由OpenIOC標準提供,共包含了27大類,而每一類又包含了很多具體的屬性。每個IOC都是一個由多個指示器組合到一起形成的復合指示器[10]。
本木馬檢測系統主要從文件、進程、注冊表、網絡及服務這五個功能模塊進行檢測。每個功能模塊根據需求又細分了若干有代表性的待檢測屬性,來更精確地檢測木馬和提高檢測效果,如表1所示。

表1 各功能模塊
本檢測系統有四大模塊組成,分別為程序入口APP模塊、文件檢測模塊、非文件檢測模塊和報告生成模塊。其中各個模塊的詳細信息如圖2所示。

圖2 檢測系統整體設計
1) App模塊為主程序入口,負責解析命令行參數、處理配置文件、解析攻擊指示器、加載動態庫等。
2) 文件檢測模塊。負責對文件系統中文件的檢測。遍歷文件系統中的文件,將各個文件與攻擊指示器中定義的文件相關的屬性進行匹配,并輸出檢測結果。
3) 非文件檢測模塊。根據攻擊指示器中定義的屬性,對系統中各個進程、服務、網絡、注冊表項進行檢測。內部又細分為多個IOC模塊,例如:進程模塊、服務模塊、網絡模塊及注冊表模塊。IOC模塊中又包含多個屬性(item)的模塊,它會將所要處理的各個item映射到相應的item的程序處理代碼。最后非文件檢測模塊會輸出檢測結果。
4) 報告生成模塊。負責最終報告的打印生成。報告生成模塊包含消息隊列及報告格式處理兩個部分,消息隊列負責收集程序中其他所有模塊的處理結果,報告格式處理則會把各個消息處理成統一的格式。
本檢測系統詳細運行過程如下:
1) 程序運行后,首先讀取配置文件中的參數,如攻擊指示器所在文件夾、存放輸出報告的目錄等。
2) 程序解析攻擊指示器文件,并提取出各屬性中的特定信息。
3) 程序啟動多個處理線程,包括文件檢測的處理線程、非文件檢測的處理線程,報告信息收集線程等。
4) 程序獲取主機的文件、進程、服務、注冊表等信息,根據所提取的攻擊指示器中的屬性和邏輯關系,判斷主機中是否包含攻擊指示器所描述的木馬。
5) 最終所有模塊的處理結果都會傳遞到消息隊列中,報告收集線程動態地從消息隊列中取消息,并生成木馬檢測結果的程序處理報告。
在測試實驗中,本木馬檢測系統主要與目前常見的幾款木馬清除軟件進行對比,包括金山毒霸、360安全衛士、騰訊電腦管家,以及木馬清除大師,所有測試均在同一Windows XP系統的虛擬機中進行。
首先從系統資源消耗方面進行對比,本檢測系統無論在內存占用還是CPU占用方面都有很大的優勢,遠遠小于其他幾款軟件占用的系統資源,結果如圖3所示。

圖3 木馬檢測時內存/CPU平均占用情況
其次,在掃描速度方面,本木馬檢測系統也毫不遜色于其他幾款軟件。在對10 GB大小的測試環境進行掃描時,本系統消耗的時間與最快的騰訊電腦管家相差不多,主要原因是本木馬檢測系統與騰訊電腦管家對非文件部分木馬的檢測,都用到了多線程并發檢測,而其他幾款軟件都是單線程檢測,結果如圖4所示。

圖4 木馬檢測10 GB分區耗時
同時,本木馬檢測系統對目標終端中的木馬樣本(包括ByShell、DarkstRat2、PcShare、飛狐、木頭人、灰鴿子、蔓靈花、海蓮花等44款木馬)能達到97.7%的檢出率,且漏報率小于3%,檢測效果遠遠超出其他幾款木馬查殺軟件,結果如圖5所示。

圖5 對已知木馬的檢測結果
該木馬檢測系統所依賴的攻擊指示器不僅包含了文件信息,也包含了進程、注冊表、服務、網絡等信息,設計更加全面。同時,基于攻擊指示器的木馬檢測系統采用多線程并發檢測,主要對已知木馬進行檢測。能夠檢測到運行狀態和潛伏狀態的木馬,檢出率高,漏報率低,在測試和實際使用中均取得了較好的結果。