字符串后确认为exe,如下图所示:
可见,脚本末尾执行了: 复制代码 隐藏代码Start-Process -FilePath cmd.exe -ArgumentList "/c ${indianadZvBSCMDZ}" -WindowStyle Hidden
静默无窗口执行,以f"cmd.exe /c ${indianadZvBSCMDZ}"命令行启动cmd执行bat文件,其中${indianadZvBSCMDZ}为bat文件路径。
结合上述分析,该脚本通过使用System.Diagnostics.ProcessStartInfo启动该可执行文件,然后通过PowerShell.exe拉起cmd.exe执行其下放的批处理文件来删除该可执行文件,并退出环境。
根据以上分析,我们修改以上相关脚本末尾代码,将该可执行文件安全写入至当前目录且不执行(去除启动并执行代码,使其生成后不执行): 复制代码 隐藏代码# 原始混淆变量定义(路径生成部分修改为当前目录)${In`DIankpMjb`YeDtf} = [System.Environment]::CurrentDirectory# 修改点:临时目录=>当前目录$indIanRJLztrDfju = "${In`DIankpMjb`YeDtf}${In`Dianwu`Cr`ZjtWnS}.exe"# 修改点:路径拼接# 原始字节写入逻辑(完全保留)[IO.File]::WriteAllBytes($indIanrjlztrdfJu, ${indIanrvtnOLJbYg})# 原始.bat文件生成逻辑(完全保留)${IndIanadZvBsCmdZ} = "${In`DIankpMjb`YeDtf}${`IndIan`Wucr`Zjt`Wn`S}.bat"${In`Dian`XtL`Ijxmc`W`X} = @"@echo offtimeout /t 2 /nobreak>nuldel "$indIanrJLztrDfJu" /f /qexit"@# 原始字节写入逻辑(完全保留)[IO.File]::WriteAllText(${IndIanaDz`VbScmdz}, ${`IndIanxtL`IjX`Mcwx})# 输出生成的文件信息Get-Item $indIanrjlztrdfJu, ${IndIanaDz`VbScmdz} | Select Name, Directory, Length
于是,保存脚本并运行后,我们得到了 QYIFWA.bat (QYIFWA.exe启动器) 和 QYIFWA.exe (8b68728d3054a0f23ea137c6e6710dbc795b053fde677dc511c176a61286cc20),如下图所示:
QYIFWA.exe使用VB.NET编译,使用OneDrive图标,原始文件名为OneDrive.exe,其使用了多层代码壳或混淆器,静态分析难度较高。直接对其进行反编译可以看到如下internal class: BabelObfuscatorAttribute CrytpoObfuscator ObfuscatedByGoliath Reactor VMProtect等。de4dot识别到两种混淆器——Babel .NET和Goliath.NET,但无法完成脱壳和去混淆处理。其命中两条社区Yara规则: SUSP_OBFUSC_Goliath_Obfuscator_Oct20_1+SUSP_MSIL_NET_ConfuserEx_Module_Encryption_Sep23.PE节区名: 节(0)-xbS4;{; 节(1)-.text; 节(2)-.rsrc; 节(3)-UPX; 节(4)-.reloc.如下图所示:
其会尝试通过多种方式检测并反虚拟机、反调试器、反虚拟行为沙盒。由于在本地分析环境中无法运行该样本,故结合云端沙箱的动态运行结果进行分析。(1) 检查VMware相关文件和注册表,如下图所示:
(2) 检查VirtualBox相关文件和注册表,如下图所示:
(3) 检查注册表中BIOS版本,如下图所示:
(4) 检查注册表中SCSI接口磁盘ID,如下图所示:
(5) WMIQuery检查当前环境(包括但不限于查询Win32_VideoController Win32_OperatingSystem AntivirusProduct等)*,如下图所示:

