MemScan-EDR/README.md

11 KiB
Raw Blame History

MemScan-EDR

开源、轻量化、内存专项的 Windows 终端威胁检测与响应 (EDR) 工具 Open-Source, Lightweight, Memory-Focused Windows Endpoint Detection & Response (EDR) Tool

License: MIT .NET 8 Platform: Windows CS-WPF

中文 | MemScan-EDR 扫描所有运行中的进程,检查内存中的 Shellcode / 注入 / C2 特征,并利用 AIOpenAI / Claude / 本地模型)实时分类威胁。基于 C# WPF 构建,通过 dotnet publish 打包为单个 .exe,无需目标机器安装 .NET 运行时。

English | MemScan-EDR scans all running processes, inspects memory for shellcode/injection/C2 patterns, and uses AI (OpenAI / Claude / local models) to classify threats in real time. Built with C# WPF for zero-dependency deployment as a single .exe.


功能特性 / Features

核心能力 / Core Capabilities

能力 Capability 描述 Description
进程全量采集 Process Enumeration PID、进程名、路径、父进程树、启动命令行、数字签名、线程数、内存用量 / PID, name, path, parent tree, command line, digital signature, thread count, memory usage
内存扫描 Memory Scanning VirtualQueryEx 遍历每个已提交内存区域;检测 RWX 私有内存、未映射可执行页 / Traverses every committed region; detects RWX private memory, unbacked executable pages
签名匹配 Signature Matching 12 条内置检测规则NOP sled、CALL/POP EIP、ROR13 hash、CobaltStrike Beacon、Meterpreter、ReflectiveLoader、Mimikatz 等 / 12 built-in rules covering shellcode, C2, injection, and malware patterns
AI 威胁分类 AI Threat Classification 多提供商支持OpenAI 兼容 / Claude / Ollama / LM Studio+ 启发式规则降级引擎 / Multi-provider support + heuristic fallback engine
CE-MCP 集成 CE-MCP Integration 自动启动 Cheat Engine MCP 服务器,提供内核级内存操作能力 / Auto-launch Cheat Engine MCP server for kernel-level memory operations
中英文界面切换 Chinese/English UI 一键切换全部标签、按钮、告警文本 / One-click language toggle; all labels, buttons, and alerts switch instantly
单文件 EXE Single-File EXE dotnet publish 生成自包含 MemScan-EDR.exe,目标机器无需 .NET 运行时 / Produces a self-contained EXE — no .NET runtime needed on target

AI 提供商 / AI Providers

提供商 Provider 描述 Description Base URL 示例
OpenAI 兼容 OpenAI-Compatible OpenAI / DeepSeek / 通义千问 / 智谱 等任意 OpenAI 格式 API https://api.openai.com/v1
Claude Anthropic Claude Messages API https://api.anthropic.com
本地模型 Local Ollama / LM Studio / vLLM / llama.cpp server http://127.0.0.1:11434
启发式规则 Heuristic 内置规则引擎,无需 API Key N/A

内置签名 / Built-in Signatures

签名 Signature 类别 Category 严重性 Severity
SHELLCODE_NOP_SLED Shellcode 中 Medium
SHELLCODE_GETEIP Shellcode 中 Medium
SHELLCODE_ROR13 Shellcode 中 Medium
C2_COBALTSTRIKE C2 高 High
C2_METERPRETER C2 中 Medium
INJECTION_REFLECTIVE 注入 Injection 高 High
INJECTION_CRT 注入 Injection 中 Medium
INJECTION_VAE 注入 Injection 中 Medium
MALWARE_MIMIKATZ 恶意软件 Malware 高 High
CRYPTO_MINER 挖矿 Crypto 高 High
RANSOM_NOTE 恶意软件 Malware 高 High
PS_DOWNLOAD 恶意软件 Malware 中 Medium

架构 / Architecture

TitleBar ── 窗口控制(最小化/最大化/关闭,语言切换)
              Window Chrome (Min/Max/Close, Language Toggle)
Sidebar ── 导航(仪表盘 / 进程 / 扫描 / 设置)
             Navigation (Dashboard / Processes / Scan / Settings)
Content ── 4 个视图WPF Grid Visibility 切换)
             4 Views (WPF Grid Visibility switching)

Services:
  ProcessCollector ── CreateToolhelp32Snapshot + WMI → ProcessInfo[]
  MemoryScanner    ── VirtualQueryEx + 签名遍历 → SignatureMatch[]
  AIAnalyzer       ── HTTP → OpenAI/Claude/Ollama API → ScanResult
  CeMcpManager     ── Process.Start → python server.py

数据流 / Data Flow

[开始扫描 Start Scan] → ProcessCollector.CollectAll()
    → 每个 ProcessInfo:
        → MemoryScanner.ScanProcess() → 签名匹配
        → MemoryScanner.GetSuspiciousRegions() → RWX 私有区域
        → QuickPreScore() — score < 0.05 则跳过 API
        → AIAnalyzer.AnalyzeProcessAsync() → ScanResult
            → 结构化 Prompt API 调用
            → ParseResponse() → RiskLevel + Score + Indicators
    → 通过 IProgress<> 实时更新 DataGrid / 统计数据

快速开始 / Quick Start

环境要求 / Prerequisites

  • Windows 10 / 11 (x64)
  • .NET 8 SDK(用于编译 / for building
  • 管理员权限(用于内存扫描 / for memory scanning

编译构建 / Build

# 克隆项目 Clone
git clone https://github.com/Huang-158/MemScan-EDR.git
cd MemScan-EDR\src-csharp

# Debug 编译
dotnet build MemScanEDR.sln

# 发布单文件 EXERelease
dotnet publish MemScanEDR\MemScanEDR.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish

# 运行 Run
.\publish\MemScan-EDR.exe

或使用便捷脚本 / Or use the convenience script

.\scripts\build_csharp.bat

CE-MCP 配置(可选 / Optional

CE-MCP 通过 Cheat Engine 提供更深层的内存扫描能力。启动时如果找到 server.py 会自动启动。

CE-MCP provides deeper memory scanning via Cheat Engine. The application auto-starts it at launch if server.py is found.

  1. ce-mcp-server 放在项目同级目录 / Place ce-mcp-server next to the project
  2. 或在设置界面配置 CE-MCP 服务器路径 / Or configure the path in Settings → CE-MCP Server Path
  3. 设为 disabled 可跳过 CE-MCP / Set to disabled to run without CE-MCP

AI 配置 / AI Configuration

在应用设置面板中 / Open Settings panel in the application

  1. 选择提供商 / Select provider启发式 / OpenAI 兼容 / Claude / 本地
  2. 填写 API 地址(每个提供商有预填默认值)/ Enter API Base URL (pre-filled defaults)
  3. 填写 API Key本地存储于 data/settings.json/ Enter API Key (stored locally)
  4. 填写模型名称(如 gpt-4o-mini, claude-3-5-sonnet, llama3/ Enter Model name
  5. 点击保存 / Click Save

项目结构 / Project Structure

MemScan-EDR/
├── src-csharp/
│   ├── MemScanEDR.sln
│   └── MemScanEDR/
│       ├── MemScanEDR.csproj          # .NET 8 WPF 项目配置文件
│       ├── app.manifest               # UAC asInvoker
│       ├── App.xaml / App.xaml.cs     # 应用入口 + 崩溃日志 / Entry + crash logging
│       ├── MainWindow.xaml            # WPF 界面白色主题4 视图) / UI (white theme, 4 views)
│       ├── MainWindow.xaml.cs         # UI 逻辑 + 扫描编排 + 语言切换 / Logic + orchestrator + Lang helper
│       ├── Models/
│       │   ├── ProcessInfo.cs         # 数据模型 / Data models
│       │   ├── AIConfig.cs            # AI 提供商枚举 + 配置类 / Provider enum + config class
│       │   └── AppSettings.cs         # JSON 持久化 / JSON persistence
│       └── Services/
│           ├── ProcessCollector.cs    # P/Invoke 进程枚举 + WMI 命令行 / Process enumeration
│           ├── MemoryScanner.cs       # VirtualQueryEx 扫描 + 12 条签名 / Memory scanning + signatures
│           ├── AIAnalyzer.cs          # 多提供商 AI + 启发式降级 + 预过滤 / AI + heuristic + pre-filter
│           └── CeMcpManager.cs        # CE-MCP 子进程生命周期管理 / Subprocess lifecycle
├── rules/
│   ├── shellcode.yar                  # YARA Shellcode 规则
│   ├── injection.yar                  # YARA 注入检测规则 / Injection rules
│   └── malware_strings.yar            # YARA 恶意字符串规则 / Malware string rules
├── scripts/
│   └── build_csharp.bat               # 编译 + 发布快捷脚本 / Build + publish shortcut
├── LICENSE
└── README.md

AI 分析机制 / How AI Analysis Works

AI 分析器通过精心设计的 Prompt 降低误报率:

The AI analyzer uses a carefully designed prompt to reduce false positives

  1. 预过滤 Pre-filter:没有任何可疑特征的进程(有签名、系统路径、无 RWX 内存、无签名匹配)直接标记为 安全,不调用 API节省成本和耗时 / Processes with zero suspicious indicators are marked Safe without any API call.

  2. 结构化 Prompt Structured Prompt:每个进程生成格式化报告,包含 / Each process gets a formatted report including

    • 进程元数据PID、名称、路径、父进程、命令行、签名者/ Process metadata
    • 网络连接(协议、远程地址、状态)/ Network connections
    • 内存签名匹配(类别、严重性、描述)/ Memory signature matches
    • 可疑内存区域RWX 私有、非映像可执行页)/ Suspicious memory regions
  3. 默认安全策略 Safe-by-Default PolicyAI 被指示 >95% 的进程是良性的。需要 多个并发指标 才能提升风险等级——单一 RWX 区域或签名匹配并不足够 / The AI is instructed that >95% of processes are benign; requires multiple concurring indicators.

  4. 启发式降级 Heuristic FallbackAI API 不可用时加权启发式引擎接管采用保守阈值≥0.50 为可疑≥0.75 为高危)/ Conservative thresholds take over (≥0.50 for suspicious, ≥0.75 for high).


声明 / Disclaimer

第三方 / 非关联声明 Third-Party / Non-Affiliation Statement

本项目与 Cheat Engine、其原作者 Dark Byte 以及任何 AI 提供商OpenAI、Anthropic 等)无任何关联。 This project is not affiliated with Cheat Engine, Dark Byte, or any AI provider (OpenAI, Anthropic, etc.).

合法使用声明 Legal Use Statement

本工具仅用于合法的安全研究、教育及授权的安全评估。未经授权对非自有或未被许可的系统使用属违法行为。使用者须遵守当地法律法规并自行承担所有风险。 This tool is intended for legitimate security research, education, and authorized security assessments only. Unauthorized use is illegal. Users are responsible for complying with all applicable laws.


许可证 / License

MIT License — 详见 LICENSE / See LICENSE for full text.