首页| 论坛| 搜索| 消息
主题:VBScript脚本病毒分析与清除
z3960发表于 2023-04-10 19:29
VBScript脚本病毒分析与清除

【实验目的】
了解VBScript如何实现文件、进程及注册表操作了解VBScritp病毒的工作原理了解VBScritp病毒的感染目标和感染方式掌握编写VB脚本病毒专杀工具的一般方法
【实验原理】

了解VBScript语法(可查询“微软VbScript手册vbs.chm”)
1文件操作

(1) 创建文件对象:文件操作前都要创建文件对象
Set fso = CreateObject("Scripting.FileSystemObject")
(2) 打开当前脚本:==WScript.ScriptFullname当前运行脚本的路径==
fso.OpenTextFile(WScript.ScriptFullname,1)
fso.GetFile(WScript.ScriptFullName)
(3) 以文本形式读取file整个文件:file.ReadAll
(4) 获取指定文件夹的路径 :fso.GetSpecialFolder(1)==1:获取System文件夹路径,0:windows文件夹,2:temp文件夹==
(5) 备份文件:c.Copy(dirsystem&"MSKernel32.vbs")
(6) 取文件后缀:fso.GetExtensionName(f1.path)
(7) 获得文件夹句柄:fso.GetFolder(folderspec) ,'folderspec为文件夹路径
(8) 创建文件:fso.CreateTextFile(f1.path&".vbs"),f1.path&".vbs"为路径及文件名
(9) 文件属性:f1.attributes = 2为隐藏文件
(10) 子文件夹:folder.SubFolders
(11)注释:Rem comment or' comment
2注册表操作

(1) 创建注册表对象:Set regedit = CreateObject("WScript.Shell")==创建WScript.Shell对象,用来修改注册表==
(2) 写注册表:regedit.RegWrite regkey, regvalue。(regkey、regvalue是函数RegWrite的参数)
(3) 删除注册表:regedit.RegDelete regkey。(regkey是函数RegDelete的参数)
.RegWrite

向注册表写入一个值 复制代码 隐藏代码'语法 objShell.RegWrite strRegName, anyValue, '参数 objShell' 一个 WScript.Shell 对象 由CreateObject("WScript.Shell") 创建 strRegName ' 设置一个密钥而不是终止strRegName的键 'To set a key instead of a value terminate strRegNamewith a backslash character 'strRegName必须以其中一个开头 HKEY_CURRENT_USERor HKCU HKEY_USERSHKEY_LOCAL_MACHINE or HKLM HKEY_CLASSES_ROOTor HKCR HKEY_CURRENT_CONFIG strType '数据类型,需是以下之一: REG_SZ, REG_EXPAND_SZ, (String values) REG_DWORD(convert to Integer value) REG_BINARY (Integer value)
当指定键名(而不是值名)时,RegRead 将返回缺省值。When you specify a key-name (as opposed to a value-name), RegRead returns the default value.
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
【实验内容】

在虚拟机中解压文件;代码仓库:https://github.com/SKPrimin/HomeWork/tree/main/VirusAnalysisAndProtection/E4VBScriptVirusAnalysisRemoval
编写脚本

学习脚本语言VBScript对文件、注册和进程等的基本操作:
(1) 按照文档《VBScript基础》, 编写相应的脚本文件,实现对文件、注册和进程等的基本操作。
文件操作

编写有三个功能的VBScript
读入本脚本内容并弹窗 复制代码 隐藏代码' 创建文件对象,文件操作前都要创建文件对象Set fso = CreateObject("Scripting.FileSystemObject")Rem 弹窗显示自己内容'打开当前脚本 WScript.ScriptFullname当前运行脚本的路径Const ForReading = 1, ForWriting = 2Set file = fso.OpenTextFile(WScript.ScriptFullname,ForReading)' 以文本形式读取file整个文件ReadAllTextFile = file.ReadAll' 弹窗MsgBox(ReadAllTextFile)file.CloseRem备份文件Set MyFile = fso.GetFile(WScript.ScriptFullname)newfileName = "MSKernel32.vbs"MyFile.Copy(newfileName)Rem 打印出System 文件夹下直属的文件' 获取指定文件夹的路径1 获取System文件夹路径,0 windows文件夹,2 temp文件夹Const WinFolder = 1Set tfolder = fso.GetSpecialFolder(WinFolder)' 获得文件夹句柄 ,'folderspec为文件夹路径Set fjubing = fso.GetFolder(tfolder)' 创建文件,f1.path&".txt"为路径及文件名Set MySFL = fso.CreateTextFile("C:VBStest.txt")' 子文件夹Set sf = fjubing.SubFoldersFor Each f1 in sf' 取文件后缀GetAnExtension = fso.GetExtensionName(f1)s = ""s = s & f1s = s & " filename:"s = s & f1.name' 写入子文件夹文件名MySFL.WriteLine(s)NextMySFL.Close
功能一:弹窗显示自己内容https://img2022.cnblogs.com/blog/2661728/202203/2661728-20220324220331806-1914886081.png
https://img2022.cnblogs.com/blog/2661728/202203/2661728-20220324220331806-1914886081.png功能二:复制自身
https://img2022.cnblogs.com/blog/2661728/202203/2661728-20220324220332165-1609141543.png
功能三:打印出System 文件夹下直属的文件
https://img2022.cnblogs.com/blog/2661728/202203/2661728-20220324220333342-62695525.png
注册操作
复制代码 隐藏代码' 创建注册表对象:Set regedit = CreateObject("WScript.Shell")myKey = "HKCUSoftwareMicrosoftCTFAssembliesReTest"' 写注册表(regkey、regvalue是函数RegWrite的参数)regedit.RegWrite myKey, 1, "REG_SZ"' 删除注册表(regkey是函数RegDelete的参数)'regedit.RegDelete regkey
为了不对计算机造成损坏,我们在不知名的地方创建一个ReTest键,类型REG_SZ

随后双击脚本程序,再刷新注册表界面,可以看到对数值进行了修改

随后再次修改程序,注释写注册表代码,并取消删除注册表的注释,双击运行发现整个注册表项都不见了

并且如果再次双击就会报错,而Error 80070002含义是: The system can not find the file specified,侧面印证了键值被删除。

进程操作
复制代码 隐藏代码Set objWMIService = GetObject("winmgmts:")Set colScheduledJobs = objWMIService.ExecQuery("select * from win32_process where name = 'wscript.exe'")For Each objJob in colScheduledJobsWscript.Echo "Name: " & objJob.Name & VBNewLineNext
弹窗显示Name: wscript.exe,表明确有此进程正在运行

运行脚本病毒
运行脚本病毒
(1) 进入虚拟机快照“病毒分析实验室”;
即恢复之前状态,在运行病毒前一定要拍摄虚拟机快照,否则虚拟机将会受到病毒的袭扰。

(2) 文件子文件夹“subfolders”中的文件“svir”添加扩展名vbs,得到病毒文件svir.vbs;
(3) 不使用监控软件,运行脚本文件svir.vbs,观察运行结果;过程描述实物图1弹出病毒发作弹窗2Loop
下一页 (1/4)
回帖(2):
2 # 任逍遥
04-11 18:55
不错,了解了
1 # 任逍遥
04-11 18:55
来看一下

全部回帖(2)»
最新回帖
收藏本帖
发新帖