PatchWerk 使用教程
1. 项目介绍
PatchWerk 是一个用于清理 NTDLL 系统调用存根的开源项目。它通过不打开 ntdll.dll 的句柄来修补系统调用钩子,从而在用户空间中实现钩子规避。这个项目的主要目的是允许植入代码使用 NTAPI,同时如果 EDR 检查调用堆栈,它将显示调用来源于 NTDLL。PatchWerk 基本上是对 Raph Mudge 的原始解钩方法的改进,但是不需要从磁盘映射 ntdll.dll 或打开远程进程的句柄。
2. 项目快速启动
首先,确保你的开发环境已经准备好 C 编译器。
git clone https://github.com/boku7/patchwerk.git
cd patchwerk
make
编译成功后,你将得到一个可执行文件,可以使用以下命令来修补一个进程的 NTDLL 系统调用存根。
./patchwerk <PID>
其中 <PID>
是你想要修补的进程的进程 ID。如果你想修补当前进程,只需运行 ./patchwerk
而不指定 PID。
3. 应用案例和最佳实践
应用案例
- 在渗透测试中,使用 PatchWerk 清理目标进程的 NTDLL 系统调用存根,以规避hook检测。
- 在开发自定义的植入代码时,使用 PatchWerk 来确保调用 NTAPI 的安全性。
最佳实践
- 确保在测试环境中使用 PatchWerk,避免在生产环境中使用未经充分测试的代码。
- 使用前,确保你理解了项目的原理和潜在的风险。
4. 典型生态项目
PatchWerk 可以与以下项目配合使用,以增强其功能和安全性:
- HellsGate & HalosGate: 这些项目提供了直接调用系统调用的方法,可以与 PatchWerk 一起使用来增强其能力。
- 各种 EDR/AV 工具: 使用 PatchWerk 可以帮助规避这些工具的检测,但请确保遵守相关法律和道德规范。
请谨慎使用开源项目,并确保你的行为符合法律法规及道德准则。