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