ajithrrk25-commits/threat-intel-agent

GitHub: ajithrrk25-commits/threat-intel-agent

一个独立的 FastAPI 威胁情报微服务,通过多阶段 Agent 流水线对 IOC 进行分类、关联、评分和 MITRE ATT&CK 映射,并可选择性接入外部实时数据源进行富化。

Stars: 0 | Forks: 0

# Quantum Cyber Safe — 威胁情报 Agent 一个独立的 FastAPI 微服务,独立部署于 [../ai-orchestrator-agent](../ai-orchestrator-agent):针对本地 情报数据集进行 IOC 分类、活动/攻击者关联以及 MITRE ATT&CK 映射, 并在设置了 API 密钥时提供可选的实时富化功能。 它拥有自己的 `Dockerfile`、`docker-compose.yml`、`render.yaml` 和 `requirements.txt` —— 与 Orchestration Agent 的布局相同 —— 并且完全 独立运行;`/analyze` 和 `/ioc/{ioc}` 无需启动任何其他服务即可工作。 这两个 agent 完全通过 HTTP 连接:Orchestration Agent 的 `threat_intel_agent` 阶段调用此服务的 `POST /analyze` 作为其 主要数据源(请参阅下方的 **集成**)。 ## 多 Agent 流水线 在内部,`/analyze` 会在共享状态字典上 运行自己的一小组命名 agent(`app/engine.py`,`INTEL_PIPELINE`)—— 这与 Orchestration Agent 用于其八个顶级 agent 的模式相同,只是 范围缩小到了威胁情报: | 阶段 | Agent | 执行操作 | |---|---|---| | 1 | Intake | 规范化传入的查询/IOC 请求。 | | 2 | IOC Classification | 自动检测指标类型,将请求的 IOC 拆分为本地已知和未知。 | | 3 | Campaign Correlation | 根据追踪到的活动对本地已知指标进行评分。 | | 4 | Live Enrichment | 在配置后通过 AbuseIPDB/NVD/OTX 对未知指标进行富化。 | | 5 | MITRE ATT&CK Mapping | 将结果按请求顺序合并回,映射观察到的技术。 | | 6 | Threat Scoring | 针对单个指标的严重程度 + 0-100 的综合威胁评分。 | | 7 | Actor Attribution | 将匹配的活动解析为其归属的威胁行为者。 | | 8 | Intel Report | 汇总最终摘要和富化来源列表。 | `GET /agents` 以数据形式(键/名称/描述)返回此组合,并且 每个 `/analyze` 响应都包含 `agents_executed` —— 运行阶段的 有序列表 —— 以便调用方(包括 Orchestration Agent)可以 查看这两个服务的 agent 中究竟是哪一个生成了给定的结果。 ## 端点 - `GET /` — 健康状态 + 已配置的实时数据源 + agent 流水线顺序。 - `GET /agents` — agent 集合(键、名称、描述)——见上文。 - `POST /analyze` — 请求体 `{"query": "...", "iocs": ["1.2.3.4", ...], "enrich": true}`。 `iocs` 是可选的 —— 省略它即可根据 `query` 对完整的追踪数据集进行评分,这正是 Orchestrator 的使用方式。返回指标、严重程度 计数、0-100 的威胁评分、匹配的活动/行为者、观察到的 MITRE ATT&CK 技术,以及 `agents_executed`。 - `GET /ioc/{ioc}` — 查找单个指标(自动检测类型:ip、 domain、url、file hash、cve、email)。 - `GET /campaigns` — 追踪的活动和威胁行为者。 - `GET /mitre` — 本地 ATT&CK 技术目录。 - `GET /classify/{value}` — 仅提供 IOC 类型检测器,无评分。 ## 认证 设置 `THREAT_INTEL_SERVICE_TOKEN`,之后每次 `/analyze`、`/ioc`、 `/campaigns`、`/mitre` 调用都必须发送匹配的 `X-Service-Token` 请求头。如果未设置,该服务将开放运行(适用于本地开发,但不适用于 公共部署)。 ## 可选的实时富化 当设置了相关密钥时,未知的 IOC(不在本地数据集中)将根据实时数据源进行富化 —— 在没有密钥的情况下,每一个都会独立降级,这与 Orchestrator 中 `GROQ_API_KEY` 的工作方式相匹配: | 环境变量 | 用途 | 来源 | |----------------------|----------------------|----------------------------------| | `ABUSEIPDB_API_KEY` | `ip` IOC | [abuseipdb.com](https://www.abuseipdb.com) 免费层 | | `NVD_API_KEY` | `cve` IOC(可选 —— NVD 也可以在未认证的情况下工作,只是会受到速率限制) | [NVD API](https://nvd.nist.gov/developers) | | `OTX_API_KEY` | `domain`/`url`/`file hash` IOC | [otx.alienvault.com](https://otx.alienvault.com) 免费层 | ## 独立运行 ``` pip install -r requirements.txt python -m uvicorn app.main:app --reload --port 8002 ``` 打开 **http://localhost:8002/docs** 使用交互式 API。或者 使用 `docker compose up --build` 在容器中运行它,就像 部署时一样 —— 不需要其他服务。 ## 与 Orchestration Agent 集成 这两个 agent 是独立的项目,仅通过一个 URL 连接 —— 它们之间 没有任何代码层面的相互导入或依赖。 在 `../ai-orchestrator-agent/app/orchestrator.py` 中,`threat_intel_agent` 使用运行的查询调用 `POST {THREAT_INTEL_AGENT_URL}/analyze`(本地开发 默认为 `http://localhost:8002`)。如果此 服务不可达 —— 未启动、网络错误、超时 —— Orchestrator 将透明地回退到其自身的小型本地启发式算法, 以便在没有此服务的情况下,完整的流水线仍能端到端运行。 Orchestrator 仍然拥有 LLM 叙述步骤(`llm_narrative`,唯一与 Groq 通信的地方);此服务仅返回确定性的结果。 要将两者连接起来: 1. 启动此服务(`:8002`)。 2. 在 Orchestrator 上,将 `THREAT_INTEL_AGENT_URL` 设置为此服务的 地址(本地为 `http://localhost:8002`,从 Orchestrator 自己的 docker-compose 调用则为 `http://host.docker.internal:8002`, 在生产环境中则为此服务的 Render URL)。 3. 如果您在此处设置了 `THREAT_INTEL_SERVICE_TOKEN`,请在 Orchestrator 上设置相同的值,以便其调用能通过认证。
标签:AI智能体, AV绕过, Cloudflare, FastAPI, IOC分析, MITRE ATT&CK, 威胁情报, 安全运营, 开发者工具, 扫描框架, 版权保护, 请求拦截, 逆向工具