Veggis96/local-log-analyzer
GitHub: Veggis96/local-log-analyzer
一个基于 Python 的轻量级本地日志分析学习工具,通过规则检测可疑模式并生成分析报告和可视化仪表板,帮助初学者模拟安全运营中心的日志调查流程。
Stars: 0 | Forks: 0
# 本地 Log Analyzer
Local Log Analyzer 是一个专注于网络安全的实践学习项目,用于解析本地文本日志、检测常见的可疑模式,并生成分析员风格的报告。它最初只是对日志分析的一次小型探索,后来启发了更广泛的 [AI-Cyberdefense](https://github.com/Veggis96/AI-Cyberdefense) 项目。
该项目专为作品展示和学习而设计,非常适合 IT 支持、安全运营和初级网络安全岗位的从业者。
## 项目演进
Local Log Analyzer 最初是一个小型项目,旨在学习日志解析、基础检测逻辑、风险评分和安全报告。
在完成初始版本后,我将这个想法扩展成了 [AI-Cyberdefense](https://github.com/Veggis96/AI-Cyberdefense),这是一个受 SIEM/SOC 启发的大型项目,包含了标准化事件、模块化规则包、事件工作流、MITRE ATT&CK 上下文、SQLite 持久化存储以及面向分析员的仪表板。
## 在线演示
- [项目主页](https://veggis96.github.io/local-log-analyzer/)
- [基于浏览器的学习演示](https://veggis96.github.io/local-log-analyzer/app.html)
- [生成的仪表板](https://veggis96.github.io/local-log-analyzer/dashboard.html)
## 项目解决的问题
安全团队在开始调查时,通常会查看日志以寻找重复的登录失败、可疑的源 IP、账户锁定以及失败后的成功登录。本项目通过本地示例日志和易于理解的检测逻辑模拟了这一工作流。
## 核心功能
- 在本地分析 `.txt` 和 `.log` 文件。
- 检测重复的登录失败、端口扫描、账户锁定、失败后的成功登录以及来自新 IP 的成功登录。
- 计算简单的严重程度和风险等级。
- 生成终端输出、`report.txt`、`alerts.csv`、`summary.json` 和 `dashboard.html`。
- 包含一个纯浏览器端的小型 SIEM 风格学习界面,用于处理粘贴或上传的日志。
- 提供暴力破解、端口扫描、账户接管和干净基准活动的演示场景。
- 包含针对常见警报类型的 MITRE ATT&CK 和 OWASP 学习笔记。
- 包含面试笔记、调查指南、示例报告和作品集文档。
## 主截图
### 仪表板
风险等级、警报数量、已分析文件和可疑指标的整体概览。

## 更多截图
### 事件列表
小型 SIEM 风格的浏览器视图,包含演示场景、IOC 摘要和事件时间线。

### 检测详情
可疑登录活动的时间线和 IOC 详情。

### 报告
来自浏览器应用的风险摘要和生成的报告风格输出。

## 架构
```
flowchart LR
A["Sample or uploaded log file"] --> B["Parsing"]
B --> C["Detection rules"]
C --> D["Alert rows"]
D --> E["Risk score"]
D --> F["Terminal report"]
D --> G["CSV and JSON output"]
D --> H["HTML dashboard"]
A --> I["Browser app parser"]
I --> J["Mini SIEM view"]
```
## 技术栈
- Python 3
- 标准库模块:`argparse`、`csv`、`json`、`ipaddress`、`datetime`、`os`、`html`
- 用于浏览器应用的 HTML、CSS 和 JavaScript
- CSV、JSON、TXT、LOG 和 HTML 输出
- 简单的 Python 测试脚本
- 使用 GitHub Pages 托管静态演示
## 项目结构
```
analyzer.py Python command-line analyzer
app.html Browser-only learning demo
index.html GitHub Pages landing page
dashboard.html Generated demo dashboard
demo_summary.html / .csv Generated demo scenario summary
sample_log.txt Basic sample log
suspicious_log.txt Suspicious sample log
scenario_*.txt Focused demo scenarios
test_analyzer.py Test script
screenshots/ Original screenshots
docs/images/ README-optimized screenshots
*.md Portfolio, rules, guide, changelog and interview docs
```
`report.txt`、`alerts.csv`、`summary.json`、`dashboard.html` 和 `demo_summary.*` 是生成的演示产物。目前它们已被提交到仓库,以便展示示例输出和 GitHub Pages 内容,但未来的清理工作可能会将生成的产物移动到 `outputs/` 或 `docs/demo-output/` 文件夹中。
## 前置条件
- 命令行分析器需要 Python 3.10 或更高版本
- 运行 `app.html` 需要现代浏览器
无需任何第三方 Python 包。
## 快速开始
运行最实用的演示场景:
```
python analyzer.py --scenario account_takeover
```
运行所有演示场景:
```
python run_demo.py
```
在本地打开浏览器应用:
```
app.html
```
## 使用示例
分析默认示例:
```
python analyzer.py
```
分析特定文件:
```
python analyzer.py suspicious_log.txt
```
列出可用场景:
```
python analyzer.py --list-scenarios
```
分析文件夹中所有受支持的日志:
```
python analyzer.py --log-folder C:\Logs
```
更改登录失败阈值:
```
python analyzer.py suspicious_log.txt --failed-login-limit 5
```
将输出文件保存到另一个文件夹:
```
python analyzer.py suspicious_log.txt --output-folder C:\Temp
```
仅显示达到最低严重程度的警报:
```
python analyzer.py suspicious_log.txt --min-severity HIGH
```
## 测试
```
python test_analyzer.py
```
预期输出:
```
All tests passed.
```
## 安全与隐私注意事项
- 包含的日志均为虚拟的学习/演示数据。
- 切勿上传或提交真实的客户、雇主、用户、IP、主机名或事件数据。
- 真实日志可能包含敏感的用户名、源 IP、主机名、会话 ID 或身份验证详细信息。
- 本项目不会对数据进行加密、管理访问控制,也不会连接到实时的安全系统。
- 浏览器应用在本地运行,仅适用于演示数据。
## 当前局限性
- 这不是一个生产级别的 SIEM。
- 检测逻辑是特意设计的简单且基于规则。
- 它不接入真实的 SIEM、EDR、防火墙或身份提供商的数据源。
- 它不验证真实的威胁情报。
- 它不封禁 IP、重置密码或修改安全控制策略。
## 未来改进
- 将生成的输出文件移动到专门的演示输出文件夹中。
- 添加日期过滤和更丰富的时间线分组。
- 添加更多的事件类型和解析格式。
- 添加可配置的检测规则。
- 添加更多截图和简短的演示 GIF。
- 如果 Python 分析器进一步扩展,将添加小型的包结构。
## 我的收获
- 使用 Python 读取和解析本地日志文件。
- 将原始事件转化为警报、风险评分和报告。
- 将基础检测逻辑与分析员的工作流相结合。
- 通过演示、截图、规则和面试笔记来展示一个技术项目。
## AI 辅助开发
本项目是在 AI 辅助开发工具的支持下迭代开发的。我定义并完善了项目目标、需求、架构、技术选型和功能,同时对生成的实现进行审查、测试和改进。
## 许可证
本项目基于 [MIT License](LICENSE) 发布。
标签:URL发现, 后端开发, 多模态安全, 安全检测, 安全运营, 扫描框架, 插件系统, 教学项目, 数据可视化, 风险评分