所谓双模式混淆技术,指的是利用脚本+PE格式进行混合混淆技术,该技术可以导致沙箱执行程序失败, 而且也能够加大分析难度,甚至手动执行都无法成功。
该样本原始文件名为:"Xclient.exe"和"XingCode Unblocker2025.exe", 奇怪的是, 被工具标识为是一个数据文件,而不是一个PE文件, 将其打开后, 可以看到以下内容:
果然, 程序开头不是熟悉的"MZ"头, 而是一个脚本函数, 该函数是一个用于解密数据的PowerShell函数, 但在其中也能看到PE文件的经典字符串:"!This program cannot be run in DOS mode"。在二进制数据之间,海可以看到一些代码, 许多字符使用"join"操作进行编码,例如:
PS C:\Users\REM> -join[char[]]((503-426),(-4550+4640),(71128-5595))
MZ?
这是 PE 文件的起始部分,位于初始函数之后。其他代码基于数学运算与逻辑运算符的组合。例如:
PS C:\Users\REM> ((((((((((((((((((8657-Bxor-8656)-Band2*(8657-Band-8656))-Band((8657-Bxor-8656)-Bor2*(8657-Band-8656)))-Band(((8657-Bxor-8656)-Band2*(8657-Band-8656))-Bor((8657-Bxor-8656)-Bor2*(8657-Band-8656))))+((((8657-Bxor-8656)-Band2*(8657-Band-8656))-Band((8657-Bxor-8656)-Bor2*(8657-Band-8656)))-Bor(((8657-Bxor-8656)-Band2*(8657-Band-8656))-Bor((8657-Bxor-8656)-Bor2*(8657-Band-8656)))))+0)-0)))+0)-0)))+0)-0))))
1
通常,PowerShell 应该忽略不可读字符,但如果尝试在沙盒中使用 PowerShell 执行此文件,会执行不成功。尝试编写一个小脚本以解密上述所有代码片段,但 PE 文件仍然已损坏。
如果从文件中提取ASCII字符串, 会看到一些经典恶意软件的行为特征:
remnux@remnux:/mnt/hgfs/MalwareZoo/20250215$ strings --encoding=l 7c2f2a9a6078d37ee241e43f392f825630016c8ca8416bfd12cd27501b6876d1
以下是列出的一些关键字符串:
schtasks.exe
/create /f /RL HIGHEST /sc minute /mo 1 /tn "
/create /f /sc minute /mo 1 /tn "
SOFTWARE\Microsoft\Windows\CurrentVersion\Run
.lnk
WScript.Shell
CreateShortcut
TargetPath
WorkingDirectory
Save[XWorm V5.6]
New Clinet :
UserName :
OSFullName :
USB :
CPU :
GPU :
RAM :
Groub :
https://api.telegram.org/bot
/sendMessage?chat_id=
&text=
powershell.exe
-ExecutionPolicy Bypass Add-MpPreference -ExclusionPath '
-ExecutionPolicy Bypass Add-MpPreference -ExclusionProcess '
http://ip-api.com/line/?fields=hosting
Select * from Win32_ComputerSystem
VirtualBox
SbieDll.dll
\root\SecurityCenter2
Select * from AntivirusProduct
SELECT * FROM Win32_VideoController
PING!
pong
shutdown.exe /f /s /t 0
RunShell
StartDDos
StopDDos
StartReport
StopReport
Xchat
Hosts
\drivers\etc\hosts
Modified successfully!
sendPlugin
savePlugin
RemovePlugins
Plugins Removed!
OfflineGet
RunRecovery
Recovery
RunOptions
POST / HTTP/1.1
schtasks
/delete /f /tn "
.bat
@echo off
timeout 3 > NUL
DEL "
" /f /q
ToUpper
Space
[SPACE]
)eturn
[ENTER]
)scape
[ESC]
LControlKey
)CTRL]
RControlKey
RShiftKey
[Shift]
LShiftKey
Back
)Back]
LWin
)WIN]
)Tab]
Capital
[CAPSLOCK: OFF]
[CAPSLOCK: ON]
很明显, 该样本是XWorm V5.6版本, 推测至少拥有以下功能:
持久化
: 创建高频计划任务(schtasks.exe /create /sc minute /mo 1);注册表自启动项(SOFTWARE\Microsoft\Windows\CurrentVersion\Run)
免杀功能
: 添加杀软排除路径/进程(Add-MpPreference -ExclusionPath)。
信息收集
: 查询系统信息(CPU、GPU、RAM)、虚拟机环境(VirtualBox、SbieDll.dll)、杀毒软件列表(AntivirusProduct)。
C2通信
:通过Telegram API发送数据(https://api.telegram.org/bot.../sendMessage);检测主机是否托管在云环境(http://ip-api.com/line/?fields=hosting)。
攻击性功能
:DDoS攻击(StartDDos)、强制关机(shutdown.exe)、键盘记录([SHIFT],[CTRL]键位标记)。
插件扩展
: 支持插件管理(sendPlugin/savePlugin)和数据恢复(RunRecovery)。
根据以上混淆逻辑和关键字符串, 推断该XWorm变种通过以下技术链实现动态恶意代码执行:
多阶段加载流程
阶段1: PowerShell启动器
文件结构混淆
:将完整的PE文件切割为多块,并通过Base64、Gzip压缩与数学运算编码(如-join[char[]]运算生成MZ头),隐藏在PowerShell脚本的二进制数据段中。
沙箱逃逸检查
:在脚本头部加入无效字符或语法干扰,导致标准沙盒执行失败(如文中提到的“miserably fails”),迫使真实环境中手动运行或定制解析器激活。
阶段2:内存解密与重建
动态生成PE文件
:通过数学表达式逐字节计算还原原始PE内容(如:503-426=77对应ASCII字符M),拼接成完整的可执行文件。
反射式加载
:利用PowerShell的System.Reflection.Assembly.Load方法,将生成的PE文件直接加载到内存(无落地文件),规避传统磁盘扫描。
关键执行技术
工具链依赖:
.NET API集成
:调用Add-MpPreference添加杀软排除项,利用WScript.Shell创建快捷方式或启动子进程,降低防御触发概率。
COM对象劫持
:通过schtasks.exe和WScript.Shell操作计划任务,实现高频持久化(/sc minute /mo 1每分钟触发)。
环境探测与规避:
虚拟机/沙箱检测
:查询Win32_ComputerSystem判定虚拟化环境(如VirtualBox)。检查进程模块中是否存在安全软件注入的DLL(如SbieDll.dll为沙盒关联文件)。使用http://ip-api.com接口判断是否为托管服务器(“hosting”字段),避免在云分析环境中暴露。
键盘记录隐蔽性
:日志中标记键盘事件为[CTRL]、[CAPSLOCK]等,可能通过SetWindowsHookEx挂钩键盘输入,通过异步线程传输至C2。
原创 suntiger 二进制空间安全