rstcloud/rstcloud_misp
GitHub: rstcloud/rstcloud_misp
将 RST Cloud 商业威胁情报数据以 events、attributes、galaxy clusters 等形式自动化导入并富化 MISP 平台的连接器套件。
Stars: 0 | Forks: 0
# rstcloud-misp
RST Cloud → MISP 连接器套件。将 RST Cloud 威胁情报导入 MISP
作为 events、attributes、galaxy clusters 和 enrichment modules。
运行连接器的默认方式是使用预构建的 Docker 镜像
[`rstcloud/misp-connector`](https://hub.docker.com/r/rstcloud/misp-connector)
并搭配官方的 [MISP/misp-docker](https://github.com/MISP/misp-docker)
stack。
## 涵盖的产品
| RST Cloud 产品 | 连接器 | 在 MISP 中创建的内容 |
|---|---|---|
| **Threat Library** | `rstmisp library` | 4 个 MISP galaxies(intrusion sets、malware、tools、campaigns),包含稳定的 cluster UUIDs 和 relationship edges |
| **Threat Feed** | `rstmisp feed` | 按威胁分组的 MISP events,包含 scored attributes、decaying-model tags 和基于策略的 `to_ids` |
| **Report Hub** | `rstmisp reports` | 来自 PDF 报告的 MISP events — STIX 解析、PDF 附件、galaxy 归因、关系图 |
| **Enrichment API** | misp-modules(8 个模块) | 按需提供:IOC score、noise control、WHOIS、SSL cert、截图、HTML body、CS beacon、favicon |
该套件作为一个 Docker 镜像发布,包含五个 CLI 子命令:`library`、`feed`、
`reports`、`setup`(一次性的 MISP scoring 激活)和 `schedule`
(在容器内长时间运行的 cron)。仅运行您已授权的产品。
## 快速开始(推荐)
使用官方的 MISP Docker stack 并通过已发布的连接器镜像进行扩展
— 无需本地构建。
### 1. 部署 MISP
请遵循 [misp-docker 入门指南](https://github.com/MISP/misp-docker#getting-started):
```
git clone https://github.com/MISP/misp-docker
cd misp-docker
cp template.env .env # edit as needed
docker compose pull
docker compose up -d
```
登录 MISP 并创建一个 API auth key(**Administration → Auth Keys**)。
### 2. 添加连接器
将[此仓库](https://github.com/rstcloud/rstcloud_misp) clone 到
misp-docker 旁边,并在 `misp-docker/docker-compose.yml` 中引入附加的 compose 文件:
```
git clone https://github.com/rstcloud/rstcloud_misp ../rstcloud-misp
```
添加到 `misp-docker/docker-compose.yml`:
```
include:
- path: ../rstcloud-misp/docker-compose.rstmisp.yml
```
配置连接器凭据:
```
cp ../rstcloud-misp/.env.rstmisp.example ../rstcloud-misp/.env.rstmisp
$EDITOR ../rstcloud-misp/.env.rstmisp # set RST_API_KEY and MISP_KEY
$EDITOR ../rstcloud-misp/rstmisp-config/policy.yml # optional tuning
```
拉取连接器镜像并运行(**首先运行 Threat Library** — feed 和 reports
可以引用其 galaxy clusters):
```
docker compose pull
docker compose --profile rstmisp run --rm rstmisp-library
docker compose --profile rstmisp run --rm rstmisp-reports
docker compose --profile rstmisp run --rm rstmisp-feed
```
镜像从 Docker Hub 拉取:[`rstcloud/misp-connector`](https://hub.docker.com/r/rstcloud/misp-connector)
(`latest` 或通过 `.env.rstmisp` 中的 `RSTMISP_TAG` 指定版本 tag,例如 `0.1.0`)。
### 3. 启用 scoring(推荐用于 feed)
将 RST taxonomy 和 decaying models 复制到 MISP 的 `app/files` bind mount
中(misp-docker 中的 `./files/`),然后通过 API 激活:
```
cp -r ../rstcloud-misp/misp-content/taxonomies/rstcloud \
files/taxonomies/
cp ../rstcloud-misp/misp-content/decaying-models/rstcloud-feed-network-model.json \
../rstcloud-misp/misp-content/decaying-models/rstcloud-feed-web-model.json \
files/misp-decaying-models/models/
# 将 {"name":"rstcloud",...} 添加到 files/taxonomies/MANIFEST.json(如果不存在)
docker compose --profile rstmisp run --rm rstmisp-feed setup
```
### 4. 调度(可选)
在 MISP 旁启用内置调度器 — 无需宿主机 cron:
```
# 添加到 misp-docker .env:
# COMPOSE_PROFILES=scheduler
docker compose up -d
```
计划任务在 `rstmisp-config/policy.yml` 中的 `schedule:` 键下定义。
## 其他安装选项
### 构建您自己的镜像
如果您需要修补连接器或在气隙环境中运行,请在本地构建,而不是
从 Docker Hub 拉取:
```
docker build -t rstcloud/misp-connector:latest .
# 或者,从此 repo:
docker compose -f docker-compose.rstmisp.yml build
```
在 `.env.rstmisp` 中设置 `RSTMISP_TAG=latest`(或您的 tag),并使用与上文相同的
`include` / `docker compose run` 工作流程。
### Docker run(独立运行,不使用 compose)
适用于 misp-docker 之外的现有 MISP 实例:
```
docker pull rstcloud/misp-connector:latest
docker run --rm \
-e RST_API_KEY= -e MISP_KEY= \
-e MISP_URL=https://your-misp -e MISP_VERIFYCERT=false \
-v "$PWD/rstmisp-config:/config:ro" \
rstcloud/misp-connector:latest library --filter recent
```
### 本地 Python 安装
用于开发或非容器化部署:
```
pip install .
rstmisp library --help
python -m rstmisp feed --policy rstmisp-config/policy.yml
```
要求 Python 3.9+。依赖项锁定在 `pyproject.toml` 中。
### 本仓库中的完整开发栈
这里的 `docker-compose.yml` 捆绑了 misp-docker 以及用于本地
开发的连接器。对于生产环境,建议使用官方的
[misp-docker](https://github.com/MISP/misp-docker) compose 并按上文所示使用
`docker-compose.rstmisp.yml` 进行扩展。
## 配置参考
### 凭据和连接(`.env.rstmisp`)
| 变量 | 描述 |
|---|---|
| `RST_API_KEY` | RST Cloud API key |
| `RST_API_URL` | RST Cloud API base URL(默认:`https://api.rstcloud.net/v1`) |
| `MISP_KEY` | MISP auth key(Administration → Auth Keys) |
| `MISP_URL` | MISP base URL(默认:compose 网络上的 `https://misp-core`) |
| `MISP_VERIFYCERT` | TLS 验证;如果 MISP 证书是自签名的,请设置为 `false` |
| `RSTMISP_TAG` | 连接器镜像 tag(默认:`latest`;例如 `0.1.0`) |
| `MISP_DISTRIBUTION` | 默认的 event 分发级别(0–3) |
| `MISP_PUBLISH` | 自动发布 events(`true` / `false`) |
| `RST_MITRE_AUTOREFRESH` | 自动刷新 ATT&CK STIX bundle(默认:`true`;在气隙环境中设置为 `false`) |
| `RST_MITRE_DATA_DIR` | ATT&CK STIX 数据的持久化目录(例如 `/config/mitre_data`) |
| `RSTMISP_MISP_URL` | 用于连接器 `MISP_URL` 的 Compose 覆盖配置 |
| `RSTMISP_ATTACK_STIX` | 容器内 ATT&CK STIX bundle 的路径 |
将 `.env.rstmisp.example` 复制为 → `.env.rstmisp` 并填入值。切勿提交填入信息后的文件。
用于 report relationship edges 的可选 MITRE 数据位于 `rstmisp-config/`
中(参见 `rstmisp-config/README.md`)。
### 导入策略(`rstmisp-config/policy.yml`)
完整参考请参见 `rstmisp-config/policy.example.yml`。关键部分:
```
feed:
date: latest # latest | 1h_latest | 4h_latest | 12h_latest | YYYY-MM-DD
window: recent # all | recent | only_new
types: [ip, domain, url, hash]
import_score: { ip: 20, domain: 20, url: 20, hash: 20 }
to_ids_score: { ip: 45, domain: 45, url: 45, hash: 45 }
event_grouping: threat_by_month # threat_by_day | month | year | threat
suppress_benign: false # true = skip FP-flagged IOCs
galaxy_attribution: both # builtin | rst | both
score_tags: true # false = emit only score-total
score_update: bumps # bumps | all | off
reports:
attach_pdf: true
update_events: true
create_relations: true
remap_galaxies: true
galaxy_attribution: both
library:
delivery: push # push | dump | repo
merge_duplicates: off # off | dry-run | apply
schedule: # used by rstmisp-scheduler
- { product: library, args: ["--filter","recent"], cron: "0 1 * * 0" }
```
CLI flags 会覆盖策略值(例如 `feed --date 1h_latest --window all`)。
### Enrichment modules
RST Cloud enrichment modules 会单独部署到 misp-modules 容器中
(参见 `modules/README.md`)。安装后,在 **Administration → Server Settings →
Plugin** 下启用它们。
## Scoring 和 decaying models
feed 使用来自 RST Cloud score object 的 MISP 原生 scoring 对每个 IOC 进行标记:
| RST score 字段 | MISP tag | 备注 |
|---|---|---|
| `total` (0–100) | `rstcloud:score-total=""` | Decaying-model 基础分数 |
| `src` (~0–100) | `admiralty-scale:source-reliability="a..f"` | 标准可靠性 taxonomy |
| `tags` (0–1) | `rstcloud:context-confidence=""` | 分段(very-low … high) |
| `frequency` (0–1) | `rstcloud:relevance=""` | 活跃威胁可能性分诊 |
`misp-content/decaying-models/` 中提供了两个按类型的 decaying models。
重新导入会对 bucket events 中的 IOC 进行去重,并原地更新分数
(由策略中的 `score_update` / `score_update_min_delta` 控制)。详见
[DEPLOYMENT.md](DEPLOYMENT.md)。
## 仓库布局
```
rstmisp/ Python package — shared core + three connectors + CLI
rstmisp-config/ policy.yml, policy.example.yml, optional MITRE data
misp-content/ Custom rstcloud taxonomy + decaying model JSON
modules/ misp-modules enrichment suite (8 RST Cloud modules)
docker-compose.rstmisp.yml Add-on compose (pull rstcloud/misp-connector)
Dockerfile Optional local image build
DEPLOYMENT.md Deployment, scheduling, and scoring deep-dive
```
Package 级别的说明:`rstmisp/README.md`。
## 授权
每个子命令都是独立授权的 — 仅运行 RST Cloud 订阅涵盖的
产品。未授权的 endpoint 会返回 401/403,并且连接器会
立即停止并显示明确的消息。
## 要求
- Docker 25+ 和 Docker Compose 2.17+(用于 misp-docker)
- RST Cloud API key
- MISP 2.4.x 或更高版本
- RST Cloud API 访问权限(参见 [rstcloud.com](https://www.rstcloud.com))
## 许可证
GNU General Public License v3.0 — 详见 [LICENSE](LICENSE)。
标签:Docker, 威胁情报, 安全运营, 安全防御评估, 开发者工具, 扫描框架, 数据集成, 版权保护, 请求拦截, 逆向工具