[![English](https://img.shields.io/badge/English-README_EN.md-blue?style=flat-square&logo=markdown)](README_EN.md)
# 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_EN.md # English docs ``` --- ## 声明 > 本项目与 Cheat Engine、其原作者 Dark Byte 以及任何 AI 提供商(OpenAI、Anthropic 等)无任何关联。 > > 本工具仅用于**合法的安全研究、教育及授权的安全评估**。未经授权对非自有或未被许可的系统使用属违法行为。使用者须遵守当地法律法规并自行承担所有风险。 --- ## 许可证 MIT License — 详见 [LICENSE](LICENSE)。