InsiyahBhatia/enterprise-siem-lab

GitHub: InsiyahBhatia/enterprise-siem-lab

基于 Splunk Enterprise 的企业级 SIEM 实验项目,实现 Windows 安全日志集中采集、威胁狩猎查询和安全可视化仪表板搭建。

Stars: 2 | Forks: 0

# 使用 Splunk 的 Windows 事件监控与威胁狩猎仪表板 ## 项目概述 本项目演示了部署 Splunk Enterprise 和 Splunk Universal Forwarder 以实现集中式 Windows 日志监控。从 Windows Server 收集的 Windows 安全事件日志和 Sysmon 日志被转发至 Splunk,用于安全监控、日志分析、威胁狩猎和仪表板创建。 本项目重点关注使用 Search Processing Language (SPL) 监控身份验证活动、权限分配、进程执行事件以及整体的 Windows 安全事件。 # 环境设置 ### 使用的组件 * Splunk Enterprise 9.3 * Splunk Universal Forwarder * Windows Server * Ubuntu Server (Splunk Indexer) * Sysmon * VirtualBox ### 架构 ``` Windows Server │ │ Splunk Universal Forwarder ▼ Ubuntu Splunk Enterprise │ ▼ Searches + Visualizations + Dashboard ``` # 重要的 Windows 事件 ID | 事件 ID | 描述 | | -------- | --------------------------- | | 4624 | 成功登录 | | 4625 | 登录失败 | | 4672 | 分配特殊权限 | | 4688 | 进程创建 | | 4673 | 特权服务调用 | | 7045 | 服务安装 | | 7036 | 服务启动/停止 | | 4768 | Kerberos TGT 请求 | | 4769 | Kerberos 服务票据 | | 4907 | 审核设置更改 | 这些是收集到的日志中最常见的事件 ID。 # 使用的 SPL 命令 ## 统计 ### 理论 `stats` 命令用于聚合和汇总数据。 ### 示例 ``` EventCode=4624 OR EventCode=4673 OR EventCode=4672 | stats count by Account_Name ``` ### 结果 统计每个账户生成了多少事件。 ## 表格 ### 理论 仅显示选定的字段。 ### 示例 ``` EventCode=4624 | table _time Account_Name host ``` ### 结果 显示每次成功登录的: * 时间 * 用户名 * 主机名 ## 排序 ### 理论 对结果进行升序或降序排序。 ### 示例 ``` EventCode=4624 | stats count by Account_Name | sort - count ``` ### 结果 优先显示最活跃的用户。 ## where ### 理论 在聚合后过滤结果。 ### 示例 ``` EventCode=4624 | stats count by Account_Name | where count>10 ``` ### 结果 仅显示成功登录超过 10 次的用户。 ## eval ### 理论 创建新的计算字段。 ### 示例 ``` EventCode=4624 | stats count by Account_Name | eval Risk=if(count>100,"HIGH","LOW") ``` ### 结果 根据登录量为用户分配风险类别。 ## timechart ### 理论 用于基于时间的可视化。 ### 示例 ``` EventCode=4624 OR EventCode=4673 | timechart count by EventCode ``` ### 结果 展示随时间变化的身份验证活动。 ## 搜索 ### 理论 根据关键字或字段值过滤事件。 ### 示例 ``` search Account_Name=Administrator ``` ### 结果 显示所有与 Administrator 相关的事件。 ## fields ### 理论 仅显示指定的字段。 ### 示例 ``` EventCode=4688 | fields host New_Process_Name ``` ### 结果 显示进程执行信息。 # 威胁狩猎查询 ## 成功登录 ``` EventCode=4624 ``` 目的: 监控成功的身份验证事件。 ## 登录失败 ``` EventCode=4625 ``` 目的: 识别失败的登录尝试。 ## 权限提升活动 ``` EventCode=4672 ``` 目的: 检测获得管理员权限的账户。 ## 进程创建监控 ``` EventCode=4688 ``` 目的: 监控已执行的进程。 ## 服务安装检测 ``` EventCode=7045 ``` 目的: 检测新安装的服务。 ## Administrator 活动 ``` search Account_Name=Administrator ``` 目的: 追踪 Administrator 操作。 ## svchost.exe 监控 ``` EventCode=4688 | search New_Process_Name="*svchost.exe*" ``` 目的: 追踪 svchost 进程执行。 # 仪表板创建 ## 面板 1 – 总事件数 ### 查询 ``` index=* | stats count ``` ### 可视化 单值 目的: 显示收集到的总事件数。 ## 面板 2 – 成功登录尝试 ### 查询 ``` EventCode=4624 | stats count ``` ### 可视化 单值 目的: 显示成功登录的总数。 ## 面板 3 – 失败登录尝试 ### 查询 ``` EventCode=4625 | stats count ``` ### 可视化 单值 目的: 显示失败的登录数。 ## 面板 4 – 特权登录 ### 查询 ``` EventCode=4672 | stats count ``` ### 可视化 单值 目的: 追踪管理员权限分配。 ## 面板 5 – 热门事件 ID ### 查询 ``` index=* | stats count by EventCode | sort - count | head 10 ``` ### 可视化 水平条形图 目的: 显示最常见的 Windows 事件 ID。 ## 面板 6 – 身份验证活动 ### 查询 ``` EventCode=4624 OR EventCode=4625 | timechart count by EventCode ``` ### 可视化 折线图 目的: 比较随时间变化的成功与失败登录。 ## 面板 7 – 用户登录分布 ### 查询 ``` EventCode=4624 | stats count by Account_Name ``` ### 可视化 饼图 目的: 显示最活跃的用户。 ## 面板 8 – 事件分布分析 ### 查询 ``` index=* | stats count by EventCode ``` ### 可视化 气泡图 目的: 可视化事件频率分布。 ## 面板 9 – 身份验证趋势 ### 查询 ``` EventCode=4768 OR EventCode=4769 | timechart count by EventCode ``` ### 可视化 面积图 目的: 监控 Kerberos 身份验证活动。 ## 面板 10 – 进程监控 ### 查询 ``` EventCode=4688 | stats count by New_Process_Name | sort - count | head 10 ``` ### 可视化 水平条形图 目的: 显示执行次数最多的进程。 ## 面板 11 – 用户身份验证流 ### 查询 ``` EventCode=4624 OR EventCode=4625 OR EventCode=4672 | eval Event=case( EventCode=4624,"Successful Login", EventCode=4625,"Failed Login", EventCode=4672,"Admin Privilege Assigned" ) | stats count as Events by Account_Name Event ``` ### 可视化 桑基图 目的: 展示用户如何流入成功登录、失败登录和特权登录。 # 展示的技能 * Splunk Enterprise 管理 * Splunk Universal Forwarder 配置 * Windows 事件日志分析 * Sysmon 监控 * SPL 查询开发 * 仪表板创建 * 威胁狩猎 * 身份验证监控 * 安全事件调查 * SOC 分析师工作流
标签:Conpot, Windows安全, 运维监控