scienstien/threatFlix
GitHub: scienstien/threatFlix
ThreatFlix 是一个基于确定性证据与机器学习辅助的身份威胁调查系统,为 SOC 分析师提供攻击链追踪、行为异常评分、事件图相似性匹配和可解释的自动化调查报告。
Stars: 1 | Forks: 0
# ThreatFlix
### 身份攻击应该看起来像一个故事,而不是一堆日志。
[](https://github.com/scienstien/threatFlix/releases)
[](Backend/)
[](FrontEnd/)
[](ML/)
[](https://pypi.org/project/threatflix-ueba/)
[](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 可以解释案例并回答问题。所有这些支撑层都不允许悄悄重写发生的事情。
## 观看攻击的组装过程
拓扑浏览器仅在分析师需要时才进行懒加载。下面显示的每个节点和有向关系均来自已持久化的原始遥测数据。
该图不是装饰。它为分析师提供了一种从以下状态转变的方式:
```
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, 威胁检测, 暗色界面, 自动化攻击, 逆向工具