
代码:
Indirect-Shellcode-Executor-stable1.0.zip
(4.42 KB)
工具:
indirect_shellcode.exe
(1.04 MB)
一种基于Rust开发的新型红队工具,通过利用Windows API中一个被忽视的行为特性,展示了一种能够有效规避现代端点检测与响应系统的新方法。
这个名为“间接Shellcode执行器”的工具,巧妙地使用ReadProcessMemory函数来实现Shellcode注入,从而绕过了安全产品通常重点监控的、用于内存操作的常规API调用。
这项技术的核心,基于安全研究员Jean-Pierre LESUEUR(DarkCoderSc)的早期发现。ReadProcessMemory函数的设计初衷是从指定进程中读取数据,但其参数中包含一个名为*lpNumberOfBytesRead的[out]类型指针参数。
该参数本意是向调用者报告成功读取的字节数。然而,攻击者可以通过操控这个指针,诱导API将数据写入目标进程的内存空间。这就相当于利用一个“读”函数,创造出了一个“写”的能力。
由于该方法完全避开了WriteProcessMemory或memcpy这类标准的内存写入函数,因此对于依赖挂钩这些特定API来检测代码注入行为的杀毒软件和EDR解决方案而言,形成了一个有效的检测盲区。
基于Rust的实战化红队工具实现
由研究员Mimorep开发的“间接Shellcode执行器”是一个功能完整的Rust概念验证工具。与纯理论的研究不同,它旨在红队演练中开箱即用,帮助安全人员测试和评估现有防御体系的有效性。对于从事网络安全与渗透测试的红队成员而言,掌握此类前沿规避技术至关重要。
该工具专门针对32位架构(i686-pc-windows-msvc)编译,并为操作员提供了三种不同的攻击场景:
- 远程载荷执行:工具可以直接从远程命令控制服务器获取Shellcode(例如,将有效载荷隐藏在PNG图片文件中),并在内存中直接执行。
- 命令行注入:操作员可以通过命令行直接传递Shellcode字符串或二进制文件,实现即时执行。
- 基于文件的执行:工具可以读取隐藏在本地文件(如文档或临时文件)中的有效载荷,并将其注入到指定进程中。
此工具的开发也体现了现代后端与架构技术(如Rust)在安全领域的应用,其高效与安全的内存管理特性为编写此类底层工具提供了便利。
该工具凸显了安全厂商面临的一个持续挑战:Windows API体系极其庞大,许多原本用于合法目的的功能,都可能被攻击者重新利用,以实现规避。通过操纵*lpNumberOfBytesRead参数逐字节地构建有效载荷,间接Shellcode执行器得以在那些专门搜索快速、连续内存写入模式的启发式分析引擎的眼皮底下隐秘运行。
github:github.com/CCNODE22/indirect-shellcode-executor
|