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, 严重性排序, 云计算, 代理支持, 凭据填充, 取证, 告警, 安全运维, 审计, 密码喷洒, 密码猜测, 已知工具指纹, 异常登录, 提示词模板, 数据统计, 日志分析器, 端口扫描, 网络安全, 蜜罐, 规则引擎, 证书利用, 调试辅助, 逆向工具, 速率限制, 隐私保护, 非工作时间活动