最近,发现周围的人对病毒的防范意识有了很大的提高,比较明显的一点就是:打开U盘时,很少有人再直接双击U盘图标,而是用鼠标右键U盘,看看有没有“Auto”之类的选项,从而确定U盘是不是中了病毒。(这个好习惯还得归功于近来的U盘病毒都喜欢用“Auto”作为自启选项名称……)
不过,与此同时,发现很多人产生了一个错误的认识,即右键U盘后,只要看到“打开”就放心选“打开”,认为用这个方式打开U盘就不会感染病毒。这个错误认识的直接后果就是为其它以“打开”作为启动选项的病毒创造了条件。
所以,写篇文章提醒大家:即使右键U盘出现“打开”也不一定就可以放心地选“打开”来打开U盘。
1、U盘病毒的工作原理:
U盘病毒的启动程序一般分为两个文件:一个autorun.inf,一个隐藏的病毒文件。当然现在看到的下载型病毒有的是由三个文件组成:一个autorun.inf,一个auto.exe,一个病毒文件。但无论U盘病毒怎么变花样,其中autorun.inf是必要的文件,这个文件控制着U盘右键菜单的项目,也是决定了鼠标双击U盘时,运行何种程序。如果autorun.inf被删除,那病毒的自启动能力就会消失。这就是时下那些所谓的“U盘免疫工具”的工作原理,即插入U盘后自动扫描U盘中的文件,检查其中有没有叫“autorun.inf”这个文件,有的话,直接删除。
注意:这类工具只是简单地判断文件名,不会分析文件中的代码,只要有autorun.inf就直接删除,哪怕那个文件是自己建的无毒文件。从实用的角度说,这个功能的确可以起到防范U盘病毒的作用。不过对于已经装了杀毒软件,并开启实时保护的情况下,这个功能的用处并不大。因为杀毒软件会自动检查文件中的代码,并在发现病毒时会删除病毒文件,包括autorun.inf文件。而且对于性能好的杀毒软件,一般都可以正确地判断出autorun.inf文件是否带毒,如果没有毒,就保留文件,不会一并删除,这个作用更为人性化,可以保留个人自己做的autorun.inf文件。
2、autorun.inf代码的简单介绍:
造成认为“打开”选项不是病毒的主要原因归根结底还是对autorun.inf代码认识不足。目前发现很多人都以右键菜单中有无“Auto”来判断是否中毒,殊不知“Auto”项本身不过是autorun.inf代码中自行命名的,只要编的人愿意,他可以随意改变这个名字,甚至是“打开”、“资源管理器”。因此,在说明“打开”型病毒之前,有必要介绍一下autorun.inf中的代码。
autorun.inf原先用于光盘的自启动,随着U盘的普及,目前以U盘为目标建立autorun.inf来达到传播目的的病毒已经很常见。网上有一些关于autorun.inf代码的中文介绍,但个人看法,中文的介绍都不是很完整。推荐文章“Autorun.inf Entries(MSDN)”的英文版本。这是目前看到的最好最全的版本。以下根据英文版的内容加上个人的一些实践说明一下病毒常用代码的格式。
autorun.inf代码下[Autorun]分支有控制自启动、右键菜单选项等各种命令,病毒常用的命令有open、shellexecute、shell、shell\verb
open命令格式:
open=[exe文件路径] exe文件 [参数]
shellexecute命令格式
shellexecute=[文件路径] 文件名 [参数]
open命令和shellexecute命令都用于程序启动,不同的是open只能加exe、com、bat三种类型的文件,而shellexecute可以加数据文件,依靠文件关联打开相关程序播放。
由于目前没有找到一个版本的说明中有open和shellexecute的区别,所以这里再说说个人试验后的一些结果,以便对open和shellexecute命令有所区分:
1)如果代码中只有open没有shellexecute,那open命令和shell命令作用重合,如果代码中存在shell命令,那没有open也可以。
2)如果代码中只有shellexecute没有open,那在右键菜单选项的第一项将自动出现一个“自动播放”的默认选项。
3)如果代码中同时存在open和shellexecute,那右键菜单选项中凡是有autorun.inf内shell命令指定的选项按照其在autorun.inf中的标签(verb)字母顺序排列,不是指定的选项按原来顺序排列,排在首位的选项将成为默认选项。
以上结果仅仅是个人通过试验autorun代码得到的结果,仅供参考。
shell命令格式与shell\verb命令格式
这两个命令用于控制右键菜单项目,其中shell\verb用于增加自定义右键菜单项目,shell用于把shell\verb定义条目提升为默认项目。
格式:
shell\verb=自定义右键菜单名,其中verb是一个标签,可以自定义名称,用于shell中识别。
Shell\verb\Command=要运行的程序名,即指定自定义菜单项所指向的程序。
Shell=verb,将verb标签中指定的项目提升为默认项目。
经过以上步骤后,此时双击U盘会自动打开verb标签指向的程序,这就是为什么双击U盘会激活病毒的原因。
3、“打开”型U盘病毒的特征
了解了autorun.inf代码后,可以发现实际上右键菜单中的自定义项目完全可以随意更换名字,那也就不奇怪如果是“打开”,同样可以是病毒的启动项。现在举一些比较典型的利用“打开”作为启动项目的例子:
1)第一种情况:两个“打开”
autorun.inf代码如下:
[AutoRun]
open=virus.com
shell=run
shell\run=打开(&O)
shell\run\Command=virus.com
shell\explore=资源管理器(&X)
shell\explore\Command=virus.com
这种情况下,右键会出现两个“打开”(如图),其中第一个“打开”为病毒的自启动选项,点第二个“打开”,可以安全地打开U盘。这种情况需要在右键时仔细查看。
[用户系统信息]Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)