Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
DbgNexum — 使用 Windows 调试 API 进行 Shellcode 注入 | Kitploit
工具/GitHubGitHub/dis0rder0x00/dbgnexum
Payload生成漏洞利用Shellcode后渗透利用渗透测试红队Shellcode 生成Payload 开发二进制利用
GitHubdis0rder0x00/dbgnexum

DbgNexum

使用 Windows 调试 API 进行 Shellcode 注入

查看仓库
18339468个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

DbgNexum - Shellcode 注入

DbgNexum 是一个概念验证程序,利用 Windows 调试 API 和共享内存(文件映射)注入 shellcode。它避免直接写入和读取远程内存,而是通过上下文操作强制目标进程自行加载和执行有效负载。

概述

该注入器附加到目标进程并创建一个挂起的线程。通过调试循环,它设置一个硬件断点,在特定的返回地址处捕获执行。每次捕获时,注入器修改 CPU 寄存器以模拟函数调用,在目标进程内部编排一系列 Windows API 函数调用。

在编写本 README 时,我针对 MDE 和 Elastic 测试了该技术,两者均未检测到它。

主要特性

  • 没有 WriteProcessMemory / VirtualAllocEx: 有效负载通过 CreateFileMapping 和 MapViewOfFile 传输。
  • 没有 ReadProcessMemory: 该方法从线程上下文中获取所有关键信息。

使用方法

该 PoC 使用一个经过 XOR 处理的 msfvenom shellcode,用于生成“calc.exe”。但请使用你自己的 shellcode!

  1. 在 shellcode.h 中包含你的 shellcode(和 XOR 密钥)
  2. 找到目标进程的进程 ID。
  3. 运行注入器:
root@kitploit:~
DbgNexum.exe <PID>

示例输出:

root@kitploit:~
[i] Section 'MZ' created and shellcode copied
[+] Bait thread created. Setting HWBP on FileTimeToSystemTime
[i] Execution Redirected:
|-> [0] Preparation & anchoring stack
|-> [1] Setting HWBP & buffer alloc
|-> [2] Copying File-Mapping name
|-> [3] Zeroing stack slot
|-> [4] Opening handle to named file mapping
|-> [5] Mapping payload into mem. with exec. perm.
|-> [6] Cleanup & shellcode execution
[+] Successfully detached from process 19256
[i] Orchestration complete.

工作原理

执行流程在注入器的调试循环与目标进程之间持续来回切换。

注入阶段

DebugLoop 函数包含主要的注入逻辑并编排“状态机”:

0. 准备阶段:

  • 注入器保存当前堆栈指针以供每个阶段重用
  • 为了获取锚定堆栈的返回地址,我们设置一个陷阱标志并将执行设置为立即的 ret 调用。

1. 分配阶段:

  • 在锚定堆栈的返回地址上设置 HWBP,以便在调用的函数返回时得到通知。
  • 准备并强制线程调用 LocalAlloc 以(显然)分配一个小缓冲区。

2. 数据设置阶段:

  • 准备并强制线程调用 memcpy 将字符串 MZ 复制到先前分配的缓冲区中。

3. 堆栈准备阶段:

  • 强制线程调用 memset 将一个堆栈槽清零。这是为了准备阶段 5,该阶段将调用 MapViewOfFile。由于该函数将使用超过 4 个参数,第 5 个参数通过堆栈传递(我们在此处设置)。

4. 打开映射阶段:

  • 强制线程调用 OpenFileMappingA,使用在阶段 2 和 3 中“创建”的名称 MZ。

5. 映射有效负载阶段:

  • 强制目标调用 MapViewOfFile。这将共享内存段(包含 shellcode)映射到目标地址空间,并具有 EXECUTE 权限。

6. 执行阶段:

  • 将 RIP 重定向到 MapViewOfFile 返回的地址。
  • 清除调试寄存器并分离。
下载工具