atharva07-cyber/log-analyzer-tool
GitHub: atharva07-cyber/log-analyzer-tool
一款纯命令行安全日志分析工具,支持多格式日志解析、异常检测和跨源事件关联,帮助快速发现和研判安全事件。
Stars: 0 | Forks: 0
# 日志分析工具 — 日志关联
一款纯命令行工具(无 Web UI,无服务器端),用于解析安全日志、
检测异常,并**跨多个日志源**关联事件以
发现安全事件。可在 PowerShell、cmd.exe 或任何 shell 中运行。
## 检测内容
| 检测器 | 描述 |
|---|---|
| `brute_force` | 单个 IP 在滚动时间窗口内发生 N 次以上登录失败 |
| `credential_stuffing` | 单个 IP 在短时间内尝试多个不同的用户名 |
| `unusual_hour` | 在配置的工作时间之外成功登录 |
| `web_scan` | 单个 IP 在短时间内访问多个不同的路径/触发大量 404(枚举) |
| `first_seen_ip_success` | 某 IP 在日志中的首次出现即为一次成功登录 |
## 关联(跨日志源)
- **暴力破解 → 成功**:某 IP 发生多次连续登录失败后,在同一时间窗口内紧跟一次成功登录,将被标记为 `CRITICAL` 级别的“疑似账号被盗用”事件。
- **侦察 → 攻击**:某 IP 被检测到正在扫描 Web 日志(产生大量 404),并且*同时*在同一时间窗口内的 auth 日志中尝试了身份验证,将被标记为 `HIGH` 级别的“侦察后进行身份验证尝试”事件 ——
这就是跨独立解析日志文件的多源关联。
## 支持的日志格式
- `linux_auth` — `/var/log/auth.log` SSH 日志(Failed/Accepted password, Invalid user)
- `apache_combined` — Apache/Nginx combined access logs
- `windows_csv` — 通过 `Get-WinEvent -FilterHashtable @{LogName='Security';Id=4624,4625} | Export-Csv security.csv` 导出的 CSV
- `syslog_generic` — 通用的 `Mon DD HH:MM:SS host proc: msg` syslog
- 默认会自动检测格式;可使用 `--format` 覆盖。
## 设置(PowerShell 或 cmd)
```
cd log_analyzer_tool
pip install -r requirements.txt
```
## 快速开始 — 生成示例数据并运行
```
python log_analyzer.py generate-sample
python log_analyzer.py analyze -i sample_data\auth.log sample_data\access.log -o report
```
这将在控制台打印带有颜色区分的摘要,并生成 `report.json`
和 `report.csv` 文件。
## 用法
```
# 分析单个日志文件
python log_analyzer.py analyze -i C:\logs\auth.log
# 一起分析多个日志(启用 cross-source correlation)
python log_analyzer.py analyze -i auth.log access.log -o out\report
# 强制使用特定 parser 而不是自动检测
python log_analyzer.py analyze -i security_events.csv --format windows_csv
# 调整检测阈值
python log_analyzer.py analyze -i auth.log --window 10 --failed-threshold 3 --business-start 8 --business-end 18
```
### 选项
```
-i, --input One or more log file paths (required)
-o, --output Output report path prefix -> writes .json and .csv
--format auto | linux_auth | apache_combined | windows_csv | syslog_generic
--window Correlation / brute-force window in minutes (default 5)
--failed-threshold Failed logins in window to flag brute force (default 5)
--business-start/-end Business hours range used for unusual_hour detection (default 7-20)
```
## 项目结构
```
log_analyzer_tool/
├── log_analyzer.py # CLI entry point (argparse)
├── core/
│ ├── models.py # Event / Anomaly / Incident data classes
│ ├── parsers.py # Log format parsers + auto-detection
│ ├── detectors.py # Anomaly detection rules
│ ├── correlator.py # Cross-source correlation -> incidents
│ └── reporter.py # Colored console output + JSON/CSV reports
├── sample_data/
│ └── generate_logs.py # Generates test logs with injected anomalies
└── requirements.txt
```
## 扩展功能
- 添加新的日志格式:在 `core/parsers.py` 中编写 `parse_()` 函数,使其返回 `Event` 对象列表,然后将其接入 `parse_file()` 中。
- 添加新的检测规则:在 `core/detectors.py` 中编写 `detect_()` 函数,使其返回 `Anomaly` 对象列表,然后将其添加到 `run_all_detectors()` 中。
- 添加新的关联模式:在 `core/correlator.py` 中编写一个返回 `Incident` 对象列表的函数,并将其添加到 `build_incidents()` 中。
标签:Homebrew安装, IP 地址批量处理, Python, 事件关联, 安全运营, 密码管理, 异常检测, 扫描框架, 文档结构分析, 无后门, 红队行动, 逆向工具