kbugra/huntmcp

GitHub: kbugra/huntmcp

HuntMCP 是一个确定性优先的 SOC 调查原型平台,通过规则引擎检测可疑活动并借助 LLM 辅助生成威胁狩猎报告,实现从日志解析到调查报告的端到端分析流程。

Stars: 1 | Forks: 0

# HuntMCP HuntMCP 是一个达到作品集级别、确定性优先的 SOC 调查原型。 它能解析导出的安全日志,规范化事件,应用基于规则的狩猎 逻辑,提取 IOC,使用 CTI 来源对其进行富化,并生成一份 分析师风格的 Markdown 报告。 核心理念很简单:LLM 不是检测引擎。HuntMCP 首先使用可审计的规则检测 可疑活动,然后仅将兼容 OpenAI 的 LLM 用作分析师助手,以提供解释、严重性推理、MITRE ATT&CK 建议、误报说明和推荐的后续步骤。 ## 项目状态 本仓库旨在作为一个网络安全作品集项目和高级 MVP,而非用于生产的 SIEM 或替代生产环境的检测方案。 当前验证状态: - CLI 管道可端到端运行。 - FastAPI 后端支持调查作业和持久化的案例摘要。 - SQLite 持久化存储案例、运行、事件、发现、IOC、富化结果、 分诊结果、报告和作业状态。 - 即使存在本地 `.env`,确定性测试也能离线运行。 - 当前验证基线:`302 passed`,`ruff check` 干净,`ruff format` 干净。 ## 它的功能 HuntMCP 可以: - 解析 CSV、JSON 和 JSONL 导出的日志。 - 规范化 Windows Security、Sysmon、DNS、Proxy/Web 和通用 CSV 日志。 - 运行受 Sigma 启发的确定性检测规则。 - 提取诸如 IPv4 地址、域名、URL、哈希、CVE 和电子邮件等 IOC。 - 使用模拟/本地 CTI 和可选的外部 CTI 连接器富化 IOC。 - 使用兼容 OpenAI 的 LLM 或确定性模拟后备方案对发现进行分诊。 - 生成 Markdown 调查报告。 - 将调查输出持久化到 SQLite 以供案例审查。 - 公开一个小型 FastAPI 后端,用于上传、作业、案例、发现、IOC 和报告。 ## 它不是什么 - HuntMCP 不是一个 SIEM。 - HuntMCP 不是用于生产的检测替代方案。 - HuntMCP 不执行攻击者归因。 - HuntMCP 不会自动证明存在恶意活动。 - 生成的报告需要分析师审查。 - 公共 CTI 来源可能存在嘈杂、过时、不完整或不可用的情况。 ## 架构 代码库的组织方式使得模块以后可以包装为 MCP 服务器: ``` huntmcp.parsers -> Log Parser MCP candidate huntmcp.detection -> Detection MCP candidate huntmcp.ioc -> IOC Extractor MCP candidate huntmcp.enrichment -> CTI Enrichment MCP candidate huntmcp.llm -> Analyst Triage MCP candidate huntmcp.reporting -> Report MCP candidate ``` 高级流程: ``` Raw logs -> Parser -> Normalized events -> Deterministic rule engine -> Findings -> IOC extractor -> CTI enrichment -> Redacted LLM triage -> Markdown report + SQLite case storage ``` ## 支持的日志类型 - Windows Security - Sysmon - DNS - Proxy/Web - 通用 CSV ## 检测规则 默认规则集包括: - 多次登录失败 - 登录失败后伴随登录成功 - 可疑的 PowerShell 命令 - 创建新的本地管理员用户 - DNS 信标候选 - 已知的可疑 URL/域访问 该引擎是确定性的且可审计。分块检测具有一致性测试,以 确保在使用 `--chunk-size` 运行 CLI 时不会遗漏关联规则。 ## CTI 富化 `--cti` 支持的 CTI 来源名称: - `mock` 或 `mock-local-cti` - `urlhaus` - `abuseipdb` - `otx` - `virustotal` 外部 CTI 连接器是可选的。如果缺少密钥,本地/模拟工作流 仍可运行。URLhaus 元数据查询不会下载恶意软件样本。 ## LLM 分诊工作流 1. 规则从规范化的事件中生成发现。 2. 从这些发现中提取 IOC。 3. 附加 CTI 富化结果。 4. 脱敏敏感值。 5. 仅将选定的可疑上下文发送给 LLM。 6. 日志内容被明确视为不受信任的数据。 7. 模型返回结构化的 JSON: - `verdict` - `severity` - `reason` - `mitre_attack` - `false_positive_notes` - `recommended_next_steps` - `analyst_summary` 如果未设置 `OPENAI_API_KEY`,HuntMCP 将返回确定性的模拟分诊,以便 测试和演示不需要密钥。 默认示例模型为: ``` LLM_MODEL=mimo-v2.5 ``` ## 安全注意事项 - `.env` 被忽略,绝对不能被提交。 - `.env.example` 仅包含空/示例值。 - API 密钥不会被记录或发送给模型。 - 原始日志被视为不受信任的输入。 - 提示模板会警告 LLM 不要遵循日志内容中的指令。 - 脱敏支持用户名、内部 IP、主机名、电子邮件、令牌和 cookie。 - CTI 查询使用防护措施来阻止 localhost、私有范围、链路本地 范围、多播和元数据 IP。 - 测试会隔离秘密环境变量,以避免意外的实时 API 调用。 - CORS 源可通过 `HUNTMCP_CORS_ALLOW_ORIGINS` 配置。 ## 快速开始 ``` python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -r requirements.txt python huntmcp.py self-test ``` 预期的自检结果: ``` ok: true event_count: 5 finding_count: 5 enriched_count: 5 triage_count: 5 ``` ## 配置 从示例创建一个本地 `.env` 文件: ``` Copy-Item .env.example .env ``` 示例变量: ``` OPENAI_API_KEY= LLM_MODEL=mimo-v2.5 OPENAI_BASE_URL= URLHAUS_AUTH_KEY= ABUSEIPDB_API_KEY= OTX_API_KEY= VIRUSTOTAL_API_KEY= LLM_TIMEOUT_SECONDS=30 HUNTMCP_MAX_UPLOAD_SIZE_BYTES=10485760 HUNTMCP_MAX_LLM_FINDINGS=50 HUNTMCP_CTI_LOOKUP_LIMIT=250 ``` ## CLI 演示 解析日志: ``` python huntmcp.py parse --input data/sample_logs/windows_security.csv --type windows_security ``` 运行检测: ``` python huntmcp.py detect ``` 富化发现: ``` python huntmcp.py enrich --cti mock ``` 运行 LLM/模拟分诊: ``` python huntmcp.py triage --limit 5 ``` 生成报告: ``` python huntmcp.py report ``` 运行持久化调查工作流: ``` python huntmcp.py init-db python huntmcp.py investigate --input data/sample_logs/windows_security.csv --type windows_security --cti mock --model mimo-v2.5 --case-id demo-windows --case-name demo-windows python huntmcp.py case-summary --case-id demo-windows ``` 使用多个 CTI 来源: ``` python huntmcp.py enrich --cti mock,urlhaus,abuseipdb,otx,virustotal --cti-lookup-limit 250 ``` `--cti-lookup-limit` 限制单次运行中唯一的远程 IOC 查询次数。这可以防止大型 公共数据集在 LLM 分诊步骤开始前,在第三方 CTI 调用上耗费数分钟时间。仅当您有意需要无限制的实时 CTI 查询时,才使用 `-1`。 获取一个小型的 URLhaus 派生代理样本: ``` python huntmcp.py fetch-urlhaus-sample --limit 25 python huntmcp.py parse --input data/public_samples/urlhaus_recent_proxy.csv --type proxy python huntmcp.py detect ``` ## 公共数据集验证 HuntMCP 还使用 `deepseek-v4-flash`,针对 URLhaus 公共最新 URL 元数据进行了实时 兼容 OpenAI 的 LLM 分诊验证。作品集规模的运行 处理了 1000 条 URLhaus 记录,产生了 1504 个确定性发现,富化了 1504 个发现,并在最终报告中使用了 200 个实时 DeepSeek 分诊结果。 有关命令、指标、CTI 查询预算、裁定/严重性分布和 MITRE ATT&CK 映射摘要,请参阅 [docs/deepseek_v4_flash_urlhaus_200_run.md](docs/deepseek_v4_flash_urlhaus_200_run.md)。 生成的 JSON、SQLite、下载的 CSV 和报告 产物被有意排除在 git 之外;此文档文件是 可安全推送的证据产物。 ## API 演示 启动 API: ``` uvicorn huntmcp.api:app --reload ``` 如果需要,设置显式的 CORS 源: ``` $env:HUNTMCP_CORS_ALLOW_ORIGINS="http://localhost:3000,http://localhost:5173" uvicorn huntmcp.api:app --reload ``` 有用的端点: ``` GET /health POST /investigate POST /investigations GET /jobs/{job_id} GET /cases GET /cases/{case_id}/summary GET /findings/{case_id} GET /iocs/{case_id} GET /reports/{case_id} GET /dashboard ``` ## 测试 运行完整的验证套件: ``` python -m pytest -q python -m ruff check huntmcp huntmcp.py tests python -m ruff format --check huntmcp huntmcp.py tests ``` 当前本地验证: ``` 302 passed All ruff checks passed 76 files already formatted ``` ## 示例输出 报告包括: - 执行摘要 - 发现 - 时间线 - IOC 表 - MITRE ATT&CK 映射 - 检测逻辑 - 误报说明 - 推荐的后续步骤 - 局限性 报告在 `reports/` 目录下生成。默认情况下,生成的报告会被 git 忽略,以 保持仓库整洁。 ## 仓库维护 该仓库有意排除了: - `.env` - Python 缓存 - pytest/ruff 缓存 - SQLite 数据库 - 生成的规范化事件 - 生成的发现 - 生成的富化输出 - 生成的报告 - 下载的公共 CTI 数据集 只应推送源代码、测试、文档、配置和少量样本日志。 ## 局限性 - 这是一个作品集级别的原型,而不是一个生产级 SOC 平台。 - 当前的检测集有意保持较小规模。 - SQLite 适用于本地/单用户工作流,不适用于多租户生产环境。 - 非常大的数据集需要一个真正的有状态流式检测引擎。 - 外部 CTI 质量取决于第三方的可用性和速率限制。 - LLM 输出可能有误,必须由分析师进行审查。 - API 身份验证、RBAC、审计日志和部署强化是未来的工作。 ## 未来工作 - 针对超大型数据集的真正有状态的流式检测 - 更多兼容 Sigma 的规则加载和规则元数据 - 更丰富的分析师 UI,用于时间线、IOC 透视和发现审查 - API 身份验证和基于角色的访问控制 - 用于长时间调查的作业队列后端 - 更多 CTI 连接器响应规范化和速率限制处理 - Docker 部署配置文件和生产机密管理 - 用于解析器、检测、富化、分诊和报告模块的真正 MCP 服务器包装器
标签:AMSI绕过, AV绕过, Cloudflare, DLL 劫持, DNS日志, FastAPI, IOC提取, IP 地址批量处理, LLM辅助报告, Markdown报告, MITRE ATT&CK, Mock测试, Petitpotam, Python, SIEM原型, Sigma规则, SOC调查, SQLite, Sysmon, Windows安全日志, 代理日志, 基于规则的检测, 大语言模型, 威胁情报富化, 威胁检测, 安全信息与事件管理, 安全分析师, 安全日志解析, 安全组合项目, 安全规则引擎, 安全运营中心, 库, 应急响应, 插件系统, 搜索引擎爬取, 无后门, 无线安全, 案件管理, 目标导入, 网络安全, 网络映射, 逆向工具, 隐私保护