本文将主要讲述: 病毒是如何利用autorun.inf通过USB存储设备进行传播 并非只要有autorun.inf病毒就能运行 如何干预“自动运行” 如何正确打开USB存储设备
今天,越来越多的人已经拥有了自己的MP3、U盘,甚至是移动硬盘,与此同时,利用USB存储设备传播的病毒也越来越多,俨然成为了标准传播手段。有些老师甚至因此而不敢带着U盘去上课。那究竟病毒是如何利用USB存储设备传播自身,而对策又是什么呢? USB存储设备自动运行的必备条件:autorun.inf 病毒是如何通过USB存储设备传播自身呢?答案是对autorun.inf的利用。
小知识:autorun.inf的历史 在Windows 95时代,微软在光盘中引入了autorun.inf技术。在Windows 95/98/ME中,光盘自动运行要依靠两个文件:系统文件cdvsd.vxd和光盘上的autorun.inf。cdvsd.vxd会随时侦测光驱中是否有放入光盘的动作,若有,便开始寻找光盘根目录下的autorun.inf文件。如果存在的话则执行它里面的预设程序。<1> 后来autorun.inf不断完善其语法并且逐步支持其它设备及应用场合(例如硬盘、可移动设备、网络共享等),并且它的调用转移到由shell32.dll这个系统文件来完成(本人所掌握的资料是从Windows 98开始的)。
autorun.inf的语法<2>有5大部分:[AutoRun],[Content],[ExclusiveContentPaths],[IgnoreContentPaths],[DeviceInstall]。总结起来,病毒不外乎利用的是[AutoRun]部分中的两种条目: (1)自动运行类型条目 这部分的条目有“open”和“shellexecute”。病毒通过使用这两个条目,使得当插入USB存储设备时,告诉Windows自动运行病毒。其中: “open”只可以指定应用程序,适用于Windows 95及以上。 “shellexecute”除了可以指定应用程序外,还可以指定数据文件。使用后右键菜单将多出一项“自动播放”。适用于Windows 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盘后,右击将出现两组“打开”和“资源管理器”(图1)。如果点击后一组将会运行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中,右击则只有一组“打开”和“资源管理器”。点击任何一个即中招(图2)。因此,现在用右键菜单打开USB存储设备已经不是一个正确方法了!

天啊!究竟哪一个才是中了病毒啊? (操作系统为XP SP2;左边为染毒前,右边是染毒后)
火速链接:使用subst.exe和autorun.inf语法中的右键菜单类型条目,你可以把桌面的各类快捷方式集中在一个右键菜单内,从而还你桌面清爽,详情请查看2004年第13期26页《菜鸟版的多功能系统级图标》。 注意:理清两个概念 插入USB存储设备后,一般Windows XP会弹出一个“此盘或设备包含一种以上的内容,您想让Windows做什么”的“自动播放”对话框。部分新手(甚至于一些文章)认为这是自动运行。但这其实是自动播放。根据微软的说法<3>,从XP时代开始,自动运行(AutoRun)与自动播放(AutoPlay)将不再是同一个概念。前者依赖于autorun.inf,从Windows 95开始业已存在;后者依赖于Shell Hardware Detection服务(但可以受autorun.inf影响),是从Windows XP开始新增的界面交互功能。 有了autorun.inf病毒就必定自动运行? 有人认为,只要U盘里面有病毒和autorun.inf,插入它就必定自动运行。其实这是错误的,它要受3方面的影响:USB存储设备的类型、操作系统版本、用户对“自动运行”功能的干预。 USB存储设备的类型:不要认为凡是U盘都是移动设备。一般来说,Windows会将USB存储设备识别为两种:移动设备或者固定设备。两者的图标各有不同。 被识别为 所显示的图标 哪些USB存储设备会识别为这种类型 移动设备 或者 读卡器、大多数MP3、部分U盘、部分数码相机;当作为储存设备用USB线连接电脑时部分国外品牌手机(如摩托罗拉、诺基亚手机)也会被识别为这种类型。 固定设备 或者 移动硬盘、MP4、部分U盘如台电酷闪;当作为储存设备用USB线连接电脑时部分国产手机(如波导、中兴手机)也会被识别为这种类型。 不同的设备,Windows会不同对待。例如Windows 2000会调用固定设备中的autorun.inf,但是并不理睬移动设备中的autorun.inf。再比如,同样的autorun.inf,若在移动硬盘中,XP SP2在“自动播放”对话框中会提示是否运行程序(图3)。但若在MP3就有可能不提示。

操作系统版本:Shell32.dll具有调用autorun.inf的功能,而这个文件的版本在不断地更新<4>,因此造成不同Windows对相同autorun.inf的不同理解。比如刚才提到的Trojan.PSW.SBoy.a所写的autorun.inf,假如到Windows ME/2000,右击仍然会显示两组“打开”和“资源管理器”。再比如移动设备中的autorun.inf从XP时代开始也起作用了。 用户对“自动运行”功能的干预:这个不用说了吧。
|