dis0rder0x00/DbgNexum

GitHub: dis0rder0x00/DbgNexum

DbgNexum是一个利用Windows调试API进行shellcode注入的工具。

Stars: 179 | Forks: 39

# DbgNexum - Shellcode 注入 **DbgNexum** 是一个使用 Windows 调试 API 和共享内存(文件映射)注入 shellcode 的概念验证。它避免了直接写入和读取远程内存,而是通过上下文操作强制目标进程加载并执行有效负载。 ## 概述 注入器连接到目标进程并创建一个挂起的线程。通过调试循环,它设置一个硬件断点以在特定的返回地址处捕获执行。在每次捕获时,注入器修改 CPU 寄存器以模拟函数调用,在目标进程内部编排一系列 Windows API 函数调用。 ### 关键特性 - **无 `WriteProcessMemory` / `VirtualAllocEx`:** 有效负载通过 `CreateFileMapping` 和 `MapViewOfFile` 传输。 - **无 `ReadProcessMemory`:** 该方法从线程上下文中获取所有关键信息。 ## 使用方法 1. 将您的 shellcode(和 XOR 密钥)包含在 `shellcode.h` 中 2. 查找目标进程的进程 ID。 3. 运行注入器: ``` DbgNexum.exe ``` **示例输出:** ``` [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` 使用 `MZ` 名称,"创建" 在阶段 2 和 3 中。 **5. 映射有效负载:** - 强制目标调用 `MapViewOfFile`。这将在目标地址空间中映射包含 shellcode 的共享内存部分,并具有 `EXECUTE` 权限。 **6. 执行:** - 将 `RIP` 重定向到 `MapViewOfFile` 返回的地址。 - 清除调试寄存器并断开连接。
标签:API 漏洞利用, PoC, Proof-of-Concept, RuleLab, Shellcode 注入, SSH蜜罐, Windows Debugging API, XML 请求, 云资产清单, 共享内存, 内存映射, 安全响应, 安全开发, 安全测试, 安全漏洞, 客户端加密, 攻击向量, 攻击性安全, 文件映射, 暴力破解, 硬件断点, 端点可见性, 系统调试, 调试循环, 进程注入, 远程执行, 逆向工程