掀开USB存储设备自动运行的面纱(精简版)

来源:互联网 发布:网际快车软件 编辑:程序博客网 时间:2024/06/04 17:58
前前言2:为什么有精简版?
考虑原文(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病毒就能运行
 如何干预“自动运行”
 
 
    今天,越来越多的人已经拥有了自己的MP3、U盘,甚至是移动硬盘,与此同时,利用可移动设备传播的病毒也越来越多,俨然成为了标准传播手段。有些老师甚至因此而不敢带着U盘去上课。有鉴于此,我们有必要了解一下病毒是如何利用这种手段,以及如何进行防范。
 
Part 0、如何正确打开USB存储设备

    对于新手来说,你可以不去了解电脑理论基础,但是你应该知道一些正确的操作方法。何况即使你按照本文所示的方法禁止自动运行,电脑也并不是万事大吉。因为这只是禁止自动运行而已,其他内容(如autorun.inf中的右键菜单等)仍然生效。何况你不可能在每一部电脑禁止自动运行吧。一句话,防胜于杀。
    那究竟如何才能够正确打开USB存储设备而不触发病毒呢?双击打开,肯定不行;右键打开,现在看起来已经失效(后面会说到为什么),那正确方法究竟是什么?
    正确方法是:在插入USB存储设备时按住Shift键,暂时禁用自动运行。然后打开“我的电脑”,单击“标准按钮栏”(即菜单栏下面那行按钮)的“文件夹”,切换到“资源管理器”状态。从左边进入USB存储设备。那样就不会触发病毒(图1)。

图1

    另外,查看和删除USB存储设备中的病毒文件(不触发),完全有更简单的方法<4>:用WINRAR打开USB存储设备盘符。WINRAR会显示所有文件,包括隐藏文件,而不需修改文件夹选项。(图2)特别是对于已中毒,不能显示隐藏文件的情况下,用WINRAR来查看更是一种简便的方法(Total Commander也有这样的功能)。

图2



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逐步完善其语法,并且逐步支持其它可移动设备。
 
 
Autorun.inf的语法<2>有5大部分:[AutoRun],[Content],[ExclusiveContentPaths],[IgnoreContentPaths],[DeviceInstall]。但是可以说,病毒几乎利用的都是 [AutoRun]部分中两种类型的条目。
    (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。
(图3)
 

如果构造得好,甚至可以关联到系统本身的菜单条目。例如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存储设备已经不是一个正确方法的原因。

(图4)你能看出右键菜单有很大的区别吗?
(操作系统为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)。

(图7)
 
操作系统版本:由于调用 Autorun.inf 的功能后来是改为由 Shell32.dll 来完成的,而Shell32.dll这个文件的版本在不断地更新<7>,这样就造就了Windows对autorun.inf的不同理解。比如刚才提到的Trojan.PSW.SBoy.a所写的autorun.inf,假如到Windows ME/2000,右键单击仍然会显示两组“打开”和“资源管理器”(跟图3一样)。再比如移动设备中的autorun.inf从XP时代开始也起作用了。
用户对“自动运行”功能的干预:这个后面会有讲述。
 
 

Part 3、如何干预“自动运行”?

法一:暂时禁用
在插入USB存储设备时按住Shift键即可暂时禁用自动运行。这个在一台新电脑上插入U盘的时候尤其重要。
法二:组策略(XP Home可使用下面提供的注册表文字)
开始——〉运行——〉gpedit.msc——〉计算机配置——〉管理模板——〉系统——〉关闭自动播放。选择“已启动”,并且把下面的“CD-ROM驱动器”改为“所有驱动器”,按确定即可。
注意:不建议更改组策略中的“计算机配置——〉管理模板——〉用户配置——〉关闭自动播放”。因为如果在“系统”和在“用户配置”中存在相同条目的话,前者具有优先权。
XP Home用户可以把以下文字保存为1.reg,然后双击导入注册表即可达到效果。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/policies/Explorer]
"NoDriveTypeAutoRun"=dword:000000ff
要恢复原值时,只需要把以下文字保存为del.reg,然后双击导入注册表即可达到效果。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/policies/Explorer]
"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写的文章,辛苦了

原创粉丝点击