diagonalciso/soc-supply

GitHub: diagonalciso/soc-supply

一款零依赖的第三方供应链暴露监控器,帮助 SOC 团队在完全本地化的前提下持续检测关联组织的数据泄露风险。

Stars: 0 | Forks: 0

# soc-supply

soc-supply dashboard screenshot

第三方 / 供应链暴露监控器。维护一个你依赖的组织的**私有注册表** —— 包括客户、供应商、厂商、合作伙伴 —— 并检查每个组织的域名是否存在数据泄露暴露。CD SOC 套件的一部分。端口 **8109**。 独立运行,**仅使用 stdlib** —— 无 pip 依赖。 ## 隐私 —— 该模块的核心 注册表绝不会离开当前主机。 - **不存在上传路径。** 此服务不会向 soc-intel 的 `/intel/bulk` 发送 POST 请求,不会创建 case,也不包含任何导出至网络的代码。CI 会断言源代码中不包含推送 endpoint。 - **默认(`EXTERNAL_LOOKUPS=0`)**:唯一联系的主机是你自行托管的 **soc-intel**,其暗网存储中已包含泄露数据库。注册表中的任何内容都不会发送给第三方。 - **`EXTERNAL_LOOKUPS=1`** 会为每个域添加一次实时的 Hudson Rock infostealer 查询(通过 soc-intel 代理,但域名确实会发送至 Hudson Rock)。仅为可选启用 —— 与 soc-osint 中的 `ACTIVE_PROBES` 遵循相同的机制。 - 导入和导出仅对**本地文件**进行读写。 - `supply.db` 已被 gitignored。请像备份其他任何敏感的 SOC 数据库一样对其进行备份。 UI 绑定 `0.0.0.0`,以便分析师能够通过 SOC 局域网访问它,这与其它所有的 stdlib 模块一样。在这里,隐私意味着注册表绝不会被**上传**到任何地方 —— 不存在对外的推送路径,如果出现此类路径,CI 将导致构建失败。如果你想进一步锁定,请在网络层限制入站访问(绑定 `SUPPLY_HOST=127.0.0.1`,或通过防火墙封锁端口)。 ## 来源 | 来源 | 类型 | 运行位置 | |--------|------|---------------| | soc-intel `/darkweb/credentials` | `credential-exposure` | 自托管 | | soc-intel `/darkweb/objects?type=stealer-log` | `stealer-log` | 自托管 | | soc-intel `/darkweb/objects?type=iab-listing` | `iab-listing` | 自托管 | | soc-intel `/darkweb/objects?type=ransomware-leak` | `ransomware-leak` | 自托管 | | soc-intel `/darkweb/objects?type=tg-message` | `tg-message` | 自托管 | | soc-intel `/enrich/hudsonrock/domain/` | `infostealer` | **外部,可选启用** | 通过 `?q=` 搜索的类型在 soc-intel 端使用模糊 `multi_match`,因此结果在存储之前会根据参与方的真实域名进行后置过滤。Telegram 帖子不包含结构化的域名信息,而是通过消息文本进行匹配。 严重程度:`ransomware-leak` → critical;`credential-exposure`、`stealer-log`、`iab-listing`、`infostealer` → high;`tg-message` → medium。 ## 注册表 在 UI 中添加、编辑和删除参与方。批量导入接受 CSV 或 JSON 列表;导入操作**基于 `domain` 保持幂等性** —— 注册表中已存在的域名将被更新,而不是重复创建。 ``` name,domain,category,criticality,contact,notes Acme Logistics,acme-logistics.example,supplier,high,ops@acme-logistics.example,ships nightly Beta Consulting,beta.example,vendor,medium,,payroll SaaS ``` 表头可选。类别:`client supplier vendor partner subsidiary other`。 关键性:`low medium high critical`。未知值将回退至 `other` / `medium`。通过 **Export CSV** / **Export JSON** 进行导出。 ## 扫描 - 某一行上的 **Scan** 用于扫描单个参与方;**Scan all** 将遍历整个注册表。 - 后台线程每 `SCAN_INTERVAL_H` 小时重新扫描所有内容(默认为 24;设置为 `0` 可禁用)。它会在启动时等待 30 秒以连接 soc-intel。 - 发现结果基于 `(party, kind, ref)` 进行去重。重复发现同一结果会更新 `last_seen`;首次发现计为 **new**。 ## 配置 ``` cp .env.example .env python3 app.py ``` | 变量 | 默认值 | 含义 | |-----|---------|---------| | `SUPPLY_PORT` | `8109` | 监听端口 | | `SUPPLY_HOST` | `0.0.0.0` | 绑定地址;设置为 `127.0.0.1` 表示仅限本地访问 | | `SUPPLY_DB` | `./supply.db` | SQLite 路径 | | `EXTERNAL_LOOKUPS` | `0` | 设为 `1` 可启用 Hudson Rock 实时查询 | | `SCAN_INTERVAL_H` | `24` | 后台重新扫描周期;设为 `0` 则禁用 | | `SOCINT_API_URL` | `http://localhost:8000/api` | soc-intel API | | `SOCINT_USER` / `SOCINT_PASS` | — | soc-intel 凭证 | ## API | 方法 | 路径 | 用途 | |--------|------|---------| | GET | `/api/parties` | 注册表 | | GET | `/api/findings[?party_id=N]` | 暴露发现结果 | | GET | `/api/stats` | KPI | | GET | `/api/export?fmt=csv\|json` | 下载注册表 | | POST | `/api/party/add` | JSON body | | POST | `/api/party/update?id=N` | JSON body | | POST | `/api/party/delete?id=N` | 同时删除其相关发现 | | POST | `/api/import` | CSV 或 JSON body | | POST | `/api/scan?id=N` \| `?all=1` | 扫描单个 / 全部 | | GET | `/health` | 存活状态检测 | | GET | `/manual` | 渲染后的 `MANUAL.md` | ## 许可证 MIT。
标签:Atomic Red Team, Python标准库, SOC工具, 威胁情报, 开发者工具, 数据泄露检测, 暗网监控, 漏洞发现, 调试辅助, 逆向工具