掀开USB存储设备自动运行的面纱(精简版)
来源:互联网 发布:网际快车软件 编辑:程序博客网 时间:2024/06/04 17:58
考虑原文(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写的文章,辛苦了
- 掀开USB存储设备自动运行的面纱(精简版)
- 掀开C#的一层面纱
- 帮你掀开SOA(面向服务架构)的面纱
- CDN(1)—掀开你的面纱
- Netty学习系列(一)-- 掀开你神秘的面纱
- 掀开<mvc:annotation-driven/>的面纱
- [转]帮你掀开SOA(面向服务架构)的面纱
- 掀开c++中this指针的神秘面纱
- 树莓派2(Raspberry pi)取消 usb 存储设备的自动挂载
- 嵌入式系统USB存储设备自动mount
- windows2003自动默认usb移动存储设备
- mdev自动加/卸载usb存储设备
- 树莓派USB存储设备自动挂载
- 树莓派USB存储设备自动挂载
- 虚拟机VMware无法识别USB设备问题(主要针对精简版VMware)
- Cubieboard下的Usb及Sata存储设备自动挂载
- Cubieboard下的Usb及Sata存储设备自动挂载
- 在嵌入式Linux系统中实现USB存储设备的自动挂载
- Beginning Linux Programming, 3rd Edition
- 遗传算法
- 忙着建论坛,忘记学知识了,从今天起要注意了
- 老朋友们都新年愉快
- 我自己用PHP写的一个极简单的 HTML 框架。
- 掀开USB存储设备自动运行的面纱(精简版)
- Command List
- 开始学习计算机课程
- javascipt
- .net2.0 中的持续集成
- 利用GetPrivateProfileString读取配置文件(.ini)
- 用微软的实时通信API集成丰富的客户端通信
- 微软解释Windows Vista含义所在
- php的学习指南