ReflectiveNtdll 项目使用教程
1. 项目介绍
ReflectiveNtdll
是一个专注于帮助规避端点检测和响应(EDR)系统的概念验证(POC)项目。该项目通过在内存中加载 ntdll.dll
并进行 NTDLL 脱钩(Unhooking),从而实现对 EDR 的规避。项目的主要功能包括:
- NTDLL 脱钩:从植入进程中移除
ntdll.dll
的挂钩,以避免被 EDR 检测到。 - 内存加载:将
ntdll.dll
作为 shellcode 加载到内存中,避免文件系统检测。 - Payload 加密:使用
SystemFucntion033 NtApi
对 Payload 进行加密,防止在注入时被检测到。 - 无新线程执行:通过 Fiber 技术实现无新线程的 shellcode 执行,进一步降低被检测的风险。
2. 项目快速启动
2.1 环境准备
- 操作系统:Windows 10/11
- 开发环境:Visual Studio 或 Git Bash
- 工具:
xxd
、pe2shc
2.2 下载项目
git clone https://github.com/reveng007/ReflectiveNtdll.git
cd ReflectiveNtdll
2.3 生成 shellcode
- 从 Havoc C2 或其他 C2 平台获取 shellcode。
- 使用
xxd
工具生成包含 shellcode 的 header 文件:
xxd -i shellcode.bin > shellcode.h
- 将生成的
shellcode.h
文件复制到Encrypt_shellcode
文件夹中。
2.4 编译项目
- 使用
compile.bat
脚本编译项目:
.\compile.bat
- 运行生成的可执行文件:
.\encrypt.exe shellcode.h
2.5 运行项目
- 确保目标机器的
ReleaseID
与项目中使用的ntdll.dll
版本匹配。 - 运行生成的可执行文件,观察输出结果。
3. 应用案例和最佳实践
3.1 应用案例
- EDR 规避:在渗透测试中,使用
ReflectiveNtdll
可以有效规避目标系统的 EDR 检测,提高攻击成功率。 - 内存加载:在红队行动中,通过内存加载技术可以避免在目标系统上留下文件痕迹,降低被发现的风险。
3.2 最佳实践
- 版本匹配:在执行前,务必确认目标系统的
ReleaseID
与项目中使用的ntdll.dll
版本匹配,否则可能导致植入失败。 - 加密处理:在生成 shellcode 时,使用
SystemFucntion033 NtApi
进行加密处理,以避免在注入时被检测到。 - 无痕执行:通过 Fiber 技术实现无新线程的 shellcode 执行,进一步降低被检测的风险。
4. 典型生态项目
- Havoc C2:一个强大的命令与控制(C2)平台,用于生成和管理 shellcode。
- pe2shc:由 @hasherezade 开发的工具,用于将 PE 文件转换为 shellcode。
- Get-InjectedThread:由 @jaredcatkinson 开发的 PowerShell 脚本,用于检测注入的线程。
通过结合这些生态项目,可以进一步提升 ReflectiveNtdll
的规避能力和实用性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考