SreejithReji/soc-python-tools
GitHub: SreejithReji/soc-python-tools
面向 L1 SOC 分析师的 Python 自动化工具集,用脚本替代手动 IOC 查询、日志解析和警报分拣等重复性任务。
Stars: 0 | Forks: 0
# SOC Python 工具 🛡️🐍
**作者:** Sreejith Reji | 网络安全理学硕士 | CEH | CompTIA Security+
**职位:** ITOC 网络支持工程师 — 即将就任的 SOC 分析师 (L1)
## 为什么创建此仓库
大多数 SOC 分析师将大量时间花在重复的手动任务上——逐一将 IP 复制到 VirusTotal、通过 `grep` 搜索日志文件、一遍又一遍地填写相同的事件工单字段,以及手动生成换班报告。
这个仓库正是为了解决这个问题。这里的每个脚本都用自动化任务代替了手动任务,从而将分析师的时间解放出来,用于真正需要人工判断的工作。
## 工具
### 🔍 ioc_checker.py ✅
**通过 VirusTotal API 进行批量 IP 富化**
在 L1 SOC 工作中,逐一在 VirusTotal 中手动检查 IP 是最常见的耗时环节之一。此脚本接收一个 IP 列表,自动针对 70 多家安全厂商查询每个 IP,并为每个 IP 输出清晰的判定结果。代码已更新,支持在运行代码时动态输入要扫描的 IP,而无需进行硬编码。
```
=== SOC IOC Checker — VirusTotal ===
[+] IP: 185.220.101.45
Reputation : -21
Country : DE
Tags : tor
Malicious : 17
Suspicious : 4
Harmless : 42
⚠️ FLAGGED AS MALICIOUS
[+] IP: 8.8.8.8
Reputation : 544
Country : US
Tags :
Malicious : 0
Suspicious : 0
Harmless : 55
✅ Clean
=== Scan complete ===
```
**SOC 用例:** 快速分类从防火墙警报、SIEM 事件或网络钓鱼邮件中提取的 IP——无需打开浏览器。
**环境要求:** `requests` `python-dotenv`
**设置:**
```
pip install requests python-dotenv
```
创建一个 `.env` 文件:
```
VT_API_KEY=your_virustotal_api_key_here
```
运行:
```
python ioc_checker.py
```
**API:** [VirusTotal](https://www.virustotal.com) — 免费账号支持 4 次请求/分钟
### ⚡ alert_triage.py ✅
**具备监控列表检查和优先级评分的实时日志行分类**
将原始日志行直接粘贴到终端中。脚本使用正则表达式提取所有关键字段,根据可配置的已知恶意 IP 监控列表检查源 IP,并基于多层分类逻辑即时分配优先级——严重、高、中或低。
```
========================================
SOC ALERT TRIAGE SUMMARY
========================================
Source IP : 185.220.101.45
Destination IP : 10.0.0.15
Username : administrator
Failed attempts : 47
Destination port : 4444
Known bad IP : True
========================================
Priority : 🔴 CRITICAL
========================================
```
**应用的分类逻辑:**
- 已知恶意 IP + 管理员账户 → **严重**
- 仅已知恶意 IP → **高**
- 5 次以上失败尝试 + 管理员 → **高**
- 5 次以上失败尝试 → **中**
- 可疑端口 (4444, 1337, 9001, 31337) → **中**
- 其他所有情况 → **低**
**SOC 用例:** 实时警报调查——在分类期间粘贴日志行,无需手动检查每个字段即可获得即时的优先级判定。
**环境要求:** `re` *(标准库——无需安装)*
**运行:**
```
python alert_triage.py
```
**使用此日志行进行测试:**
```
2024-01-15 08:22:47 BLOCK TCP src=185.220.101.45 dst=10.0.0.15 port=4444 user=administrator failed=47
```
### 🔥 log_analyser_ttp.py ✅
**具备威胁情报交叉引用和 MITRE ATT&CK 映射的防火墙日志分析器**
读取防火墙日志和 JSON 威胁情报源,将每个被阻止的连接与已知恶意 IP 进行交叉引用,识别主要违规主机,并生成结构化的检测报告——在输出中直接嵌入实时的 MITRE ATT&CK 参考。
```
================================================
FIREWALL DETECTION REPORT
================================================
MITRE Technique : T1110 - Brute Force
Tactic : Lateral Movement / C2
Reference : https://attack.mitre.org/techniques/T1110/
------------------------------------------------
Total DENY events : 9
------------------------------------------------
TOP OFFENDER
Source IP : 10.0.0.5
Block count : 7
------------------------------------------------
THREAT INTEL MATCHES
2024-01-15 08:13:01 DENY TCP 10.0.0.5 -> 185.220.101.45:22
↳ Risk Score: 95 | Country: Germany | Tags: tor-exit, malicious
2024-01-15 08:14:02 DENY TCP 10.0.0.5 -> 185.220.101.45:22
↳ Risk Score: 95 | Country: Germany | Tags: tor-exit, malicious
------------------------------------------------
ASSESSMENT
Confirmed T1110 Brute Force activity detected.
Host 10.0.0.5 generated 7 blocked attempts.
2 connections matched known malicious IPs.
Recommend isolating host and reviewing endpoint logs.
================================================
```
**MITRE ATT&CK 覆盖范围:**
| 技术 ID | 名称 | 战术 |
|---|---|---|
| T1110 | 暴力破解 | 凭证访问 |
| T1110.001 | 密码猜测 | 凭证访问 |
| T1071 | 应用层协议 | 命令与控制 |
**SOC 用例:** 换班或事件调查——导入防火墙日志和威胁情报导出文件,即可获得准备好的检测报告,可直接附加到工单或升级至 L2。
**环境要求:** `json` `os` `collections` *(均为标准库——无需安装)*
**运行:**
```
python log_analyser_ttp.py
```
出现提示时:
```
Enter the name of the firewall log file: firewall.log
Enter the name of the threat intelligence file: threat_intel.json
```
**所需输入文件:**
- `firewall.log` — 包含 ALLOW/DENY 条目的标准防火墙日志
- `threat_intel.json` — 包含已知恶意 IP 及其风险评分和标签的 JSON 数组
### 🔎 bulk_ioc_enricher ✅
**具备自动 MITRE ATT&CK 映射的多源 IP 富化**
接收多个 IP,同时查询 VirusTotal 和 AbuseIPDB,交叉引用结果,并自动将检测到的 TTP 映射到 MITRE ATT&CK 框架——无需硬编码。采用模块化的三文件工具构建:`bulk_ioc_enricher.py`、`enrichment.py` 和 `ttp_mapper.py`。
```
=== SOC Bulk IOC Enricher ===
========================================
IP: 185.220.101.45
========================================
[VirusTotal]
Reputation : -21
Country : DE
Tags : tor
Malicious : 17
Suspicious : 4
Harmless : 41
[AbuseIPDB]
Confidence Score : 100
Total Reports : 121
Whitelisted : False
Usage Type : Commercial
Country Code : DE
[MITRE ATT&CK]
T1071 : Application Layer Protocol
Tactic : command-and-control
Ref : https://attack.mitre.org/techniques/T1071/
T1590 : Gather Victim Network Information
Tactic : reconnaissance
Ref : https://attack.mitre.org/techniques/T1590/
Verdict: 🔴 CONFIRMED MALICIOUS — flagged by both sources
========================================
IP: 8.8.8.8
========================================
[VirusTotal]
Reputation : 544
Country : US
Tags :
Malicious : 0
Suspicious : 0
Harmless : 55
[AbuseIPDB]
Confidence Score : 0
Total Reports : 135
Whitelisted : True
Usage Type : Content Delivery Network
Country Code : US
Verdict: 🟢 CLEAN
=== Scan complete ===
```
**SOC 用例:** 多源 IOC 分类——同时查询两个威胁情报源,获得综合判定结果,并查看从实时框架数据中自动提取的相关 MITRE ATT&CK 技术。
**环境要求:** `requests` `python-dotenv`
**设置:**
```
pip install requests python-dotenv
```
创建一个 `.env` 文件:
```
VT_API_KEY=your_virustotal_api_key_here
ABUSEIPDB_KEY=your_abuseipdb_key_here
```
运行:
```
python bulk_ioc_enricher.py
```
**API:** [VirusTotal](https://www.virustotal.com) · [AbuseIPDB](https://www.abuseipdb.com) · [MITRE ATT&CK](https://attack.mitre.org)
### 📊 csv_triage.py ✅
**从 CSV 导出文件进行批量 SIEM 警报分类**
接收 SIEM 警报的 CSV 导出文件,根据规则逻辑(警报类型、失败尝试次数、目标端口)按严重程度对每个警报进行评分,按优先级对完整列表进行排序,并输出清晰的分类视图——无论关键警报在原始文件中的顺序如何,它们始终排在最前面。
```
🔴 Critical | 103.45.67.12 | brute_force
🔴 Critical | 203.0.113.45 | sql_injection
🟠 High | 185.220.101.45 | brute_force
🟡 Medium | 45.33.32.156 | port_scan
🟡 Medium | 89.248.167.131 | port_scan
🟢 Low | 8.8.8.8 | dns_query
🟢 Low | 1.1.1.1 | dns_query
🟢 Low | 192.168.1.50 | failed_login
```
**SOC 用例:** 换班开始时的批量分类——导入隔夜的警报导出文件,立即知道哪些警报需要立即处理,哪些可以等待。
**环境要求:** `csv` *(标准库——无需安装)*
**运行:**
```
python csv_triage.py
```
**所需输入文件:**
- `siem_alerts.csv` — 列:`timestamp, source_ip, dest_ip, alert_type, failed_attempts, port`
### 👁️ log_monitor.py ✅
**具备日志轮转处理和基于规则警报的实时日志监控**
像生产级日志传送器一样追踪实时日志文件——处理一次现有内容,然后使用文件位置跟踪持续监视新行。通过 inode 和大小比较检测日志轮转(文件被截断或替换),并自动重新打开而不丢失警报。应用基于关键字的检测规则,并通过正则表达式从每个可疑行中提取源 IP。
```
🔴 Possible brute force attempt — IP: 185.220.101.45 — Failed password for root from 185.220.101.45 port 51422 ssh2
🟠 Unknown user login attempt — IP: 103.45.67.12 — Invalid user admin from 103.45.67.12 port 39281 ssh2
🟡 Authentication issue — IP: 89.248.167.131 — pam_unix(sshd:auth): authentication failure rhost=89.248.167.131
```
**SOC 用例:** 在空闲期间的持续监控——当实时日志中出现可疑内容时立即收到通知,无需手动轮询,并且即使日志文件在值班中途发生轮转,也不会失去可见性。
**环境要求:** `re`, `os`, `time` *(均为标准库——无需安装)*
**运行:**
```
python log_monitor.py
```
**所需输入文件:**
- `live.log` — 任何基于行的日志文件(已针对 SSH 认证日志格式进行测试)
### 🤖 mini_soar.py ✅
**端到端 SOC 自动化——检测、富化、评分、生成工单、通知**
旗舰工具。追踪实时日志文件,检测可疑活动,针对 VirusTotal 和 AbuseIPDB 对源 IP 进行富化,自动将警报映射到其 MITRE ATT&CK 技术,根据检测到的行为对严重程度进行评分,生成带样式的 HTML 事件工单,将其保存到磁盘,并通过电子邮件发送——完全自动执行,对于明确的情况无需任何手动步骤。
由六个独立模块构建,通过一个主脚本进行编排:
| 模块 | 职责 |
|---|---|
| `alert_rules.py` | 检测可疑的日志模式,通过正则表达式提取源 IP |
| `severity.py` | 根据检测到的行为对严重程度进行评分——独立于外部数据 |
| `enrichment.py` | VirusTotal + AbuseIPDB 查询 |
| `ttp_mapper.py` | 实时 MITRE ATT&CK 技术查询 |
| `ticket_generator.py` | 构建带有严重程度标记的 HTML 事件工单,并保存到磁盘 |
| `notifier.py` | 通过电子邮件发送工单 |
| `mini_soar.py` | 编排完整 pipeline,进行去重和私有 IP 处理 |
**关键设计决策:**
- **严重程度基于行为,不依赖于富化**——无论是否有外部威胁情报可用,检测到的暴力破解尝试的评分都是相同的,因为内部/私有 IP 没有公开的信誉数据
- **私有 IP 检测**——自动跳过针对内部/私有 IP 的 VirusTotal/AbuseIPDB 富化(在家庭实验室环境中很常见),并在工单上清楚地注明这一点,而不是报错或返回无意义的数据
- **警报去重**——每个源 IP 设有 5 分钟的冷却时间,可防止单次持续攻击(例如,重复的暴力破解尝试)生成大量重复的工单和邮件
```
SOC Incident Alert [CRITICAL]
----------------------------------------------------------------
Ticket ID : CRIT-20260620143205
Timestamp : 2026-06-20 14:32:05
Source IP : 185.220.101.45
Country : DE
[VirusTotal]
Malicious : 17 engines
Reputation : -21
Tags : tor
[AbuseIPDB]
Confidence : 100%
Total reports : 121
Usage type : Commercial
[MITRE ATT&CK]
Technique : T1110
Name : Brute Force
Tactic : credential-access
Recommendation: Investigate source IP, review related logs,
consider blocking if confirmed malicious.
```
**SOC 用例:** 针对明确情况的零手动步骤全流程警报到工单 pipeline——基于家庭 SOC 实验室(树莓派作为目标机,Kali 作为攻击者,Wazuh 作为 SIEM)构建并测试。
**环境要求:** `requests`, `python-dotenv`, `smtplib` *(用于电子邮件的标准库)*
**设置:**
```
pip install requests python-dotenv
```
创建一个 `.env` 文件:
```
VT_API_KEY=your_virustotal_key_here
ABUSEIPDB_KEY=your_abuseipdb_key_here
ALERT_EMAIL=your_alerting_gmail_address
ALERT_EMAIL_PASSWORD=your_gmail_app_password
```
运行:
```
python mini_soar.py
```
**API:** [VirusTotal](https://www.virustotal.com) · [AbuseIPDB](https://www.abuseipdb.com) · [MITRE ATT&CK](https://attack.mitre.org)
### 📝 report_generator.py ✅ *(试用版)*
**专业的 SOC 报告生成——三种报告类型**
向分析师提出一系列问题,并自动生成格式化的专业报告。支持涵盖最常见的 L1 文档任务的三种报告类型。
**报告类型:**
- **升级报告** — 结构化的 L1 到 L2 交接,包含完整的调查摘要
- **误报报告** — 用于关闭警报的书面理由
- **换班交接报告** — 为接任分析师提供的换班结束时摘要
**SOC 用例:** 不再每次都从头开始编写相同的报告字段。运行脚本,回答问题,即可获得准备好的专业格式报告,可直接附加到工单或发送给您的团队主管。
**环境要求:** `datetime` *(标准库——无需安装)*
## 仓库结构
```
soc-python-tools/
│
├── alert_triage/ ✅ Complete
├── bulk_ioc_enricher/ ✅ Complete
│ ├── bulk_ioc_enricher.py
│ ├── enrichment.py
│ └── ttp_mapper.py
├── ioc_checker/ ✅ Complete
├── log_analyser_ttp/ ✅ Complete
├── csv_triage/ ✅ Complete
├── log_monitor/ ✅ Complete
├── mini_soar/ ✅ Complete
│ ├── mini_soar.py
│ ├── alert_rules.py
│ ├── severity.py
│ ├── enrichment.py
│ ├── ttp_mapper.py
│ ├── ticket_generator.py
│ └── notifier.py
└── report_generator/ 🔨 Trial version available
```
## 快速开始
**1. 克隆仓库**
```
git clone https://github.com/SreejithReji/soc-python-tools.git
cd soc-python-tools
```
**2. 安装依赖项**
```
pip install -r requirements.txt
```
**3. 设置您的 API 密钥**
在您想要运行的工具文件夹中创建一个 `.env` 文件:
```
VT_API_KEY=your_virustotal_key_here
ABUSEIPDB_KEY=your_abuseipdb_key_here
ALERT_EMAIL=your_alerting_gmail_address
ALERT_EMAIL_PASSWORD=your_gmail_app_password
```
**4. 运行工具**
```
python ioc_checker/ioc_checker.py
python alert_triage/alert_triage.py
python bulk_ioc_enricher/bulk_ioc_enricher.py
python csv_triage/csv_triage.py
python log_monitor/log_monitor.py
python mini_soar/mini_soar.py
```
## 使用的免费 API 密钥
| 服务 | 提供的内容 | 免费层级 |
|---|---|---|
| [VirusTotal](https://www.virustotal.com) | IP、哈希、域名信誉 | 4 次请求/分钟 |
| [AbuseIPDB](https://www.abuseipdb.com) | IP 滥用报告 | 1,000 次请求/天 |
| [MITRE ATT&CK](https://attack.mitre.org) | 威胁情报框架 | 免费 |
所有工具均基于免费 API 层级构建——无需付费订阅。
## 示例日志文件
用于测试这些工具的真实示例日志文件维护在一个单独的仓库中:
👉 **[soc-sample-logs](https://github.com/SreejithReji/soc-sample-logs)**
包含 500 行的日志文件,涵盖防火墙、Windows Event、Web 访问、DNS 和 IDS——模拟从平静的基线到系统被攻陷和数据外泄的完整攻击生命周期。
## MITRE ATT&CK 覆盖范围
此仓库中的所有检测工具都映射到了 MITRE ATT&CK 技术。每个脚本在其输出中直接嵌入了相关的技术 ID、战术和参考 URL。
| 工具 | 技术 ID | 技术名称 | 战术 |
|---|---|---|---|
| log_analyser_ttp.py | T1110 | 暴力破解 | 凭证访问 |
| log_analyser_ttp.py | T1110.001 | 密码猜测 | 凭证访问 |
| log_analyser_ttp.py | T1071 | 应用层协议 | 命令与控制 |
| bulk_ioc_enricher | T1071 | 应用层协议 | 命令与控制 |
| bulk_ioc_enricher | T1590 | 收集受害者网络信息 | 侦察 |
| mini_soar.py | T1110 | 暴力破解 | 凭证访问 |
## 展示的技能
| 技能 | 使用位置 |
|---|---|
| Python 脚本编写 | 所有工具 |
| 正则表达式 | `alert_triage.py`, `log_analyser_ttp.py`, `log_monitor.py`, `mini_soar.py` |
| REST API 集成 | `ioc_checker.py`, `bulk_ioc_enricher`, `mini_soar.py` |
| JSON 解析 | `ioc_checker.py`, `log_anser_ttp.py`, `bulk_ioc_enricher`, `mini_soar.py` |
| 文件 I/O 和日志解析 | `log_analyser_ttp.py`, `log_monitor.py`, `mini_soar.py` |
| 实时日志追踪和文件轮转处理 | `log_monitor.py`, `mini_soar.py` |
| CSV 解析和排序 | `csv_triage.py` |
| 错误处理 | 所有工具 |
| 威胁情报交叉引用 | `log_analyser_ttp.py`, `bulk_ioc_enricher`, `mini_soar.py` |
| 多源威胁情报关联 | `bulk_ioc_enricher`, `mini_soar.py` |
| 模块化 Python 架构 | `bulk_ioc_enricher`, `mini_soar` (6 个模块) |
| MITRE ATT&CK TTP 映射 | `log_analyser_ttp.py`, `bulk_ioc_enricher`, `mini_soar.py` |
| If/else 分类逻辑 | `alert_triage.py`, `csv_triage.py`, `severity.py` |
| 字典和集合操作 | `log_analyser_ttp.py` |
| 环境变量管理 | 所有带有 API 密钥的工具 |
| 安全自动化 | `mini_soar.py` |
| 警报去重/速率限制逻辑 | `mini_soar.py` |
| 邮件自动化(smtplib, HTML 格式化) | `mini_soar.py` |
| Git 和版本控制 | 此仓库 |
## 相关仓库
| 仓库 | 描述 |
|---|---|
| [soc-sample-logs](https://github.com/SreejithReji/soc-sample-logs) | 用于测试的示例日志文件 |
| [kql-soc-queries](https://github.com/SreejithReji/kql-soc-queries) | 用于 Microsoft Sentinel 的 KQL 查询库 |
| [spl-soc-queries](https://github.com/SreejithReji/spl-soc-queries) | 用于 Splunk 的 SPL 查询库 |
| [cybersecurity-portfolio](https://github.com/SreejithReji/cybersecurity-portfolio) | 完整的作品集概述 |
*工具在构建完成后会陆续添加。此仓库是与结构化的 Python SOC 学习计划同步积极开发的。*
标签:Python, SOC分析, 威胁情报, 安全运营, 开发者工具, 扫描框架, 数字取证, 无后门, 自动化脚本, 逆向工具