WiLL75G/soc-day21-regex-log-parsing-toolkit

GitHub: WiLL75G/soc-day21-regex-log-parsing-toolkit

一套基于正则的SOC日志解析与检测工程实验工具包,涵盖IOC提取、Python自动化和Splunk SPL检测规则的完整工作流。

Stars: 1 | Forks: 1

# 日志解析与检测工程工具包:Regex 到 Splunk SPL (SOC Tier 1) ## 执行摘要 本项目演示了 SOC Tier 1 分析师和检测工程师所使用的完整 regex 调查工作流,涵盖从 Linux 命令行的原始日志检查、Python 自动化,直到生产级 Splunk SPL 检测规则。 该工具包建立在自行管理的家庭实验室(macOS 主机 + Kali VM + Splunk Enterprise)之上,涵盖了 IOC 提取、多模式检测、跨日志源的 IOC 关联追踪,以及将非标准应用日志接入为适配 SIEM 的 JSON 格式。 **核心交付物:** 一个完整、可复现的检测工程作品集——包含 12 个文档化的 regex 模式、2 个 Python 脚本、5 个生产级 Splunk SPL 查询,以及展示针对多日志攻击场景应用各项技术的结构化证据文件。 ## 项目方法论 该实验室模拟了 Tier 1 SOC 分析师跨越 7 个阶段的调查工作流: 1. **Regex 基础** 在 regex101 中测试 IP、hash、URL 和 User-Agent 模式构建 2. **实验数据创建** 4 种示例日志格式(SSH 认证、Apache 访问、自定义安全事件、自定义应用) 3. **模式库** 12 个文档化的 IOC 提取模式,包含详细分解和 bash 用法 4. **手动提取** 基于 grep 的 IOC 提取,输出保存为取证证据文件 5. **Python 自动化** IOC 提取器,对跨多种日志格式的发现进行分类,并标记可疑模式 6. **SIEM 部署** 5 个优化的 Splunk SPL 查询,展示经过验证的提取、多模式解析、IOC 监控列表、攻击分类和基于 hash 的检测 7. **自定义日志接入** Python 解析器,将非标准应用日志转换为准备好供 SIEM 摄入的结构化 JSON ## 实验室中提取的 IOC | 类型 | 值 | 来源 | 上下文 | |---|---|---|---| | 攻击者 IP | 203.0.113.45 | SSH, Apache, 安全事件 | 多向量攻击者:暴力破解 + 扫描器 + 遍历 | | 攻击者 IP | 185.220.101.33 | SSH, Apache | 暴力破解 + python-requests webshell 投递 | | 攻击者 IP | 198.51.100.22 | SSH, Apache | 暴力破解 + curl /etc/passwd 探测 | | 内部 IP | 10.0.2.87 | 安全事件 | 内部端口扫描,可能为受感染主机 | | 电子邮件 | admin@company.com | 安全事件 | 钓鱼攻击受害者 | | MD5 Hash | a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4 | 安全事件 | invoice.exe 恶意软件样本 | | 仿冒 URL | http://paypa1.com/login | 安全事件 | 同形异义攻击(用 1 替换 l)| ## MITRE ATT&CK 覆盖范围 | 战术 | 技术 | ID | 实验室证据 | |---|---|---|---| | 凭证访问 | 暴力破解 | T1110 | 来自 3 个外部 IP 的 SSH 密码验证失败事件 | | 初始访问 | 钓鱼:鱼叉式钓鱼链接 | T1566.002 | 带有仿冒域名的 PHISHING_CLICK 事件 | | 发现 | 网络服务扫描 | T1046 | 内部 10.0.2.87 扫描 /24 范围,1000 个端口 | | 初始访问 | 利用面向公众的应用 | T1190 | 在 /admin/login.php 上的 sqlmap 探测 | | 发现 | 文件和目录发现 | T1083 | 目录遍历 /../../../etc/shadow | | 持久化 | 创建账户:本地账户 | T1136.001 | 管理员创建的服务账户 svc_backup2 | | 执行 | 用户执行:恶意文件 | T1204.002 | invoice.exe 恶意软件检测 | ## 分析师关键发现 **多向量攻击者关联** 在同一时间窗口内,跨三个独立的日志源观察到了 IP 203.0.113.45:SSH 暴力破解、Apache 扫描器活动(在 /admin/login.php 上使用 sqlmap)和 Apache 目录遍历(通过 Nikto 访问 /../../../etc/shadow)。这是一个教科书式的跨日志 IOC 关联追踪案例——单一日志分析可能只会浮现出三个独立的次要事件;而跨源关联则揭示了一场需要升级到 Tier 2 处理的协同多向量攻击活动。 **识别到检测覆盖盲区** 最初的 Splunk Web 攻击检测规则仅对 4 起已知攻击中的 2 起进行了分类,因为扫描器 User-Agent regex 未覆盖 curl 和 python requests。该规则对检测到的事件能正确触发,但静默地漏掉了 50% 的攻击。修复方案需要扩展 regex 模式。这是检测工程师最重要的一课:一个只能对部分攻击触发的规则并不是一个有效的规则;它是一个局部的盲区。覆盖测试必须是每个规则生命周期的一部分。 **仿冒攻击需要明确的模式覆盖** Python IOC 提取器未能标记 http://paypa1.com/login(一种用 1 替换 l 的同形异义攻击),因为模式库中不包含仿冒启发式规则。标准的 URL 提取提取出了该 URL,但要将其分类为恶意,则需要域名替换规则。未来的迭代应包含品牌替换模式匹配。 ## 分析师洞察 Regex 本身并不是一项安全技能——它是非结构化日志数据与保护环境的结构化检测逻辑之间的通用接口。每个检测工程师、SIEM 管理员和 Tier 1 分析师都会花费大量时间编写、优化和调试 regex。本项目端到端地演示了这一工作流:从 Linux 命令行上的原始日志检查,到脚本化自动化,进入生产级 SIEM,最后通过自定义解析器接入全新的日志源。这里产出的工具包不是一个单纯的练习——它是一套可适配到任何生产环境中基于文本日志源的检测模式和脚本工作集。 ## 学习成果 - 构建了 12 个可复用的 regex 模式,涵盖 IP、hash、电子邮件、URL、端口、时间戳、CVE 和严重性标签 - 展示了跨三种语法变体的 regex 熟练度:bash grep -E、Python re 模块和 Splunk rex 命令 - 实现了可拒绝格式错误八位字组的经验证的 IPv4 模式 - 使用 eval case() 语句在 Splunk SPL 中构建了按优先级排序的分类逻辑 - 识别并纠正了实时 SPL 规则中真实的检测覆盖盲区 - 编写了一个 Python 自定义日志解析器,可将非标准应用日志转换为适配 SIEM 的 JSON - 记录了作为未来改进的生产部署模式 ## 仓库结构 - patterns/ 12 个文档化的 IOC 提取模式 - scripts/ Python IOC 提取器 + 自定义日志解析器 - splunk/ 5 个生产级 Splunk 检测查询 - sample-logs/ 4 个实验室日志文件(SSH、Apache、安全事件、自定义应用) - sample-output/ grep 证据文件 + 解析后的 JSON 输出 - screenshots/ 带注释的工作流截图(01_ 到 22b_) ## 未来改进 1. 将字段提取移至 props.conf,以便 regex 捕获在搜索时自动发生 2. 用由威胁情报源提供的 lookup 文件替换硬编码的 IP 和 hash 监控列表 3. 通过针对缓存的 VT 源进行 lookup,添加自动化的 VirusTotal 丰富化 4. 将检测规则接入告警动作(Slack、工单系统、EDR 查询) 5. 随着新攻击工具的出现,每月定期扩展扫描器检测 regex 6. 为品牌替换攻击添加仿冒/同形异义检测模式 7. 对大规模日志量进行模式性能测试,以识别回溯风险 ## 工具与环境 - 宿主操作系统: macOS - 实验室 VM: Kali Linux (UTM) - SIEM: Splunk Enterprise(运行在 macOS 主机上) - 语言: Python 3, Bash - Regex 变体: PCRE2, Python re, Splunk rex - 测试: regex101.com (PCRE2 模式) ## 结论 该工具包是 SOC Tier 1 分析师日常工作的实用、可复现的基础:跨三种语法变体的 regex 熟练度、Python 自动化、Splunk 中的检测工程,以及从零开始接入新日志源的能力。它建立在自行管理的家庭实验室之上,经过了端到端的验证,并诚实地记录了开发过程中遇到的覆盖盲区和检测限制。审阅此仓库的招聘人员和招聘经理可以阅读脚本、运行查询、检查证据文件,并独立验证这些工作。
标签:Python, 威胁情报, 安全运营, 应用安全, 开发者工具, 扫描框架, 无后门, 日志解析, 证书伪造, 逆向工具