跳到主要内容

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 可用性,做多路备份。
  • 操作后清理创建的计划任务与服务,减少痕迹与业务影响。

防御建议

  1. 强制 SMB 签名,抑制中继与篡改类攻击面。
  2. 账户隔离:管理凭据不用于日常办公与上网。
  3. 对计划任务与服务的远程创建建立监控(EDR / 事件日志)。
  4. 对 135、445 等管理端口做网络限制,仅允许可信管理段访问。
  5. 定期轮换本地管理员密码(LAPS 类方案),阻断 SMB 凭据复用。