Hash窃取与传递

# Hash窃取与传递


NTHASH(NTLM)

在 Windows中, 存储的密码Hash就叫做 NTHash,也叫做 NTLM,其中NTLM 全称是 “NT LAN Manager”,NTHash 是通过对密码明文进行十六进制和unicode转换,然后md4算法运算后得到(算法表示为MD4(UTF-16-LE(password)) )。这个 NTHash 就是存在 SAM 数据库里,能够直接被 mimikatz 抓取的 hash,也存在域控的 NTDS 文件中,使用这个 hash 可以直接进行 pass-the-hash 攻击。

NTLM本地认证

首先,用户注销、重启、锁屏后,操作系统会让winlogon显示登录界面,也就是输入框,接收输入后,将密码交给lsass进程,这个进程中会存一份明文密码,将明文密码加密成NTLM Hash,对SAM数据库比较认证。

NTLM 身份验证

Windows 的 NTLM 认证就是利用 NTLM Hash 进行的认证,可以分为 本地认证 和 网络认证 两种方式。NTLM 的网络认证,既可用于域内的认证服务,又可用于工作组环境。NTLM 有 NTLMv1 、NTLMv2 、NTLMsession v2 三个版本,目前使用最多的是NTLMv2版本。

Net-NTLM

这是一种网络认证协议,其使用 NTHash 为基础,基于 challenge/response 的机制来实现服务端和客户端的双方认证。在局域网或者域中,经常会使用 Net-NTLM 协议来进行认证,大概流程如下:

通过这样的认证流程,就能够在不发送用户密码明文和Hash的情况下进行认证了。

通过 Responder 等工具抓取流量获取到的 hash 是 Net-NTLM 加密过后的hash,这类hash不能直接用来进行 pass-the-hash 攻击,但是可以用来进行重放攻击,也存在暴力破解的可能性。具体原因可以参考上面的流程。

NTLM 认证的相关安全问题

NTLM 认证固然存在不少安全问题,大体有以下几种:

哈希传递攻击(PTH)

哈希传递(Pass The Hash)攻击简称 PTH,该方法通过找到与账户相关的密码散列值(NTLM Hash)来进行攻击。由于在 Windows 系统 NTLM 认证的 TYPE 3 消息计算 Response 的时候,客户端是使用用户的 NTLM Hash 进行计算的,而不是用户密码进行计算的。因此在模拟用户登录或对访问资源的用户进行身份认证的时候,是不需要用户明文密码的,只需要用户 Hash。攻击者可以利用 NTLM HASH 直接远程登录目标主机或反弹 Shell。

在域环境中,用户登录计算机时一般使用域账号,大量计算机在安装时会使用相同的本地管理员账号和密码,因此,如果计算机的本地管理员账号和密码也相同,攻击者就能使用哈希传递攻击的方法来登录内网中的其他主机。使用该方法,攻击者不需要花费时间来对Hash进行爆破,在内网渗透里非常经典。常常适用于域环境或工作组环境。

利用 NTLM 进行内网信息收集

在NTLM认证中 TYPE 2 消息返回 Challenge 的过程中,同时返回了操作系统类型,主机名,NetBIOS 名称等。这也就意味着如果我们在能跟服务器进行 NTLM 交流中,给服务器发送一个 TYPE 1 的请求,服务器返回 TYPE 2 消息的响应,这一步,我们就可以得到很多信息。

NTLM Relay

NTLM hash 分为 NTLMv1 NTLMv2 NTLM session v2 三种,NTLMv2 的强度比 NTLMv1 强了不少 ,我们在实战中,如果获得的是NTLMv1的话直接对其进行爆破就行了,而现实情况中我们遇到的是 NTLMv2,NTLMv2的密码强度高了不少,因此如果你没有一个超级强大的字典,你很难得到明文密码。那么,如果爆破行不通的话我们不妨试一下NTLM Relay攻击。

在这个NTLM Relay中,我们就是要将截获的Net-NTLM Hash重放来进行攻击,从而实现对其他机器的控制,所以严格意义上应该叫作Net-NTLM Relay。

参考
跟着玄武大佬学NTLM relay攻防 - 知乎 (zhihu.com)
NTLM Relay is dead, Long Live NTLM Relay (zeronights.ru)
纯干货-内网渗透系列教程——NTLM 与 NTLM 身份认证 - 哔哩哔哩 (bilibili.com)

posted @ 2021-10-10 20:26  xyylll  阅读(300)  评论(0编辑  收藏  举报