VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 并不神秘的VBS (解析“我爱你”蠕虫病毒)
发表评论(0)作者:东力, 平台:VB6.0+Win98, 阅读:12912, 日期:2000-12-02
并不神秘的VBS


--------------------------------------------------------------------------------

  最近在互联网上掀起腥风血雨的“我爱你”蠕虫病毒在亚洲爆发,并迅速在个人电脑间传播,迫使很多大公司不得不关闭电子邮件系统。病毒已经侵入了五角大楼、中央情报局、英国议会、亚洲投资银行、华盛顿邮局……自爆发以来,爱虫病毒造成了全世界数百万台电脑崩溃,还有更多的企业和个人用户在受到“爱”的威胁。
  “我爱你”(VBS/LoveLetter)是一个通过VBS编写的蠕虫病毒,别名叫做Love Letter、Love Bug、VeryFunny,该病毒通过电子邮件及IRC(Internet Relay Chat)传播,原理和“美丽杀手”类似——通过Outlook将名称为“LOVE-LETTER-FOR-YOU.TXT.VBS”的邮件发送给用户地址簿里所有的地址。它也可以产生Script.ini文件,将包括病毒的LOVE-LETTER-FOR-YOU.HTM文件通过IRC蔓延到Internet聊天室中。该病毒还有多个发作破坏模块,查找本地驱动器和网络驱动器,并在所有目录和子目录中搜索可以感染的目标,它能够感染如下扩展名的文件:vbs/vbe/js/jse/css/wsh/sct/hta/jpg/jpeg/wav/txt/gif/doc/htm/html/xls/ini/bat/com/mp3/mp2等,它用病毒代码覆盖文件原有的内容,并在文件名后面添加.vbs的后缀名,从而取代宿主文件。
  在这里,我们有必要了解爱虫病毒的发作过程:
  电子邮件附件被执行——病毒复制自身到windows系统目录——在注册表中插入键值——由随机数写一个注册表键值以便下载可执行文件win-bugsfix.exe——在Windows系统目录下产生LOVE-LETTER-FOR-YOU.HTM文档——LOVE-LETTER-FOR-YOU.HTM文档通过IRC传播,此时,病毒将该文档发送到地址簿上的所有地址上——寻找以VBS/VBE/JS/JSE/CSS/WSH/SCT/HTA为后缀的文件,覆盖原先数据并截短文档长度,并将它们的后缀名改为VBS。
  如此厉害的爱虫病毒是由VBS写出来的——可以自我复制、读写注册表、进行文件操作……
  其实,VBS并不神秘,它全称VISUAL BASIC SCRIPT。我们可以在windows的目录之下找到VBS的身影,如果说你有VB编程基础的话,要看懂这些代码并不困难,就以c:\windows\samples\wsh\registry.vbs为例,此脚本显示了如何创建和删除注册表项,用文本编辑器打开我们可以看到源代码——你会发觉读写注册表竟然这么简单!通过此目录下的其他几个文件:chart.vbs、excel.vbs、network.vbs、shortcut.vbs、showvar.vbs,我们可以看到,为什么爱虫病毒能够很容易的取得系统环境变量并且能够很容易地进行写注册表之类的操作。如果在你的系统里发现了更多的以VBS为后缀的文件,那么我提醒你:得当心了!
  在上述的几个VBS文件里,我们很容易发现,在它们的源代码中,都用到了一个重要的对象:WScript。WScript全称Windows Scripting Host,它是Win98新加进的功能, 是一种批次语言/自动执行工具——他所对应的程序“C:\WINDOWS\WScript.exe”是一个脚本语言解释器,正是它使得脚本可以被执行(就象执行批处理一样)。
  在Windows Scripting Host脚本环境里,预定义了一些对象,通过他自带的几个内置对象,可以实现获取环境变量、创建快截方式、加载程序、读写注册表等功能。在“我爱你”蠕虫病毒的源代码中我们可以发现病毒作者几乎把WSH内置对象的功能发挥的淋漓尽致。
  下面我们通过一个简单的小例子来说明如何创建、复制、删除文件。
  Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
  Set f1 = fso.CreateTextFile("c:\windows\desktop\ff.txt") 注释:创建文件
  f1.WriteLine("了解WSH和VBS的相关内容……") 注释:写文件内容
  f1.Close
  set c=fso.getfile("c:\windows\desktop\ff.txt")
  c.copy("c:\windows\desktop\wx\ff.txt") 注释:拷贝文件到指定地点
  fso.deletefile("c:\windows\desktop\ff.txt") 注释:删除文件
  Wscript.quit
  把上述代码写入文本编辑器,保存为*.vbs文件,双击运行就可以看到效果了,感觉怎么样?(北京 东力)