soneca7/sysmon-patch-tool
GitHub: soneca7/sysmon-patch-tool
通过内存补丁技术临时静默 Sysmon 事件记录的 Windows 安全研究与红蓝对抗辅助工具。
Stars: 0 | Forks: 0
# SysmonPatchTool
用于受控环境下的取证分析和反数字取证与恢复(Counter Digital Forensics and Recovery,CDFR)技术模拟的个人工具。
## 功能
SysmonPatchTool 定位 Windows Event Log 服务进程,并在目标进程的内存中对 `NtWriteFile` 打补丁,从而暂时抑制 Sysmon 事件的写入。在可配置的时间间隔后,原始字节会自动恢复——系统不会发生永久性更改。
应用的补丁非常简单:`NtWriteFile` 存根的前 6 个字节被替换为 `MOV EAX, 0 / RET`,使函数在不写入任何内容的情况下返回 `STATUS_SUCCESS`。
基本流程:
1. 通过 SCM 定位 `eventlog` 服务的 PID
2. 在调用进程中启用 `SeDebugPrivilege`
3. 以内存读写权限打开目标进程
4. 在目标的 `ntdll.dll` 中解析 `NtWriteFile`
5. 通过 `NtProtectVirtualMemory` + `NtWriteVirtualMemory` 应用补丁
6. 监控 `Microsoft-Windows-Sysmon/Operational` 通道以检测静默状态
7. 自动恢复原始字节(默认:30 秒)
## 结构
```
SysmonPatchTool/
├── include/
│ ├── SysmonPatchLib.hpp # API pública
│ └── SysmonPatchTypes.hpp # Tipos, enums, callbacks
├── src/
│ ├── api/
│ │ └── SysmonPatchLib.cpp # Facade da biblioteca
│ └── core/
│ ├── SysmonPatchTool.cpp # Engine principal
│ └── SysmonPatchTool.hpp
└── examples/
├── basic_usage/main.cpp
└── advanced_usage/main.cpp # CLI interativa com callbacks
```
## 编译
- Visual Studio 2022, MSVC v143
- C++17
- x64 Release
- 以 **管理员身份** 运行
## 基本用法
```
#include
using namespace SysmonPatch;
int main() {
if (!Library::Initialize()) return 1;
Library::Patch([]() {
// callback disparado quando o Sysmon para de gerar eventos
});
Sleep(60000);
Library::Restore();
Library::Shutdown();
}
```
## 配置
```
PatchConfig config{};
config.restoreDelayMs = 30000; // restaura após 30s
config.eventAgeThresholdSec = 10; // considera "silêncio" após 10s sem eventos
config.autoRestore = true;
Library::SetConfig(config);
```
## 用例
- 在 SIEM/EDR 管道中模拟规避窗口,以衡量检测时间
- 通过受控盲点培训事件响应分析师
- 研究 Sysmon 被静默时取证工具的行为
- 验证日志管道的完整性和连续性
## 警告
仅在自己的系统上使用,或在获得明确授权的情况下使用。在生产环境中使用或未经许可使用可能是非法的。
标签:AMSI绕过, Awesome列表, C++, Conpot, ETW绕过, NtWriteFile, SeDebugPrivilege, Sysmon, Windows安全, 事件日志篡改, 云资产清单, 内存修补, 内联挂钩, 协议分析, 反取证, 威胁检测, 安全意识培训, 安全评估, 数字取证对抗, 数据擦除, 权限提升, 私有化部署, 端点可见性, 绕过技术, 逆向工程, 邮件钓鱼, 防御规避