Windows内核黑客框架,C++编写的驱动模板,虚拟化程序和API

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/HoShiMin/Kernel-Bridge

内核桥接框架

"内核桥接"项目是一个使用C++20编写的Windows内核驱动程序模板、开发框架和内核模式API及封装。

支持SecureBoot的预编译和签名二进制文件 Delphi绑定

✔ 功能:

  • 带有Hyper-V支持的虚拟化程序(Intel VT-x/EPT和AMD-V/RVI)
  • 基于虚拟化程序的极快内存拦截和隐藏(支持Write-only页面,仅限VT-x)
  • 支持HookLibZydis
  • IO端口(通过IOPL进行' in/out/cli/sti'用户模式转发)
  • 系统蜂鸣器
  • MSRs、CPUID、TSC和性能计数器(RDPMC)
  • DMI/SMBIOS内存读取
  • 物理内存(分配、读写、映射)
  • 内核内存管理(分配、映射、转换)
  • 用户模式内存管理(进程中的分配等)
  • 直接的用户模式->内核模式和内核模式->用户模式内存转换
  • 基于PTE的直接内存管理
  • 直接的MDL管理
  • 从内核中获取进程/线程句柄
  • 读取和写入其他进程的内存
  • 挂起/恢复/终止进程
  • 创建内核和用户模式线程
  • 用户模式和内核之间的内存映射
  • 远程代码执行(APC传递)
  • 执行自定义用户模式Shellcode
  • 未签名驱动程序映射
  • 用户模式回调函数处理进程、线程、句柄和模块(ObRegisterCallbacksPsSet***NotifyRoutine
  • 带有用户模式回调函数的Minifilter
  • PDB解析
  • 签名和模式扫描
  • 节段管理(用于映射\\Device\PhysicalMemory等)
  • Python绑定

➰ 开发中和计划中:

  • 基于Qt的内核黑客和内存研究框架的图形用户界面
  • 内核WinSock支持
  • RTL的扩展: 钩子、注入、反汇编
  • 带SEH支持的内核可加载模块

驱动程序模板完全支持C++静态和全局初始化程序以及所有C++20功能(不包括C++异常)。所有API模块都易于使用,并且没有外部依赖,因此您可以将它们包含到自己的C++驱动程序中。所有API函数都按逻辑分类分组到命名空间中,因此您可以快速找到所需的所有函数。

💦 驱动程序模板具有以下功能:

  • 支持METHOD_BUFFERED、METHOD_IN/OUT_DIRECT和METHOD_NEITHER
  • Minifilter加载和过滤程序模板
  • SAL注释和自文档化的API
  • 准备好使用的IOCTL处理例程
  • 内置STL支持
  • 静态驱动程序验证器测试通过

💨 构建和使用:

下载Microsoft Visual Studio CommunityWindows Driver Kit。 用于驱动程序测试的使用VMware Player。 要加载未签名的驱动程序,您需要启用Windows的测试模式并禁用签名检查:

- 禁用签名检查(允许安装未签名的驱动程序):
bcdedit.exe /set loadoptions DISABLE_INTEGRITY_CHECKS
bcdedit.exe /set TESTSIGNING ON

- 启用签名检查(禁止安装未签名的驱动程序):
bcdedit.exe /set loadoptions ENABLE_INTEGRITY_CHECKS
bcdedit.exe /set TESTSIGNING OFF

- 启用内核调试器支持(WinDbg和WDK中的内核调试器):
bcdedit.exe /debug on   - 启用内核调试器支持
bcdedit.exe /debug off  - 禁用内核调试器支持

与用户模式应用程序通信:

要与用户模式进行通信,您应该使用"User-Bridge"封装作为独立的 .cpp/.h 模块或 *.dll 文件。 所有所需的头文件是 WdkTypes.hCtlTypes.hUser-Bridge.h。如果要使用扩展功能(如 minifilter 回调),还应使用 FltTypes.hCommPort.hFlt-Bridge.h。您可以在 Rtl-Bridge.h 中找到一些准备好使用的 RTL 函数(例如未签名驱动程序映射)。

文件层次结构:

/User-Bridge/API/ - 用于 KB 所有函数的用户模式 API 和封装 /Kernel-Bridge/API/ - 用于 C++ 驱动程序中使用的独立内核 API /Kernel-Bridge/Kernel-Bridge/ - 驱动程序模板文件 /SharedTypes/ - UM 和 KM 模块所需的共享类型头文件 /CommonTypes/ - 用户模式和内核模式的常用头文件和类型 /Python-Bridge/ - Python 绑定 /Kernel-Tests/ - UM 和 KM 模块以及常用函数的单元测试

示例 (使用 KbReadProcessMemory):

#include <Windows.h>

#include "WdkTypes.h"
#include "CtlTypes.h"
#include "User-Bridge.h"

using namespace Processes::MemoryManagement;

...

// 作为 minifilter 加载 (允许使用扩展功能):
KbLoader::KbLoadAsFilter(L"N:\\Folder\\Kernel-Bridge.sys", L"260000");

constexpr int Size = 64;
UCHAR Buffer[Size] = {};
 
BOOL Status = KbReadProcessMemory(
    ProcessId,
    0x7FFF0000, // ProcessId 上下文中的目标地址
    &Buffer,
    Size
);

KbLoader::KbUnload();
标签:工具分享, 主机安全