impacket 远程执行三件套
拿到 Windows 有效凭据后,impacket 提供三种不落地的远程执行方式。三件套的差异在协议路径与权限表现:WMI 走 135 + 动态端口适合稳定操作,计划任务默认最高权限常常直接拿到 SYSTEM,服务执行则需要 ADMIN$ 可写。
仅限授权环境
远程执行会在目标上留下服务、计划任务与日志,仅用于授权测试,结束后要清理。
前提与指纹
必须同时满足:
| 条件 | 说明 |
|---|---|
| 有效凭据 | 明文密码或 NTLM 哈希 |
| 端口可达 | 445、135 等管理端口可达 |
动手前先做指纹确认:
nxc smb <target>
netexec 能确认系统版本与 SMB 开放性,避免拿着错误凭据反复尝试。端口与服务的发现见 Nmap 服务识别与脚本扫描。
wmiexec:WMI 半交互 shell
impacket-wmiexec '<domain>/<user>:<pass>@<target>'
- 走 WMI(135 + 动态端口),给出半交互 shell。
- 适合稳定、低噪声的连续操作。
atexec:计划任务执行
impacket-atexec '<domain>/<user>:<pass>@<target>' "whoami"
- 用计划任务执行命令,输出回传。
- 计划任务默认以最高权限运行,常见直接拿到
nt authority\system。
smbexec / psexec:服务执行
impacket-psexec '<domain>/<user>:<pass>@<target>'
通过创建服务执行载荷,需要 ADMIN$ 可写;服务创建行为也是 EDR 关注的重点,噪声最大。
凭据复用与哈希传递
- 先试 administrator:本地明文密码经常对 administrator 账号同样有效(SMB 复用),换用户名再试一轮成本极低。
- 哈希传递:三件套都支持
-hashes :<ntlm>形式,拿到哈希后不需要破解明文:
impacket-wmiexec '<domain>/<user>@<target>' -hashes :<ntlm>
复核要点
- 各种方式的失败原因不同:权限不足、端口被防火墙拦截、ADMIN$ 不可写,先定位再换工具。
- atexec 拿到 SYSTEM 后,回头验证 wmiexec / psexec 可用性,做多路备份。
- 操作后清理创建的计划任务与服务,减少痕迹与业务影响。
防御建议
- 强制 SMB 签名,抑制中继与篡改类攻击面。
- 账户隔离:管理凭据不用于日常办公与上网。
- 对计划任务与服务的远程创建建立监控(EDR / 事件日志)。
- 对 135、445 等管理端口做网络限制,仅允许可信管理段访问。
- 定期轮换本地管理员密码(LAPS 类方案),阻断 SMB 凭据复用。