MemScan-EDR/README.md

243 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div align="right">
[![English](https://img.shields.io/badge/English-README_EN.md-blue?style=flat-square&logo=markdown)](README_EN.md)
</div>
# MemScan-EDR v2.0
> **AI 驱动的内存威胁检测引擎 — 三级联动检测管线**
[![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)
MemScan-EDR v2.0 全面重构了病毒识别逻辑:**40 维内存特征向量 + 无监督基线检测 + 监督分类器 + MITRE ATT&CK 规则引擎** 三级联动,大幅降低误报并提升扫描速度。基于 C# WPF 构建,打包为单个 `.exe`,无需目标机器安装 .NET 运行时。
---
## v2.0 核心改进
| 维度 | v1.0 | v2.0 |
|------|------|------|
| **扫描方式** | 逐区域逐签名匹配保护位 | 预过滤 → 特征提取 → 三级 AI 判定 |
| **特征维度** | 简单 (签名/保护/类型) | **40 维** (元数据 + 权限 + 代码 + 熵 + 网络 + DLL) |
| **无监督检测** | 无 | **4 类进程基线库** (Z-score + 重构误差) |
| **误报处理** | 系统提示词约束 LLM | **JIT/安全软件/脚本引擎** 白名单修正 |
| **速度** | O(区域×签名) | **80% 进程预过滤跳过**,仅 20% 进 AI 管线 |
---
## 功能特性
### 核心能力
| 能力 | 描述 |
|---|---|
| **40 维特征提取** | 内存页权限分布、PE 完整性、Shannon 熵、可疑 API/字符串、网络行为、DLL 加载链 |
| **三级联动检测** | 第一层: 无监督基线异常 → 第二层: 监督分类器 → 第三层: MITRE ATT&CK 规则复核 |
| **Process Hollowing 检测** | 内存 PE 头与磁盘文件比对,识别进程掏空攻击 |
| **Shannon 熵分析** | 采样计算内存区域熵值,识别加密/压缩载荷 (高熵 > 7.0) |
| **15 条 MITRE 规则** | T1055 进程注入、T1055.012 进程掏空、T1003 凭据转储、T1496 挖矿、T1486 勒索等 |
| **15 条内置签名** | NOP sled、CobaltStrike、Meterpreter、Mimikatz、ReflectiveLoader 等 |
| **智能误报修正** | JIT 运行时 (.NET/Java/Node.js)、安全软件、脚本引擎 (PowerShell)、开发工具 |
| **扫描模式** | 快速 (元数据) / 平衡 (采样) / 深度 (全量) 三档可选 |
| **LLM 辅助研判** | 可选开启大模型对可疑进程二次确认 |
| **中英文界面** | 一键切换全部 UI 文本 |
### 三级联动检测流程
```
[快速预过滤] → 跳过 >80% 已签名安全进程
[第一层: 基线异常检测] → 40 维特征 Z-score + 重构误差
↓ 完全匹配基线 → 直接安全
[第二层: 监督分类器] → 加权线性模型 + 决策树规则
↓ 良性 + 低基线异常 → 安全
[第三层: MITRE 规则复核] → 15 条内存攻击规则 + 误报修正
↓ AI + 基线 + 规则 三级交叉验证 → 最终判定
```
### 内置签名 (15 条)
| 签名 | 类别 | 严重性 |
|---|---|---|
| `SHELLCODE_NOP_SLED` | Shellcode | 中 |
| `SHELLCODE_GETEIP` | Shellcode | 中 |
| `SHELLCODE_ROR13` | Shellcode | 中 |
| `SHELLCODE_URLDOWNLOAD` | Shellcode | 中 |
| `C2_COBALTSTRIKE` | C2 | 高 |
| `C2_METERPRETER` | C2 | 中 |
| `INJECTION_REFLECTIVE` | 注入 | 高 |
| `INJECTION_CRT` | 注入 | 中 |
| `INJECTION_VAE` | 注入 | 中 |
| `PROC_HOLLOW` | 注入 | 高 |
| `MALWARE_MIMIKATZ` | 恶意软件 | 高 |
| `CRYPTO_MINER` | 挖矿 | 高 |
| `RANSOM_NOTE` | 恶意软件 | 高 |
| `PS_DOWNLOAD` | 恶意软件 | 中 |
| `KEYLOGGER_API` | 恶意软件 | 中 |
---
## 架构
```
Models:
MemoryFeatures ── 40 维 AI 特征向量
BaselineProfile ── 正常程序基线 (4 类进程)
ProcessInfo ── 进程元数据 + 网络 + 内存区域
Services:
FeatureExtractor ── 从进程内存提取全维度特征
EntropyAnalyzer ── Shannon 熵计算 (采样优化)
PEHeaderAnalyzer ── PE 完整性验证 + Hollowing 检测
BaselineEngine ── 无监督基线异常检测 (Z-score + 重构误差)
ClassificationEngine ── 监督分类器 (加权 + 决策树)
RuleEngine ── 15 条 MITRE ATT&CK 内存攻击规则
DetectionPipeline ── 三级联动编排引擎
AIAnalyzer ── 集成管线 + LLM 辅助研判
MemoryScanner ── 实际字节匹配 + 按需扫描
ProcessCollector ── 进程枚举 + 模块列表采集
```
数据流:
```
[开始扫描] → ProcessCollector.CollectAll()
→ 快速预过滤 (不读内存, 跳过 >80% 进程)
→ FeatureExtractor.Extract() → MemoryFeatures (40 维向量)
→ 第一层: BaselineEngine.Analyze() → 基线异常分数
→ 第二层: ClassificationEngine.Classify() → 恶意/可疑/良性
→ 第三层: RuleEngine.Validate() → MITRE 规则 + 误报修正
→ 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-2.0/
├── src-csharp/
│ └── MemScanEDR/
│ ├── MemScanEDR.csproj
│ ├── App.xaml / App.xaml.cs
│ ├── MainWindow.xaml / MainWindow.xaml.cs
│ ├── Models/
│ │ ├── MemoryFeatures.cs ★ 40 维 AI 特征向量
│ │ ├── BaselineProfile.cs ★ 正常程序基线库
│ │ ├── ProcessInfo.cs
│ │ ├── AIConfig.cs
│ │ └── AppSettings.cs
│ └── Services/
│ ├── FeatureExtractor.cs ★ 核心特征提取器
│ ├── EntropyAnalyzer.cs ★ Shannon 熵分析
│ ├── PEHeaderAnalyzer.cs ★ PE 完整性验证
│ ├── BaselineEngine.cs ★ 无监督基线检测
│ ├── ClassificationEngine.cs★ 监督分类器
│ ├── RuleEngine.cs ★ MITRE ATT&CK 规则
│ ├── DetectionPipeline.cs ★ 三级联动管线
│ ├── AIAnalyzer.cs (集成管线 + LLM)
│ ├── MemoryScanner.cs (优化版字节匹配)
│ └── ProcessCollector.cs
├── rules/
│ ├── shellcode.yar
│ ├── injection.yar
│ └── malware_strings.yar
├── scripts/
│ └── build_csharp.bat
├── LICENSE
├── README.md
└── README_EN.md
```
---
## 快速开始
### 环境要求
- 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
# 发布单文件 EXE
dotnet publish src-csharp/MemScanEDR/MemScanEDR.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish
# 运行
.\publish\MemScan-EDR.exe
```
---
## 声明
> 本工具仅用于**合法的安全研究、教育及授权的安全评估**。未经授权对非自有或未被许可的系统使用属违法行为。使用者须遵守当地法律法规并自行承担所有风险。
---
## 许可证
MIT License — 详见 [LICENSE](LICENSE)。