liamadale/pisces-scripts
GitHub: liamadale/pisces-scripts
一套基于 Python 的安全运营工具包,用于查询、丰富和分类 PISCES 项目中的网络日志数据。
Stars: 0 | Forks: 0

[](https://github.com/liamadale/pisces-scripts/actions/workflows/ci.yml)
[](https://scorecard.dev/viewer/?uri=github.com/liamadale/pisces-scripts)
# PISCES SOC分析师工具包
一个基于Python的安全运营工具包,用于查询、过滤、丰富和分类来自PISCES项目数据集的网络日志数据。通过OpenSearch针对**Malcolm**(Zeek + Suricata + Arkime)进行目标定位。旨在通过分析师维护的YAML过滤器和结构化威胁情报 enrichment 来减少误报噪音。
## 概述
该工具包通过组合以下功能,从高容量日志数据中呈现可操作威胁:
- **预查询过滤**:通过YAML定义的Elasticsearch DSL `must_not`子句进行过滤,每次搜索前重新加载
- **威胁情报 enrichment**:通过GreyNoise、AbuseIPDB、Shodan和VirusTotal进行 enrichment
- **IP组织识别** — CDN、云提供商和已知扫描器识别(Shodan、Censys、Stretchoid等),并自动更新范围
- **交互式误报管理**:支持注释的快速过滤器创建
- **Mints票务集成**:用于事件跟踪和提交
## 开发透明度 — AI工具的使用
本项目借助AI编码工具创建。AI用于:
- 生成初始代码实现
- 起草文档和使用示例
所有AI生成的内容均已由人工审核和测试。
## 功能
### 1. Malcolm/Zeek OpenSearch 查询器 (`src/querier/opensearch_querier.py`)
查询Zeek协议日志,从Malcolm的OpenSearch实例中获取10种日志类型:`conn`、`dns`、`http`、`ssl`、`smtp`、`rdp`、`smb`、`ssh`、`notice` 和 `weird`。每个协议模块处理字段解析、去重和展示。共享交互循环支持 enrichment、FP过滤器创建、Mints搜索和从任何日志类型提交票据。
### 2. 误报过滤器管理 (`src/querier/fp_manager.py`)
从警报上下文交互式创建YAML过滤器,以IP、签名和传感器为种子。注释字段可从GreyNoise enrichment结果中自动建议。过滤器在下一个 `[r]`e-search 时生效,无需重启工具。有关完整架构和编写指南,请参见 [docs/filter-schema.md](docs/filter-schema.md)。
### 3. 威胁情报 enrichment (`src/enricher/threat_intel.py`)
针对每个IP按顺序运行以下流水线:
1. **GreyNoise** — 分类(良性/恶意/未知)、名称、原因;如果是良性,则提供FP过滤器并停止
2. **AbuseIPDB** — 置信度分数、报告数量、ISP、域名、使用类型
3. **Shodan** — 开放端口、操作系统、组织、主机名、已知CVE
4. **VirusTotal** — 供应商检测数量统计、ASN、国家
5. **参考URL** — 始终在末尾打印四个服务的链接
### 4. Mints 集成 (`src/mantis/`)
通过离线索引或实时网络抓取搜索现有票据。
### 5. Web UI (`apps/`)
四个基于Flask + HTMX的浏览器应用程序通过中央门户一起提供。可通过 `run_all.py` 一次性启动全部(推荐),或单独在各自端口运行每个应用。
| 应用 | 路径(组合) | 独立启动器 | 独立端口 | 用途 |
|---|---|---|---|---|
| **中心** | `/` | — | 5000 | 包含所有应用链接的着陆页 |
| **OpenSearch** | `/opensearch` | `opensearch_web_run.py` | 5001 | 跨协议Zeek IP活动矩阵,按协议深入剖析,内联 enrichment |
| **Mints** | `/mantis` | `mantis_web_run.py` | 5003 | 票据浏览器和威胁建模仪表板 |
| **仪表板** | `/dashboard` | `dashboard_web_run.py` | 5004 | 聚合分析仪表板 |
OpenSearch应用概览页面展示每个源IP在所有10个Zeek日志类型中出现的次数 — 这是CLI无法实现的跨协议关联。
**OpenSearch Web UI** — 跨协议IP活动矩阵,显示所有10个Zeek日志类型的命中计数,支持按协议深入剖析和内联 enrichment。
**Mints Web UI** — 票据浏览器与威胁建模仪表板、处置评分和已知恶意IP跟踪。
**仪表板 Web UI** — 单视图聚合分析。三个标签化区域:
- **概览** — 统计行(票据、恶意/FP IP数、活动传感器、OS通知)和IP判决分布环形图
- **OpenSearch** — 协议分解、传感器活动、顶级源IP;另包含“Malcolm仪表板”子标签页,提供协议特定的Zeek图表(DNS查询类型/域名/响应码、HTTP方法/状态码/主机/用户代理、SSL/TLS版本/密码套件/SNI/验证、连接状态/端口/字节)
- **威胁情报** — 攻击类型分布、封锁列表来源、每月票据时间线、顶级威胁IP表格
所有区域均通过HTMX在首次标签激活时懒加载,并在服务器端缓存(可通过 `PISCES_DASHBOARD_CACHE_TTL` 配置TTL)。
## 安装
本项目使用 [uv](https://github.com/astral-sh/uv) 进行依赖管理。请先安装它(如果尚未安装):
```
curl -LsSf https://astral.sh/uv/install.sh | sh
```
然后:
```
git clone
cd pisces-scripts
uv sync
cp .env.example .env # edit with your credentials
```
使用 `uv run
**Mints Web UI** — 票据浏览器与威胁建模仪表板、处置评分和已知恶意IP跟踪。
**仪表板 Web UI** — 单视图聚合分析。三个标签化区域:
- **概览** — 统计行(票据、恶意/FP IP数、活动传感器、OS通知)和IP判决分布环形图
- **OpenSearch** — 协议分解、传感器活动、顶级源IP;另包含“Malcolm仪表板”子标签页,提供协议特定的Zeek图表(DNS查询类型/域名/响应码、HTTP方法/状态码/主机/用户代理、SSL/TLS版本/密码套件/SNI/验证、连接状态/端口/字节)
- **威胁情报** — 攻击类型分布、封锁列表来源、每月票据时间线、顶级威胁IP表格
所有区域均通过HTMX在首次标签激活时懒加载,并在服务器端缓存(可通过 `PISCES_DASHBOARD_CACHE_TTL` 配置TTL)。
## 安装
本项目使用 [uv](https://github.com/astral-sh/uv) 进行依赖管理。请先安装它(如果尚未安装):
```
curl -LsSf https://astral.sh/uv/install.sh | sh
```
然后:
```
git clone