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 映射、威胁情报、地理位置、时间轴、调查档案和原始取证证据。 ![报告预览](https://static.pigsec.cn/wp-content/uploads/repos/cas/68/682cfed18e2584291dca29f01ccb273d86725a1675bc04f8d58cc621feb013c0.png)
标签:PB级数据处理, PE 加载器, Python, 威胁情报, 字符串匹配, 安全报告, 安全规则引擎, 安全运维, 库, 应急响应, 开发者工具, 恶意代码分类, 无后门, 特征检测, 红队行动, 逆向工具