Youssix/PEBWatch
GitHub: IWishI808/PEBWatch
PEBWatch 是一款用于检测 Windows 进程环境块篡改的防御性研究工具。
Stars: 0 | Forks: 0
# PEBWatch
PEBWatch 是一款面向 Windows x64 平台的防御性研究原型,用于检测对进程环境块 (PEB) 的篡改。它可对 PEB 状态进行快照,进行时间维度的比较,并将 PEB 模块列表与通过 `VirtualQuery` 发现的内存区域进行交叉验证。
其目标是演示实用的 PEB 取证技术:模块脱链、命令行篡改、镜像路径欺骗以及调试标志操控。
## 已实现功能
- 在 x64 环境下通过 `__readgsqword(0x60)` 直接访问 PEB
- 手动定义 PEB、LDR 和进程参数结构体
- 遍历 `InLoadOrderModuleList`
- 获取基准及当前 PEB 快照
- 检测快照间新增和移除的模块
- 通过 `VirtualQuery` 扫描带有 PE 头的已提交 `MEM_IMAGE` 区域
- 检测 PEB 列表中缺失的、但有镜像内存支持的幽灵模块
- 检测 `BeingDebugged` 和 `NtGlobalFlag` 的变化
- 通过 `NtQueryInformationProcess` 检查 `ProcessDebugPort` 的一致性
- 检测 `ImagePathName` 和命令行的变化
## 防御性应用场景
- 识别从 PEB 加载器列表中脱链的模块
- 检测启动后的命令行或镜像路径篡改
- 发现基础的反调试标志操控行为
- 对比用户态进程元数据与内存中的实际证据
- 支持事件响应与恶意软件分析实验室的工作流程
## 构建
依赖项:
- Visual Studio 2022
- x64 原生工具命令提示符
构建命令:
```
cl /W4 /O2 /DWIN32_LEAN_AND_MEAN /Fe:pebwatch.exe src\main.c src\peb_reader.c src\tamper_detect.c /link ntdll.lib kernel32.lib
```
运行命令:
```
pebwatch.exe
```
该工具会获取基准快照,打印已加载模块,然后每两秒检查一次变化。
## 当前状态
PEBWatch 是一款面向实验室环境的原型工具。它使用手动定义的结构体布局和进程内检查。目前尚未集成 ETW、内核 VAD 遍历或驱动组件;这些将是未来自然的功能扩展方向。
## 负责任地使用
本项目旨在用于防御性取证、恶意软件分析实验室和授权的安全研究。它不包含隐蔽、持久化、注入或规避功能。
## 相关文章
- [PEB 内部机制](https://youssix.github.io/2026/05/15/peb-windows-internals/)
## 许可证
MIT
标签:Awesome列表, Conpot, DAST, PEB监控, SecList, Visual Studio, Windows安全, x64架构, 内存取证, 内存扫描, 命令行篡改, 图像路径欺骗, 子域名枚举, 安全原型, 完整性监控, 实验室工具, 客户端加密, 恶意软件分析, 数字取证, 模块列表检查, 端点可见性, 篡改检测, 系统安全, 结构定义, 网络安全, 自动化脚本, 调试标志检测, 进程完整性, 进程环境块, 防御性安全, 隐私保护