吳林,劉曄
(重慶通信學(xué)院,重慶 400035)
近幾年在互聯(lián)網(wǎng)上傳播比較嚴(yán)重的病毒,比如:“熊貓燒香”病毒、“U盤(pán)破壞者”病毒等(以下簡(jiǎn)稱“U盤(pán)病毒”),可以通過(guò)感染U盤(pán),進(jìn)而感染插入U(xiǎn)盤(pán)的計(jì)算機(jī)系統(tǒng)。這種U盤(pán)病毒的傳播原理其實(shí)是依賴于Windows操作系統(tǒng)的自動(dòng)運(yùn)行原理來(lái)實(shí)現(xiàn)的。
具體講,是通過(guò)U盤(pán)根目錄下的Autorun.inf文件實(shí)現(xiàn)的,其中最隱蔽的Autorun.inf文件如下所示:
[autorun]
Open=“U盤(pán)根目錄下的病毒文件的名稱”
ShellOpen=打開(kāi) (&O)
ShellOpenCommand=“U盤(pán)根目錄下的病毒文件的名稱”
ShellOpenDefault=l
ShellAutoPlayDefault=2
Shel1AutoPlay=自動(dòng)播放 (&P)
ShellAutoPlayCommand=“U盤(pán)根目錄下的病毒文件的名稱”
ShellExplore=資源管理器 (&X)
ShellExploreCommand=“U盤(pán)根目錄下的病毒文件的名稱”
之所以說(shuō)這個(gè)Autorun.inf文件很隱蔽,是因?yàn)樵揢盤(pán)如果被插入到一臺(tái)未感染病毒的計(jì)算機(jī)時(shí),不僅雙擊會(huì)運(yùn)行病毒程序,即使通過(guò)右鍵點(diǎn)擊打開(kāi)也會(huì)運(yùn)行病毒程序,而且用右鍵點(diǎn)擊自動(dòng)播放或者資源管理器同樣會(huì)運(yùn)行病毒程序,此時(shí)使用U盤(pán)最好通過(guò)“我的電腦”地址欄下拉菜單打開(kāi)??梢?jiàn)這種文件有相當(dāng)大的隱蔽性和危害性。
了解了U盤(pán)病毒的傳播原理之后,就可從以下幾個(gè)方面進(jìn)行U盤(pán)病毒主動(dòng)預(yù)防。
1.2.1 完全禁用USB端口
可以通過(guò)完全禁用USB端口的方法,徹底杜絕U盤(pán)和計(jì)算機(jī)系統(tǒng)之間存在的病毒相互傳播的可能性。這種方法行之有效,但是也會(huì)給用戶使用其他USB設(shè)備帶來(lái)不便。
可以通過(guò)修改注冊(cè)表來(lái)禁止使用電腦中的USB端口。依次點(diǎn)選“開(kāi)始”->“運(yùn)行”命令并在其中輸人并執(zhí)行“regedit”命令,打開(kāi)注冊(cè)表編輯器。然后依次展開(kāi)如下子鍵:“HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesusbehci”,然后雙擊右面的“Start”子鍵,并將默認(rèn)的數(shù)值修改為“4”就可以了(如圖1)。改好后,重新啟動(dòng)一下電腦就可以看見(jiàn)效果了。
1.2.2 給U盤(pán)添加“寫(xiě)保護(hù)”
為了避免在使用U盤(pán)的時(shí)候感染計(jì)算機(jī)系統(tǒng)存在的U盤(pán)病毒,且也不需要向U盤(pán)寫(xiě)入數(shù)據(jù)時(shí),只需要讓U盤(pán)具有“只讀”的功能就足夠了,從而在任何情況下對(duì)U盤(pán)中的內(nèi)容都不能進(jìn)行改寫(xiě),病毒也就無(wú)法感染U盤(pán)了。
依次點(diǎn)選“開(kāi)始”->“運(yùn)行”命令,并在“運(yùn)行”中輸入并執(zhí)行regedit命令,打開(kāi)注冊(cè)表編輯器,依次展開(kāi)如下鍵值:“HKEY_LOCAL_MACHINE
SYSTEMCurrentControlSetControl”,并在 Control項(xiàng)中新建一個(gè)名為StorageDevicePolicies的子項(xiàng)。然后在該子項(xiàng)下新建一個(gè)名為“WriteProtect”的Dword值,再將其值設(shè)定為1{十六進(jìn)制}(如圖1)。退出注冊(cè)表編輯器即可生效。這樣病毒再也不能入侵U盤(pán)了。要恢復(fù)對(duì)U盤(pán)的寫(xiě)操作,只需要將WriteProtect的值改為0即可。
1.2.3 關(guān)閉“自動(dòng)播放”功能
點(diǎn)擊“開(kāi)始->運(yùn)行”,鍵入“gpedit.msc”,單擊“確定”按鈕,打開(kāi)“組策略”窗口。在左窗格的“本地計(jì)算機(jī)策略”下,展開(kāi)“計(jì)算機(jī)配置->管理模板->系統(tǒng)”,然后在右窗格的“設(shè)置”標(biāo)題下可以看到“關(guān)閉自動(dòng)播放”選項(xiàng),默認(rèn)是未配置,現(xiàn)在將它更改為已啟用,關(guān)閉自動(dòng)播放中選擇“所有驅(qū)動(dòng)器”,最后單擊“確定”關(guān)閉組策略窗(如圖2)。這樣就啟用了關(guān)閉自動(dòng)播放功能,重新啟動(dòng)以后,插入的U盤(pán)將不會(huì)自動(dòng)運(yùn)行,從而達(dá)到防止U盤(pán)病毒發(fā)作和傳播的效用。當(dāng)然這樣有個(gè)缺點(diǎn):插入的光盤(pán)也不能自動(dòng)播放了。
1.2.4 執(zhí)行免疫處理
前面已經(jīng)提到過(guò),U盤(pán)病毒一個(gè)重要的感染特征就是生成自動(dòng)運(yùn)行文件autorun.inf,而同一個(gè)目錄里是不允許存在兩個(gè)重名的文件的,所以只需針對(duì)這個(gè)特性進(jìn)行免疫預(yù)防。免疫處理可以有兩種方式:
1)“Autorun.inf”文件重名法:可以在U盤(pán)根目錄下創(chuàng)建一個(gè)“Autorun.inf”文件,將文件內(nèi)容設(shè)置如下:
[autorun]
icon=您自選的圖標(biāo).ico
并將其屬性設(shè)置為隱藏、只讀,這樣U盤(pán)病毒就無(wú)法在根目錄下生成“Autorun.inf”病毒文件,而且即使U盤(pán)病毒修改了“Autorun.inf”文件,也能及時(shí)通過(guò)盤(pán)符圖標(biāo)的變化而提前判斷是否有病毒的存在。
2)“Autorun.inf”文件夾重名法:需要在命令提示符窗口中通過(guò)MD命令在U盤(pán)根目錄下創(chuàng)建一個(gè)“Autorun.inf”文件夾,然后在“Autorun.inf”目錄下建一個(gè)特殊目錄,方法為“MD x:autorun.infabcdefg..”。這樣當(dāng)病毒企圖刪除“Autorun.inf”目錄時(shí),系統(tǒng)就會(huì)提示出錯(cuò),從而阻止了病毒的入侵。
當(dāng)然,還可以使用各種殺毒軟件進(jìn)行U盤(pán)病毒的查殺和防御,網(wǎng)上還有很多流行的U盤(pán)病毒專殺工具也可以使用。
本文重點(diǎn)討論的就是以上等4種主動(dòng)防御U盤(pán)病毒的方法,經(jīng)實(shí)踐證明,這些方法簡(jiǎn)單方便、行之有效。
一個(gè)U盤(pán)插入到計(jì)算機(jī)USB端口上時(shí),操作系統(tǒng)硬件管理程序?qū)?huì)發(fā)現(xiàn)該設(shè)備,然后查找該設(shè)備的驅(qū)動(dòng)程序是否存在,如果存在,系統(tǒng)加載驅(qū)動(dòng)程序,然后給U盤(pán)分配盤(pán)符。
從上面的分析中可以知道,如果要阻止某U盤(pán)在計(jì)算機(jī)上使用,至少有兩個(gè)方法可以使用:一是修改設(shè)備驅(qū)動(dòng)程序,在設(shè)備驅(qū)動(dòng)程序里面加入對(duì)設(shè)備進(jìn)行判斷的代碼,從而阻止非授權(quán)的U盤(pán)在系統(tǒng)上的識(shí)別;第二種方法是不修改驅(qū)動(dòng)程序,而在U盤(pán)枚舉完成后,立即把設(shè)備卸載,從而在系統(tǒng)中無(wú)法使用該設(shè)備。
上面兩種方法中,第一種需要熟悉驅(qū)動(dòng)程序開(kāi)發(fā)技術(shù),難度比較大;第二種原理比較簡(jiǎn)單,實(shí)現(xiàn)起來(lái)也相對(duì)容易。本文將采用第二種方法,原理是:當(dāng)插入U(xiǎn)盤(pán)時(shí),應(yīng)該立即獲取該U盤(pán)的信息,然后判斷這些信息是否是經(jīng)過(guò)授權(quán)的,如果非法,立即調(diào)用卸載函數(shù)卸載該U盤(pán)。具體過(guò)程詳見(jiàn)圖3。
從上面的原理分析中可以知道,U盤(pán)監(jiān)控管理系統(tǒng)可以分為三部分:U盤(pán)的檢測(cè)、U盤(pán)信息的讀取和判斷以及U盤(pán)的卸載。另外,用戶還可以對(duì)U盤(pán)進(jìn)行注冊(cè),使之成為合法授權(quán)的U盤(pán)。
2.2.1 U盤(pán)的檢測(cè)
對(duì)于U盤(pán)的檢測(cè),本文采用WMI來(lái)實(shí)現(xiàn)。WMI是一項(xiàng)核心的Windows管理技術(shù),WMI作為一種規(guī)范和基礎(chǔ)結(jié)構(gòu),通過(guò)它可以訪問(wèn)、配置、管理和監(jiān)視幾乎所有的Windows資源,比如用戶可以在遠(yuǎn)程計(jì)算機(jī)器上啟動(dòng)一個(gè)進(jìn)程;設(shè)定一個(gè)在特定日期和時(shí)間運(yùn)行的進(jìn)程;遠(yuǎn)程啟動(dòng)計(jì)算機(jī);獲得本地或遠(yuǎn)程計(jì)算機(jī)的已安裝程序列表;查詢本地或遠(yuǎn)程計(jì)算機(jī)的Windows事件日志等。
相關(guān)示例代碼如下:
2.2.2 U盤(pán)信息的讀取
2.2.3 U盤(pán)的卸載
程序直接調(diào)用DeleteVolume函數(shù)刪除非授權(quán)的U盤(pán)。相關(guān)示例代碼如下:
Dim VolumeName As String=mm'盤(pán)符。
DeleteVolume(mm)'刪除U盤(pán)盤(pán)符,系統(tǒng)中看到的盤(pán)符應(yīng)該消失。
2.2.4 U盤(pán)注冊(cè)
對(duì)于用戶認(rèn)定的合法U盤(pán),為了方便使用,需要對(duì)其進(jìn)行注冊(cè),使之成為合法的授權(quán)U盤(pán)。相關(guān)示例代碼如下:
Dim VolumeName As String=mm'盤(pán)符。RegisterUSB(mm)'U盤(pán)注冊(cè)。
當(dāng)前,各行業(yè)信息失泄密事件不斷發(fā)生,其中通過(guò)U盤(pán)泄密的事件更占大多數(shù)。許多公司和政府部門(mén)普遍采用安裝涉密計(jì)算機(jī)保密系統(tǒng)來(lái)對(duì)計(jì)算機(jī)和U盤(pán)進(jìn)行加密,這無(wú)疑能在一定程度上達(dá)到保密的效果,較好地杜絕失泄密事件的發(fā)生。
文本所提出的“USB存儲(chǔ)設(shè)備監(jiān)控管理程序”可以在使用保密系統(tǒng)的基礎(chǔ)之上,更好地對(duì)加密U盤(pán)進(jìn)行監(jiān)控和管理。即使用戶使用加密U盤(pán),如果沒(méi)有采用該程序進(jìn)行注冊(cè),也不能在涉密計(jì)算機(jī)上正常使用,從而進(jìn)一步杜絕失泄密事件的發(fā)生。
[1]Bill Evjen,Rockford Lhotka,Billy Hollis,等著.Visual Basic 2005高級(jí)編程(第4版)[M]楊浩.吳雷,等譯.北京:清華大學(xué)出版社,2006.
[2]蒲堪峰.內(nèi)部局域網(wǎng)中USB設(shè)備分類監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].電信交換,2009,(1).