实验四-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)进程已结束
在这里插入图片描述

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值