ItsMazzu/security-log-analyzer
GitHub: ItsMazzu/security-log-analyzer
一款用于检测认证日志中暴力破解、凭证填充等威胁的SOC风格安全分析工具,适合安全学习和蓝队入门。
Stars: 0 | Forks: 0
# 安全日志分析器
一款专业的安全运营中心 (SOC) 风格认证日志分析工具,可实时检测和分类安全威胁。
## 概述
本项目通过分析认证日志来演示真实的安全监控,旨在识别:
- **暴力破解攻击**:针对同一账户的多次登录尝试
- **凭证填充**:来自同一 IP 针对多个账户的尝试
- **账户盗用模式**:可疑的“先失败后成功”登录序列
- **已知恶意 IP**:检测来自黑名单 IP 的活动
### 主要特性
✓ **基于时间的暴力破解检测**(60 秒内失败 5 次以上)
✓ **高级威胁分类**(可检测多种攻击模式)
✓ **账户盗用模式识别**(失败后紧接着成功)
✓ **IP 黑名单支持**,用于已知恶意地址
✓ **专业终端 UI**,采用 Rich 格式化
✓ **批量数据库操作**,使用 `executemany()`
✓ **严格的日期时间验证**,而非正则表达式模式
✓ **模块化、易于学习的架构**
## 项目结构
```
security-log-analyzer/
├── src/
│ ├── __init__.py # Package initialization
│ ├── main.py # Application entry point & orchestration
│ ├── parser.py # CSV loading and validation
│ ├── analyzer.py # Threat detection logic
│ ├── database.py # SQLite operations
│ └── ui.py # Rich terminal formatting
├── config/
│ └── malicious_ips.txt # IP blacklist
├── data/
│ └── auth_logs.csv # Input log data
├── database/
│ └── logs.db # SQLite database (auto-created)
├── run.py # Entry point script
├── requirements.txt # Dependencies
└── README.md # This file
```
## 安装
### 1. 安装依赖
```
pip install -r requirements.txt
```
### 2. 添加恶意 IP(可选)
编辑 `config/malicious_ips.txt` 以添加已知的恶意 IP 地址:
```
# 每个 IP 一行,注释以 # 开头
192.168.1.254
10.0.0.1
203.0.113.45
```
## 用法
### 运行分析器
```
python run.py
```
### 输出部分
**1. 认证日志表**
- 显示所有解析后的日志条目
- 颜色编码状态(绿色 = 成功,红色 = 失败)
**2. 摘要统计**
- 总日志数、成功/失败计数
- 唯一用户数和 IP 地址数
**3. 检测到的威胁**
- 具有攻击分类的威胁 IP 列表
- 显示尝试次数和攻击类型
**4. 可能的账户盗用**
- 标记可疑模式:多次失败后紧接着成功
- 用于检测密码破解成功或账户接管
**5. 已知恶意 IP 活动**
- 高亮显示来自黑名单 IP 的活动
## 工作原理
### 阶段 1:加载与解析
**模块**:`parser.py`
- 加载 CSV 认证日志
- 使用 `datetime.strptime()` 验证时间戳(确保日期实际有效)
- 使用正则表达式模式验证 IP 地址
- 返回干净、经过验证的日志列表
### 阶段 2:存入数据库
**模块**:`database.py`
- 使用 `cursor.executemany()` 进行高效的批量插入
- 单次操作处理 63 条日志,而非 63 个单独查询
- 存储在 SQLite 中,并对时间戳和 IP 字段建立索引
### 阶段 3:威胁分析
**模块**:`analyzer.py`
#### 基于时间的暴力破解检测
```
# 在 60 秒窗口内检测到 5 次以上失败
# 比单纯计算总尝试次数更真实
```
#### 凭证填充识别
```
# 识别来自同一 IP 针对 3 个以上不同用户的尝试
# 提示正在测试预泄露密码列表
```
#### 账户盗用模式
```
# 标记:2 次以上失败登录尝试后紧跟成功登录
# 可能表示密码破解成功或用户重新获得访问权限
```
#### 已知恶意 IP 检测
```
# 将所有尝试 IP 与 config/malicious_ips.txt 进行比对
# 高亮显示所有匹配项
```
### 阶段 4:显示结果
**模块**:`ui.py`
- 使用 Rich 库进行专业终端输出
- 针对不同威胁类别的颜色编码面板
- 用于日志显示的可读表格
- 状态指示器和统计数据
## 代码示例
### 示例 1:攻击分类
```
# 分析器自动分类攻击类型
# 单一攻击类型:
"Potential Brute Force Attack"
# 检测到多种攻击模式:
"Potential Brute Force & Credential Stuffing Attack"
```
### 示例 2:自定义威胁检测
向 `analyzer.py` 添加新的检测逻辑:
```
def detect_unusual_hours(logs):
"""Detect login attempts during unusual hours (e.g., 2-4 AM)"""
unusual = {}
for log in logs:
time = parse_timestamp(log['timestamp']).hour
if time in [2, 3, 4]: # 2-4 AM
ip = log['ip']
unusual[ip] = unusual.get(ip, 0) + 1
return unusual
```
然后添加到 `get_threat_summary()` 并在 `ui.py` 中显示。
### 示例 3:扩展黑名单
```
# config/malicious_ips.txt
# 已知僵尸网络 IP
192.0.2.1
198.51.100.5
# Tor 出口节点
203.0.113.10
203.0.113.11
```
## 学习成果
本项目教授:
1. **真实安全概念**
- 不同的攻击模式及其特征
- SOC 如何检测威胁
- 实用的日志分析
2. **Python 最佳实践**
- 模块化代码架构
- 用于清晰说明的类型提示
- 正确的错误处理
- 日期时间操作(而非正则表达式!)
3. **数据库操作**
- SQLite 批量插入 (`executemany`)
- 高效的数据存储
- 索引查询
4. **终端用户界面**
- 用于专业输出的 Rich 库
- 颜色编码警报
- 格式化表格和面板
5. **安全分析**
- 日志解析与验证
- 模式识别
- 威胁分类
## 测试
### 使用样本数据运行
包含的 `data/auth_logs.csv` 包含 63 个样本条目,其中有:
- 成功登录 (19)
- 失败尝试 (44)
- 3 种不同的暴力破解攻击模式
- 账户盗用尝试
- 凭证填充尝试
### 修改日志以进行自定义测试
编辑 `data/auth_logs.csv` 以添加您自己的测试场景:
```
timestamp,username,ip,status
2026-03-01 12:00:00,admin,192.168.1.1,failed
2026-03-01 12:00:05,admin,192.168.1.1,failed
2026-03-01 12:00:10,admin,192.168.1.1,failed
```
## 性能说明
- **批量插入速度**:单次操作存储约 63 条日志(对比 63 次单独操作)
- **检测算法**:所有分析器的复杂度均为 O(n)
- **内存使用**:极低 - 所有数据存储在简单的字典中
## 未来增强
在不过度工程化的前提下可能的补充:
- [ ] 基于地理位置的警报(来自遥远 IP 的异地登录)
- [ ] 跨多次运行的惯犯追踪
- [ ] 检测到的威胁 CSV 导出
- [ ] 警报严重级别(低/中/高/严重)
- [ ] 速率限制统计
- [ ] 失败登录恢复时间分析
## 项目状态
**重构版 v1.0** - 2026 年 3 月
相较原版的主要改进:
- ✓ 易于维护的模块化架构
- ✓ 正确的日期时间验证
- ✓ 批量数据库操作
- ✓ 增强的威胁检测
- ✓ 账户盗用模式识别
- ✓ IP 黑名单支持
- ✓ 更清晰的代码组织
- ✓ 全面的文档
## 技术
- **Python 3.8+**
- **Rich 13.7.0** - 终端格式化
- **SQLite** - 数据库存储
- **标准库** - datetime, csv, collections, pathlib
## 作者
安全分析学习项目
## 许可证
仅供教育用途
标签:AMSI绕过, ATT&CK模拟, IP黑名单, PoC, Python, Rich库, SQLite, 代码示例, 凭证填充, 威胁检测, 安全运营中心, 异常检测, 撞库, 数据分析, 无后门, 暴力破解, 红队行动, 终端UI, 网络安全, 网络映射, 账户接管, 隐私保护