如何使用ModuleShifting测试Module Stomping和Module Overloading注入技术

关于ModuleShifting

ModuleShifting是一款针对Module Stomping和Module Overloading注入技术的安全测试工具,该工具基于Python ctypes实现其功能,因此可以通过Python解释器或Pyramid在内存中完整执行,这样就可以避免使用编译加载器了。

需要注意的是,该技术可以与PE或Shellcode Payload结合使用,但当前版本的ModuleShifting只能与Shellcode Payload一起使用。

功能介绍

当该工具与Shellcode Payload一起使用时,将执行下列操作:

1、通过LoadLibrary加载合法的宿主DLL;

2、将指定区域的内存权限修改为RW;

3、将Shellcode重写至目标区域;

4、添加可选填充数据以更好地伪装成误报行为;

5、将权限更改为RX;

6、通过函数指针执行Shellcode;

7、在执行的Shellcode上写入原始DLL内容;

当该工具与一个PE Payload一起使用时,则会执行下列操作:

1、通过LoadLibrary加载合法的宿主DLL;

2、将指定区域的内存权限修改为RW;

3、将PE内容逐节复制到指定目标点上;

4、添加可选填充数据以更好地伪装成误报行为;

5、执行基地址重新分配;

6、解析导入;

7、通过将权限设置为其本机值来完成内存处理(避免创建RWX内存区域);

8、TLS回调执行;

9、执行PE入口点;

工具安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好Python 3环境。接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

复制代码
git clone https://github.com/naksyn/ModuleShifting.git

ModuleShifting可以和Pyramid一起使用,配合一个Python解释器,即可在内存中完整执行本地进程注入了。

此时我们还需要使用下列命令克隆Pyramid代码库:

复制代码
git clone https://github.com/naksyn/Pyramid

然后使用你喜欢的C2生成一个Shellcode Payload,并将其拖动到Pyramid的Delivery_files文件夹中。

修改Pyramid Modules文件夹中moduleshifting.py脚本中的相关参数,然后使用下列命令开启Pyramid服务器:

复制代码
python3 pyramid.py -u testuser -pass testpass -p 443 -enc chacha20 -passenc superpass -generate -server 192.168.1.2 -setcradle moduleshifting.py

工具运行截图

工具演示视频

视频地址 :【点我观看

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

ModuleShifting :【GitHub传送门

参考资料

https://github.com/naksyn/talks/blob/main/x33fcon%202023%20-%20Improving%20the%20Stealthiness%20of%20Memory%20Injection%20Techniques.pdf

Improving the stealthiness of memory injections techniques | Naksyn's blog

Masking Malicious Memory Artifacts -- Part II: Blending in with False Positives

相关推荐
长行2 小时前
Python|Windows 安装 DeepSpeed 安装方法及报错 Unable to pre-compile async_io 处理
windows·python·deepspeed
百锦再2 小时前
python之路并不一马平川:带你踩坑Pandas
开发语言·python·pandas·pip·requests·tools·mircro
Python之栈2 小时前
5款拖拽式Python GUI生成器助你快速打造炫酷界面
python
灏瀚星空2 小时前
基于 Python 与 GitHub,打造个人专属本地化思维导图工具全流程方案(上)
开发语言·人工智能·经验分享·笔记·python·个人开发·visual studio
用什么都重名2 小时前
「实战指南」使用 Python 调用大模型(LLM)
python·大模型·llm·api调用
是Dream呀2 小时前
Python从0到100(一百):基于Transformer的时序数据建模与实现详解
开发语言·python·transformer
资源存储库2 小时前
【笔记】如何修改一个conda环境的python版本?
笔记·python·conda
xcLeigh2 小时前
AI的提示词专栏:Prompt 与 Python Pandas 的结合使用指南
人工智能·python·ai·prompt·提示词
草莓熊Lotso2 小时前
Python 入门超详细指南:环境搭建 + 核心优势 + 应用场景(零基础友好)
运维·开发语言·人工智能·python·深度学习·学习·pycharm
正在走向自律2 小时前
ksycopg2实战:Python连接KingbaseES数据库的完整指南
数据库·python·国产数据库·kingbase·kingbasees·数据库平替用金仓·ksycopg2