使用 Splunk 检测横向移动
适用场景
- 狩猎攻击者在受攻击系统之间的移动时
- 检测凭据盗取后追踪后续横向活动时
- 调查网络中异常的身份验证模式时
- 事件响应期间确定攻击范围时
- 主动狩猎 TA0008(横向移动)技术时
前置条件
- Splunk Enterprise 或 Splunk Cloud,已接入 Windows 事件数据
- Windows 安全事件日志转发(4624、4625、4648、4672、4768、4769)
- 部署了用于进程创建和网络连接数据的 Sysmon
- 用于 SMB/RDP/WinRM 关联的网络流量数据或防火墙日志
- Active Directory 用户和组成员关系参考数据
工作流程
- 定义横向移动范围:识别要狩猎的横向移动技术(RDP、SMB/管理共享、WinRM、PsExec、WMI、DCOM、SSH)。
- 查询身份验证事件:使用 SPL 搜索整个环境中的类型 3(网络)和类型 10(远程交互)登录。
- 构建身份验证图谱:映射源到目标的身份验证关系,识别异常连接模式。
- 检测首次关系:识别历史基线中未见过的新源-目标对。
- 与进程活动关联:将身份验证事件与目标主机上的后续进程创建链接。
- 识别异常模式:标记横向移动到敏感服务器、异常时段、服务账户滥用或快速多主机访问。
- 报告与遏制:记录横向移动路径、受影响系统,并协调遏制响应。
核心概念
| 概念 | 描述 |
|---|---|
| T1021 | 远程服务(父技术) |
| T1021.001 | 远程桌面协议(RDP) |
| T1021.002 | SMB/Windows 管理共享 |
| T1021.003 | 分布式 COM(DCOM) |
| T1021.004 | SSH |
| T1021.006 | Windows 远程管理(WinRM) |
| T1570 | 横向工具传输 |
| T1047 | Windows 管理规范(WMI) |
| T1569.002 | 服务执行(PsExec) |
| 登录类型 3 | 网络登录(SMB、WinRM、映射驱动器) |
| 登录类型 10 | 远程交互(RDP) |
| 事件 ID 4624 | 成功登录 |
| 事件 ID 4648 | 显式凭据登录(runas、PsExec) |
工具与系统
| 工具 | 用途 |
|---|---|
| Splunk Enterprise | 日志聚合和 SPL 查询的 SIEM |
| Splunk Enterprise Security | 威胁检测和重要事件 |
| Windows Event Forwarding | 集中化 Windows 日志 |
| Sysmon | 详细的进程和网络遥测 |
| BloodHound | AD 攻击路径分析 |
| PingCastle | AD 安全评估 |
常见场景
- PsExec 横向移动:攻击者使用 PsExec 通过 SMB 在远程系统上执行命令,生成类型 3 登录并伴随 ADMIN$ 共享访问。
- RDP 枢转:攻击者使用盗取的凭据 RDP 到内部系统,创建类型 10 登录事件。
- WMI 远程执行:攻击者使用 WMIC process call create 在远程主机上生成进程。
- WinRM PowerShell 远程:攻击者使用 Enter-PSSession 或 Invoke-Command 在远程系统上执行代码。
- SMB 哈希传递(Pass-the-Hash):使用受攻击的 NTLM 哈希在不知道明文密码的情况下向远程系统进行身份验证。
输出格式
Hunt ID: TH-LATMOV-[DATE]-[SEQ]
Movement Type: [RDP/SMB/WinRM/WMI/DCOM/PsExec]
Source Host: [主机名/IP]
Destination Host: [主机名/IP]
Account Used: [用户名]
Logon Type: [3/10/其他]
First Seen: [时间戳]
Event Count: [事件数]
Risk Level: [Critical/High/Medium/Low]
Lateral Movement Path: [A -> B -> C -> D]