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