sxjalxo/SIEMLite
GitHub: sxjalxo/SIEMLite
一款轻量级 Python 安全监控 CLI 工具,将 Web 漏洞扫描、日志分析与跨模块威胁关联整合于一体。
Stars: 0 | Forks: 0
# SIEM-Lite v1.0
一个轻量级的基于 Python 的安全工具,它将 **Web 漏洞扫描**、**日志分析**、**跨模块威胁关联**和 **受 SIEM 启发的功能** 统一整合到一个 CLI 中。
## 功能
### 核心安全模块
| 模块 | 功能 | 严重程度 |
|---|---|---|
| **Scanner** | SQL 注入检测(10 个 payload,20+ 错误签名) | HIGH |
| **Scanner** | 反射型 XSS 检测(10 个 payload) | HIGH |
| **Scanner** | 安全标头分析(7 个标头 + 信息泄露) | HIGH-LOW |
| **Scanner** | TCP 端口扫描(20 个常用端口) | INFO |
| **Log Analyzer** | 暴力破解登录检测 | HIGH |
| **Log Analyzer** | 可疑 IP 频率分析 | MEDIUM |
| **Log Analyzer** | 404 路径扫描 / 目录枚举 | MEDIUM |
| **Log Analyzer** | 恶意 URI 检测(URL 中的 SQLi/XSS/遍历) | HIGH |
| **Log Analyzer** | Web shell 访问检测 | HIGH |
| **Correlation** | 跨模块威胁关联(14 条规则,带有评分) | CRITICAL |
### 高级功能
| 功能 | 描述 |
|---|---|
| **实时监控** | 基于 Watchdog 的日志文件监控,带有事件驱动分析 |
| **告警系统** | 多渠道告警(文件、JSON、电子邮件、桌面通知) |
| **持久化存储** | 用于日志、告警、关联和统计的 SQLite 数据库 |
| **CLI 仪表板** | 使用 rich 库的交互式安全指标仪表板 |
| **Geo-IP 追踪** | IP 地理定位和不可能旅行检测 |
| **MITRE ATT&CK** | 自动将检测结果映射到 MITRE 技术 |
| **威胁情报** | 集成 AbuseIPDB API 和本地黑名单 |
| **异常检测** | 用于请求激增的统计分析(Z-score) |
| **自定义规则** | 基于 plugin 的规则系统,用于可扩展的检测 |
## 快速开始
### 前置条件
- Python 3.8+
### 安装
```
git clone "https://github.com/sxjalxo/SIEMLite.git"
cd SIEMLite
pip install -r requirements.txt
```
### 使用说明
```
# 扫描网站以查找漏洞
python main.py --scan https://example.com
# 分析访问日志文件
python main.py --analyze data/sample_access.log
# 两者:扫描 + 分析 + 自动关联发现结果
python main.py --scan https://example.com --analyze data/sample_access.log
# 快速模式(跳过深度扫描)
python main.py --scan https://example.com --quick
# 将结果输出到 JSON
python main.py --scan https://example.com --output report.json
# 跳过端口扫描(更快)
python main.py --scan https://example.com --no-ports
# 各个模块仍可独立运行
python -m core.scanner https://example.com
python -m core.log_analyzer data/sample_access.log
python -m ui.dashboard
```
## 高级关联
关联引擎会交叉比对 scanner 和 log 的发现结果,通过严重程度评分来揭示组合威胁:
```
If: Port 22 open AND brute-force attempts in logs
--> [CRITICAL] Potential SSH brute-force attack detected (Score: 14)
If: SQLi vulnerability found AND SQLi attempts in logs
--> [CRITICAL] Active SQL Injection exploitation (Score: 14)
If: Impossible travel AND brute-force attacks
--> [CRITICAL] Impossible travel + credential attacks (Score: 14)
```
## 严重程度系统
| 级别 | 标记 | 含义 |
|---|---|---|
| **CRITICAL** | `[!!!]` | 相关联的威胁,活跃的利用 |
| **HIGH** | `[!!]` | 已确认的漏洞,暴力破解攻击 |
| **MEDIUM** | `[!]` | 缺失的标头,可疑的模式 |
| **LOW** | `[*]` | 信息泄露,已弃用的保护 |
| **INFO** | `[~]` | 开放的端口,一般的观察 |
## 示例输出
```
╔══════════════════════════════════════════════════════════╗
║ SIEM-Lite v1.0 // Security Monitoring Toolkit ║
║ Scan · Analyze · Correlate · Report ║
╚══════════════════════════════════════════════════════════╝
────────────────────────────────────────────────────────────
>>> Threat Correlation Engine
────────────────────────────────────────────────────────────
[!!!] [CRITICAL] Potential SSH brute-force attack detected on open port 22 (Score: 14)
-> Port 22 (SSH) is open AND brute-force login attempts were found in logs.
-> Action: Restrict SSH access via firewall, use key-based auth.
============================================================
SCAN REPORT — https://example.com + Logs: access.log
============================================================
Total findings: 18
■ CRITICAL : 2
■ HIGH : 5
■ MEDIUM : 4
■ LOW : 3
■ INFO : 4
Risk Assessment:
[!!!] CRITICAL — Critical correlated threats detected. Immediate action required.
```
## 项目结构
```
SIEMLite/
├── main.py # Unified CLI + correlation engine
├── README.md # This file
├── requirements.txt # Python dependencies
├── LICENSE # MIT License
│
├── core/ # Core security modules
│ ├── scanner.py # Web vulnerability scanner
│ ├── log_analyzer.py # Access log analyzer
│ ├── report.py # Shared utilities (colors, severity, reporting)
│ ├── database.py # SQLite persistent storage
│ ├── alerting.py # Multi-channel alerting system
│ └── rule_loader.py # Plugin-based custom rule system
│
├── modules/ # Advanced detection modules
│ ├── geo_ip.py # Geo-IP tracking & impossible travel
│ ├── mitre_mapping.py # MITRE ATT&CK mapping
│ ├── threat_intel.py # Threat intelligence (AbuseIPDB, blacklist)
│ └── anomaly_detection.py # Statistical anomaly detection
│
├── ingestion/ # Data ingestion modules
│ └── realtime_monitor.py # Real-time log monitoring with watchdog
│
├── ui/ # User interface modules
│ └── dashboard.py # Interactive CLI dashboard
│
├── rules/ # Custom detection rules
│ └── example_rule.py # Example custom rule
│
├── data/ # Data files
│ ├── sample_access.log # Sample log file for testing
│ └── blacklist.json # Local IP blacklist
│
├── output/ # Output files
│ ├── alerts.log # Alert log file (auto-created)
│ └── alerts.json # Alert JSON file (auto-created)
│
└── db/ # Database files
└── siem_lite.db # SQLite database (auto-created)
```
## 技术栈
- **Python 3** — 核心语言
- **requests** — 用于 Web 扫描的 HTTP 客户端
- **BeautifulSoup4** — HTML 解析与表单提取
- **socket** — TCP 端口扫描
- **argparse** — 统一的 CLI
- **re** — 日志解析与模式匹配
- **watchdog** — 实时文件监控
- **rich** — 交互式 CLI 仪表板
- **geoip2** — IP 地理定位
- **sqlite3** — 持久化存储
## 配置
### 告警配置
编辑 `core/alerting.py` 来配置:
- 电子邮件告警(SMTP 设置)
- 桌面通知
- 告警文件路径(output/alerts.log、output/alerts.json)
### Geo-IP 配置
从 MaxMind 下载 GeoLite2-City.mmdb 并放置在 `data/` 目录中以使用 Geo-IP 功能。
### 威胁情报
在 `modules/threat_intel.py` 中配置 AbuseIPDB API 密钥,以进行 IP 信誉检查。本地黑名单存储在 `data/blacklist.json` 中。
### 自定义规则
在 `rules/` 目录中添加自定义检测规则。每个规则文件必须包含一个 `detect(entries)` 函数。
## 📸 演示
查看 `/docs/` 获取截图和示例输出。
## License
MIT License — 可免费用于个人和教育用途。
标签:BurpSuite集成, CISA项目, Python, 无后门, 逆向工具