打印本文 打印本文 关闭窗口 关闭窗口
VBS脚本病毒特点 原理分析以及如何防范
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1940  更新时间:2009/4/23 15:41:24  文章录入:mintao  责任编辑:mintao
uot;Of", "vC", "fS", "fSC")

   ’定义一个即将被替换字符的数组

  For fSC = 0 To 3

  vC = Replace(vC, fS(fSC), Chr((Int(Rnd * 22) + 65))

   & Chr((Int(Rnd * 22) + 65)) & Chr((Int(Rnd * 22) + 65))

   & Chr((Int(Rnd * 22) + 65)))

   ’取4个随机字符替换数组fS中的字符串

  Next

  Of.OpenTextFile(WScript.ScriptFullName, 2, 1).Writeline vC ’将替换后的代码写回文件
上面这段代码使得该VBS文件在每次运行后,其Of,vC,fS,fSC四字符串都会用随机字符串来代替,这在很大程度上可以防止反病毒软件用特征值查毒法将其查出。
2)巧妙运用Execute函数


  用过VBS程序的朋友是否会觉得奇怪:当一个正常程序中用到了FileSystemObject对象的时候,有些反病毒软件会在对这个程序进行扫描的时候报告说此Vbs文件的风险为高,但是有些VBS脚本病毒同样采用了FileSystemObject对象,为什么却又没有任何警告呢?原因很简单,就是因为这些病毒巧妙的运用了Execute方法。有些杀毒软件检测VBS病毒时,会检查程序中是否声明使用了FileSystemObject对象,如果采用了,这会发出报警。如果病毒将这段声明代码转化为字符串,然后通过Execute(String)函数执行,就可以躲避某些反病毒软件。

  
3)改变某些对象的声明方法


  譬如fso=createobject("scripting.filesystemobject"),我们将其改变为

  fso=createobject("script"+"ing.filesyste"+"mobject"),这样反病毒软件对其进行静态扫描时就不会发现filesystemobject对象。


  4)直接关闭反病毒软件


  VBS脚本功能强大,它可以直接在搜索用户进程然后对进程名进行比较,如果发现是反病毒软件的进程就直接关闭,并对它的某些关键程序进行删除。


  5.Vbs病毒生产机的原理介绍


  所谓病毒生产机就是指可以直接根据用户的选择产生病毒源代码的软件。在很多人看来这或许不可思议,其实对脚本病毒而言它的实现非常简单。


  脚本语言是解释执行的、不需要编译,程序中不需要什么校验和定位,每条语句之间分隔得比较清楚。这样,先将病毒功能做成很多单独的模块,在用户做出病毒功能选择后,生产机只需要将相应的功能模块拼凑起来,最后再作相应的代码替换和优化即可。由于篇幅关系和其他原因,这里不作详细介绍。


  三、如何防范vbs脚本病毒


  1.如何从样本中提取(加密)脚本病毒


  对于没有加密的脚本病毒,我们可以直接从病毒样本中找出来,现在介绍一下如何从病毒样本中提取加密VBS脚本病毒,这里我们以新欢乐时光为例。


  用JediEdit打开folder.htt。我们发现这个文件总共才93行,第一行<BODY onload="vbscript:KJ_start()">,几行注释后,以<html>开始,</html>节尾。相信每个人都知道这是个什么类型的文件吧!


  第87行到91行,是如下语句:
87:<script language=vbscript> 88:ExeString = "Afi FkSeboa)EqiiQbtq)S^pQbtq)AadobaPfdj)>mlibL^gb`p)CPK...;后面省略,很长!

  89:Execute("Dim KeyArr(3),ThisText"&vbCrLf&"KeyArr(0)
 = 3"&vbCrLf&"KeyArr(1) = 3"&vbCrLf&"KeyArr(2) =

  3"&vbCrLf&"KeyArr(3) = 4"&vbCrLf&"For i=1

  To Len(ExeString)"&vbCrLf&"TempNum =

   Asc(Mid(ExeString,i,1))"&vbCrLf&"If TempNum =

  18 Then"&vbCrLf&"TempNum =

  34"&vbCrLf&"End If"&vbCrLf&"TempChar =

  Chr(TempNum + KeyArr(i Mod 4))"&vbCrLf&"If TempChar =

  Chr(28) Then"&vbCrLf&"TempChar =

  vbCr"&vbCrLf&"ElseIf TempChar =

  Chr(29) Then"&vbCrLf&"TempChar =

  vbLf"&vbCrLf&"End If"&vbCrLf&"ThisText =

  ThisText & TempChar"&vbCrLf&"Next") 90:

  Execute(ThisText) 91:</script>

  
第87和91行不用解释了,第88行是一个字符串的赋值,很明显这是被加密过的病毒代码。看看89行最后的一段代码ThisText = ThisText & TempChar,再加上下面那一行,我们肯定能够猜到ThisText里面放的是病毒解密代码(熟悉vbs的兄弟当然也可以分析一下这段解密代码,too simple!就算完全不看代码也应该可以看得出来的)。第90行是执行刚才ThisText中的那段代码(经过解密处理后的代码)。


  那么,下一步该怎么做呢?很简单,我们只要在病毒代码解密之后,将ThisText的内容输出到一个文本文件就可以解决了。由于上面几行是vbscript,于是我创建了如下一个.txt文件:

  
首先,copy第88、89两行到刚才建立的.txt文件,当然如果你愿意看看新欢乐时光的执行效果,你也可以在最后输入第90行。然后在下面一行输入创建文件和将ThisText写入文件vbs代码,整个文件如下所示:


  ExeString = "Afi...’ 第88行代码

  Execute("Dim KeyAr... ’ 第89行代码

  set fso=createobject("scripting.filesystemobject")

   ’ 创建一个文件系统对象

  set virusfile=fso.createtextfile("resource.log",true)

  ’ 创建一个新文件resource.log,

  用以存放解密后的病毒代码 virusfile.writeline(ThisText)

   ’ 将解密后的代码写入resource.log

  
OK!就这么简单,保存文件,将该文件后缀名.txt改为.vbs(.vbe也可以),双击,你会发现该文件目录下多了一个文件resource.log,打开这个文件,怎么样?是不是“新欢乐时光”的源代码啊!

  
2.vbs脚本病毒的弱点
vbs脚本病毒由于其编写语言为脚本,因而它不会像PE文件那样方便灵活,它的运行是需要条件的(不过这种条件默认情况下就具备了)。笔者认为,VBS脚本病毒具有如下弱点:
1)绝大部分VBS脚本病毒运行的时候需要用到一个对象:FileSystemObject

  
2)VBScript代码是通过Windows Script Host来解释执行的。


  3)VBS脚本病毒的运行需要其关联程序Wscript.exe的支持。


  4)通过网页传播的病毒需要ActiveX的支持


  5)通过Email传播的病毒需要OE的自动发送邮件功能支持,但是绝大部分病毒都是以Email为主要传播方式的。


  3.如何预防和解除vbs脚本病毒


  针对以上提到的VBS脚本病毒的弱点,笔者提出如下集中防范措施:


  1)禁用文件系统对象FileSystemObject


  方法:用regsvr32 scrrun.dll /u这条命令就可以禁止文件系统对象。其中regsvr32是Windows\System下的可执行文件。或者直接查找scrrun.dll文件删除或者改名。


  还有一种方法就是在注册表中HKEY_CLASSES_ROOT\CLSID\下找到一个主键{0D43FE01-F093-11CF-8940-00A0C9054228}的项,咔嚓即可。


  2)卸载Windows Scripting Host


  在Windows 98中(NT 4.0以上同理),打开[控制面板]→[添加/删除程序]→[Windows安装程序]→[附件],取消“Windows Scripting Host”一项。


  和上面的方法一样,在注册表中HKEY_CLASSES_ROOT\CLSID\下找到一个主键{F935DC22-1CF0-11D0-ADB9-00C04FD58A0B}的项,咔嚓。


  3)删除VBS、VBE、JS、JSE文件后缀名与应用程序的映射

  
点击[我的电脑]→[查看]→[文件夹选项]→[文件类型],然后删除VBS、VBE、JS、JSE文件后缀名与应用程序的映射。


  4)在Windows目录中,找到WScript.exe,更改名称或者删除,如果你觉得以后有机会用到的话,最好更改名称好了,当然以后也可以重新装上。


  5)要彻底防治VBS网络蠕虫病毒,还需设置一下你的浏览器。我们首先打开浏览器,单击菜单栏里“Internet 选项”安全选项卡里的[自定义级别]按钮。把“ActiveX控件及插件”的一切设为禁用,这样就不怕了。呵呵,譬如新欢乐时光的那个ActiveX组件如果不能运行,网络传播这项功能就玩完了。


  6)禁止OE的自动收发邮件功能


  7)由于蠕虫病毒大多利用文件扩展名作文章,所以要防范它就不要隐藏系统中已知文件类型的扩展名。Windows默认的是“隐藏已知文件类型的扩展名称”,将其修改为显示所有文件类型的扩展名称。


  8)将系统的网络连接的安全级别设置至少为“中等”,它可以在一定程度上预防某些有害的Java程序或者某些ActiveX组件对计算机的侵害。


  9)呵呵,最后一项不说大家也应该知道了,杀毒软件确实很必要,尽管有些杀毒软件挺让广大用户失望,不过,选择是双方的哦。在这个病毒横飞的网络,如果您的机器没有装上杀毒软件我觉得确实挺不可思议的。


  四、对所有脚本类病毒发展的展望

  
随着网络的飞速发展,网络蠕虫病毒开始流行,而VBS脚本蠕虫则更加突出,不仅数量多,而且威力大。由于利用脚本编写病毒比较简单,除了将继续流行目前的VBS脚本病毒外,将会逐渐出现更多的其它脚本类病毒,譬如PHP,JS,Perl病毒等。但是脚本并不是真正病毒技术爱好者编写病毒的最佳工具,并且脚本病毒解除起来比较容易、相对容易防范。笔者认为,脚本病毒仍将继续流行,但是能够具有像宏病毒、新欢乐时光那样大影响的脚本蠕虫病毒只是少数。

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口