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分析, 威胁情报, 安全运营, 开发者工具, 扫描框架, 数字取证, 无后门, 自动化脚本, 逆向工具