Shellcode注入技术。以C++头文件、独立的Rust程序或库的形式提供。
这是一种全新的 shellcode 注入技术,用于绕过 AV 和 EDR。该技术受 Module Stomping 启发,并具有一些相似之处。 截至本文撰写时(2022-01-23),hollows-hunter 也无法检测到它。
这项技术的最大优势在于,它不会覆盖整个模块或 PE,只覆盖一个函数,并且目标进程仍然可以使用目标模块中的任何其他函数。
缺点在于,它并非对所有函数都有效(但对大多数函数有效),详细说明见我的博客:The Good, The Bad And The Stomped Function。
注意:如果 AV 标记此行为,但签名是 msfvenom/metasploit 的签名,那没问题!你只需更换 shellcode 或对其进行加密即可。
更新: 显然这并不是第一个可用的 PoC,RastaMouse 写了一篇关于类似内容的 C# 博客文章。
你可以将头文件包含到程序中,如下所示:
#include "functionstomping.hpp"
int main() {
// 以任何方式获取 PID 并传递给函数。
DWORD pid = 3110;
FunctionStomping(pid);
return 0;
}
或者使用 Rust 程序:
cd functionstomping
cargo b
functionstomping.exe <pid>
运行此程序后,你必须从远程进程调用该函数!(如果使用了默认函数 CreateFile,则必须从远程进程调用它!)。
目前,用于运行的 shellcode 只是弹出计算器,但你只需将 unsigned char shellcode[] 替换为你自己的 shellcode 即可。我使用 C++ 17 和 VS2019 编译了带有 C++ 头文件的程序,并使用 Rust 2021 版本编译了 Rust 程序(你可以在 Cargo.toml 中查看依赖项)。
对于因本项目而导致的计算机/程序的任何损坏,我概不负责。我乐意接受贡献,请发起拉取请求,我会进行审查!