教程
🛡️

网络安全

Web 安全、渗透测试、密码学与安全合规的系统化教程。

横向移动:从一台机器跳到整个内网

讲清内网渗透的横向移动——为什么提权后还要"跳",IPC$/SMB 与 psexec、WMI 远程执行、Pass the Hash(拿哈希直接登录)、RDP、以及 Impacket/CrackMapExec 这些工具的入门用法。

· 更新于 2026-07-19 阅读量 --

提权让你在”这一台”上有了高权限。但内网里还有几十上百台机器,真正的目标是扩散控制。从一台跳到另一台,就叫 横向移动(Lateral Movement)。这一篇讲几种最经典的横向手法,以及配套的知名工具。

本文所有横向操作仅用于你对自有或已授权的内网靶场/项目。对未授权主机登录、执行属违法。

为什么要横向

单台机器的价值有限。横向移动让你:

  • 扩大控制面(更多机器 = 更多数据/凭据);
  • 接近域控(DC 通常在内网深处,要从跳板一步步靠近);
  • 找高价值目标(文件服务器、运维机、代码库)。

横向的核心资源是凭据——你提权后抓到的哈希、明文密码、票据,正是横向的”门票”。

手法一:IPC$ / SMB 与 psexec

Windows 的 SMB 文件共享协议是横向主战场。IPC$ 是隐藏的共享管道,配合合法凭据可远程执行。经典工具 psexec(Sysinternals,及 Impacket 的 psexec.py)用 ADMIN$ 共享把服务二进制推到目标、以 SYSTEM 起服务:

# Impacket 的 psexec(用明文密码)
psexec.py 域名/用户:密码@目标IP
# 用哈希(Pass the Hash,见下)
psexec.py -hashes :NTLM哈希 域名/用户@目标IP

前提:目标开 SMB、你有有效凭据、且能写 ADMIN$ 共享(通常需要管理员级凭据)。

手法二:WMI 远程执行

WMI(Windows Management Instrumentation) 是 Windows 自带的管理接口,也能远程跑命令,且不落磁盘(比 psexec 更 stealthy,因为不传 exe 文件):

# wmic(系统自带)
wmic /node:目标IP /user:域名\用 /password:密码 process call create "cmd.exe /c whoami"

# Impacket 的 wmiexec(半交互,基于 WMI)
wmiexec.py 域名/用户:密码@目标IP

WMI 横向常被 EDR 重点监控,但它是红队标配,因为它”无文件”特性好。

手法三:Pass the Hash(PtH,哈希传递)

这是内网最实用的手法之一。你抓到的 NTLM 哈希,不一定非要解密成明文密码——很多协议(SMB、WMI)接受”用哈希直接认证”。于是你可以拿哈希当密码用,直接登录其他机器:

# 从目标抓哈希(需够权限)
# 然后用哈希横向,无需知道明文密码
psexec.py -hashes :aad3b435b51404eeaad3b435b51404ee:xxxx域名/用户@目标IP
wmiexec.py -hashes :xxxx 域名/用户@目标IP

PtH 的意义:省去破解哈希的步骤,且很多用户密码很强、哈希却一样能复用。它是”凭据即门票”的典型。

手法四:Pass the Ticket(PtT,票据传递)

在域环境里,认证靠 Kerberos 票据而非密码/哈希。PtT 是把窃取的票据(如 TGT/TGS)直接”塞”进当前会话,冒充该用户访问资源。常用 mimikatz 导出票据、再 kerberos::ptt 注入。细节放在下一篇”域渗透”展开,这里先知道它是横向(尤其域内的)高级形态。

手法五:RDP 远程桌面

如果目标开 3389 且你有凭据,直接 mstsc 连远程桌面最直观。但 RDP 会留登录痕迹、易被用户发现,且可能触发告警,通常作为”最后一步”而非首选横向。CS/MSF 里也有 rdp 相关模块。

配套工具:Impacket 与 CrackMapExec

  • Impacket(Python 库/脚本集):psexec.pywmiexec.pysmbexec.pysecretsdump.py(远程抓哈希)、getTGT/getST(Kerberos)等,是内网横向瑞士军刀。
  • CrackMapExec(CME):批量横向框架,能一次对一整段 IP 用一组凭据试登录、扫共享、抓哈希,快速绘制”哪些机器用同一口令”:
# 用一组凭据扫整个网段,看哪些机器能登录
crackmapexec smb 10.0.0.0/24 -u 用户 -p 密码 --shares

CME 的输出能瞬间告诉你”这台低权账号在多少台机器上通用”——这正是横向的突破口。

横向的一般步骤(入门版)

  1. 收集凭据:提权后 hashdump/mimikatz 抓本机哈希与明文。
  2. 试复用:用这组凭据/哈希去连同网段其他机器(PtH 或明文)。
  3. 批量扫:CME 扫一段,找”口令通用”的机器。
  4. 挑高价值目标:文件服务器、运维机、靠近 DC 的跳板。
  5. 重复:在新机器上再抓凭据、再横向,像滚雪球。

常见新手坑

  • 没凭据就横向:横向的前提是凭据,先提权抓哈希再动。
  • 明文密码执念:忘了 PtH——哈希就能直接用,不必破解。
  • 只试 psexec 一种:WMI 更 stealthy、PtH 更省事,多手法组合。
  • 忽略网段扫描:手动一台台试太慢,CME 批量扫能快速定位突破口。

进阶:横向的”凭据复用”思维

横向的本质是凭据复用——你抓到的一组凭据/哈希,在内网里往往能开多扇门。建立这个思维:

  • 一台机器的本地管理员口令,常是全网通用:很多运维图省事,给一批机器设同一个本地管理员密码(“万能密码”)。你破了一台,等于拿到一片。CME 批量扫就是验证这点。
  • 域用户的凭据,域内通用:域账号登录全公司,抓到域用户哈希就能 PtH 打域内任意接受该账号的机器。
  • 服务账号凭据,跨服务复用:Kerberos 服务账号密码若被破,可横向到依赖它的多个服务。

所以横向不是”一台台试”,而是”一组凭据,批量验证能开哪些门”。CME 的价值正在于此——一次扫出”口令通用”的机器清单,横向范围瞬间清晰。

实战:用 Impacket 从哈希到横向的完整流水

给一段”已抓到一台机器的 NTLM 哈希,拿它横向”的流水(靶场):

# 前提:已从 A 机 hashdump 得到 管理员:NTLM=xxxxxxxx

# 1) 用哈希对 B 机(10.0.0.11)做 Pass the Hash(psexec)
psexec.py -hashes :xxxxxxxx DOMAIN/管理员@10.0.0.11
# 直接拿到 B 机的 SYSTEM shell,无需知道明文密码

# 2) 对整段批量试(CrackMapExec),看哪些机器用同口令/哈希
crackmapexec smb 10.0.0.0/24 -u 管理员 -H xxxxxxxx --shares
# 输出标出多台可登录的主机

# 3) 用 WMI 无文件横向到 C 机
wmiexec.py -hashes :xxxxxxxx DOMAIN/管理员@10.0.0.12
# 半交互 shell,不落 exe,更隐蔽

# 4) 在每台新机器上再 hashdump,滚雪球收集更多凭据

这段流水的精髓是凭据复用 + 批量验证:一组哈希,用 PtH 直接打、用 CME 批量探、用 WMI 隐蔽打,每控一台再抓它的哈希,雪球越滚越大,直到碰到域控或高价值目标。

横向移动速查表

把手法的”技术—工具—前提”收成一张表,行动时对照:

手法工具(示例)前提
IPC$/SMB + psexecImpacket psexec.py、Sysinternals有凭据 + 能写 ADMIN$ + 开 SMB
WMI 远程执行wmiexec.py、wmic有凭据 + WMI 服务开(无文件更隐蔽)
Pass the Hashpsexec.py -hashes、mimikatz拿到 NTLM 哈希(无需明文)
Pass the Ticketmimikatz ptt、Impacket拿到票据(域内)
RDPmstsc、CS/MSF rdp开 3389 + 有凭据
批量扫通用口令CrackMapExec一组凭据 + 一段 IP

要点回顾:凭据是门票,复用是杠杆。先提权抓凭据,再用 PtH/明文批量验证”这组凭据能开哪些门”,挑高价值目标深入。多手法组合比单点猛打稳得多。

横向的”噪音”与隐蔽

横向不是无影无踪——每次 psexec、WMI、RDP 登录都会在目标上留下日志(如 Windows 的 4624 登录事件、4768/4769 Kerberos 事件)。红队要考虑 OPSEC(行动安全):

  • 减少不必要登录:用 PtH 直接打目标,而不是每台都交互登录;用 WMI 无文件执行少留痕迹。
  • 错峰与降速:短时间内对同一网段大量 SMB 登录,极易触发告警;控制节奏、分散时间。
  • 用跳板:经已控机器(路由/SOCKS)做横向,源 IP 是同内网机器而非你的攻击机,更隐蔽。
  • 关注蓝队视角:防守方重点盯”异常登录”(某账号短时间登多台、非工作时段登录、新地点登录)。红队越懂这个,越能避开;蓝队越懂这个,越能抓到。

横向是”效率与隐蔽”的权衡——滚雪球要快,但太快就惊动蓝队。熟练的红队知道在哪收力。

速记:横向 = 凭据复用 + 批量验证

横向移动的精髓就八个字:凭据复用,批量验证。你抓到的一组哈希/口令,不要一台台手工试,而是:

  • PtH 直接拿哈希登录,省去破解;
  • CME 批量扫一段,瞬间知道”这组凭据能开哪些门”;
  • WMI 无文件地悄悄打,降低暴露。

把思维从”打一台”切换到”一组凭据能开哪些门”,横向效率翻倍。这也是为什么前面强调”先提权抓凭据”——凭据才是横向的通行证。

常见误区

  • “必须破解哈希成明文”:PtH 直接用哈希,破解是多余步骤。
  • “只试 psexec”:WMI 无文件更隐蔽、PtH 更省事,多手法组合。
  • “横向是单点突破”:其实是凭据复用+批量验证,思维要从”一台”转到”一组凭据能开哪些门”。
  • “忽略网段扫描”:手动试太慢,CME 批量扫快速定位突破口。

自测题

  1. 什么是 Pass the Hash?为什么不用先破解哈希?
  2. psexec 和 wmiexec 在”落盘”上有什么区别,各适合什么场景?
  3. CrackMapExec 在横向里解决什么问题?
  4. “凭据复用”思维怎么改变你做横向的方式?

这一篇你该记住的

  • 横向移动是把控制从”一台”扩散到”整个内网”,核心资源是凭据(哈希/明文/票据)。
  • IPC$/SMB + psexec:推服务二进制以 SYSTEM 执行,经典但落盘。
  • WMI/wmiexec:远程执行、无文件,更 stealthy。
  • Pass the Hash:拿 NTLM 哈希当密码直接登录,省去破解;Impacket 的 -hashes 即用。
  • Pass the Ticket / RDP:域内票据传递、远程桌面(直观但易暴露)。
  • 工具:Impacket(psexec.py/wmiexec.py/secretsdump.py)、CrackMapExec(批量扫口令通用机器)。

下一篇我们深入域环境的核心——域渗透基础。Kerberos 认证、AS-REP Roasting、Kerberoasting、黄金/白银票据,这些是拿下整个域的关键武器。