scienstien/threatFlix

GitHub: scienstien/threatFlix

ThreatFlix 是一个基于确定性证据与机器学习辅助的身份威胁调查系统,为 SOC 分析师提供攻击链追踪、行为异常评分、事件图相似性匹配和可解释的自动化调查报告。

Stars: 1 | Forks: 0

# ThreatFlix ### 身份攻击应该看起来像一个故事,而不是一堆日志。 [![发布](https://img.shields.io/badge/release-1.0.0-f2f2f2?style=flat-square&labelColor=111111)](https://github.com/scienstien/threatFlix/releases) [![后端](https://img.shields.io/badge/backend-Bun%20%2B%20SQLite-f2f2f2?style=flat-square&labelColor=111111)](Backend/) [![前端](https://img.shields.io/badge/frontend-React%2019-f2f2f2?style=flat-square&labelColor=111111)](FrontEnd/) [![ML](https://img.shields.io/badge/UEBA-Isolation%20Forest%20%2B%20ECOD%20%2B%20COPOD-f2f2f2?style=flat-square&labelColor=111111)](ML/) [![PyPI](https://img.shields.io/pypi/v/threatflix-ueba?style=flat-square&labelColor=111111&color=f2f2f2)](https://pypi.org/project/threatflix-ueba/) [![SDK](https://img.shields.io/badge/SDK-1.1.1-f2f2f2?style=flat-square&labelColor=111111)](https://www.npmjs.com/package/threatflix-sdk) **一个由学生构建的、可解释的身份威胁调查系统。**
## 已发布的包 ThreatFlix 通过其原生语言注册表发布可重用的组件。GitHub Packages 并非这些发布版本的权威来源。 | 包 | 注册表 | 当前版本 | 安装 | 用途 | | --- | --- | --- | --- | --- | | [`threatflix-sdk`](https://www.npmjs.com/package/threatflix-sdk) | npm | `1.1.1` | `npm install threatflix-sdk` | 将规范的应用程序安全遥测数据发送到 ThreatFlix | | [`threatflix-ueba`](https://pypi.org/project/threatflix-ueba/) | PyPI | `0.0.1` | `pip install threatflix-ueba` | 运行已发布的 UEBA 集成评分服务 | GitHub 不会将 npmjs 或 PyPI 的发布镜像到代码仓库的 **Packages** 面板中。在那里发布 SDK 会创建一个作用域不同的第二个包,而不是更新 `threatflix-sdk`。 ## 故事 安全遥测非常擅长告诉你*发生了一些事情*。 登录失败。然后又一次失败。MFA 被拒绝。登录成功。MFA 被禁用。出现了一个新的 API key。数据离开了系统。 每个事件单独来看都是可以理解的。困难的部分在于认识到它们共同描述了一次攻击,决定哪些部分是事实,并在不要求 LLM 编造真相的情况下解释结果。 这就是 ThreatFlix 背后的问题: ThreatFlix 从原始遥测数据和确定性证据开始。这些事实构成了调查的基础。行为 ML 可以细化其紧迫性。图相似性可以找到具有相同形态的历史事件。本地 LLM 可以解释案例并回答问题。所有这些支撑层都不允许悄悄重写发生的事情。 ## 观看攻击的组装过程 拓扑浏览器仅在分析师需要时才进行懒加载。下面显示的每个节点和有向关系均来自已持久化的原始遥测数据。
ThreatFlix incident graph progressively revealing an identity attack
该图不是装饰。它为分析师提供了一种从以下状态转变的方式: ``` failed login -> successful login -> MFA disabled -> privilege change -> persistence -> export ``` 到以下问题的可视化答案: - 涉及了哪个身份? - 活动起源于哪里? - 哪些事件属于同一个会话? - 目标是哪个服务? - 我们以前见过具有这种结构的事件吗? ## 设计赌注 ThreatFlix 有意将**权威**与**辅助**分离开来。 | 层 | 它的贡献 | 它不能做的事情 | | --- | --- | --- | | 确定性调查引擎 | 证据、攻击链、分类、初始风险 | 隐藏在不透明的模型背后 | | UEBA 集成 | 行为异常上下文和有限的评分细化 | 自行创建调查 | | 图相似性 | 具有结构相似进展的历史事件 | 声称共同的归因 | | 本地 LLM | 事件叙述、建议操作、分析师聊天 | 更改证据或风险评分 | 这个边界就是项目本身。这些模型之所以有用,是因为它们有一个诚实的立足点。 有关数学、评分逻辑、架构、评估边界、财务和路线图,请阅读 [ThreatFlix V1 技术 Wiki](docs/wiki/Home.md)。 ## 分析师所看到的 ThreatFlix 为 SOC 分析师提供了一个统一的工作区,而不是四个互不相连的工具: - **原始遥测优先**,因为源事件始终是事实依据 - **确定性证据**,包括创建该案例的规则和攻击链转换 - **行为上下文**,展示此会话与身份基线不同的原因 - **事件拓扑**,逐步展示已持久化的溯源图 - **相似事件**,即使身份和 IP 地址不同,也能比较攻击结构 - **解释报告和聊天**,基于冻结的、有限的事件上下文 ## 非常重要的现实检验 ThreatFlix 目前是一个**学生项目和研究生级别的演示**,而不是托管的安全产品。 目前没有公共的 ThreatFlix 后端在互联网上耐心等待。克隆前端并四处点击并不会凭空召唤出一个生产级的 SOC 平台。你需要在本地运行后端、模型服务、数据库和可选的 Ollama 层。 我们能不能妥善地托管和运营它?当然可以。 您想赞助后端吗?服务器已经审查了该提案,并且非常支持。 在此之前,请将 ThreatFlix 视为一个可解释的架构演示:可重现、可检查且充满希望,但不适合在周五晚上将它放在你的公司和真正的攻击者之间。 ## 在本地运行演示 你需要 Bun、Node.js/npm、带有 `uv` 的 Python 3.12,以及可选的 Ollama。 要体验完整的评判流程,请启动隔离的 Northstar 客户端、ThreatFlix 和训练好的 UEBA sidecar: ``` cd JudgeDemo .\start_demo.ps1 ``` Northstar 有意以断开连接的方式启动。打开 `http://127.0.0.1:5173/integration`,生成一个租户作用域的 key,将其放入 `JudgeDemo/threatflix.ts` 中,然后运行: ``` python attack_runner.py --scenario all --delay 0.25 ``` 运行器仅调用 Northstar 应用程序的 endpoint。ThreatFlix 接收生成的 SDK 遥测数据,创建确定性调查,使用 UEBA 丰富调查内容,并生成图谱指纹。 如果不需要实时集成 walkthrough,想直接进入预设的调查工作区: ``` # 终端 1:运行时 UEBA 服务 cd Backend/models/service uv sync uv run uvicorn app:app --host 127.0.0.1 --port 8001 # 终端 2:后端和可复现的被攻击客户 cd Backend npm install Copy-Item .env.example .env # 在 .env 中设置 JWT_SECRET npm run seed:demo npm run dev # 终端 3:前端 cd FrontEnd npm install npm run dev -- --host 127.0.0.1 ``` 打开 `http://127.0.0.1:5173/dashboard`。 演示账户: ``` email: demo.customer@threatflix.local password: ThreatFlixDemo!2026 ``` 种子数据重现了正常的身份基线、一个正在进行的多阶段接管、历史比较事件、图谱指纹、可用的 UEBA 丰富数据,以及一份示例分析师报告。 ## 发布说明 ### `1.0.0` - 可解释的调查系统 `1.0.0` 将 ThreatFlix 从一个以告警为导向的原型转变为一个完整的调查体验。 **改进内容** - 用确定性调查权威取代了由 LLM 主导的检测 - 增加了以身份为中心的证据规则、关联、攻击阶段和链评分 - 增加了可重现的 21 特征 UEBA pipeline 和已提升的 runtime 集成 - 增加了有限的 ML 融合,使得行为评分无法凌驾于确定性证据之上 - 增加了规范的事件图和 Weisfeiler-Lehman 结构相似性 - 增加了跨事件拓扑比较 - 增加了本地 Ollama 事件报告和基于源数据的 SOC 聊天 - 围绕原始遥测和确定性证据重新设计了仪表板 - 增加了一个动画的、懒加载的溯源图浏览器 - 增加了一个正在遭受攻击的可重现演示客户 - 扩展了跨后端、ML 工作区和 runtime 模型服务的自动化覆盖率 **已知限制** - 合成的 UEBA 训练和评估数据 - 固定的 IST 工作时间假设 - SQLite 持久化和仅限本地的部署 - 批量训练的异常模型 - 本地 Ollama,没有生产模型治理 - 没有托管的后端,尽管前端看起来已经准备好拥有一个了 ### `v0.0.1` - 原型 首次发布证明了基本的循环: ``` SDK event -> backend -> alert -> dashboard ``` 它建立了事件摄取、身份验证、SQLite 存储、告警展示和首批演示场景。检测和解释仍然与面向 LLM 的原型紧密耦合,没有确定性调查权威、行为模型、事件图谱或相似性层。 ## 接下来去哪里 - [技术 Wiki](docs/wiki/Home.md) - 数学、架构、评估、财务和路线图 - [后端](Backend/) - 确定性调查引擎、持久化、API、图谱层和 LLM 上下文 - [离线 ML 工作区](ML/) - 可重现的 UEBA 训练和评估 - [已发布的 UEBA runtime](https://pypi.org/project/threatflix-ueba/) - 可安装的已提升 artifact 评分器 - [Runtime ML 服务](Backend/models/service/) - 打包的 runtime 源码和兼容性服务 - [前端](FrontEnd/) - 分析师调查工作区 - [SDK](SDK/) - 已发布的 `threatflix-sdk` 事件捕获客户端的源码 - [评判演示](JudgeDemo/) - 可重现的 Northstar 集成和攻击流程 - [发布](https://github.com/scienstien/threatFlix/releases) - 版本历史 ## 项目理念 安全系统最重要的输出不是评分。 而是一个合理的答案,用来回答: ThreatFlix `1.0.0` 就是我们为了让这个答案变得可见而做出的尝试。
作为学生项目构建。注重可解释性。欢迎后端赞助者。
标签:AI辅助, AI风险缓解, AMSI绕过, Bun, React, SQLite, Syscalls, UEBA, 威胁检测, 暗色界面, 自动化攻击, 逆向工具