USB存储设备病毒防御及监控管理程序设计

2010-02-09 01:23吴林刘晔
湖南邮电职业技术学院学报 2010年2期
关键词:注册表U盘驱动程序

吴林,刘晔

(重庆通信学院,重庆 400035)

1 U盘病毒防御

1.1 U盘病毒原理

近几年在互联网上传播比较严重的病毒,比如:“熊猫烧香”病毒、“U盘破坏者”病毒等(以下简称“U盘病毒”),可以通过感染U盘,进而感染插入U盘的计算机系统。这种U盘病毒的传播原理其实是依赖于Windows操作系统的自动运行原理来实现的。

具体讲,是通过U盘根目录下的Autorun.inf文件实现的,其中最隐蔽的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盘最好通过“我的电脑”地址栏下拉菜单打开。可见这种文件有相当大的隐蔽性和危害性。

1.2 预防

了解了U盘病毒的传播原理之后,就可从以下几个方面进行U盘病毒主动预防。

1.2.1 完全禁用USB端口

可以通过完全禁用USB端口的方法,彻底杜绝U盘和计算机系统之间存在的病毒相互传播的可能性。这种方法行之有效,但是也会给用户使用其他USB设备带来不便。

可以通过修改注册表来禁止使用电脑中的USB端口。依次点选“开始”->“运行”命令并在其中输人并执行“regedit”命令,打开注册表编辑器。然后依次展开如下子键:“HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesusbehci”,然后双击右面的“Start”子键,并将默认的数值修改为“4”就可以了(如图1)。改好后,重新启动一下电脑就可以看见效果了。

1.2.2 给U盘添加“写保护”

为了避免在使用U盘的时候感染计算机系统存在的U盘病毒,且也不需要向U盘写入数据时,只需要让U盘具有“只读”的功能就足够了,从而在任何情况下对U盘中的内容都不能进行改写,病毒也就无法感染U盘了。

依次点选“开始”->“运行”命令,并在“运行”中输入并执行regedit命令,打开注册表编辑器,依次展开如下键值:“HKEY_LOCAL_MACHINE

SYSTEMCurrentControlSetControl”,并在 Control项中新建一个名为StorageDevicePolicies的子项。然后在该子项下新建一个名为“WriteProtect”的Dword值,再将其值设定为1{十六进制}(如图1)。退出注册表编辑器即可生效。这样病毒再也不能入侵U盘了。要恢复对U盘的写操作,只需要将WriteProtect的值改为0即可。

1.2.3 关闭“自动播放”功能

点击“开始->运行”,键入“gpedit.msc”,单击“确定”按钮,打开“组策略”窗口。在左窗格的“本地计算机策略”下,展开“计算机配置->管理模板->系统”,然后在右窗格的“设置”标题下可以看到“关闭自动播放”选项,默认是未配置,现在将它更改为已启用,关闭自动播放中选择“所有驱动器”,最后单击“确定”关闭组策略窗(如图2)。这样就启用了关闭自动播放功能,重新启动以后,插入的U盘将不会自动运行,从而达到防止U盘病毒发作和传播的效用。当然这样有个缺点:插入的光盘也不能自动播放了。

1.2.4 执行免疫处理

前面已经提到过,U盘病毒一个重要的感染特征就是生成自动运行文件autorun.inf,而同一个目录里是不允许存在两个重名的文件的,所以只需针对这个特性进行免疫预防。免疫处理可以有两种方式:

1)“Autorun.inf”文件重名法:可以在U盘根目录下创建一个“Autorun.inf”文件,将文件内容设置如下:

[autorun]

icon=您自选的图标.ico

并将其属性设置为隐藏、只读,这样U盘病毒就无法在根目录下生成“Autorun.inf”病毒文件,而且即使U盘病毒修改了“Autorun.inf”文件,也能及时通过盘符图标的变化而提前判断是否有病毒的存在。

2)“Autorun.inf”文件夹重名法:需要在命令提示符窗口中通过MD命令在U盘根目录下创建一个“Autorun.inf”文件夹,然后在“Autorun.inf”目录下建一个特殊目录,方法为“MD x:autorun.infabcdefg..”。这样当病毒企图删除“Autorun.inf”目录时,系统就会提示出错,从而阻止了病毒的入侵。

当然,还可以使用各种杀毒软件进行U盘病毒的查杀和防御,网上还有很多流行的U盘病毒专杀工具也可以使用。

本文重点讨论的就是以上等4种主动防御U盘病毒的方法,经实践证明,这些方法简单方便、行之有效。

2 U盘监控管理程序设计

2.1 基本原理

一个U盘插入到计算机USB端口上时,操作系统硬件管理程序将会发现该设备,然后查找该设备的驱动程序是否存在,如果存在,系统加载驱动程序,然后给U盘分配盘符。

从上面的分析中可以知道,如果要阻止某U盘在计算机上使用,至少有两个方法可以使用:一是修改设备驱动程序,在设备驱动程序里面加入对设备进行判断的代码,从而阻止非授权的U盘在系统上的识别;第二种方法是不修改驱动程序,而在U盘枚举完成后,立即把设备卸载,从而在系统中无法使用该设备。

上面两种方法中,第一种需要熟悉驱动程序开发技术,难度比较大;第二种原理比较简单,实现起来也相对容易。本文将采用第二种方法,原理是:当插入U盘时,应该立即获取该U盘的信息,然后判断这些信息是否是经过授权的,如果非法,立即调用卸载函数卸载该U盘。具体过程详见图3。

2.2 开发过程

从上面的原理分析中可以知道,U盘监控管理系统可以分为三部分:U盘的检测、U盘信息的读取和判断以及U盘的卸载。另外,用户还可以对U盘进行注册,使之成为合法授权的U盘。

2.2.1 U盘的检测

对于U盘的检测,本文采用WMI来实现。WMI是一项核心的Windows管理技术,WMI作为一种规范和基础结构,通过它可以访问、配置、管理和监视几乎所有的Windows资源,比如用户可以在远程计算机器上启动一个进程;设定一个在特定日期和时间运行的进程;远程启动计算机;获得本地或远程计算机的已安装程序列表;查询本地或远程计算机的Windows事件日志等。

相关示例代码如下:

2.2.2 U盘信息的读取

2.2.3 U盘的卸载

程序直接调用DeleteVolume函数删除非授权的U盘。相关示例代码如下:

Dim VolumeName As String=mm'盘符。

DeleteVolume(mm)'删除U盘盘符,系统中看到的盘符应该消失。

2.2.4 U盘注册

对于用户认定的合法U盘,为了方便使用,需要对其进行注册,使之成为合法的授权U盘。相关示例代码如下:

Dim VolumeName As String=mm'盘符。RegisterUSB(mm)'U盘注册。

3 结束语

当前,各行业信息失泄密事件不断发生,其中通过U盘泄密的事件更占大多数。许多公司和政府部门普遍采用安装涉密计算机保密系统来对计算机和U盘进行加密,这无疑能在一定程度上达到保密的效果,较好地杜绝失泄密事件的发生。

文本所提出的“USB存储设备监控管理程序”可以在使用保密系统的基础之上,更好地对加密U盘进行监控和管理。即使用户使用加密U盘,如果没有采用该程序进行注册,也不能在涉密计算机上正常使用,从而进一步杜绝失泄密事件的发生。

[1]Bill Evjen,Rockford Lhotka,Billy Hollis,等著.Visual Basic 2005高级编程(第4版)[M]杨浩.吴雷,等译.北京:清华大学出版社,2006.

[2]蒲堪峰.内部局域网中USB设备分类监控系统的设计与实现[J].电信交换,2009,(1).

猜你喜欢
注册表U盘驱动程序
采用U盘文件冗余方案实现TSP系统的可靠装载
自动辨认插口方向的U盘
计算机硬件设备驱动程序分析
更上一层楼 用好注册表编辑器
注册表的便捷用法
U盘“闹肚子”
基于MPC8280的CPU单元与内部总线驱动程序设计
注册表编辑器也玩“失忆”
学习器揭开注册表面纱
妙用鼠标驱动