liamadale/pisces-scripts

GitHub: liamadale/pisces-scripts

一套基于 Python 的安全运营工具包,用于查询、丰富和分类 PISCES 项目中的网络日志数据。

Stars: 0 | Forks: 0

![](https://pisces-intl.org/wp-content/uploads/2025/03/PISCES-white.png) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/3943ee7f8b102316.svg)](https://github.com/liamadale/pisces-scripts/actions/workflows/ci.yml) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/liamadale/pisces-scripts/badge)](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。 OpenSearch Web UI **Mints Web UI** — 票据浏览器与威胁建模仪表板、处置评分和已知恶意IP跟踪。 Mantis Web UI **仪表板 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