gustavonogvi/vassago-analyzer
GitHub: gustavonogvi/vassago-analyzer
一款面向蓝队工作流的命令行 SSH 日志分析器,通过规则引擎将蜜罐事件映射为 MITRE ATT&CK 告警并导出报告。
Stars: 0 | Forks: 0
# vassago
Vassago 是一个为 Blue Team 工作流构建的命令行 SSH 日志分析器。它从 SQLite 数据库读取结构化事件数据,运行检测规则,并将攻击行为以严重性排序的告警呈现,映射到 MITRE ATT&CK 技巧。发现结果可以导出为 JSON 或 HTML 报告。
作为一个学习 Blue Team / SOC 基础的项目构建。
## 功能
Vassago 摄取 SSH 蜜罐数据并在其上运行一组检测规则。每条规则针对一种特定的攻击模式——暴力破解、凭证填充、密码喷洒、已知工具指纹、非工作时间活动。每一次匹配都会产生一个包含严重性、描述、MITRE ATT&CK 映射和支持证据的告警。结果保存到本地 SQLite 数据库,并可选择性导出为报告。
## 工作原理
```
SQLite database (honeypot events)
↓
engine loads all detection rules
↓
each rule queries the database for its pattern
↓
matches produce Alert objects (severity, description, MITRE, evidence)
↓
alerts sorted by severity (CRITICAL → HIGH → MEDIUM → LOW)
↓
results saved to alerts.db
↓
optional export: JSON or HTML report
```
## 检测规则
| 规则 | 技巧 | 严重性 |
|---|---|---|
| 检测到暴力破解 | [T1110.001 — 密码猜测](https://attack.mitre.org/techniques/T1110/001) | 高 |
| 检测到凭证填充 | [T1110.004 — 凭证填充](https://attack.mitre.org/techniques/T1110/004) | 高 |
| 检测到密码喷洒 | [T1110.003 — 密码喷洒](https://attack.mitre.org/techniques/T1110/003) | 中 |
| 已知攻击工具指纹 | [T1059 — 命令与脚本解释器](https://attack.mitre.org/techniques/T1059) | 中 |
| 非工作时间活动 | [T1078 — 有效账户](https://attack.mitre.org/techniques/T1078) | 低 |
技巧来源于 [MITRE ATT&CK 框架](https://attack.mitre.org)。
## 技术栈
- Python — 核心分析器、检测引擎、报告生成
- SQLite — 读取事件数据,写入告警结果
- MITRE ATT&CK — 每个告警的技巧映射
- HTML/CSS — 自包含的报告输出,无框架依赖
## 要求
- Python 3.12+
- [uv](https://github.com/astral-sh/uv)(软件包管理器)
## 安装
```
# 克隆仓库
git clone https://github.com/gustavonogvi/Vassago-Analyzer.git
cd vassago-analyzer
# 创建虚拟环境
uv sync
```
## 数据依赖
Vassago 从 [Naberius](https://github.com/gustavonogvi/naberius) 生成的 SQLite 数据库读取数据,这是一个 SSH 蜜罐采集器。运行前必须存在 `data/naberius.db`。提供该文件有三种方式:
```
# 从蜜罐主机复制数据库
cp /path/to/naberius.db data/naberius.db
# 或使用符号链接
ln -s /path/to/naberius.db data/naberius.db
# 或直接指向 --db
uv run python main.py --db /path/to/naberius.db
```
该文件被忽略在 Git 之外——它不会被提交到仓库。
## 运行
```
# 基本运行 — 从 data/naberius.db 读取,写入 data/alerts.db
uv run python main.py
# 自定义数据库路径
uv run python main.py --db /path/to/naberius.db
# 导出 JSON 报告
uv run python main.py --report json --output reports/report
# 导出 HTML 报告
uv run python main.py --report html --output reports/report
```
## CLI 参数
| 参数 | 默认值 | 描述 |
|---|---|---|
| `--db` | `data/naberius.db` | SQLite 事件数据库路径 |
| `--alerts` | `data/alerts.db` | 写入告警结果路径 |
| `--report` | — | 导出格式:`json` 或 `html` |
| `--output` | `reports/report` | 输出路径(不含扩展名) |
## 项目结构
```
vassago-analyzer/
├── analyzer/
│ ├── engine.py # loads rules, runs analysis, saves alerts
│ └── rules.py # detection rules + Alert dataclass
├── data/
│ └── naberius.db # input database, gitignored
├── reports/ # exported reports, gitignored
├── main.py # CLI entrypoint
├── pyproject.toml
└── README.md
```
## 添加新规则
每条规则都是一个带有元数据字段和 `run` 方法的类。要添加一条:
```
class MyRule:
name = "Rule Name"
mitre_technique = "T1234"
mitre_name = "Technique Name"
severity = "HIGH"
def run(self, conn: sqlite3.Connection) -> list[Alert]:
# query the database, return a list of Alert objects
...
```
然后在 `rules.py` 底部将其注册到 `ALL_RULES`。引擎会自动识别它。
## 收获
- 如何围绕可插拔规则构建检测引擎
- MITRE ATT&CK 技巧如何映射到日志中观察到的真实行为
- 暴力破解、凭证填充与密码喷洒在操作上的区别
- HASSH 指纹如何通过 SSH 算法协商识别攻击工具
- 如何生成结构化的告警输出以用于分诊和报告
- SOC 分析员的基本工作流程:摄入 → 检测 → 分诊 → 报告
标签:Cloudflare, HTML报告, JSON导出, MITRE ATT&CK, PB级数据处理, SQLite, SSH威胁检测, SSH日志分析, T1059, T1078, T1110, T1110.001, T1110.003, T1110.004, 严重性排序, 云计算, 代理支持, 凭据填充, 取证, 告警, 安全运维, 审计, 密码喷洒, 密码猜测, 已知工具指纹, 异常登录, 提示词模板, 数据统计, 日志分析器, 端口扫描, 网络安全, 蜜罐, 规则引擎, 证书利用, 调试辅助, 逆向工具, 速率限制, 隐私保护, 非工作时间活动