摘要:病毒得自我保護(hù)技術(shù)包括被動(dòng)保護(hù)技術(shù)和主動(dòng)保護(hù)技術(shù)兩大類。被動(dòng)保護(hù)技術(shù)主要采取隱匿、多態(tài)、變異和惰化抗病毒軟件幾種技術(shù)來避免被發(fā)現(xiàn)和被清除。主動(dòng)保護(hù)技術(shù)包括干擾這些安全軟件運(yùn)行,修改主機(jī)hosts文件來阻止反病毒程序升級(jí)等方式。
關(guān)鍵詞:病毒;自我保護(hù);殺毒
中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2010)21-5739-02
針對(duì)殺毒軟件各種查殺手段,病毒也發(fā)展出各種方法應(yīng)對(duì)殺毒軟件。病毒得自我保護(hù)技術(shù)包括被動(dòng)保護(hù)技術(shù)和主動(dòng)保護(hù)技術(shù)兩大類。
1 被動(dòng)保護(hù)技術(shù)
被動(dòng)保護(hù)技術(shù)主要采取隱匿、多態(tài)、變異和惰化抗病毒軟件幾種技術(shù)來避免被發(fā)現(xiàn)和被清除。[1]
1.1隱匿
隱匿指的是病毒在被感染系統(tǒng)中隱藏自己存在的過程。伴侶病毒經(jīng)常使用的原始的隱匿方法是簡(jiǎn)單設(shè)置病毒文件肋“隱藏”屬性,盡可能讓受害者在文件目錄列表中找不到它。流伴侶病毒有一個(gè)更強(qiáng)大的隱匿組件,當(dāng)它們附著在宿主上時(shí),并不產(chǎn)生新的文件,而且大多數(shù)的工具軟件都會(huì)報(bào)告被感染文件的長(zhǎng)度沒有發(fā)生變化。在一個(gè)使用NTFS文件系統(tǒng)的Windows計(jì)算機(jī)中,這些病毒藏身于可變動(dòng)數(shù)據(jù)流中,而這些數(shù)據(jù)流與系統(tǒng)中一些正常文件相關(guān)聯(lián)。
另一種隱匿方法是病毒截獲反病毒程序的讀文件企圖,并提供文件的未感染版本讓反病毒程序掃描。當(dāng)掃描程序讀取已經(jīng)被感染的文件時(shí),被感染的文件顯示的卻是一個(gè)來被感染的假象。在另一種隱匿的情況下,一個(gè)病毒可能會(huì)故慢它感染和破壞文件的速度,致使用戶很長(zhǎng)時(shí)間后才意識(shí)到發(fā)生了什么。[2]
1.2 多態(tài)和變異
多態(tài)是惡意代碼在并不實(shí)際改變自己基本功能的前提下修改自己的外觀,以此來防止被發(fā)現(xiàn)的過程。多態(tài)這個(gè)術(shù)語可以形象地說是代碼在同樣的功能下可能采取多種形式。使用這項(xiàng)技術(shù),病毒代碼在每次運(yùn)行時(shí)都會(huì)動(dòng)態(tài)地改變自己。在完全不同的代碼基礎(chǔ)上仍然具有同樣的功能,基于病毒代碼以前形式的任何特征碼將無法檢測(cè)到變形后的新病毒版本。在基于腳本的病毒中實(shí)現(xiàn)這種技術(shù)的最簡(jiǎn)單方法之一可能是讓病毒在感染一個(gè)新主機(jī)之前修改其內(nèi)部變量和子程序的名稱,這些名稱通常是隨機(jī)選取的,目的是為了使創(chuàng)建病毒樣本特征碼的工作更加復(fù)雜。
一種實(shí)現(xiàn)多態(tài)技術(shù)韻做法是調(diào)整包含在病毒體內(nèi)的指令的順序。病毒也可能通過插入不做任何事情的指令來修改自己的特征碼,例如為一個(gè)值減去l再加上l。這些在功能上的無用指令可以使代碼保持原來的功能,但是可以逃避基于特征碼的檢測(cè)。[3]
一種多態(tài)技術(shù)是一個(gè)病毒對(duì)自己的大部分代碼進(jìn)行加密,留下的明碼只是在運(yùn)行時(shí)對(duì)自己的加密代碼自動(dòng)解密的必要指令。病毒通常會(huì)使用隨機(jī)產(chǎn)生的不同密鑰為自己加密,并把這個(gè)密鑰嵌入到自己代碼的某個(gè)位置。然后改變解密算法的樣子,以此來干擾基于特征碼的病毒掃描程序。1992年左右發(fā)布的MtE變形引擎是第1個(gè)通過變異解密算法使任意惡意代碼具有多態(tài)功能的工具。
變異用了這樣的過程,即在病毒傳播的過程中通過稍微改變其功能來進(jìn)一步變異病毒樣本。一般情況下,為了保證病毒躲避檢測(cè)并且不減弱自身的破壞能力。其實(shí)現(xiàn)方法非常巧妙,變異病毒經(jīng)常通過改變變異倒程和加密例程的位置來改變自己的文件結(jié)構(gòu)。另外,變異實(shí)例能夠動(dòng)態(tài)地對(duì)自身進(jìn)行分解,例如Smile改變自己的代碼,然后重新組裝成可執(zhí)行的形式。
1.3 墮化
惡意代碼試圖保護(hù)自己的方法之一是使目標(biāo)機(jī)器上的反病毒機(jī)制失效,最突出的惰化對(duì)象是被感染系統(tǒng)上運(yùn)行的反病毒軟件的進(jìn)程。使用這種技術(shù)最成功的病毒能夠在不知不覺中進(jìn)入系統(tǒng),然后趕在被檢測(cè)到或者在用戶更新病毒特征碼數(shù)據(jù)庫之前快速地讓反病毒軟件失效。
ProcKill特洛伊就是這樣的病毒樣本的一個(gè)例子,它擁有一個(gè)超過200個(gè)進(jìn)程名稱列表,這些進(jìn)程通常屬于反病毒軟件和個(gè)人防火墻。一旦被載入系統(tǒng)。ProcKill就搜索正在運(yùn)行進(jìn)程的列表,并中止那些在此列表中的進(jìn)程[2-4]。在沒有反病毒軟件和個(gè)人防火墻進(jìn)程運(yùn)行的情況下,病毒就可以隨意地感染和改變系統(tǒng)。
在2000年出現(xiàn)的MTX蠕蟲,病毒對(duì)這一技術(shù)進(jìn)行了有趣的擴(kuò)充,MTX在感染了系統(tǒng)之后,它會(huì)監(jiān)視受害者對(duì)Intemet的訪問,然后阻塞對(duì)可能是反病毒服務(wù)提供商的網(wǎng)站的訪問,類似這樣的方法會(huì)阻止用戶輕松地安裝反病毒軟件或者更新病毒特征碼數(shù)據(jù)庫,如果你不能使用升級(jí)病毒特征碼數(shù)據(jù)庫功,就不會(huì)檢測(cè)出被感染的病毒。[4]
還有一些病毒試圖繞過的Microsoft Office強(qiáng)制的安全限制,Microsoft Office允許避開對(duì)VB Project對(duì)象的訪問,這些對(duì)象包含了經(jīng)常被宏病毒用來感染新文檔的命令。這個(gè)限制通過注冊(cè)表設(shè)最控制,而病毒可以操縱注冊(cè)表。如果用戶允許被感染文檔的宏執(zhí)行,病毒就會(huì)改變這個(gè)注冊(cè)表設(shè)置,刪除對(duì)VBProject對(duì)象的訪問限制。Listi(也被稱為“Kallisti”)病毒使用了這項(xiàng)技術(shù),它所用的代碼片段如圖1所示。
Listi的這一段代碼從檢查注冊(cè)表的AccesVBoM鍵值開始,如果AccessVBOM設(shè)置為l,那么未限制對(duì)VBProiect對(duì)象的訪問,病毒可以繼續(xù)感染:如果限制了VBProject對(duì)象的訪問(即鍵值大于或者小于1),Lisd會(huì)將注冊(cè)碼設(shè)置為l,然后通過調(diào)用WordBasic.FileExit命令退出Microsoft Word。因?yàn)锳ccessVBoM鍵值被修改了,因此需要重新啟動(dòng)Word才能生效。下次用戶打開被感染的文檔,對(duì)VBProject對(duì)象的訪問就再也不會(huì)受到限制,病毒可以繼續(xù)傳播。
2 主動(dòng)保護(hù)技術(shù)
以上述三種病毒的自我保護(hù)方式都是被動(dòng)的,而如今惡意程序正以更積極主動(dòng)的態(tài)勢(shì)保護(hù)自己,其自保護(hù)機(jī)制包括:
1) 在系統(tǒng)中有目的的搜尋反病毒程序,防火墻或其他安全軟件,然后干擾這些安全軟件運(yùn)行。舉個(gè)例子,有惡意程序會(huì)尋找某個(gè)特定的反病毒軟件的進(jìn)程,并試圖影響反病毒程序的功能。
2) 阻斷文件并且以獨(dú)占方式打開文件來對(duì)付反病毒程序?qū)ξ募膾呙琛?/p>
3) 修改主機(jī)hosts文件來阻止反病毒程序升級(jí)。
4) 檢測(cè)安全軟件彈出的詢問消息(比如,防火墻彈出窗口詢問“是否允許這個(gè)連接?”),并模擬鼠標(biāo)點(diǎn)擊“允許”按鈕。
3 趨勢(shì)和預(yù)測(cè)
根據(jù)前面的介紹,通過分析當(dāng)今惡意程序自保護(hù)技術(shù)的趨勢(shì)和當(dāng)前能達(dá)到的有效程度,我們可以預(yù)期到以下幾點(diǎn):
1) Rootkit正在往利用設(shè)備函數(shù)和虛擬化的方向發(fā)展。然而,這種方法還沒有達(dá)到其頂點(diǎn),而且在未來幾年內(nèi)很可能不會(huì)成為主要的威脅,也不會(huì)被廣泛使用。
2) 阻斷磁盤文件的技術(shù):已知有兩個(gè)的概念性的程序?qū)崿F(xiàn)了這種技術(shù),我們預(yù)期這一領(lǐng)域在不遠(yuǎn)的將來會(huì)有發(fā)展。
3) 混淆技術(shù)的使用已經(jīng)沒有意義,不過它們現(xiàn)在仍然存在。
4) 檢測(cè)安全軟件并干擾其功能的技術(shù)已經(jīng)非常普遍,并被廣泛使用。
5) 加殼工具的使用非常廣泛,仍在穩(wěn)步增長(zhǎng)。
6) 為了抵御反病毒程序向行為分析的大量轉(zhuǎn)變,探測(cè)調(diào)試器、模擬器和虛擬機(jī)的技術(shù)以及其他環(huán)境診斷技術(shù)可能會(huì)發(fā)展起來。
不難發(fā)現(xiàn),惡意程序自保護(hù)技術(shù)的進(jìn)化趨勢(shì)隨著惡意程序本身和抵御惡意軟件技術(shù)的發(fā)展變化而變化。當(dāng)大多數(shù)惡意程序感染文件并且反病毒程序使用基于病毒庫的檢測(cè)時(shí),多數(shù)惡意程序自保護(hù)的措施就是多態(tài)和代碼保護(hù)。而如今,惡意程序多數(shù)是獨(dú)立的,反病毒程序也逐漸的主動(dòng)化。基于這些因素,我們可以預(yù)測(cè)以下這些惡意程序自保護(hù)機(jī)制會(huì)比其他機(jī)制大幅增長(zhǎng)。
1) Rootkit。它們?cè)谙到y(tǒng)中的不可見性給了它們一個(gè)明顯的優(yōu)勢(shì)——即使它們不阻止被檢測(cè)。我們預(yù)測(cè)很可能出現(xiàn)無體的惡意程序新機(jī)制,之后一段時(shí)間,虛擬化技術(shù)會(huì)完成。
2) 混淆和加密。這些方法仍將被廣泛使用,用以干擾代碼分析。
3) 用于對(duì)付基于行為分析的安全軟件的技術(shù)。我們預(yù)期會(huì)出現(xiàn)一些新的技術(shù),因?yàn)楝F(xiàn)有的一些(有目標(biāo)的攻擊反病毒程序)并不怎么有效。我們很可能會(huì)看到檢測(cè)虛擬環(huán)境或者某種行為加密類的技術(shù)。
參考文獻(xiàn):
[1] 楊永紅,魏春雨.計(jì)算機(jī)病毒的特點(diǎn)及防治措施[J].高科技與產(chǎn)業(yè)化,2003,(4).
[2] 澈麗蒙.淺談?dòng)?jì)算機(jī)病毒及其防范[J].內(nèi)蒙古圖書館工作,2007,(2).
[3] 涂金德.計(jì)算機(jī)病毒的查治及預(yù)防[J].計(jì)算機(jī)時(shí)代, 2003,(8).
[4] 張欣.常見計(jì)算機(jī)病毒的名稱分類[J].科技信息,2006,(3).
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文