【IT168专稿】8月中旬,名为“小浩”蠕虫病毒出现在网络上,可以感染 *.exe可执行程序,可感染各种网页脚本程序,插入带毒网址,被感染后的*.exe文件将遭到破坏,无法恢复。
不久之后,“大猩猩”病毒又现身于互联网,其虽在技术上并无特别之处,却是一个使用病毒技术较为全面的病毒。
这两种病毒的共同点是U盘成为病毒的重要传播工具。无论是用户双击中毒电脑的U盘还是硬盘,病毒都将被激活。尤其是后者,病毒运行后,尝试使用Taskkill /f /im命令关闭近百种杀毒软件和安全工具的进程,以达到躲避查杀的目的。病毒具有重定向劫持功能,通过写注册表中的 IFEO 键值来阻止100款杀毒软件和安全工具的运行;还通过修改操作系统的Hosts表,禁止用户登陆数十家反病毒厂商的网址,阻止杀毒软件升级病毒库。该病毒还会修改注册表相关键值,禁用系统“显示隐藏文件”功能隐藏自身,破坏系统安全模式,使得中毒用户无法进入安全模式下杀毒。
“小浩”和“大猩猩”病毒的出现并非偶然。随着近年来移动存储设备,如移动硬盘、MP3等的普及,移动存储设备已经成为病毒传播的另一重要传播途径。去年闹得最欢的“熊猫烧香”病毒,也利用了这种传播方法,足见其危害程度。
如何防范成为众多企业网络管理者急需处理的问题。笔者在提出预防此类病毒新方法的同时,详细介绍如何利用delphi编程语言加以实现。
病毒在 Windows操作系统下,通过移动存储设备传播的手段和方法,并由此提出预防病毒的新方法,以及用delphi编程语言实现。
1 依赖移动存储设备传播型病毒传播方式
当移动设备连接到电脑上后,病毒拦截Windows硬件改变消息,并拷贝自身到移动设备,修改AutoRun.inf文件,当同样的移动设备再次插入别的计算机后,病毒通过系统的自动运行或者用户直接从盘符双击进入启动,进一步感染系统。通过这样的过程的重复,已经感染的计算机重新感染别的计算机,就使病毒的传播范围越来越大。
2 AutoRun.inf文件原理
2.1 AutoRun.inf由来
AutoRun.inf这个文件是很早就存在的,在WinXP以前的其他windows系统(如Win98,2000等),需要让光盘、U盘插入到机器自动运行的话,就要靠AutoRun.inf。这个文件是保存在驱动器的根目录下的(是一个隐藏的系统文件),它保存着一些简单的命令,告诉系统这个新插入的光盘或硬件应该自动启动什么程序,也可以告诉系统让系统将它的盘符图标改成某个路径下的icon。所以,这本身是一个常规且合理的文件和技术。该文件在实际中的应用也有很多,如一些软件光盘利用这个文件,制作了方便快捷的安装指示文件。
2.2 AutoRun.inf怎样被病毒利用
病毒利用AutoRun.inf文件启动,主要利用两个字段:“open”和“shellexecute”,利用这两个字段,病毒会在移动设备插入时自动运行,或者用户双击移动设备盘符时启动。具体的AutoRun.inf文件表现如下:
|
open=RavMon.exe |
另外,病毒还有可能关联右键菜单,在点击相应的选项的时候,就有可能是病毒加载,表现如下:
|
shell\Auto\command=RavMon.exe |
3 如何预防依赖移动存储设备传播型病毒的感染
根据依赖移动设备传播的病毒的行为,我们可以采用针对各个步骤地预防方案。
3.1 停止系统的自动播放光碟,插入的移动设备
当移动设备插入时,如果有对应AutoRun.inf的存在,系统会自动运行对应的内容。所以,禁止此文件的自动播放,这是预防病毒的第一步。查阅了相关文献,相关控制选项在注册表的这个位置: KEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer。
其中的NoDriveTypeAutoRun子键限制着Autorun的作用范围,默认为95(16进制)如果设置为255,将会阻止光盘和移动设备的自动读取,从而防止病毒的自动运行。
3.2 停止使用双击打开盘符,改用右键--资源管理器或者从资源管理器左边的磁盘列表中进入。
双击打开盘符会使系统自动调用根目录地下的AutoRun.inf文件,如果使用右键--资源管理器或者从资源管理器左边的磁盘列表中进入的方式,那么就可以避开AutoRun.inf文件的加载,病毒便不能运行。
3.3 在系统运行病毒之前,利用AutoRun.inf文件的固有特征,检验并且删除病毒。
如果病毒利用U盘传播,那么在AutoRun.inf文件中必须有所体现,那么在这个文件中会有不正常的条目,利用这些条目的特征,就可以定位病毒位置,并且删除病毒。
4 编程实现
针对这种病毒的传播方式,我们可以根据病毒的固有特征来定位其所在,并且在病毒启动之前删除,防止感染。
4.1 检测移动设备的插入
在这里,用到了一个Windows的消息:WM_DEVICECHANGE,设备变更消息。在系统的盘符设备发生变化的时候,系统会自动向系统里运行每一个运行的程序发送这个消息,如果捕捉的这个消息,就可以检测移动设备的插入,从而进行下一步的检验。具体实现的关键delphi代码如下,已经加了注释。
|
Uses Messages / /在程序头部引用消息单元 |
4.2 判断病毒是否存在,如果存在病毒,分离路径,删除病毒
病毒如果存在,就会在autorun.inf文件中有所体现,会产生类似OPEN=XXX.EXE或者SHELLEXECUTE=XXX.EXE的条目,如果存在这些特征,我们就可以检测它,从而定位病毒并删除。
|
procedure killvirus(str:string); |
上述内容仅向你提供了预防这种类型病毒的通用方法。用这种与特定病毒无关的通用检测方式,使检查未知病毒十分有效且易于软件实现。但是这种方法其中还存在很多问题,如怎样区别正常程序利用Autorun.inf或是病毒的引导文件,这将影响到用户对系统的正常使用,还有待于解决。