考虑原文( http://blog.sina.com.cn/u/56b798f8010007ht)太长而且比较罗嗦,部分新手会失去耐心看完,因此特地修改原文推出精简版。精简版面向新手,着重提供能够快速上手的方法。
本文还可能有其他错误,欢迎指正。
首发地点:卡卡论坛、《电脑爱好者》杂志论坛、本人的技术性Blog。本文DOC下载地址: http://ishare.sina.com.cn/cgi-bin/fileid.cgi?fileid=1303142
掀开USB 存储设备自动运行的面纱(精简版)
Horse Luke
2007-2-20
如何正确打开USB存储设备
病毒是如何利用autorun.inf通过USB存储设备进行传播
并非只要有autorun.inf病毒就能运行
如何干预“自动运行”
对于新手来说,你可以不去了解电脑理论基础,但是你应该知道一些正确的操作方法。何况 即使你按照本文所示的方法 禁止自动运行,电脑也并不是万事大吉。因为这只是禁止自动运行而已,其他内容(如autorun.inf中的右键菜单等)仍然生效。何况你不可能在每一部电脑禁止自动运行吧。 一句话,防胜于杀。
那究竟如何才能够正确打开USB存储设备而不触发病毒呢? 双击打开,肯定不行;右键打开,现在看起来已经失效(后面会说到为什么),那正确方法究竟是什么?
正确方法是: 在插入USB存储设备时按住Shift键,暂时禁用自动运行。然后打开“我的电脑”,单击“标准按钮栏”(即菜单栏下面那行按钮)的“文件夹”,切换到“资源管理器”状态。从左边进入USB存储设备。那样就不会触发病毒(图1)。
图1
另外,查看和删除USB存储设备中的病毒文件(不触发),完全有更简单的方法<4>:用WINRAR打开USB存储设备盘符。WINRAR会显示所有文件,包括隐藏文件,而不需修改文件夹选项。(图2)特别是对于已中毒,不能显示隐藏文件的情况下,用WINRAR来查看更是一种简便的方法(Total Commander也有这样的功能)。
Part 1、USB存储设备自动运行的必备条件:autorun.inf
病毒如何通过USB存储设备传播自身呢?答案是对Autorun.inf的利用。
小知识:autorun.inf的历史
autorun.inf最初被应用于CD光盘。从Windows 95开始,微软允许在光盘根目录中中放入autorun.inf以创建可自动运行程序的多媒体光盘。光盘一放入光驱就会自动被执行,主要依靠两个文件,一是光盘上的AutoRun.inf文件,另一个是操作系统本身的系统文件之一的Cdvsd.vxd。Cdvsd.vxd会随时侦测光驱中是否有放入光盘的动作,如果有的话,便开始寻找光盘根目录下的AutoRun.inf文件。如果存在AutoRun.inf文件则执行它里面的预设程序。<5>
后来autorun.inf逐步完善其语法,并且逐步支持其它可移动设备。
(1)自动运行类型的条目
这部分的条目有 ”open”和”shellexecute”。病毒通过使用这两个条目,使得当插入USB存储设备时,告诉Windows自动运行病毒。其中:
”open”只可以指定可执行文件,适用于Win95及以上。
”shellexecute”除了可以指定可执行文件外,还可以指定文件。使用后右键菜单将多出一个“自动播放”。适用于Win ME及以上。
两者均可在后面添加参数运行。例如:
open=autorun.exe
open=wscript.exe autorun.vbs
shellexecute=autorun.exe /n
shellexecute=readme.txt
(2)右键菜单类型的条目
这部分的条目主要利用的是
shell/标志=显示的鼠标右键菜单中内容
shell/标志/command=要执行的文件或命令行
这两个条目或者只使用第二条。 病毒通过构造具有欺骗性的右键菜单条目来诱使用户点击从而中招。例如以下的autorun.inf实例:
[AutoRun]
shell/打开(&O)/command=autorun.exe
shell/资源管理器(&X)/command=autorun.exe
当插入U盘后,单击右键将出现两组“打开”和“资源管理器”(图3)。如果点击后一组将会运行autorun.exe。
如果构造得好,甚至可以关联到系统本身的菜单条目。例如Trojan.PSW.SBoy.a(瑞星命名)将构造如下的autorun.inf:
[autorun]
OPEN=EXPLORER.EXE
shell/open=打开(&O)
shell/open/Command=EXPLORER.EXE
shell/open/Default=1
shell/explore=资源管理器(&X)
shell/explore/Command=EXPLORER.EXE
在XP SP2中,单击右键则只有一组“打开”和“资源管理器”。点击任何一个即中招(图4)。这就是为什么现在用右键打开USB存储设备已经不是一个正确方法的原因。
(操作系统为XP SP2;左边为染毒前的状况,右边是染毒后的状况。)
注意:理清两个概念
插入USB 存储设备后,一般Windows XP会弹出一个“自动播放”对话框(图5)。部分新手(甚至于一些文章)认为这是自动运行。但这其实是自动播放。根据微软的说法<1>,从XP时代开始,自动运行(AutoRun)与自动播放(AutoPlay)将不再是同一个概念。前者依赖于autorun.inf,从Windows 95开始就已经存在;后者并不依赖于autorun.inf,而是依赖于Shell Hardware Detection服务,是从XP开始新增加的界面交互功能。
(图5)
Part 2、有了autorun.inf病毒就必定自动运行?
有人认为,只要U盘里面有病毒和autorun.inf,插入它就必定自动运行。其实这是错误的,它要受3方面的影响:USB存储设备的类型、操作系统版本、用户对“自动运行”功能的干预。
USB存储设备的类型:不要认为凡是U盘都是移动设备。一般来说,Windows会将USB存储设备识别为两种:移动设备或者固定设备。两者的图标各有不同。
不同的设备,Windows会不同对待。例如在Windows 2000中,固定设备的autorun.inf会起作用;但是移动设备中的autorun.inf是毫无作用的,这时无论你双击打开还是右键打开均正常。再比如,同样的autorun.inf,假如是移动硬盘,XP SP2在“自动播放”对话框中会提示是否运行程序(如图7)。但假如是MP3就不会提示了(图5)。
用户对“自动运行”功能的干预:这个后面会有讲述。
Part 3、如何干预“自动运行”?
法一:暂时禁用
在插入USB存储设备时按住Shift键即可暂时禁用自动运行。 这个在一台新电脑上插入U盘的时候尤其重要。
法二:组策略(XP Home可使用下面提供的注册表文字)
开始——〉运行——〉gpedit.msc——〉计算机配置——〉管理模板——〉系统——〉关闭自动播放。选择“已启动”,并且把下面的“CD-ROM驱动器”改为“所有驱动器”,按确定即可。
注意:不建议更改组策略中的“计算机配置——〉管理模板——〉用户配置——〉关闭自动播放”。因为如果在“系统”和在“用户配置”中存在相同条目的话,前者具有优先权。
Windows Registry Editor Version 5.00
"NoDriveTypeAutoRun"=dword:000000ff
"NoDriveTypeAutoRun"=-
<1>《(Windows XP)Shell 中的新功能》:
http://www.microsoft.com/china/MSDN/library/archives/library/shellcc/platform/shell/shell_new/whatsnew.asp
Using Hardware AutoPlay:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_basics/shell_basics_extending/autoplay/autoplay2k_intro.asp
<2> Autorun.inf Entries: http://msdn2.microsoft.com/en-us/library/aa969327.aspx
<4>《U盘病毒的检查》中第10楼,轩辕小聪的方法:
http://forum.ikaka.com/topic.asp?board=28&artid=8233554
<5>《技术分析系列之详解来自Autorun的攻击》:
http://industry.ccidnet.com/art/1101/20070123/1007971_1.html
本文来自:
http://blog.sina.com.cn/u/56b798f8010007hx 非常感谢Horse Luke写的文章,辛苦了