前前言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写的文章,辛苦了

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

  1. 树莓派USB存储设备自动挂载并通过脚本实现自动拷贝,自动播放视频,脚本自动升级等功能...

    需求: 首先需要树莓派自动挂载USB设备,然后扫描USB指定目录下文件,将相关文件拷贝至树莓派指定目录,然后通过omxplayer循环播放新拷贝文件视频 1. 树莓派实现USB存储设备自动挂载 树莓派 ...

  2. 树莓派linux系统识别u盘启动,树莓派Raspberry Pi实战之命令行下实现USB存储设备自动挂载...

    简单介绍实现命令行下USB存储设备自动挂载的方法,Linux gnome/kde窗口环境下有移动存储的管理程序,可以实现自动挂载移动存储设备,但是在命令行下 通常需要用mount命令手动挂载USB存储 ...

  3. 树莓派USB存储设备自动挂载

    树莓派USB存储设备自动挂载 简单介绍实现命令行下USB存储设备自动挂载的方法,Linux gnome/kde窗口环境下有移动存储的管理程序,可以实现自动挂载移动存储设备,但是在命令行下 通常需要用m ...

  4. 树莓派实现USB存储设备自动挂载

    简单介绍实现命令行下USB存储设备自动挂载的方法, linux gnome/kde窗口环境下有移动存储的管理程序,可以实现自动挂载移动存储设备 但是在命令行下 通常需要用mount命令手动挂载USB存 ...

  5. 树莓派Raspberry Pi实战之命令行下实现USB存储设备自动挂载

    此方法对树莓派Jessie系统不适用 简单介绍实现命令行下USB存储设备自动挂载的方法,Linux gnome/kde窗口环境下有移动存储的管理程序,可以实现自动挂载移动存储设备,但是在命令行下 通常 ...

  6. linux 自动挂载usb设备,Raspberry Pi 自动挂载USB存储设备

    简单介绍实现命令行下USB存储设备自动挂载的方法,Linux gnome/kde窗口环境下有移动存储的管理程序,可以实现自动挂载移动存储设备,但是在命令行下 通常需要用mount命令手动挂载USB存储 ...

  7. 树莓派2(Raspberry pi)取消 usb 存储设备的自动挂载

    自从入手树莓派后,一直都在被树莓派的USB设备自动挂载问题所困扰,这个自动挂载的起因是GNOME图形化界面组件里自带了这个功能.那么我们如何在树莓派中取消这项功能呢?国内关于自动挂载问题,无外乎就是去 ...

  8. 用 C# 编写 USB 存储设备使用痕迹检测和删除工具

    编写 USB 存储设备使用痕迹检测和删除工具 (C# Windows Form 编程练习) [版权所有 邱秋 2014 metaphysis@yeah.net, 转载请注明出处] 第一节 准备知识 之 ...

  9. 如何安全可控的使用USB存储设备

    U盘.USB移动硬盘.智能手机等移动存储介质作为日常的信息交换载体被广泛应用,然而超强的便捷性也带来了两个关键的安全风险: 一.数据泄密 对信息安全防控方面不熟悉的用户通常会直接将重要数据存储到移动硬 ...

最新文章

  1. Django打造在线教育平台_day_4: 找回密码
  2. linux阿波罗配置文件放在哪,Apollo阿波罗配置中心
  3. 【Linux】一步一步学Linux——df命令(79)
  4. 快速切換手機版網頁語法
  5. c#随机数的产生与输出【C#】
  6. 准备好钱了吗?新款iPhone或于9月13日开始接受预订
  7. intelRealsense D435 python3的环境搭建
  8. pc版本Line电脑多开软件,多开分身软件
  9. 中级软件设计师考试(软考中级)考试简介与考试内容分布
  10. c语言课程设计酒店管理系统实验报告 免费下载,C语言酒店管理系统设计
  11. SAP-SD-学习笔记0923
  12. 使用matlab计算 洛伦兹方程 的李雅普诺夫指数
  13. office2010 打开报错 无法访问您试图使用的功能所在的网络位置
  14. Chrome 神器面世!谷歌学术搜文章,代码链接自动展示
  15. Netty下的消息群发
  16. 第四十二篇:Flink面试方案设计篇
  17. 【PPT】画三维立体块
  18. python设置word背景色_Java 给Word不同页面设置不同背景
  19. 缺省值和null值的区别和作用
  20. CSS 背景颜色 background-color属性

热门文章

  1. PCIE/GPU/显卡参数性能查看工具搜集
  2. 如何让你的代码比别人更加赏心悦目?
  3. 【软件全称】图书管理系统
  4. 量化分析师的Python日记【第2天:再接着介绍一下Python呗】
  5. 喜马拉雅一喜一忧:盈利水平好转,营收减档降速,继续上市进程
  6. matlab如何制作振型动画_Matlab 实时动画制作示例
  7. fcpx如何用光流法_5分钟掌握FCPX所有剪辑技巧
  8. 运营商大数据手机号抓取的功能有哪些
  9. ae渲染存在偏移_(图文+视频)C4D+AE野教程:一起来制作一个MG方块动画吧
  10. Linux学习 邮件