Kartik-99999/prahari

GitHub: Kartik-99999/prahari

PRAHARI 是一个基于行为异常检测与图信号融合的 AI 驱动网络弹性平台,旨在将 APT 检测时间从数周压缩至数小时并编排可审计的自动化响应。

Stars: 0 | Forks: 0

# PRAHARÍ ![ci](https://static.pigsec.cn/wp-content/uploads/repos/cas/e0/e0aa1b784d423cd6f09b5191b4c125883d647bdec1b61fc4ce6791fcfcc38d44.svg) **为关键国家基础设施提供行为网络弹性。** PRAHARÍ(印地语:*守护者 / 哨兵*)无需特征签名即可检测行为异常,将 provenance 图谱中的微弱信号融合为一条单一且已排序的攻击链,将其映射到 MITRE ATT&CK,并编排可审计的自动化响应 —— 将检测时间从**数周压缩至数小时**。 **🌐 [在线演示](http://3.7.9.1:3000) · ▶ [观看 2 分钟演示](https://drive.google.com/file/d/13jo_jX9gD92pBCs7jl9IvDX5Eh3KyCss/view?usp=sharing) · 📊 [演示文稿](https://docs.google.com/presentation/d/1-G-D1Oqkmc8oPEyWIR0riOxE5lSFINIp/edit?usp=sharing)** ## 问题所在 CERT-In 在 2023 年处理了 **159 万+ 起事件**。AIIMS Delhi 因勒索软件瘫痪了 2 周以上;CBSE 的考试记录遭到泄露;**超过 70% 的印度政府实体正在运行已停止支持的 IT 系统**。更深层次的失败在于**检测速度**:APT 攻击者采用低频慢速策略以规避基于特征签名的工具,而行业的平均潜伏期约为 **200 天**(Mandiant 数据)。当特征签名出现时,攻击早已得逞。PRAHARÍ 的核心理念是:**检测行为,而非特征签名。** ## 一个闭环且完全可审计的流程 ![PRAHARÍ 架构](https://static.pigsec.cn/wp-content/uploads/repos/cas/8e/8e4691b860f6b7a993d1bd7425ee89a483dd7e8196f65417c58782721f7a6852.svg) 各阶段的详细信息、事件流和安全护栏:[`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)。 ## 结果一览 两类结果,绝不混为一谈 —— **诚实是一项特性**(完整方法论见 [`docs/RESULTS.md`](docs/RESULTS.md)): | 指标 | 结果 | 类别 | |---|---|---| | 检测 ROC-AUC | **0.9988** · PR-AUC 0.868 · **100% 召回率 (13/13) @ ~1% FPR** | 受控场景¹ | | 公共基准测试 (CIC-IDS-2017, 留出法, 无监督) | DDoS ROC **0.910** · PortScan 0.781 · macro **0.845** · DDoS **84.6% 检测率 @10% FPR** | **公共基准测试** | | 泛化能力:留出内部攻击,**冻结**阈值,无外部 C2 | ROC **0.9987** · **100% 召回率 (45/45) @1% FPR** · MTTD **~7 分钟** | 留出场景 | | IT + **OT**:Modbus/SCADA PLC 攻击 —— 我们测量了纯 IT 的差距,随后通过 OT 原生行为特性 (G7) 弥补了这一差距 | ROC 0.840 → **0.895** · 恶意设定值写入告警 **8/16 → 13/16** @1% FPR · MTTD ~4 分钟 | 留出 OT 场景 | | ATT&CK 归因(技术层面) | **92.3% 精确匹配 (12/13),0 次误报** | 受控场景¹ | | SOAR 自动化覆盖率 | **75%**(8 个剧本步骤中 6 个自动执行 / 2 个人工审批) | 受控场景¹ | | 建立据点后的 MTTD | **1.66 天**(在数据窃取前 17 天领先发现)vs 行业约 200 天的潜伏期 | 受控场景¹ | | 确认后的 MTTR | **< 1 秒** 自动化遏制 | 受控场景¹ | | 规模 | **在 100 万事件下实现 ~5.4万 事件/秒的端到端处理**(单核,全性能;在受限笔记本上约为 2.6万 —— O(1)/事件,随主频 × 核心数扩展),2.5 GB RSS | 基准测试套件 | | 对抗性探测(攻击者规避非工作时段信号) | @1%FPR 的召回率下降至 13% —— 但 ROC 保持 **0.915**,**80% @5% FPR** —— 如实报告 | 留出场景 | | 审计完整性 | 验证了 10 条目的哈希链;**篡改演示在精确条目处检测到特权行重写** | 在线演示 | ¹ *受控场景 = 我们自建的合成、已标注的 21 天 APT 攻击(2,128 个事件 / 13 个恶意事件)。近乎完美的数字反映了理想的干净场景 —— 这正是为什么我们还要报告上述的公共基准测试、留出泛化、OT 和对抗性测试数据。* **反事实结论:** 遏制机制在第 **1.7** 天触发,在计划的数据窃取前 **17 天** 切断 C2 通道 —— **阻止了数据泄露。** 一个平静的表层设计,旨在供*深入探究*,而不仅仅是阅读 —— 从顶部的裁决结论可层层下钻直达原始证据。**控制台是运行中 BFF 之上的通用客户端:** 事件选择器列出了运行系统已排序的所有内容(默认显示首要事件),并且每个视角都派生自所选事件 —— 没有任何内容是场景硬编码的。头部徽章显示 **● LIVE · BFF**;如果系统宕机,它会如实显示离线状态 —— 绝无伪造数据,绝无虚假模拟。 | 故事 —— 重放时钟 + kill-chain 主线,已确认胜出 | ATT&CK 技术矩阵 | |---|---| | ![Kill-chain 故事](https://raw.githubusercontent.com/Kartik-99999/prahari/main/docs/replay_2.png) | ![ATT&CK 矩阵](https://raw.githubusercontent.com/Kartik-99999/prahari/main/docs/console_attack.png) | 控制台呈现为一个**滚动的产品介绍页**,每一部分聚焦一个核心理念 —— 居中的衬线体裁决首屏,藏红色的实测数据带,随后是各个功能卡片:**观看事件发生**(重放 + kill-chain)、**每个声明皆可下钻至证据**(Graph / ATT&CK / Path / Events 作为分段标签页)、**以人为核心的自主化**(归因 + 实时 SOAR 门控)以及**永久可证明**(防篡改账本): - **Story(故事)** —— 重构的 kill-chain 呈现为从左到右的主线;当播放头越过每个节点的首次发现时间时,该节点即被点亮,并内联显示 **✓ confirmed · contained** 和 **✕ exfil prevented** 的裁决结论 —— 下方是**章节列表**:每项技术的证据链路、主机、首次发现日期和异常评分,只需单击即可跳转至 ATT&CK 视角。 - **Graph(图谱)** —— 实时 provenance 图谱,**直接布局在重放时钟上**:x 轴代表每个实体变得异常的时刻,y 轴代表其类型带,因此攻击过程完全按照实际发生的时间从左到右呈现。**仅**根据系统自身的异常评分进行着色;鼠标悬停可高亮显示相关邻域,单击可打开证据抽屉(事件 ID、技术、评分、通俗易懂的原因说明),并且 **top-signals** 轨道可直接跳转到最明显的五条边。Ground-truth 叠加层保持为**仅用于评估、默认关闭**的开关 (`docs/console_graph.png`)。 - **ATT&CK** —— 将观察到的技术对应到其战术上,并以独特的预测效果展示下一步可能的行动。 - **Path(路径)** —— 逐跳展示通向核心资产的横向移动路径,以及承载每一次跃迁的凭证。 - **Events(事件)** —— 排序后的原始证据(真实事件 ID),**支持过滤**(全部 / 高异常 ≥ 0.72 / confirmed · prevented),每行均可跳转回其在图中的对应边。 - **Response(响应)** —— 归因评估与**实时 SOAR 队列**并列展示:每个操作都会显示规划器的**决策依据**和影响范围,待处理的人工审批操作带有真实的 Approve/Deny 控件,并会直接将操作写入实际的只追加账本中。 - **Audit(审计)** —— **防篡改账本**呈现真实的 Postgres 条目及其真实哈希值和**决策列**,带有 head hash 的实时 `verify_chain()` 摘要,以及一个清晰标记的篡改*模拟*演示。 **单页分析师简报**距离裁决结果仅一键之遥。在实时模式下,页眉带有 **⟳ run fresh attack** —— 单击即可通过整个服务端循环重放最新的随机 seeded 入侵(类似于 `make attack`,时间窗口锚定在今天,带有分阶段进度显示,约需 20 秒),随后重新注入数据并自动重播;两个人工审批环节会重新回到 PENDING 状态,等待实时审批。网站在**着陆页** (`/`) 以一种平静的、主权平台的基调开启 —— 黎明渐变的首屏,标签页式的控制台在线产品演示,金色的实测数据条,闭环的故事与信任保障 —— 随后过渡到位于 **`/console`** 的核心工具中。深度链接:`/console?incident=&lens=story|graph|attack|path|events|response|audit&day=`;旧版根级深度链接会自动重定向。检测曲线:[`docs/ueba_roc_pr.png`](docs/ueba_roc_pr.png), [`docs/benchmark_cicids_roc_pr.png`](docs/benchmark_cicids_roc_pr.png), [`docs/ot_detection.png`](docs/ot_detection.png)。 ## 与众不同之处 - **Graph "anomaly lift" 融合** —— 在事件相似性图谱上计算 `fused = personalized_PageRank / uniform_PageRank`,消除了良性枢纽偏差,使得微弱但有关联的信号(评分 0.68–0.75)能够提升至 ≥0.90,并汇聚成一个排序后的单一事件。原本单独看容易被忽略的事件由此串连成一条完整的攻击链:**WS03 → DC01 → DB-EXAMS**。 - **带有完整性护栏的 Agentic 归因** —— Claude agent(负责归因和 response-planner)基于包含 **697 项 MITRE ATT&CK 技术及精选安全公告**的 RAG 知识库进行推理,坚持“有据可查否则弃权”的原则,且绝对无法接触 ground truth。支持通过 `ANTHROPIC_API_KEY` **或者** 利用 Claude Code 订阅(`make attribute-agent-live`,无需 key)进行在线运行 —— 并且在两者均不可用时,能优雅降级为确定性的逻辑。我们对在线运行结果对照 ground truth 进行了评分,发现并修复了一个引用溯源 bug,并重新进行了测量([`docs/LIVE_AGENT_RUN.md`](docs/LIVE_AGENT_RUN.md)):目前该 agent 能够**可靠地将引用锚定在实际的恶意事件上**(而在处理留出内部攻击案例时,确定性映射器只能引用约 2 个)—— 在表现较好时它甚至能精确标注多达 20 个事件,尽管对于相邻技术的精确 ATT&CK 标注会因运行情况而异 —— 同时,**确定性映射器 (92.3%) 依然是稳定且可复现的基准数据**。 - **AI 无法绕过人工审批关卡** —— response-planner 仅*提议* `{action, target, rationale}`;**平台**负责计算影响范围并决定是否需要人工审批。高影响操作(例如隔离 DB server、禁用 domain admin)始终需要单击进行人工审批。 - **防泄露准则,在代码中强制执行** —— `assert_no_leakage` 防护机制阻止了 ground-truth 标签和植入的代理变量进入模型输入;API 会从每个响应中剔除 `gt_*` 字段(已验证:8 个 endpoint 均无泄露)。 - **防篡改审计** —— 每项自动化决策都会记录在具有 BEFORE UPDATE/DELETE 触发器的 SHA-256 哈希链、只追加的 Postgres 账本中。如果具有特权的内部人员篡改了某一行记录,`verify_chain()` 会在对应的精确条目处将其精准识破 —— 已进行在线演示验证。 ## 快速开始 ``` cp .env.example .env # optional: add ANTHROPIC_API_KEY for live agents make up # Neo4j + Redis + Postgres (Docker/colima) make health # expect all three OK make graph-load # deterministic 21-day scenario (seed 42) make ueba-score && make fuse && make incidents # detect → fuse → assemble make attribute-agent && make respond # attribute → respond (fallback-safe) make audit-verify && make audit-tamper-demo # prove the ledger make api # FastAPI BFF :8000 · cd console && npm i && npm run dev → :3000 ``` **或者只需使用一行命令观看整个流程的启动(约 1 分钟,无需 API key):** ``` make up && make attack # replays a fresh intrusion through ingest→detect→correlate→attribute→respond→audit ``` `make attack` 会输出一个分阶段的 SOC 叙事报告(关联器甚至会报告它是否自动选择了外部/内部攻击模式);添加 `LIVE=1` 可运行基于订阅的 CLI Claude agent。`make brief` 会生成一份单页的事件分析简报;**`make stream` 可对线上传输的入侵行为进行持续评分**(这是一个长期运行的 `events:raw` 消费者,会在事件到达并构成 kill-chain 时发出 ALERT)。 包含故障排查的完整指南:[`docs/SETUP.md`](docs/SETUP.md)。所有过程都是确定性的(基于 seeded)且可复现的;评估目标包括:`makeueba-benchmark` (CIC-IDS-2017), `make scenario2` (泛化能力), `make ot-demo` (OT), `make scale-bench`, `make adversarial`。 **可选的高级 ML 功能(默认关闭 ⇒ 验证数据不受影响,在开启前后均进行了测量 —— [`docs/RESULTS.md`](docs/RESULTS.md) §7):** `PRAHARI_ENSEMBLE3=1`(第三个检测器家族 + 退化防护;对抗规避 ROC 从 0.915 提升至 0.938),**内部感知融合现在是自动化的** —— 关联器会自动检测攻击形态,并在无锚定的内部攻击上增加用户枢纽维度(scenario-2 的召回率从 **62% 提升至 69%**,活动事件从 2 个合并为 1 个),同时在对付 APT 时自动选择外部模式(零回归);可通过 `PRAHARI_INSIDER_FUSION=1/0` 进行覆盖。`PRAHARI_SEQ_FEATURES=1` / `PRAHARI_PEER_FEATURES=1`(序列 + 同组特征 —— 在我们接近天花板的场景中表现为诚实的中性效果)。我们如实报告了起作用的指标*以及*没产生影响的尝试。 ## 物理隔离 / 零出口模式 关键基础设施网络通常处于物理隔离状态,并且在法律上被禁止 调用外部 API —— 因此**整个 检测 → 响应 → 审计 流程在零外部 网络依赖的情况下运行。** 无需 Anthropic key,无需云服务,绝无数据外联。 ``` export PRAHARI_OFFLINE=1 # hard air-gap switch; then run the loop exactly as above ``` - **无需 LLM。** 归因和响应会降级使用确定性的 ATT&CK 映射器(在受控场景中准确率为 92.3%)和确定性剧本; `PRAHARI_OFFLINE=1` 会*强制*使用降级方案,即使存在 key 或 Claude CLI 也会如此。 - **RAG 完全本地化。** 威胁情报库使用本机自带的 scikit-learn TF-IDF vectorizer 进行 embedding —— 无需下载 ONNX 模型 —— 并且禁用了 Chroma 的遥测功能。 - **ATT&CK KB 离线。** 跳过实时的 MITRE STIX 拉取,转而使用已提交的 子集 / 本地缓存;webhook 连接器拒绝所有出口流量。 - **已在物理断网状态下验证**(阻断 sockets 连接):KB 构建、 RAG 构建 + 检索以及完整流程均能成功执行。LLM agent 对于联网部署环境来说是一个严格 *可选的*增强层。详情请见:[`docs/AIR_GAPPED.md`](docs/AIR_GAPPED.md)。 ## 文档 | 文档 | 涵盖内容 | |---|---| | [`EXECUTIVE_SUMMARY.md`](EXECUTIVE_SUMMARY.md) | 为只会阅读这一页的评委准备的单页摘要 | | [`docs/RESULTS.md`](docs/RESULTS.md) | 完整评估报告:基准测试、泛化能力、OT、规模、对抗性 —— 包含方法论和诚实的说明 | | [`VERIFICATION_REPORT.md`](VERIFICATION_REPORT.md) | 对每个关卡进行的独立实时重测 —— 全部为 GREEN(通过) | | [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) | 6 阶段闭环、数据存储、事件流、完整性护栏、部署视图 | | [`docs/TECHNICAL_DESIGN.md`](docs/TECHNICAL_DESIGN.md) | 深入解析:UEBA 特征、图模型、anomaly-lift 融合、agent、SOAR 门控、审计链 | | [`docs/API.md`](docs/API.md) | BFF endpoint 参考 | | [`docs/AIR_GAPPED.md`](docs/AIR_GAPPED.md) | 零出口模式:在无外部 API 下运行的机制及证明 | | [`docs/sample_incident_brief.md`](docs/sample_incident_brief.md) | 单页分析师简报示例 (`make brief`) —— 触发原因、kill-chain、响应、保障措施 | | [`docs/ROADMAP.md`](docs/ROADMAP.md) | 近期强化计划 + 平台愿景 | | [`SUBMISSION.md`](SUBMISSION.md) | 可直接粘贴至黑客松门户的回答 | | [🌐 在线演示](http://3.7.9.1:3000) | 运行在 AWS 上的平台 —— 着陆页 → 实时分析控制台 (BFF API 位于 `:8000`) | | [▶ 演示视频](https://drive.google.com/file/d/13jo_jX9gD92pBCs7jl9IvDX5Eh3KyCss/view?usp=sharing) | 2 分钟导览 —— 着陆页 → 实时控制台 | | [📊 演示文稿](https://docs.google.com/presentation/d/1-G-D1Oqkmc8oPEyWIR0riOxE5lSFINIp/edit?usp=sharing) | 精心设计的 12 页推介幻灯片 (Google Slides) | ## 仓库结构图 ``` services/ ingest (replay · consumer · stream_scorer) · ueba (features · score · peer) · graph (fuse · incidents) · attribution · soar · report (incident briefs) · api packages/ schema (OCSF-style SecurityEvent, pydantic) · scenario generators console/ Next.js 16 SOC console — scrolling product-page over the live BFF (components/console); landing at /, honest offline state (no fixtures) scripts/ health_check · api_smoke · audit_tamper_demo · scale_bench · attack_demo · score_agent_attribution docs/ results, architecture, design, screenshots, curves data/ datasets & artifacts (gitignored; fetch steps in data/README.md) ``` **技术栈:** Python 3.11+ · scikit-learn + pyod (IsolationForest + ECOD + COPOD, 无监督) · Neo4j 5 (APOC + GDS) · Redis Streams · Postgres · Anthropic Claude (tool-use agent) · Chroma RAG (本地 TF-IDF, 零出口) · FastAPI · Next.js 16 · Docker Compose. ## 诚实的范围与路线图 1. 近乎完美的闭环指标是在**受控合成场景**下测得的;经得起推敲的公开数据是 **CIC-IDS-2017 macro ROC 0.845**(留出法,无监督)—— 两者均已报告,绝不混为一谈。 2. 在线的 Claude 归因 agent 通过 Claude Code **订阅 CLI**(无需 `ANTHROPIC_API_KEY`)在两个场景下均能**实现端到端运行** —— 这是一次真实的多轮调用 tool-use 调查。我们**对照 ground truth 对其进行了评分**,发现它引用了*良性*事件(0 个恶意事件),修复了根本原因(在模型处理前根据异常评分对事件进行排序),并重新进行了测量:它现在**能够稳定锚定在恶意事件上** —— 在多次运行中引用正确了约 25 个中的 14-24 个,而在处理留出内部攻击案例时,确定性映射器仅能正确引用约 2 个。对于相邻技术(例如 T1005⇄T1039)*精确的* ATT&CK 标注在多次运行中并不稳定(表现较好时可达 20 个精确标注),因此稳定且可复现的数据依然是**确定性映射器 (92.3%)**,我们将“成功锚定证据”视为一项稳健的胜利。完整的改进前后对比及方差数据:[`docs/LIVE_AGENT_RUN.md`](docs/LIVE_AGENT_RUN.md)。 3. **OT/ICS 为合成建模**(在 OCSF 上应用 Modbus/SCADA 语义)—— 尚未接入真实的 PLC 硬件。 4. 深度重于广度:提供完全跑通的事件调查,而非追求大而全的覆盖面。详见 [`docs/ROADMAP.md`](docs/ROADMAP.md)。 ## 资料来源与引用 **数据集** — **CIC-IDS-2017**,加拿大网络安全研究所,新不伦瑞克大学 (),通过公共 Hugging Face 镜像 `c01dsnap/CIC-IDS2017` 获取(获取步骤详见 [`data/README.md`](data/README.md)>);**UNSW-NB15** 作为已记录的备选方案。我们受控的 21 天 APT 以及留出的内部/OT 场景均为本仓库(`packages/scenario`)内生成的**原创、合成、基于 seeded 的确定性**数据。 **框架与标准** — **MITRE ATT&CK** (, Enterprise + ICS;STIX bundle 驱动本地知识库) · **OCSF** — 开放网络安全架构框架 (),用于构建 `SecurityEvent` 范式。 **关键开源组件** — scikit-learn · pyOD (IsolationForest · ECOD · COPOD) · Neo4j + Graph Data Science · Redis · PostgreSQL · FastAPI · Next.js · Chroma · Anthropic Claude — 均遵循各自的开源协议。 **背景统计数据**(来源于公开报告,仅用于问题描述) — CERT-In 2023 年的事件数量约为 159 万(印度计算机应急响应小组,) · 对手平均潜伏期约为 200 天(Mandiant *M-Trends*) · 约 70% 的政府 IT 系统已停止支持(公共政策报道) · AIIMS Delhi 勒索软件事件 (2022) 及 CBSE 考试记录泄露事件 (2024),均来自公开新闻报道。 ## 团队与许可 为 Hackathon PS#7 (2026) 构建,开发者:**Kartik Bhardwaj**, **Harshita**, 以及 **Raghav Sharma**。 基于 [MIT License](LICENSE) 开源。代码仓库:
标签:AMSI绕过, SOAR, 图神经网络, 威胁检测, 安全运营, 审计溯源, 异常检测, 扫描框架, 搜索引擎查询, 请求拦截, 逆向工具