神秘DLL文件,原来是脚本病毒

数码时尚

  2003年《电脑报》第10期有一篇《以子之矛,攻之了盾──IE自动反修改》的文章,提到了恶意网站用REG文件假冒DLL文件,修改IE设置的问题。现在神秘的DLL仍然是病毒制造者和恶意修改者都不愿放弃的一块“宝地”。

  小知识:DLL动态链接库文件是图形界面操作系统特有的一种程序,它没有用户界面,但却可以实现EXE执行文件单独实现不了的功能,某些DLL文件还可以在不同编程语言间通用,因此在Windows应用程序中得到了大量应用。Windows系统本身也是靠大量的DLL文件库提供功能的。

  DLL文件可以双击执行

  在一般情况下,DLL是不能直接运行的,也是不可能在启动项中出现的。如果不是驱动程序,它必须由EXE程序实体加载。就连许多病毒喜欢冒充的Rundll,其实文件全称也是Rundll.exe。但最近笔者却在网吧一些机器的注册表中发现了多个启动项,扩展名为“.dll”。在好奇心的驱使下,从注册表中得到文件地址后用记事本打开:

  ......

  Set FSO = CreateObject("Scripting.FileSystemObject")

  Set WsShell = CreateObject("WScript.Shell")

  Else

  AppleObject.setCLSID("{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}")

  ......

  FileTemp.Write vbCrLf & "<" & "HTML>" & vbCrLf & "<" & "BODY onload=""" & "vbscript:" & "xxx()""" & ">" & vbCrLf & HtmlText

  ElseIf TypeStr = "vbs" Then

  FileTemp.Write vbCrLf & VbsText

  ......

  这不是Windows脚本程序吗?看样子还是Happy time(欢乐时光)的一个变种,呵呵,调用FileSystemObject(文件系统对象),又用到了活动控件,一看就知道要干坏事。

  DLL文件可执行之谜

  在系统目录中双击运行一个正常的DLL文件,注意:是WSH(全称“Windows脚本宿主”,脚本程序的解释器)的提示──“脚本执行错误”(正常的DLL是二进制文件,不能被WSH解释执行)。真是非常奇怪,WSH不能执行正常的DLL文件,却把它关联给了自己。

  另类脚本病毒

  脚本病毒可用的“手段”很多,比如说欢乐时光的感染方法就非常完善,不用杀毒软件一般用户是难以清除的,而DLL这个扩展名,又为脚本病毒增加了隐藏性。

  一般人都知道,DLL文件是不能乱删的,DLL文件出错轻则导致部分软件不正常,严重还可导致系统崩溃。对照《IE自动反修改》一文的状况可以发现,病毒制造者正是利用了用户不敢轻易动它的心理,或偷梁换柱改名欺骗用户,或利用文件关联漏洞,在杀毒软件严密的监控下“逍遥自在”。由于它们一般都是通过网页或邮件感染,都是文本文件格式,所以可以用记事本查看。

  查、杀、防

  检查:总之,无论是在注册表还是启动项中发现直接启动的DLL文件或RunDll.exe/Rundll32.exe,那一定是不正常的,真正的DLL不会单独运行,且看不到进程。

  杀毒:如果是常见脚本病毒或变种病毒,使用杀毒软件可以发现并清除病毒;如果只是恶意代码,就难以发现了。

  防范办法:在一个DLL文件上按住Shift键右击,选择“打开方式”,再将DLL文件与记事本关联。

  测试环境:Windows98/2000,不能安装编程软件,否则DLL文件的打开方式可能会被DLL调用工具关联。