实验四-VBScript脚本病毒分析与清除
Posted 大灬白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验四-VBScript脚本病毒分析与清除相关的知识,希望对你有一定的参考价值。
【实验名称】 VBScript脚本病毒分析与清除
【实验目的】
1.了解VBScript如何实现文件、进程及注册表操作
2.了解VBScritp病毒的工作原理
3.了解VBScritp病毒的感染目标和感染方式
4.掌握编写VB脚本病毒专杀工具的一般方法
【实验原理】
VBScript语法(可查询“微软VbScript手册vbs.chm”)
1.文件操作
(1)创建文件对象:文件操作前都要创建文件对象
Set fso = CreateObject(“Scripting.FileSystemObject”)
(2)以只读方式打开当前脚本:WScript.ScriptFullname当前运行脚本的路径
fso.OpenTextFile(WScript.ScriptFullname,1)
(3)以文本形式读取file整个文件:file.ReadAll
(4)获取指定文件夹的路径 :fso.GetSpecialFolder(1)
‘ 1:'获取System文件夹路径,0:windows文件夹,2:temp文件夹
(5)根据路径获取文件:fso.GetFile(WScript.ScriptFullName)
(6)备份文件:c.Copy(dirsystem&"\\MSKernel32.vbs")
(7)取文件后缀:fso.GetExtensionName(f1.path)
(8)获得文件夹句柄:fso.GetFolder(folderspec) ‘folderspec为文件夹路径
(9)创建文件:fso.CreateTextFile(f1.path&".vbs"),f1.path&".vbs"为路径及文件名
(10)文件属性:f1.attributes = 2为隐藏文件
(11)子文件夹:folder.SubFolders
2.注册表操作
(1)创建注册表对象:Set regedit = CreateObject(“WScript.Shell”)
创建WScript.Shell对象,用来修改注册表
(2)写注册表:regedit.RegWrite regkey,regvalue
(3)删除注册表:regedit.RegDelete regkey
注:regkey,regvalue是函数RegWrite/RegDelete的参数
3.进程操作
(1)创建进程对象:Set winm = GetObject(“winmgmts:")
(2)vbs文件:由wscript.exe进程调用并执行
(3)查询所有wscript.exe进程:
pocs=winm.execquery(“select * from win32_process where name = ‘wscript.exe’”)
(4)终止进程:processor.terminate
【实验内容】
1.在虚拟机中解压文件3-课堂.rar
2.拍摄虚拟机快照
3.不使用监控软件,运行脚本文件svir.vbs,观察运行结果;
(1)弹出对话框病毒的路径:C:\\Documents and Settings\\Administrator\\桌面\\病毒实验三
(2)关闭上一个对话框之后,弹出病毒发作的对话框,且关闭一个之后又出现第二个。
(3)但是可以通过任务管理器,强制结束wscript.exe的进程,之后对话框被关闭。
4.恢复虚拟机快照;
5.使用监控软件如Filemon,Regmon,Process Explorer等,运行脚本文件svir.vbs,并观察运行结果。
注:运行结果应观察脚本文件svir.vbs运行后,对(1)文件,(2)注册表,(3)进程 的操作。
(1)文件
1、备份文件
在系统目录下备份了病毒文件
2、感染文件
指定目录下后缀为txt,jpg,mp3都将被感染成vbs文件
(1)原目录下的文件
都被感染成了vbs文件
且病毒文件将代码也备份给了被感染的文件,这样在被感染文件也编程了新的病毒文件,被传播点击启动之后又会感染其他的文件,危害其他的系统。
(2)其他文件目录:
指定目录下文件都被感染,且我们可以看到原文件都被隐藏起来了,一般人在没有显示隐藏文件夹的情况下,很容易直接启动了被感染的病毒脚本。
(2)注册表
在路径"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\”下,新建了注册项MSKernel32,数值为:C:\\WINDOWS\\system32\\MSKernel32.vbs
(3)进程
(1)脚本文件svir.vbs运行后,在Process Explorer上,新建了eplorer.exe的子进程wscript.exe进程。
(2)在File Monitor中,有多个wscript.exe的进程,可能时系统当时运行了多个VBScript的脚本
(3)用冰刃查看,病毒脚本新建了一个组
6.针对病毒行为,编写清除病毒的vbs文件
注:可以从文件、进程、注册表等方面考虑如何清除病毒及病毒对操作系统的影响
源代码:
'定义变量
Dim fso,dirsystem,file,vbscopy,folder
'创建fso文件对象,进行文件操作
Set fso = CreateObject("Scripting.FileSystemObject")
'获得当前执行的脚本文件,GetFile获得文件对象,不能对文件进行操作。
Set folder = fso.GetFile(WScript.ScriptFullname).ParentFolder
main()
Sub main()
'On Error Resume Next
Dim wscr,c
Set wscr = CreateObject("WScript.Shell")
'获取System文件夹路径,另外0表示windows文件夹,2:temp文件夹
Set dirsystem = fso.GetSpecialFolder(1)
'通过正在执行脚本路径获取脚本病毒文件
Set c = fso.GetFile(WScript.ScriptFullName)
'删除病毒备份
c.delete
'调用函数删除新增注册表项
regruns()
'遍历删除和恢复病毒感染文件
folderlist(folder.path)
msgbox("删除病毒文件")
'结束病毒进程
over()
End Sub
'函数:在注册表中删除自启动项
Sub regruns()
'删除指定路径下的注册表项
regdelete"HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\MSKernel32"
End Sub
'函数:删除注册表
Sub regdelete(regkey)
'创建WScript.Shell对象,对注册表进行操作
Set regedit = CreateObject("WScript.Shell")
'删除
regedit.RegDelete regkey
End Sub
'遍历文件夹
Sub folderlist(folderspec)
Dim f,f1,sf
'遍历显示文件夹中的所有文件
Set f = fso.GetFolder(folderspec)
Set sf = f.SubFolders
For Each f1 in sf
'查找目录中被感染的文件,删除并恢复被感染文件
deletefiles(f1.path)
'递归,继续搜索子目录
folderlist(f1.path)
Next
End Sub
'删除并恢复传染文件操作
Sub deletefiles(folderspec)
On Error Resume Next
Dim f,f1,fc,ext,s,m
Set f = fso.GetFolder(folderspec)
Set fc = f.Files
For Each f1 in fc
'取后缀
ext = fso.GetExtensionName(f1.path)
'将后缀转换为小写
ext = LCase(ext)
If (f1.attributes = 2) Then
'将隐藏的原文件恢复
f1.attributes = 0
End If
If (ext="vbs")Then
'后缀为vbs是感染文件,删除
f1.delete
End If
Next
End Sub
Sub over
'定义进程变量
Dim winm,procs
'winm对象句柄
Set winm=GetObject("winmgmts:")
'查询所有的wscript.exe进程
Set procs=winm.execquery("select * from win32_process where name='wscript.exe'")
'遍历进程
For Each processor In procs
'结束程序
processor.terminate
Next
End Sub
实验结果截图:
(1)文件已恢复
(2)注册表已恢复
(3)进程已结束
以上是关于实验四-VBScript脚本病毒分析与清除的主要内容,如果未能解决你的问题,请参考以下文章