红队横向移动手法(Lateral Movement)剖析与蓝队日志追踪
红队横向移动手法Lateral Movement剖析与蓝队日志追踪撕开内网防御的关键跳板TA0008 战术在攻防演练与真实 APT 攻击事件中攻击者在突破边界建立立足点后初始主机往往并不具备核心资产如域控制器、代码仓库、核心数据库、财务系统。攻击者必须以初始主机为跳板利用内网信任关系、共享凭据与管理协议在不同的主机与子网之间进行跨节点渗透——这一过程在 MITRE ATTCK 框架中被定义为横向移动Lateral Movement, TA0008。横向移动是红蓝对抗中博弈最为激烈的阶段。红队力求动作轻量、协议原生化Living off the Land, LotL以逃避告警蓝队则需依托全网统一的日志中枢与 EDR 探针从海量日常运维操作中精准剥离出恶意的横向行为特征。主流横向移动手法与利用机理┌─────────────────────────────────────────────────────────────┐ │ ATTCK TA0008 常见横向移动手法 │ ├──────────────────────────────┬──────────────────────────────┤ │ SMB 与服务创建 (T1021.002) │ WMI / WinRM 远程执行 (T1047) │ │ - PsExec (ADMIN$ 共享 SVC) │ - wmic process call create │ │ - SMBExec (利用命名管道) │ - PowerShell Remoting (5985) │ ├──────────────────────────────┼──────────────────────────────┤ │ 凭据传递与票据攻击 (T1550) │ Linux SSH 与密钥劫持 (T1552) │ │ - Pass-the-Hash (PTH / NTLM) │ - 窃取 ~/.ssh/id_rsa 私钥 │ │ - Pass-the-Ticket (Kerberos) │ - SSH Agent Hijacking │ └──────────────────────────────┴──────────────────────────────┘1. SMB 协议与服务派生PsExec 原理经典工具 PsExec 是红队最常用的横向移动工具之一执行流程攻击者利用获取的管理员凭据通过 SMBTCP 445连接目标主机的ADMIN$共享将服务二进制文件如PSEXESVC.exe上传至%SystemRoot%目录。服务启动通过 DCE/RPC 调用目标机器的服务控制管理器SCM,services.exe注册并启动一个临时 Windows 服务该服务派生子进程执行恶意 Payload 并通过命名管道Named Pipe将执行结果回传。2. WMI 与 WinRM 远程指令执行无文件落地相比 PsExec 需要在磁盘上写入服务文件WMIWindows Management Instrumentation与 WinRMWindows Remote Management具备更高的隐蔽性WMI 横向通过 TCP 135RPC与动态高位端口DCOM调用Win32_Process.Create方法直接在目标机器上由WmiPrvSE.exe进程拉起指定的命令行如powershell.exe -enc ...全程无额外二进制落地。WinRM 横向利用 HTTP/HTTPS 端口TCP 5985/5986通过 WS-Management 协议启动 PowerShell 远程会话Enter-PSSession / Invoke-Command。3. 哈希传递Pass-the-Hash, PTH在未启用 Kerberos 强认证的环境中Windows 认证支持 NTLM 协议。攻击者从 LSASS 内存中转储出管理员的 NTLM Hash 后无需破解出明文密码即可直接将其注入网络认证请求在内网任意配置了相同本地管理员口令的主机之间漫游。蓝队 Windows 安全日志关联追踪引擎实现要捕获横向移动蓝队必须建立基于Windows Event ID的时间线关联分析模型事件 ID日志源监控意义关键研判字段4624Security网络登录事件LogonType: 3(网络登录),LogonProcessName: NTLM/Kerberos,IpAddress7045System新服务安装通知ServiceName,ImagePath(若指向%SystemRoot%\*需警惕)4688 / Sysmon 1Security / Sysmon进程创建与命令行ParentImage: WmiPrvSE.exe或services.exe派生命令行外壳以下 Python 代码实现了一个专门针对横向移动特征的日志关联分析器能够从日志流中精准提取 PsExec 与 WMI 异常调用链import json from typing import List, Dict, Any class LateralMovementHunter: def __init__(self): self.suspicious_service_names {psexesvc, paexec, winexe, csexec} def analyze_event_chain(self, events: List[Dict[str, Any]]) - List[Dict[str, Any]]: 分析事件序列重构横向移动攻击链条 print([*] 启动内网横向移动 (Lateral Movement) 威胁狩猎分析...) alerts [] # 缓存网络登录事件用于上下文关联 recent_network_logons: Dict[str, Dict] {} for ev in events: event_id ev.get(EventID) event_data ev.get(EventData, {}) timestamp ev.get(TimeCreated, ) target_host ev.get(Computer, UNKNOWN) # 1. 监控 Event ID 4624 (网络登录 LogonType 3) if event_id 4624: logon_type str(event_data.get(LogonType)) src_ip event_data.get(IpAddress, -) user event_data.get(TargetUserName, ) if logon_type 3 and src_ip not in (127.0.0.1, -, ::1): recent_network_logons[target_host] { src_ip: src_ip, user: user, timestamp: timestamp } # 2. 监控 Event ID 7045 (System 日志: 新服务安装 - 对应 PsExec 行为) elif event_id 7045: svc_name event_data.get(ServiceName, ).lower() image_path event_data.get(ImagePath, ) # 检查是否匹配已知横向移动工具服务名或包含高危命令行 if svc_name in self.suspicious_service_names or cmd.exe in image_path.lower() or powershell in image_path.lower(): logon_ctx recent_network_logons.get(target_host, {}) alerts.append({ tactic: TA0008 - Lateral Movement, technique: T1543.003 - Windows Service Creation (PsExec style), severity: CRITICAL, target_host: target_host, source_ip: logon_ctx.get(src_ip, UNKNOWN), compromised_user: logon_ctx.get(user, UNKNOWN), details: f检测到新服务注册 [{svc_name}] - 执行路径: {image_path}, timestamp: timestamp }) # 3. 监控 Event ID 4688 / Sysmon 1 (WmiPrvSE 派生子进程 - 对应 WMI 横向) elif event_id in (4688, 1): parent_proc event_data.get(ParentImage, ).lower().split(\\)[-1] child_proc event_data.get(Image, ).lower().split(\\)[-1] cmdline event_data.get(CommandLine, ) if parent_proc wmiprvse.exe and child_proc in (cmd.exe, powershell.exe, pwsh.exe, mshta.exe): logon_ctx recent_network_logons.get(target_host, {}) alerts.append({ tactic: TA0008 - Lateral Movement, technique: T1047 - Windows Management Instrumentation (WMI Exec), severity: HIGH, target_host: target_host, source_ip: logon_ctx.get(src_ip, UNKNOWN), compromised_user: logon_ctx.get(user, UNKNOWN), details: fWMI 服务进程 (WmiPrvSE.exe) 异常衍生命令行外壳: {child_proc}, command_line: cmdline, timestamp: timestamp }) print(f[] 日志审计完成识别出 {len(alerts)} 起高危横向移动攻击事件\n) for a in alerts: print(f - [{a[severity]}] {a[technique]}) print(f 受害主机: {a[target_host]} (来源 IP: {a[source_ip]}, 凭据身份: {a[compromised_user]})) print(f 行为详情: {a[details]}) if command_line in a: print(f 执行命令: {a[command_line]}) print(f 触发时间: {a[timestamp]}\n) return alerts if __name__ __main__: # 模拟 Windows 安全事件日志流 mock_event_stream [ { EventID: 4624, TimeCreated: 2026-09-03 14:10:02, Computer: FILE-SERVER-01, EventData: {LogonType: 3, IpAddress: 192.168.1.105, TargetUserName: Administrator} }, { EventID: 7045, TimeCreated: 2026-09-03 14:10:05, Computer: FILE-SERVER-01, EventData: {ServiceName: PSEXESVC, ImagePath: %SystemRoot%\\PSEXESVC.exe} }, { EventID: 4688, TimeCreated: 2026-09-03 14:15:30, Computer: DC-PRIMARY, EventData: { ParentImage: C:\\Windows\\System32\\wbem\\WmiPrvSE.exe, Image: C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe, CommandLine: powershell.exe -enc JABzACAAPQAgAE4AZQB3AC0ATwBiAGoAZQBjAHQA... } } ] hunter LateralMovementHunter() hunter.analyze_event_chain(mock_event_stream)企业内网横向移动主动防御收敛体系横向移动之所以屡屡得手本质上是企业内网对“本地管理员密码通用”与“过度宽松的内部 RPC 通信”的纵容。构筑坚实的防御体系需推进以下三大工程1. 部署 LAPSLocal Administrator Password Solution强制在全网所有 Windows 工作站与服务器上启用 LAPS确保每台机器的内置Administrator账户拥有完全随机且定期轮换的强口令。彻底终结“单台终端失陷导致全网管理员密码被撞库漫延”的死穴。2. 启用 Credential Guard 与受保护用户组Protected Users在 Windows 10 / 11 与 Windows Server 上开启基于虚拟化的安全VBS与Credential Guard将 LSASS 进程隔离在独立的受信任虚拟环境Trustlet中禁止 Mimikatz 等工具直接读取明文密码或 NTLM Hash。将特权运维账户加入Protected Users 安全组强制禁用 NTLM 认证限制 Kerberos 票据生命周期为 4 小时杜绝哈希传递与票据缓存窃取。3. 主机防火墙与东西向访问白名单控制通过 GPO 组策略强制开启主机防火墙除受控的集中运维跳板机Bastion Host之外禁止所有办公终端之间相互访问 TCP 445、135、5985 端口从物理连通性上扼杀任意终端间横向移动的可能。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →