Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

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

工具目录

分类

查看所有分类
Loading categories
Win32_Offensive_Cheatsheet — Win32 与内核滥用技术,供渗透测试人员使用 | Kitploit
工具/GitHubGitHub/matthieu-hackwitharts/win32_offensive_cheatsheet
持久化机制漏洞利用IDS/IPS规避逆向工程后渗透利用渗透测试二进制分析学习与教育红队

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
精选资源
Payload 开发
GitHubmatthieu-hackwitharts/win32_offensive_cheatsheet

Win32_Offensive_Cheatsheet

Win32 与内核滥用技术,供渗透测试人员使用

查看仓库
981136173年前Kitploit 审核通过

Win32 攻击性速查表

由 @UVision 和 @RistBS 为渗透测试人员和红队成员制作的 Win32 与内核滥用技术

开发模式已启用,欢迎任何帮助 :)

  • Windows 二进制文档
    • PE 结构
    • PE 头
    • 解析 PE
    • 导出地址表 (EAT)
    • 解析函数地址
    • 导入地址表 (IAT)
      • 解析 IAT
    • 导入查找表 (ILT)
    • 启用 SeDebug 特权
  • 执行某些二进制文件
    • 经典 shellcode 执行
    • DLL 执行
    • RAW 文件转 PE
  • 代码注入技术
    • CreateRemoteThread 注入
    • 进程镂空
    • APC 队列技术
    • Early Bird
    • 反射式 DLL 注入
    • DLL 注入
    • Process Doppelganging
    • 纤程
    • CreateThreadPoolWait
    • 线程劫持
    • MapView 代码注入
    • 模块踩踏
    • 函数踩踏
  • 挂钩技术
    • 内联挂钩
    • IAT 挂钩
  • 逆向绕过技术
    • 调用与字符串混淆
    • 手动函数解析
    • Win32 API 哈希
  • EDR/终端绕过
    • 直接系统调用
    • 高级语言
    • 修补内联挂钩
    • 检测挂钩
    • 修补 ETW
    • 沙箱绕过
    • 调试绕过
    • VirtualProtect 技术
    • 全新副本解除挂钩
    • Hell's Gate
    • Heaven's Gate
    • PPID 欺骗
    • 进程检测回调
    • 堆加密
    • 睡眠混淆
  • 驱动程序编程基础
    • 基本概念
    • 系统服务调度表 (SSDT)
    • 驱动入口
    • 输入输出)
    • 与驱动程序通信
    • 驱动程序签名 (Microsoft)
    • 自定义回调 (ObRegisterCallbacks)
  • 攻击性驱动程序编程
    • 修补内核回调
    • 修补受保护进程
  • 使用 Win32 API 提高 OPSEC
    • 持久化
      • 计划任务
    • 命令行欺骗
  • 其他内容
    • x64 调用约定
    • 间接执行
      • 使用 SetProcessValidCallTargets 绕过 CFG

  • 恶意软件/复杂技术
    • Emotet 案例:使用 WMI 进行 PPID 欺骗
    • Zeus 恶意软件隐藏文件技术
    • SpyEye 键盘记录器挂钩技术
    • 最荒谬的恶意软件停止方法 (WannaCry)

Windows 二进制文档

有用的工具和网站/书籍/速查表

  • 🔹 https://github.com/RistBS/Awesome-RedTeam-Cheatsheet/ (非常好的速查表)
  • 🔹 https://www.ired.team/ (很棒的红队速查表,包含出色的代码注入笔记)
  • 🔹 https://undocumented.ntinternals.net/ (未记录的 NT 函数)
  • 🔹 https://docs.microsoft.com/en-us/windows/win32/api/ (微软官方文档)
  • 🔹 Windows Kernel Programming - Pavel Yosifovich
  • 🔹 https://research.checkpoint.com/ (关于逃避检测、反调试等非常有趣的文档)
  • 🔹 https://www.vx-underground.org/ (关于恶意软件开发与逆向的精彩内容)

PE 结构

PE 头

  • DOS_HEADER:PE 的第一个头,包含 MS DOS 消息("This programm cannot be run in DOS mode....")、MZ 头(用于标识 PE 的魔数)以及一些存根内容。
  • IMAGE_NT_HEADER:包含 PE 文件签名、文件头和可选头
  • SECTION_TABLE:包含节头
  • SECTIONS:不是头,但值得了解:这些是 PE 的节区

详情:https://www.researchgate.net/figure/PE-structure-of-normal-executable_fig1_259647266

解析 PE

简单的 PE 解析,用于获取 IAT 和 ILT 绝对地址:

  • 获取基址:GetModuleHandleA(NULL);
  • PIMAGE_DOS_HEADER = 基址,DOS 头
  • PIMAGE_NT_HEADER = BaseAddress+PIMAGE_DOS_HEADER.e_lfnanew(NT_HEADER 的 RVA)
  • IMAGE_DATA_DIRECTORY = PIMAGE_NT_HEADER 的 OptionnalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT]
  • IMAGE_IMPORT_DIRECTORY = IMAGE_DATA_DIRECTORY.VirtualAddress(IMAGE_IMPORT_DIRECTORY 的 RVA)
  • IMAGE_IMPORT_DESCRIPTOR = BaseAddress + IMAGE_IMPORT_DIRECTORY.VirtualAddress(IMAGE_IMPORT_DESCRIPTOR 的 RVA)
  • IAT 绝对地址:IMAGE_IMPORT_DESCRIPTOR.FirstThunk(IAT 的 RVA)+ 基址
  • ILT 绝对地址:IMAGE_IMPORT_DESCRIPTOR.OriginalFirstThunk(ILT 的 RVA)+ 基址

导出地址表 (EAT)

EAT 解析 PE 导出的所有函数,也解析 DLL。它定义在 IMAGE_EXPORT_DIRECTORY 结构中:```c
typedef struct _IMAGE_EXPORT_DIRECTORY { DWORD Characteristics; DWORD TimeDateStamp; WORD MajorVersion; WORD MinorVersion; DWORD Name; // name of DLL DWORD Base; // first ordinal number DWORD NumberOfFunctions; // number of entries in EAT DWORD NumberOfNames; // number of entries in (1) (2) DWORD AddressOfFunctions; // RVA EAT and contains also RVA of exported functions DWORD AddressOfNames; // Pointer array contains address of function names DWORD AddressOfNameOrdinals; // Pointer array contains address of ordinal number of functions (index in AddressOfFunctions) } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY;

请注意,EAT 定义在 DLL 中,而不是在“真正的”PE 中(PE 会使用已加载 DLL 的 EAT 来解析它想要使用的函数的指针)。

### 解析函数地址

**使用函数地址**

你还在等什么?找到这个函数!

**使用序号**

序号是 `AddressOfFunctions` 数组中对应函数地址的**索引位置**。它可用于**检索函数的正确地址**,如下所示:

 让我们尝试使用给定的序号 3 来查找对应地址(Addr4)。

 - **AddressOfFunctions** : *Addr1 Addr2 Addr3 Addr4 .... AddrN*
 - **AdressOfNameOrdinals** : *2 5 7 3 ... N*

 我们要查找的地址位于第 3 个位置(从 0 开始),而我们的序号对应的是该地址的**索引**。

**使用函数名称**

AddressOfNames 数组中的第 N 个元素对应于 AddressOfNameOrdinals 数组中的第 N 个元素:使用给定的名称,您可以检索对应的序号,然后使用该序号继续查找函数地址。

## 导入地址表(IAT)

- PE 加载器不知道哪个地址对应哪个函数:让我们调用 IAT 来拯救我们
- 定义在 IMAGE_IMPORT_DIRECTORY 结构中:```c
typedef struct _IMAGE_IMPORT_DESCRIPTOR {
    DWORD	Characteristics; 
    DWORD	OriginalFirstThunk;	// RVA to ILT
    DWORD	TimeDateStamp;	
    DWORD	ForwarderChain;
    DWORD	Name; 		        // RVA of imported DLL name
    DWORD	FirstThunk;             // RVA to IAT
} IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;

总而言之,IAT 是一个表,其中包含指向 PE 从已加载的 DLL(ntdll、kernel32 等)导入的多个函数的指针。

解析 IAT

  1. 获取 IAT 的 RVA
  2. 遍历 IMPORT_DESCRIPTOR 结构:Name 成员是当前 DLL 名称的 RVA
  3. 要获取真实的 DLL 名称:在 ILT(originalFirstThunk+BaseAddress)中找到它
  4. 要获取当前 DLL 的导出函数:PIMAGE_IMPORT_BY_NAME function_name->Name = ImageBase+AdressOfData

此处有详细代码示例:https://github.com/matthieu-hackwitharts/Win32_Offensive_Cheatsheet/blob/main/miscellaneous/iat_parser.cpp

导入查找表

PE 导入的每个 DLL 都有其自己的 ILT。``` Absolute address of ILT = BaseAddress + OriginalFirstThunk (IAT)

它包含导入 DLL 中所有函数的名称。

<br>


## 启用 SeDebug 特权

**SeDebug** 特权是 Windows 特权列表中“最抢手”的特权。它允许你“调试”任何授权进程,这可以转化为多种攻击性操作,例如以 ```PROCESS_ALL_ACCESS``` 特权打开句柄。

要在用户模式下启用它,你需要使用一个类似这样的函数:```cpp
void EnableDebugPriv()
{
    HANDLE hToken;
    LUID luid;
    TOKEN_PRIVILEGES tkp;

    OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken);

    LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid);

    tkp.PrivilegeCount = 1;
    tkp.Privileges[0].Luid = luid;
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;

    AdjustTokenPrivileges(hToken, false, &tkp, sizeof(tkp), NULL, NULL);

    CloseHandle(hToken); 
}

该函数将打开当前进程的令牌,然后将其调整为 SE_PRIVILEGE_ENABLED 特权,该特权与目标权限相对应。

执行某些二进制文件

经典 shellcode 执行

代码示例:https://github.com/matthieu-hackwitharts/Win32_Offensive_Cheatsheet/blob/main/shellcode_samples/classic.cpp

DLL 执行

这项技术几年前曾有不俗的绕过成功率;然而,随着 EDR 和其他端点解决方案数量的增加,应尽可能避免写入磁盘。

代码示例:https://github.com/matthieu-hackwitharts/Win32_Offensive_Cheatsheet/blob/main/shellcode_samples/dll_classic.cpp

原始文件转 PE

下载工具