S12cybersecurity/NtUnhook

GitHub: S12cybersecurity/NtUnhook

通过从挂起子进程内存中提取干净的 ntdll.dll,选择性恢复被 EDR/AV hook 的系统调用 stub,实现无文件、高隐蔽性的用户态 hook 绕过。

Stars: 41 | Forks: 5

# 内存中的选择性 NTDLL Unhooking **内存中的选择性系统调用 Unhooking** 是一种隐蔽的方法,通过从挂起的子进程中加载的 `ntdll.dll` 干净副本中,选择性地恢复真实的系统调用 stub,来绕过 `ntdll.dll` 中的用户态 hook。这种方法避免了磁盘 I/O,保持了进程的稳定性,并增强了对抗 EDR/AV hook 的隐蔽性。 ## 项目 - **UnhookDetectedHooks**:此项目用于解除 AV 在 NTDLL 中检测到的 hook - **UnhookDesiredHooks**:此项目用于解除 AV 在 NTDLL 中指定的 hook ## 概述 现代的终端检测与响应(EDR)和杀毒软件(AV)解决方案通常会在 `ntdll.dll` 中 hook 原生 API 函数,以监控系统调用。常见的绕过技术要么依赖于硬编码的系统调用号(因操作系统版本而异),要么从磁盘加载干净的 DLL(这会触发文件访问警报)。 此工具使用了一种无文件技术,该技术: - 创建一个挂起的子进程(例如 `cmd.exe`),以便在内存中加载未被 hook 的 `ntdll.dll`。 - 从挂起的进程内存中读取干净的 `ntdll.dll` 镜像。 - 解析以 "Nt" 开头的导出函数,以定位系统调用 stub。 - 选择性地用干净的 stub 覆盖当前进程 `ntdll.dll` 中被 hook 的系统调用 stub。 - 避免触及磁盘或覆盖整个 DLL,从而保持稳定性并逃避检测。 ## 功能 - **无文件 unhooking**:不涉及磁盘 I/O;所有操作均在内存中进行。 - **选择性恢复**:仅恢复被 hook 的系统调用 stub,最大程度地减少内存更改。 - **进程稳定性**:避免覆盖整个 DLL,降低崩溃或不兼容的风险。 - **隐蔽性**:绕过 EDR/AV 解决方案常用的用户态 hook 技术。 - **跨版本兼容**:通过动态读取干净的系统调用 stub,可在不同 Windows 版本上运行。 ## 工作原理 1. **创建挂起进程** 以挂起模式启动子进程(例如 `cmd.exe`)。此进程会加载干净、未被 hook 的 `ntdll.dll`。 2. **读取干净的 NTDLL 镜像** 在挂起的子进程中定位 `ntdll.dll` 的基地址,并使用 `ReadProcessMemory` 将其完整镜像读取到本地缓冲区中。 3. **解析导出表** 从干净的缓冲区和当前进程的 `ntdll.dll` 中提取导出的函数名和地址。重点关注以 `"Nt"` 开头的原生 API 函数。 4. **识别系统调用 stub** 在干净的镜像中查找 23 字节的系统调用序言模式(例如 `mov r10, rcx; mov eax, imm; syscall; ret`)。 5. **重新映射被 hook 的函数** 使用匹配的相对虚拟地址(RVA),用干净的字节覆盖当前进程中被 hook 的系统调用 stub。动态调整内存保护属性以进行写入。 6. **清理** 终止挂起的进程。当前进程现已恢复真实的系统调用 stub。 ## 与其他技术的比较 | 技术 | 磁盘 I/O | 稳定性 | 隐蔽性 | 环境依赖性 | |--------------------|----------|---------------|---------------|-----------------------| | 从磁盘加载干净的 DLL | 是 | 中等 | 低(文件操作) | 无 | | Hell’s Gate | 否 | 中等 | 中等 | 假定 stub 完整 | | Heaven’s Gate | 否 | 中等 | 中等 | 需要 WoW64(32 位主机) | | Perun’s Fart | 否 | 中高 | 高 | 需要挂起的进程 | | **内存中的选择性 NTDLL Unhooking** | 否 | 高 | 非常高 | 需要挂起的进程 | ## 用法 - 编译提供的 C++ 示例。 - 该工具会自动创建一个挂起的进程,提取干净的 stub,并修补当前的 `ntdll.dll`。 ## 要求 - 带有 `ntdll.dll` 的 Windows 操作系统。 - 具备创建挂起进程和读取进程内存的访问权限。 - 兼容 x64 Windows 进程。 ## 许可 此工具和代码示例仅用于教育和符合道德的红队目的。 ## 作者 由 0x12 Dark Development 开发 红队 / 恶意软件开发者 欢迎提交 issue 或贡献改进。
标签:EDR绕过, 免杀技术, 内存解钩, 暴力破解检测, 端点可见性, 高交互蜜罐