提权让你在”这一台”上有了高权限。但内网里还有几十上百台机器,真正的目标是扩散控制。从一台跳到另一台,就叫 横向移动(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.py、wmiexec.py、smbexec.py、secretsdump.py(远程抓哈希)、getTGT/getST(Kerberos)等,是内网横向瑞士军刀。 - CrackMapExec(CME):批量横向框架,能一次对一整段 IP 用一组凭据试登录、扫共享、抓哈希,快速绘制”哪些机器用同一口令”:
# 用一组凭据扫整个网段,看哪些机器能登录
crackmapexec smb 10.0.0.0/24 -u 用户 -p 密码 --shares
CME 的输出能瞬间告诉你”这台低权账号在多少台机器上通用”——这正是横向的突破口。
横向的一般步骤(入门版)
- 收集凭据:提权后
hashdump/mimikatz 抓本机哈希与明文。 - 试复用:用这组凭据/哈希去连同网段其他机器(PtH 或明文)。
- 批量扫:CME 扫一段,找”口令通用”的机器。
- 挑高价值目标:文件服务器、运维机、靠近 DC 的跳板。
- 重复:在新机器上再抓凭据、再横向,像滚雪球。
常见新手坑
- 没凭据就横向:横向的前提是凭据,先提权抓哈希再动。
- 明文密码执念:忘了 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 + psexec | Impacket psexec.py、Sysinternals | 有凭据 + 能写 ADMIN$ + 开 SMB |
| WMI 远程执行 | wmiexec.py、wmic | 有凭据 + WMI 服务开(无文件更隐蔽) |
| Pass the Hash | psexec.py -hashes、mimikatz | 拿到 NTLM 哈希(无需明文) |
| Pass the Ticket | mimikatz ptt、Impacket | 拿到票据(域内) |
| RDP | mstsc、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 批量扫快速定位突破口。
自测题
- 什么是 Pass the Hash?为什么不用先破解哈希?
- psexec 和 wmiexec 在”落盘”上有什么区别,各适合什么场景?
- CrackMapExec 在横向里解决什么问题?
- “凭据复用”思维怎么改变你做横向的方式?
这一篇你该记住的
- 横向移动是把控制从”一台”扩散到”整个内网”,核心资源是凭据(哈希/明文/票据)。
- 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、黄金/白银票据,这些是拿下整个域的关键武器。