【EDR】一种对抗企业级EDR深度行为分析的双模式混淆技术

news/2025/2/22 16:51:17/文章来源:https://www.cnblogs.com/o-O-oO/p/18728111

所谓双模式混淆技术,指的是利用脚本+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 二进制空间安全

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/887418.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SSH漏洞】SSH公私钥认证原理及相关漏洞

免责声明: 本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。前言 随着信息安全意识的提升,SSH(Secure Shell)作为一种安全的远程登录协议,被广泛应用于服务器管理、数据传输等领域。SSH的核心机制之一是公私钥认证,它相比密码认证更安全,能有效抵御暴力破…

亿级流量下通用的高并发架构设计

关键词:读/写分离、数据缓存、缓存更新、CQRS、数据分片、异步写前言 既然是亿级用户应用,那么高并发必然是其架构设计的核心要素。 本文我们将介绍高并发架构设计的一些通用设计方案。 一、高并发架构设计的要点 高并发意味着系统要应对海量请求。从笔者多年的面试经验来看,…

微信小程序体验版可以保存图片线上版保存图片失败

最近,在开发一款壁纸类的小程序,体验版开发版都可以保存到手机上,但是唯独线上版本保存失败,挠头俩小时终于弄好了 发现 这并不是代码上的问题,经过一番摸索,发现用户隐私保护指引中的“相册写入”权限没有更新,提交审核过后即可。虎爷壁纸小程序

【微服务】视图:如何实现服务和数据在微服务各层的协作?

在 DDD 分层架构和微服务代码模型里,我们根据领域对象的属性和依赖关系,将领域对象进行分层,定义了与之对应的代码对象和代码目录结构。分层架构确定了微服务的总体架构,微服务内的主要对象有服务和实体等,它们一起协作完成业务逻辑。 那在运行过程中,这些服务和实体在微…

让Ai写个拓扑排序C#算法

前言使用AI的一个有趣例子有个业务,在实现过程中需要使用拓扑算法,但我以前所学的东西都还给老师了,刚好这几天公司开展了使用AI的培训与分享,遂想了下,那就让AI来搞下吧。 源代码Learning-Case/TopologyAlgorithm at main qiqiqiyaya/Learning-Case 出场AI工具豆包DeepS…

百万架构师第四十一课:RabbitMq:可靠性投递和实践经验|JavaGuide

来源:https://javaguide.net RabbitMQ 2-可靠性投递与生产实践 可靠性投递 ​ 首先需要明确,效率与可靠性是无法兼得的,如果要保证每一个环节都成功,势必会对消息的收发效率造成影响。 如果是一些业务实时一致性要求不是特别高的场合,可以牺牲一些可靠性来换取效率。① 代…

jh

什么时候才能跟jh一样强啊 什么时候可以找回曾经的自己

Java基础知识day1

特性和优势 Java三大版本 JDK,JRE,JVM 环境搭建 Java运行机制 Hello,World!Java基础知识day1 特性和优势 简单性:去除了c++中一些复杂的内存管理和指针 面向对象:一种编程思想,其实Java开发是面向过程和面向对象同时进行 可移植性:每个机器上下载了JVM,就可…

java基础知识面试

1.为什么选择java 回答:1.java相对与c++是纯粹的面向对象编程,抛弃了c++的指针和继承的复杂使用。同时提供了丰富的内置库用于开发。2.一次编译,到处允许。将java代码编译为字节码,可通过jvm虚拟机编译成机器码在不同的环境下运行。3,具有安全性和健壮性,如数组越界机制和…

JAVA项目笔记--黑马店铺的优惠卷秒杀

功能实现介绍: 先判断优惠卷的信息保证不过期等,为了防止一个用户多次进行插入,要结合悲观锁。故 根据userId在redis生成分布式锁,使得之后的用户请求无法实现。 生成订单。是对优惠卷的数目进行更新,可以使用乐观锁,所以在插入前,判断某个值是否满足即库存是否大于0,如…

APISIX

ApiSix 使用ApiSix网关作为所有业务的流量入口,它提供了动态路由、动态上游、动态证书、A/B测试、灰度发布、限速、防攻击、收集指标、监控报警、可观测、服务治理,服务熔断身份认证等功能。主要用于管理和控制API流量,安全性,性能和可用性,APIsix的主要作用包括:API管理…