243 lines
8.4 KiB
Markdown
243 lines
8.4 KiB
Markdown
<div align="right">
|
||
|
||
[](README_EN.md)
|
||
|
||
</div>
|
||
|
||
# MemScan-EDR v2.0
|
||
|
||
> **AI 驱动的内存威胁检测引擎 — 三级联动检测管线**
|
||
|
||
[](LICENSE)
|
||
[](https://dotnet.microsoft.com/)
|
||
[](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)。
|