yugg755i/auth-log-analyzer
GitHub: yugg755i/auth-log-analyzer
一款基于 Python 的 SSH 日志取证分析命令行工具,能够自动解析认证日志、检测安全威胁并生成附带情报丰富化结果的 HTML 事件报告。
Stars: 0 | Forks: 0
# Log Analyzer
一款用于 SSH 认证日志取证分析的单命令 CLI 工具。
分析一个或多个日志文件,并生成一份独立的 HTML 事件报告,包含检测结果、威胁情报丰富化、地理位置信息及调查上下文 — 还可选择导出为 PDF。
```
logs → parse → detect → enrich → report
```
基于真实的事件响应工作流构建:给定一系列 SSH 认证日志,快速识别可疑活动并生成适合分析师审查的报告。
## 功能
- 一款用于 SSH 认证日志取证分析的命令行工具。
- 解析 SSH 认证日志,区分失败尝试、成功尝试和无效用户尝试
- 支持单个文件、目录、glob 模式、轮转日志和 `.gz` 归档
- 通过 YAML 配置文件自定义检测阈值
- 时间范围过滤(`--since` / `--until`)
- 滑动窗口 SSH 暴力破解检测
- 用户名枚举检测
- 会话重建,包括首次出现时间、最后出现时间、尝试次数和认证结果
- 检测暴力破解活动后的成功登录
- 为公网 IP 提供 AbuseIPDB 威胁情报丰富化
- 通过 ip-api.com 为公网 IP 提供 GeoIP 丰富化(国家、地区、城市)
- 为 AbuseIPDB 和 GeoIP 查询提供本地缓存,并具有可配置的 TTL,因此重复运行不会重复请求外部 API
- 执行摘要,包含威胁等级、主要攻击类型和 MITRE ATT&CK 技术映射
- 基于每个 IP 的置信度评分,并提供逐项信号的检查清单明细
- 确定性、基于规则的调查叙述(不包含 AI/LLM 生成的内容)
- 每个被标记 IP 的可视化时间轴流程,以及作为证据的每个发现背后的原始日志行
- 独立的 HTML 事件报告,内嵌图表,针对 PDF 导出进行了打印优化
- 在 HTML 报告之外,可选导出 PDF(通过 Playwright)
- 可选导出 CSV 和 SQLite
- 使用 pytest 对解析器、检测器、评分和配置模块进行单元测试
## 安装
```
git clone https://github.com/yugg755i/log-analyzer.git
cd log-analyzer
pip install -r requirements.txt
pip install -e .
```
这会将 `loganalyzer` 安装为一个可在任何地方使用的命令,而不仅仅是在仓库内:
```
loganalyzer -h
```
创建一个包含您的 AbuseIPDB 密钥的 `.env` 文件(可选 — 该工具在没有它的情况下也能正常运行,只是会跳过威胁情报丰富化):
```
ABUSEIPDB_API_KEY=your_key_here
```
GeoIP 丰富化使用 ip-api.com 的免费层级,不需要 API 密钥。
### PDF 导出(可选)
PDF 导出是一个可选的附加功能,因为它引入了无头浏览器:
```
pip install -e ".[pdf]"
playwright install chromium
```
## 用法
```
# 单个日志文件
loganalyzer logs/auth.log
# 日志目录(包含 rotated / .gz)
loganalyzer logs/ -o incident_report.html
# glob,限定于时间窗口内
loganalyzer "logs/*.log.gz" --since 2026-06-01 --until 2026-06-09
# 调整 brute-force 检测:5-minute 窗口内 8 次失败
loganalyzer logs/auth.log --threshold 8 --window 5
# 调整 username 枚举:5-minute 窗口内 3 个不同的 username
loganalyzer logs/auth.log --enum-threshold 3 --enum-window 5
# 跳过 AbuseIPDB
loganalyzer logs/auth.log --no-enrich
# 跳过 GeoIP
loganalyzer logs/auth.log --no-geoip
# 禁用本地 enrichment 缓存(始终直接获取最新的 AbuseIPDB / GeoIP)
loganalyzer logs/auth.log --no-cache
# 覆盖 cached enrichment 结果的重用时长(默认:168h / 1 周)
loganalyzer logs/auth.log --cache-ttl-hours 24
# 同时将报告导出为 PDF(需要 [pdf] extra)
loganalyzer logs/auth.log --export-pdf report.pdf
# 同时保留 queryable 记录
loganalyzer logs/auth.log --export-csv out.csv --export-db
# 使用自定义配置
loganalyzer logs/ --config config/loganalyzer.yaml
```
完整参数列表:`loganalyzer --help`
## 配置
可以使用 YAML 配置文件自定义检测阈值。
默认情况下,应用程序会查找:
config/loganalyzer.yaml
示例:
```
bruteforce_threshold: 5
bruteforce_window: 5
enum_threshold: 5
enum_window: 5
confidence_threshold: 50
cache_ttl_hours: 168
```
当同时提供两者时,命令行参数会覆盖配置文件中的值。
## 项目结构
```
log-analyzer/
├── pyproject.toml # packaging + loganalyzer console script (+ optional [pdf] extra)
├── requirements.txt
├── README.md
├── config/
│ └── loganalyzer.yaml # optional detection thresholds and application settings
├── logs/ # SSH authentication logs (plain or .gz)
├── log_analyzer/
│ ├── __init__.py
│ ├── cli.py # CLI entry point and application orchestration
│ ├── config.py # configuration loading, validation, and defaults
│ ├── parser.py # SSH log parsing with .gz support
│ ├── input_resolver.py # file, directory, and glob resolution
│ ├── detector.py # brute-force detection, username enumeration, session analysis
│ ├── enrichment.py # AbuseIPDB threat intelligence enrichment
│ ├── geoip.py # GeoIP enrichment via ip-api.com
│ ├── cache.py # local TTL-based cache for enrichment lookups
│ ├── pdf_export.py # HTML → PDF export via Playwright
│ ├── database.py # optional CSV / SQLite export
│ └── report/
│ ├── __init__.py
│ ├── builder.py # assembles report context
│ ├── scoring.py # confidence scoring, MITRE mapping, narrative generation
│ ├── renderer.py # renders the self-contained HTML report
│ └── template.html # report template, styling, print CSS, and inline charts
├── data/ # generated reports, exports, and enrichment cache (gitignored)
├── tests/
│ ├── __init__.py
│ ├── conftest.py # shared pytest fixtures
│ ├── test_config.py # configuration tests
│ ├── test_detector.py # detection engine tests
│ ├── test_parser.py # parser tests
│ └── test_scoring.py # confidence scoring / narrative tests
└── screenshots/
└── report.png # README preview image
```
## 技术栈
- Python 3
- Jinja2
- Requests
- PyYAML
- python-dotenv
- pytest
- Playwright(可选,用于 PDF 导出)
- SQLite(可选)
- AbuseIPDB API
- ip-api.com (GeoIP)
## 报告预览
生成的调查报告包括执行摘要、置信度评分、MITRE ATT&CK 映射、威胁情报、地理位置、时间轴、调查档案和原始取证证据。

标签:PB级数据处理, PE 加载器, Python, 威胁情报, 字符串匹配, 安全报告, 安全规则引擎, 安全运维, 库, 应急响应, 开发者工具, 恶意代码分类, 无后门, 特征检测, 红队行动, 逆向工具