劉鑫+宋顯華+吳世鵬+李增光+張歡+王凱
摘 要:針對ANSS(ANtivirus software shield)模型的不足,擴展了ANSS模型提出了EANSS(enhanced ANtivirus software shield)模型,將新的攻擊規(guī)則融入到新的模型中,并且在EANSS模型中加入了實時監(jiān)控機制、自學習機制來提高保護的能力。實驗結果表明:EANSS模型不影響系統(tǒng)的正常運行,可以對反病毒軟件進行更好的保護,同時占用較低的系統(tǒng)內(nèi)存和CPU占用率。
關鍵詞:殺毒軟件;ANtivirus Software Shield模型;惡意軟件;Application Programming Interface Hook
DOI:10.15938/j.jhust.2017.06.014
中圖分類號: TP393.08
文獻標志碼: A
文章編號: 1007-2683(2017)06-0072-04
Abstract:Aiming at ANSS(ANtivirus Software Shield)model disadvantages, this paper extends ANSS model and proposes a new model named EANSS(Enhanced ANtivirus Software Shield). There are some new rules of the attack are added into the new model, and the realtime monitoring mechanism and the self learning mechanism also be joined in the ENASS model to improve the ability of protection. Experiment results show that the EANSS model not only don′t influences the operations of normal applications but also can protect antivirus software from being terminated by them with low CPU performance overhead and memory write performance overhead.
Keywords:antivirus software; antivirus software shield model; malware; application programming interface hook
0 引 言
惡意軟件為了躲避殺毒軟件的查殺,經(jīng)常采用加密、編碼、壓縮、加殼等多種技術手段對抗基于特征碼的殺毒軟件的查殺[1]。病毒如果檢測到有調(diào)試器等進程存在就不會執(zhí)行自身;同時惡意代碼中會參雜很多無意義的代碼來躲避靜態(tài)分析;最具有攻擊性也是危害最大的惡意軟件會直接結束安全軟件進程[2-5]。據(jù)不完全統(tǒng)計,大約有11.7%的病毒在執(zhí)行后會破壞安全軟件的功能,結束殺毒軟件技術成為了惡意軟件的重要自我保護技術[6-8]。因此,如何保護殺毒軟件成為一個重要研究課題。
下面介紹國內(nèi)外的相關研究。Hsu等人在國際頂級期刊上發(fā)表了殺毒軟件防護的學術論文,首次提出了殺毒軟件防護的整體方案[9]。Stolfo[10-12]等人提出了PAD(Probabilistic Anomaly Detection)模型檢測入侵。PAD建立了一個注冊表正常行為的模型,不符合正常行為的注冊表訪問都被認為是異常的,PAD模型的錯誤率較低。Registry Prot[13-14]是一個實時注冊表監(jiān)控保護的工具,任何程序試圖修改、寫入注冊表鍵值,程序都會報警,Registry Prot對使用電腦人的知識要求較高,不具有通用性。Registry Protector[15-16]也是保護注冊表的工具,用戶可以通過設置個人偏好,選擇需要保護的注冊表鍵值。Active Registry Monitor[17-18]通過建立注冊表的快照來實現(xiàn)監(jiān)控,在系統(tǒng)純凈的時候建立注冊表的快照,通過比較不同時刻的快照來判斷修改和增加的注冊表鍵值。Registry Cleaner[19-20]可以在任何時刻備份和還原注冊表,用戶可以刪除無用的鍵值或者還原丟失的鍵值。
目前為止,國內(nèi)外的研究主要集中在單一層面的防護,如注冊表防護、進程防護等,完整的、只針對殺毒軟件防護的相關研究很少,本文基于文[9]的研究成果,進一步擴展了Hsu的ANSS(ANtivirus Software Shield)模型提出了EANSS(Enhanced ANtivirus Software Shield)模型來保護殺毒軟件,擴展的模型相比于Hus的模型更加智能、更具有實際意義。
1 攻擊規(guī)則擴展
攻擊規(guī)則是模型中判斷攻擊行為最為重要的依據(jù),需要進一步擴展,本文擴展了攻擊規(guī)則。在相關工作中文[9]給出了七種結束殺毒軟件進程的方法,基本概括如下:
1)空調(diào)試器。惡意軟件采用API DebugActiveProcess來把自身作為一個調(diào)試器附加到殺毒軟件的進程上,當調(diào)試器退出后,殺毒軟件的進程被終止。
2)DLL卸載。惡意軟件可以采用API ZwUnmapViewOfSection卸載殺毒軟件所必須的核心dll,如ntdll.dll,一旦ntdll.dll在殺毒軟件的進程中被卸載,殺毒軟件進程也直接退出。
3)進程終結。惡意軟件可直接通過API NtTerminateProcess或者ZwTerminateProcess在內(nèi)核層直接結束殺毒軟件進程。endprint
4)發(fā)送關閉消息。惡意軟件通過FindWindow函數(shù)尋找操作系統(tǒng)中符合殺毒軟件名稱的窗口,之后發(fā)送進程退出的消息如WM_CLOSE或者WM_QUIT,可以通過PostMessage或者SendMessage函數(shù)不斷發(fā)送關閉消息給殺毒軟件,直到殺毒軟件進程退出。
5)鼠標模擬方法。惡意軟件可以獲取一系列的鼠標事件,再通過計算屏幕寬度高度等方式,找到殺毒軟件的托盤圖標,采用模擬正??蛻敉顺龅姆椒ńY束殺毒軟件。
6)線程終結。惡意軟件可以通過API TerminateThread來結束殺毒軟件進程中的線程,直到殺毒軟件進程完全退出。
7)注冊表修改。惡意軟件可以通過ZwOpenKey和ZwSetValueKey來修改注冊表鍵值,一種方法可以修改注冊表來映像劫持,殺毒軟件會無法正常運行;另外一種方法,刪除殺毒軟件的自啟動鍵值。
在此基礎上,經(jīng)過深入研究,本文提出了以下幾種結束殺毒軟件方法,加入攻擊規(guī)則。
1)通過OpenProcess API以PROCESS_CREATE_THREAD | VM_OPERATION方式打開進程,然后創(chuàng)建遠程線程,使線程開始地址是ExitProcess參數(shù)為0,程序會自行退出。
2)發(fā)送鍵盤ESC單擊的消息。這點和上邊的第四點發(fā)送關閉消息有些類似,不過這里發(fā)送的是鍵盤ESC消息,因為一般的軟件發(fā)送ESC消息,程序都會退出。
3)卸載驅(qū)動。殺毒軟件為了獲得底層權限、實現(xiàn)Hook等功能,一般會加載自身的驅(qū)動,卸載驅(qū)動的API是ZwUnloadDriver,惡意軟件可以通過卸載殺毒軟件的驅(qū)動來結束殺毒軟件進程,或者使殺毒軟件的核心功能失效。
4)對驅(qū)動加載的檢測。加載驅(qū)動操作本身不會結束殺毒軟件,不過要調(diào)用原始API需要進入Ring0層,任何企圖加載驅(qū)動進入Ring0層的操作都是危險的,在本文中將ZwLoadDriver、ZwSetSystemInformation、SystemLoadAndCallImage都認為是敏感API,因為它們會加載驅(qū)動獲得底層權限。
2 EANSS模型
通過對ANSS模型的仔細分析,發(fā)現(xiàn)ANSS模型具有很大的局限性,主要有以下幾方面不足:
1)ANSS模型基于已知的殺毒軟件結束方法,對于未知的殺毒軟件結束方法沒有防護能力,例如本文提出的方法,ANSS模型就沒有檢測能力,本文將新的結束殺毒軟件的方法制定成規(guī)則集成到ANSS模型中。
2)對反Hook型結束方法缺乏防護能力,即惡意軟件先恢復SSDT表之后再結束殺毒軟件,ANSS模型失去防護能力。
3)缺乏學習機制。ANSS模型不能夠自學習,這樣隨著時間的推移,會逐漸失去作用。
針對ANSS模型的不足,本文在多個方面進行改進,本文改進后的ANSS模型稱為擴展的ANSS模型EANSS,其基本結構如圖2所示。
EANSS模型主要由檢測模塊、過濾模塊和阻斷模塊三部分組成。當一個程序試圖調(diào)用敏感API時,檢測模塊在敏感API被執(zhí)行之前攔截程序流的執(zhí)行并將執(zhí)行流轉(zhuǎn)向過濾模塊;過濾模塊是最重要的模塊,對于每個敏感API都有一個相對應的EANSS API,同時對應一條規(guī)則,通過這些內(nèi)嵌的規(guī)則檢查API調(diào)用的參數(shù),過濾出可能結束或者停止殺毒軟件的API調(diào)用;阻斷模塊通知給用戶阻斷了一次對殺毒軟件的攻擊。對于正常的API調(diào)用,直接調(diào)用系統(tǒng)原始的API代碼。
和ANSS模型采用相同的方法,EANSS通過SSDT(System Service Descriptor Table)Hook技術來檢測API調(diào)用,SSDT就是系統(tǒng)服務描述表,里面存取了操作系統(tǒng)中每個API的地址,EANSS模型對相關的API進行了Hook,這樣監(jiān)測調(diào)用API就可以及時發(fā)現(xiàn)攻擊。EANSS模型加入了SSDT循環(huán)監(jiān)控機制,防止惡意軟件再調(diào)用API之前先進行SSDT UnHook來躲避檢測,EANSS模型每隔固定時間就會檢查SSDT Hook狀態(tài),發(fā)現(xiàn)被修改立即進行再次Hook;
最重要的模塊依然過濾模塊,過濾模塊檢測敏感API的參數(shù)來判斷是否是惡意行為,EANSS在以下幾個方面進行了改進:
1)豐富了過濾模塊的規(guī)則庫,將本文提出的4種方法加入到了規(guī)則庫,發(fā)送ESC消息的行為、API函數(shù)ZwUnLoadDriver、ZwLoadDriver、ZwSetSystemInformation、SystemLoadAndCallImage都加入到了規(guī)則庫,卸載驅(qū)動和加載驅(qū)動都是敏感行為,卸載驅(qū)動會導致殺毒軟件退出,而通過加載驅(qū)動惡意軟件可以獲得內(nèi)核權限,這是調(diào)用原始API的直接途徑,不調(diào)用原始API,惡意軟件的很多功能無法實現(xiàn)。
2)引入人工判斷機制。即使調(diào)用了相關API也不能完全判定是惡意行為,通過參數(shù)可以判斷出大多數(shù)的惡意行為,但是如果有不在規(guī)則之內(nèi)的安全進程軟件存在,則會出現(xiàn)誤報率,為了解決這個問題,EANSS模型引入了人工判斷機制,交由人工來判斷是否為惡意行為。
3)引入學習機制。ANSS模型完全依靠內(nèi)嵌規(guī)則,規(guī)則不能動態(tài)的學習更新,EANSS模型引入學習機制,人工判斷的結果會直接被規(guī)則學習到,為以后的判斷制定了規(guī)則。
為了和ANSS模型進行明顯的對比,EANSS模型同樣在Microsoft Windows XP Professional Service Pack 3、Intel 2.60GHz Core 2 CPU G1610 和 4096 MB RAM環(huán)境下實現(xiàn),首先來比較EANSS模型是否與系統(tǒng)功能產(chǎn)生沖突,如表1所示:
可以發(fā)現(xiàn),ANSS模型和EANSS模型的運行不會對系統(tǒng)常見操作和殺毒軟件的使用產(chǎn)生任何影響。endprint
為了對比ANSS模型EANSS模型的實際效果,我們做了實驗效果對比,實驗結果對比結果如表2所示,表中符號X代表模型不能對此種技術進行保護,符號√表示模型可以對這種技術進行保護,表2顯示ANSS模型可以對進程終結、鼠標模擬、注冊表修改、關閉消息、空調(diào)試器、DLL卸載、線程終結方法進行保護,不過對于新的攻擊方法ESC消息、驅(qū)動卸載和驅(qū)動加載方法不能提高很好的保護,EANSS模型可以對全部的方法進行保護。表3顯示了ANSS模型和EANSS模型占用系統(tǒng)性能,從表中可以看出ANSS模型和EANSS模型對CPU和內(nèi)存的占用率都很低。
3 結 論
針對ANSS模型的一些不足,本文提出了EANSS模型,擴展了內(nèi)嵌的攻擊規(guī)則,將ESC關閉消息、卸載驅(qū)動API、加載驅(qū)動API等新的方法加入到內(nèi)嵌攻擊規(guī)則,提升了模型檢測的準確率;引入學習機制來不斷豐富攻擊規(guī)則庫,對于新的攻擊同樣可以保證檢測的準確性;同時增加的循環(huán)檢測機制,可以更有效的檢測惡意軟件。實驗結果表明EANSS模型并不與操作系統(tǒng)發(fā)生沖突,同時占用較少的系統(tǒng)資源,EANSS模型具有更好的效果和優(yōu)點。
參 考 文 獻:
[1] 諸葛建偉,唐勇,韓心慧,等.蜜罐技術研究與應用進展[J].軟件學報,2013,24(4):825-842.
[2] 李海峰,王栓奇,劉暢,等.考慮測試工作量與覆蓋率的軟件可靠性模型[J].軟件學報,2013,24(4):749-760.
[3] 趙會群,孫晶,張爆,等.嵌入式API測試套生成方法和技術[J].軟件學報,2014,25(2):373-385.
[4] 陳錦富,李青,毛澄映,等.基于安全規(guī)則變異的Web Services安全性測試方法[J].計算機學報,2013,36(10):1967-1981.
[5] 楊歡,張玉清,胡予濮,等.基于多類特征的Android應用惡意行為檢測系統(tǒng)[J].計算機學報,2014,37(1):15-26.
[6] 席榮榮,云曉春,張永錚,等.一種改進的網(wǎng)絡安全態(tài)勢量化評估方法[J].計算機學報,2015,38(4):749-758.
[7] 翟繼強,喬佩利.Windows平臺下Snort和IPSec聯(lián)動實現(xiàn)[J].哈爾濱理工大學學報,2012,17(3):96-99.
[8] 魯穎欣,王健,齊宏卓.模糊判斷在網(wǎng)絡安全風險評估中的應用研究[J].哈爾濱理工大學學報,2014, 19(1):36-39.
[9] HSU FuHau, WU MinHao, TSO ChangKuo, et al. Antivirus Software Shield Against Antivirus Terminators [J]. Ieee Transactions On Information Forensics And Security, 2012, 7(5): 1439-1447.
[10]STOLFO S J, APAP F, ESKIN E, et al. “A Comparative Evaluation of two Algorithms for Windows Registry Anomaly Detection,” J. Comput. Security, 2005, 13(4): 659-693.
[11]朱建明,宋彪,黃啟發(fā).基于系統(tǒng)動力學的網(wǎng)絡安全攻防演化博弈模型[J].通信學報,2014(1):54-61.
[12]陳珂,柯文德,王愛國,等.基于沙盒技術的行為分析系統(tǒng)研究[J].計算機技術與發(fā)展,2015(8):166-169.
[13]陳進,夏虞斌,臧斌宇.基于新型VMI技術的內(nèi)核Rootkit檢測方案[J].計算機應用與軟件,2015,32(7):266-271.
[14]郝增帥,郭榮華,文偉平,等.基于特征分析和行為監(jiān)控的未知木馬檢測系統(tǒng)研究與實現(xiàn)[J].信息網(wǎng)絡安全,2015(2):57-65.
[15]趙巍,秦杰,郭佳,等.基于不確定性推理的木馬檢測技術[J].信息工程大學學報,2014(5):617-621.
[16]夏愛民,張宏志,楊偉鋒.基于綜合行為特征的木馬檢測技術研究[J].信息安全與通信保密,2014(6):109-113.
[17]侯仁平,李孝忠.基于Petri網(wǎng)的病毒攻擊建模[J].天津科技大學學報,2014(1):69-74.
[18]李明.網(wǎng)絡型病毒分析與計算機網(wǎng)絡安全技術的實踐探究[J].網(wǎng)絡安全技術與應用,2015(5):20-21.
[19]羅文華.基于內(nèi)存注冊表信息解析用戶行為方法研究[J].信息網(wǎng)絡安全,2013(6):72-74.
[20]張永剛.一種新型系統(tǒng)安全檢測軟件的設計與實現(xiàn)[J].電氣自動化,2015(5):27-29.
(編輯:王 萍)endprint