diff --git a/README.md b/README.md index 9300518..408123a 100644 --- a/README.md +++ b/README.md @@ -1,55 +1,209 @@ -
+
-[![.NET 8](https://img.shields.io/badge/.NET-8.0-purple.svg)](https://dotnet.microsoft.com/) -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) -[![Platform: Windows](https://img.shields.io/badge/Platform-Windows%2010%2F11-lightgrey.svg)](https://www.microsoft.com/windows) - -
- - -   - +[![English](https://img.shields.io/badge/English-README_EN.md-blue?style=flat-square&logo=markdown)](README_EN.md)
-
- # MemScan-EDR -> **Memory-Focused Windows Endpoint Detection & Response (EDR)** -> **内存专项的 Windows 终端威胁检测与响应工具** +> **开源、轻量化、内存专项的 Windows 终端威胁检测与响应 (EDR) 工具** -A lightweight EDR tool that scans running processes, inspects memory for shellcode/injection/C2 patterns, and uses AI to classify threats in real time. +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) +[![.NET 8](https://img.shields.io/badge/.NET-8.0-purple.svg)](https://dotnet.microsoft.com/) +[![Platform: Windows](https://img.shields.io/badge/Platform-Windows%2010%2F11-lightgrey.svg)](https://www.microsoft.com/windows) +[![CS-WPF](https://img.shields.io/badge/UI-WPF-green.svg)](https://github.com/dotnet/wpf) -轻量级 EDR 工具,扫描运行中进程内存中的恶意特征,利用 AI 实时分类威胁。 - -
- -
- -| [📖 中文文档](README_CN.md) | [📖 English Docs](README_EN.md) | -|:---:|:---:| - -
+MemScan-EDR 扫描所有运行中的进程,检查内存中的 Shellcode / 注入 / C2 特征,并利用 AI(OpenAI / Claude / 本地模型)实时分类威胁。基于 C# WPF 构建,通过 `dotnet publish` 打包为单个 `.exe`,无需目标机器安装 .NET 运行时。 --- -## Quick Preview / 快速预览 +## 待办事项 -| Dashboard 仪表盘 | Scan 扫描 | Settings 设置 | -|:---:|:---:|:---:| -| Real-time risk stats | Process-level scan log | Multi-provider AI config | +| 优先级 | 状态 | 任务 | 负责人 | 备注 | +|:---:|:---:|---|---|---| +| 🔴 高 | ⬜ 未开始 | YARA 规则文件加载与匹配引擎 | | `rules/*.yar` 文件解析 | +| 🔴 高 | ⬜ 未开始 | 网络连接 PID 关联(TCP 连接→进程) | | `GetConnectionPid()` 实现 | +| 🔴 高 | ⬜ 未开始 | 内存 Dump 与 PE 结构解析 | | 可疑进程内存导出 | +| 🟡 中 | ⬜ 未开始 | 审计日志持久化(JSON/SQLite) | | 扫描历史记录查询 | +| 🟡 中 | ⬜ 未开始 | PDF/HTML 报告导出 | | Dashboard → 一键导出 | +| 🟡 中 | ⬜ 未开始 | 定时扫描调度(每天/每小时) | | 后台定时任务 | +| 🟡 中 | ⬜ 未开始 | 进程自动终止(一键处置高危进程) | | `TerminateProcess` P/Invoke | +| 🟡 中 | ⬜ 未开始 | 隐藏进程检测(EPROCESS 链表遍历) | | CE-MCP 内核级 | +| 🟢 低 | ⬜ 未开始 | 系统托盘最小化 | | NotifyIcon + 后台运行 | +| 🟢 低 | ⬜ 未开始 | 自定义签名规则编辑器 | | GUI 内编辑 YARA/签名 | +| 🟢 低 | ⬜ 未开始 | 暗色主题切换 | | 白色/暗色双主题 | +| ✅ 完成 | ✅ 已完成 | 多 AI 提供商 + 预过滤 + 防误报 Prompt | | v1.2 | +| ✅ 完成 | ✅ 已完成 | CE-MCP 自动启动子进程管理 | | v1.1 | +| ✅ 完成 | ✅ 已完成 | 中英文界面一键切换 | | v1.1 | +| ✅ 完成 | ✅ 已完成 | 12 条内置内存签名检测 | | v1.0 | +| ✅ 完成 | ✅ 已完成 | WPF 白色主题现代化界面 | | v1.0 | --- -## One-Line Build / 一行编译 +## 功能特性 -```powershell -dotnet publish src-csharp\MemScanEDR\MemScanEDR.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish +### 核心能力 + +| 能力 | 描述 | +|---|---| +| **进程全量采集** | PID、进程名、路径、父进程树、启动命令行、数字签名、线程数、内存用量 | +| **内存扫描** | `VirtualQueryEx` 遍历每个已提交内存区域;检测 RWX 私有内存、未映射可执行页 | +| **签名匹配** | 12 条内置检测规则:NOP sled、CALL/POP EIP、ROR13 hash、CobaltStrike Beacon、Meterpreter、ReflectiveLoader、Mimikatz 等 | +| **AI 威胁分类** | 多提供商支持(OpenAI 兼容 / Claude / Ollama / LM Studio)+ 启发式规则降级引擎 | +| **CE-MCP 集成** | 自动启动 Cheat Engine MCP 服务器,提供内核级内存操作能力 | +| **中英文界面切换** | 一键切换全部标签、按钮、告警文本 | +| **单文件 EXE** | `dotnet publish` 生成自包含 `MemScan-EDR.exe`,目标机器无需 .NET 运行时 | + +### AI 提供商 + +| 提供商 | 描述 | Base URL 示例 | +|---|---|---| +| **OpenAI 兼容** | OpenAI / DeepSeek / 通义千问 / 智谱 等 | `https://api.openai.com/v1` | +| **Claude** | Anthropic Claude Messages API | `https://api.anthropic.com` | +| **本地模型** | Ollama / LM Studio / vLLM / llama.cpp | `http://127.0.0.1:11434` | +| **启发式规则** | 内置规则引擎,无需 API Key | N/A | + +### 内置签名 + +| 签名 | 类别 | 严重性 | +|---|---|---| +| `SHELLCODE_NOP_SLED` | Shellcode | 中 | +| `SHELLCODE_GETEIP` | Shellcode | 中 | +| `SHELLCODE_ROR13` | Shellcode | 中 | +| `C2_COBALTSTRIKE` | C2 | 高 | +| `C2_METERPRETER` | C2 | 中 | +| `INJECTION_REFLECTIVE` | 注入 | 高 | +| `INJECTION_CRT` | 注入 | 中 | +| `INJECTION_VAE` | 注入 | 中 | +| `MALWARE_MIMIKATZ` | 恶意软件 | 高 | +| `CRYPTO_MINER` | 挖矿 | 高 | +| `RANSOM_NOTE` | 恶意软件 | 高 | +| `PS_DOWNLOAD` | 恶意软件 | 中 | + +--- + +## 架构 + +``` +TitleBar ── 窗口控制(最小化/最大化/关闭,语言切换) +Sidebar ── 导航(仪表盘 / 进程 / 扫描 / 设置) +Content ── 4 个视图(WPF Grid Visibility 切换) + +服务层: + ProcessCollector ── CreateToolhelp32Snapshot + WMI → ProcessInfo[] + MemoryScanner ── VirtualQueryEx + 签名遍历 → SignatureMatch[] + AIAnalyzer ── HTTP → OpenAI/Claude/Ollama → ScanResult + CeMcpManager ── Process.Start → python server.py +``` + +数据流: +``` +[开始扫描] → ProcessCollector.CollectAll() + → 每个进程: + → MemoryScanner.ScanProcess() → 签名匹配 + → MemoryScanner.GetSuspiciousRegions() → RWX 私有区域 + → QuickPreScore() — score < 0.05 跳过 API + → AIAnalyzer.AnalyzeProcessAsync() → ScanResult + → IProgress<> 实时更新界面 ``` --- -## License / 许可证 +## 快速开始 -MIT — see [LICENSE](LICENSE) +### 环境要求 + +- Windows 10 / 11 (x64) +- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +- 管理员权限(用于内存扫描) + +### 编译构建 + +```powershell +git clone https://github.com/Huang-158/MemScan-EDR.git +cd MemScan-EDR\src-csharp + +# Debug 编译 +dotnet build MemScanEDR.sln + +# 发布单文件 EXE +dotnet publish MemScanEDR\MemScanEDR.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish + +# 运行 +.\publish\MemScan-EDR.exe +``` + +或: + +```powershell +.\scripts\build_csharp.bat +``` + +### CE-MCP 配置(可选) + +1. 将 [ce-mcp-server](https://github.com/Huang-158/ce-mcp-server) 放在项目同级目录 +2. 或在设置界面 → CE-MCP 服务器路径 配置 +3. 设为 `disabled` 可跳过 CE-MCP + +### AI 配置 + +1. 选择提供商:启发式 / OpenAI 兼容 / Claude / 本地 +2. 填写 API 地址 +3. 填写 API Key(本地存储) +4. 填写模型名称 +5. 点击保存 + +--- + +## AI 分析机制 + +1. **预过滤**:无任何可疑特征的进程直接标记为`安全`,不调用 API +2. **结构化 Prompt**:每个进程生成含元数据、网络连接、内存签名、可疑区域的格式化报告 +3. **默认安全策略**:AI 被指示 >95% 的进程是良性的;需要多个并发指标才提升风险等级 +4. **启发式降级**:API 不可用时采用保守阈值(≥0.50 可疑,≥0.75 高危) + +--- + +## 项目结构 + +``` +MemScan-EDR/ +├── src-csharp/ +│ ├── MemScanEDR.sln +│ └── MemScanEDR/ +│ ├── MemScanEDR.csproj +│ ├── App.xaml / App.xaml.cs +│ ├── MainWindow.xaml / MainWindow.xaml.cs +│ ├── Models/ +│ │ ├── ProcessInfo.cs +│ │ ├── AIConfig.cs +│ │ └── AppSettings.cs +│ └── Services/ +│ ├── ProcessCollector.cs +│ ├── MemoryScanner.cs +│ ├── AIAnalyzer.cs +│ └── CeMcpManager.cs +├── rules/ +│ ├── shellcode.yar +│ ├── injection.yar +│ └── malware_strings.yar +├── scripts/ +│ └── build_csharp.bat +├── LICENSE +├── README.md # 中文文档(默认) +└── README_EN.md # English docs +``` + +--- + +## 声明 + +> 本项目与 Cheat Engine、其原作者 Dark Byte 以及任何 AI 提供商(OpenAI、Anthropic 等)无任何关联。 +> +> 本工具仅用于**合法的安全研究、教育及授权的安全评估**。未经授权对非自有或未被许可的系统使用属违法行为。使用者须遵守当地法律法规并自行承担所有风险。 + +--- + +## 许可证 + +MIT License — 详见 [LICENSE](LICENSE)。 diff --git a/README_CN.md b/README_CN.md deleted file mode 100644 index 9b9e46d..0000000 --- a/README_CN.md +++ /dev/null @@ -1,204 +0,0 @@ -# MemScan-EDR - -> **开源、轻量化、内存专项的 Windows 终端威胁检测与响应 (EDR) 工具** - -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) -[![.NET 8](https://img.shields.io/badge/.NET-8.0-purple.svg)](https://dotnet.microsoft.com/) -[![Platform: Windows](https://img.shields.io/badge/Platform-Windows%2010%2F11-lightgrey.svg)](https://www.microsoft.com/windows) -[![CS-WPF](https://img.shields.io/badge/UI-WPF-green.svg)](https://github.com/dotnet/wpf) - -MemScan-EDR 扫描所有运行中的进程,检查内存中的 Shellcode / 注入 / C2 特征,并利用 AI(OpenAI / Claude / 本地模型)实时分类威胁。基于 C# WPF 构建,通过 `dotnet publish` 打包为单个 `.exe`,无需目标机器安装 .NET 运行时。 - ---- - -## 待办事项 - -| 优先级 | 状态 | 任务 | 负责人 | 备注 | -|:---:|:---:|---|---|---| -| 🔴 高 | ⬜ 未开始 | YARA 规则文件加载与匹配引擎 | | `rules/*.yar` 文件解析 | -| 🔴 高 | ⬜ 未开始 | 网络连接 PID 关联(TCP 连接→进程) | | `GetConnectionPid()` 实现 | -| 🔴 高 | ⬜ 未开始 | 内存 Dump 与 PE 结构解析 | | 可疑进程内存导出 | -| 🟡 中 | ⬜ 未开始 | 审计日志持久化(JSON/SQLite) | | 扫描历史记录查询 | -| 🟡 中 | ⬜ 未开始 | PDF/HTML 报告导出 | | Dashboard → 一键导出 | -| 🟡 中 | ⬜ 未开始 | 定时扫描调度(每天/每小时) | | 后台定时任务 | -| 🟡 中 | ⬜ 未开始 | 进程自动终止(一键处置高危进程) | | `TerminateProcess` P/Invoke | -| 🟡 中 | ⬜ 未开始 | 隐藏进程检测(EPROCESS 链表遍历) | | CE-MCP 内核级 | -| 🟢 低 | ⬜ 未开始 | 系统托盘最小化 | | NotifyIcon + 后台运行 | -| 🟢 低 | ⬜ 未开始 | 自定义签名规则编辑器 | | GUI 内编辑 YARA/签名 | -| 🟢 低 | ⬜ 未开始 | 暗色主题切换 | | 白色/暗色双主题 | -| ✅ 完成 | ✅ 已完成 | 多 AI 提供商 + 预过滤 + 防误报 Prompt | | v1.2 | -| ✅ 完成 | ✅ 已完成 | CE-MCP 自动启动子进程管理 | | v1.1 | -| ✅ 完成 | ✅ 已完成 | 中英文界面一键切换 | | v1.1 | -| ✅ 完成 | ✅ 已完成 | 12 条内置内存签名检测 | | v1.0 | -| ✅ 完成 | ✅ 已完成 | WPF 白色主题现代化界面 | | v1.0 | - ---- - -## 功能特性 - -### 核心能力 - -| 能力 | 描述 | -|---|---| -| **进程全量采集** | PID、进程名、路径、父进程树、启动命令行、数字签名、线程数、内存用量 | -| **内存扫描** | `VirtualQueryEx` 遍历每个已提交内存区域;检测 RWX 私有内存、未映射可执行页 | -| **签名匹配** | 12 条内置检测规则:NOP sled、CALL/POP EIP、ROR13 hash、CobaltStrike Beacon、Meterpreter、ReflectiveLoader、Mimikatz 等 | -| **AI 威胁分类** | 多提供商支持(OpenAI 兼容 / Claude / Ollama / LM Studio)+ 启发式规则降级引擎 | -| **CE-MCP 集成** | 自动启动 Cheat Engine MCP 服务器,提供内核级内存操作能力 | -| **中英文界面切换** | 一键切换全部标签、按钮、告警文本 | -| **单文件 EXE** | `dotnet publish` 生成自包含 `MemScan-EDR.exe`,目标机器无需 .NET 运行时 | - -### AI 提供商 - -| 提供商 | 描述 | Base URL 示例 | -|---|---|---| -| **OpenAI 兼容** | OpenAI / DeepSeek / 通义千问 / 智谱 等 | `https://api.openai.com/v1` | -| **Claude** | Anthropic Claude Messages API | `https://api.anthropic.com` | -| **本地模型** | Ollama / LM Studio / vLLM / llama.cpp | `http://127.0.0.1:11434` | -| **启发式规则** | 内置规则引擎,无需 API Key | N/A | - -### 内置签名 - -| 签名 | 类别 | 严重性 | -|---|---|---| -| `SHELLCODE_NOP_SLED` | Shellcode | 中 | -| `SHELLCODE_GETEIP` | Shellcode | 中 | -| `SHELLCODE_ROR13` | Shellcode | 中 | -| `C2_COBALTSTRIKE` | C2 | 高 | -| `C2_METERPRETER` | C2 | 中 | -| `INJECTION_REFLECTIVE` | 注入 | 高 | -| `INJECTION_CRT` | 注入 | 中 | -| `INJECTION_VAE` | 注入 | 中 | -| `MALWARE_MIMIKATZ` | 恶意软件 | 高 | -| `CRYPTO_MINER` | 挖矿 | 高 | -| `RANSOM_NOTE` | 恶意软件 | 高 | -| `PS_DOWNLOAD` | 恶意软件 | 中 | - ---- - -## 架构 - -``` -TitleBar ── 窗口控制(最小化/最大化/关闭,语言切换) -Sidebar ── 导航(仪表盘 / 进程 / 扫描 / 设置) -Content ── 4 个视图(WPF Grid Visibility 切换) - -服务层: - ProcessCollector ── CreateToolhelp32Snapshot + WMI → ProcessInfo[] - MemoryScanner ── VirtualQueryEx + 签名遍历 → SignatureMatch[] - AIAnalyzer ── HTTP → OpenAI/Claude/Ollama → ScanResult - CeMcpManager ── Process.Start → python server.py -``` - -数据流: -``` -[开始扫描] → ProcessCollector.CollectAll() - → 每个进程: - → MemoryScanner.ScanProcess() → 签名匹配 - → MemoryScanner.GetSuspiciousRegions() → RWX 私有区域 - → QuickPreScore() — score < 0.05 跳过 API - → AIAnalyzer.AnalyzeProcessAsync() → ScanResult - → IProgress<> 实时更新界面 -``` - ---- - -## 快速开始 - -### 环境要求 - -- Windows 10 / 11 (x64) -- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) -- 管理员权限(用于内存扫描) - -### 编译构建 - -```powershell -git clone https://github.com/Huang-158/MemScan-EDR.git -cd MemScan-EDR\src-csharp - -# Debug 编译 -dotnet build MemScanEDR.sln - -# 发布单文件 EXE -dotnet publish MemScanEDR\MemScanEDR.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish - -# 运行 -.\publish\MemScan-EDR.exe -``` - -或: - -```powershell -.\scripts\build_csharp.bat -``` - -### CE-MCP 配置(可选) - -1. 将 [ce-mcp-server](https://github.com/Huang-158/ce-mcp-server) 放在项目同级目录 -2. 或在设置界面 → CE-MCP 服务器路径 配置 -3. 设为 `disabled` 可跳过 CE-MCP - -### AI 配置 - -1. 选择提供商:启发式 / OpenAI 兼容 / Claude / 本地 -2. 填写 API 地址 -3. 填写 API Key(本地存储) -4. 填写模型名称 -5. 点击保存 - ---- - -## AI 分析机制 - -1. **预过滤**:无任何可疑特征的进程直接标记为`安全`,不调用 API -2. **结构化 Prompt**:每个进程生成含元数据、网络连接、内存签名、可疑区域的格式化报告 -3. **默认安全策略**:AI 被指示 >95% 的进程是良性的;需要多个并发指标才提升风险等级 -4. **启发式降级**:API 不可用时采用保守阈值(≥0.50 可疑,≥0.75 高危) - ---- - -## 项目结构 - -``` -MemScan-EDR/ -├── src-csharp/ -│ ├── MemScanEDR.sln -│ └── MemScanEDR/ -│ ├── MemScanEDR.csproj -│ ├── App.xaml / App.xaml.cs -│ ├── MainWindow.xaml / MainWindow.xaml.cs -│ ├── Models/ -│ │ ├── ProcessInfo.cs -│ │ ├── AIConfig.cs -│ │ └── AppSettings.cs -│ └── Services/ -│ ├── ProcessCollector.cs -│ ├── MemoryScanner.cs -│ ├── AIAnalyzer.cs -│ └── CeMcpManager.cs -├── rules/ -│ ├── shellcode.yar -│ ├── injection.yar -│ └── malware_strings.yar -├── scripts/ -│ └── build_csharp.bat -├── LICENSE -├── README.md # 语言切换入口 -├── README_CN.md # 中文文档(当前) -└── README_EN.md # English docs -``` - ---- - -## 声明 - -> 本项目与 Cheat Engine、其原作者 Dark Byte 以及任何 AI 提供商(OpenAI、Anthropic 等)无任何关联。 -> -> 本工具仅用于**合法的安全研究、教育及授权的安全评估**。未经授权对非自有或未被许可的系统使用属违法行为。使用者须遵守当地法律法规并自行承担所有风险。 - ---- - -## 许可证 - -MIT License — 详见 [LICENSE](LICENSE)。 diff --git a/README_EN.md b/README_EN.md index 326a5d5..2682640 100644 --- a/README_EN.md +++ b/README_EN.md @@ -1,3 +1,9 @@ +
+ +[![中文](https://img.shields.io/badge/中文-README.md-red?style=flat-square&logo=markdown)](README.md) + +
+ # MemScan-EDR > **Open-Source, Lightweight, Memory-Focused Windows Endpoint Detection & Response (EDR) Tool** @@ -181,8 +187,7 @@ MemScan-EDR/ ├── scripts/ │ └── build_csharp.bat ├── LICENSE -├── README.md # Language switch entry -├── README_CN.md # 中文文档 +├── README.md # 中文文档(默认) └── README_EN.md # English docs (current) ```