内网渗透—windows验证机制

admin 2025年1月26日13:22:57评论12 views字数 2855阅读9分31秒阅读模式

内网渗透—windows验证机制

SSPI

安全服务接口,主要用于身份验证机制。

SSP

安全服务,是SSPI的功能函数的具体实现。

LM Hash和NTLM Hash

两者都是windows对用户的密码进行加密得到的hash,会放到本地的SAM文件和NTDS.dit文件中。

Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::

格式为:

Administrator:sid:LMHash:NTLMHash

Net-NTLM Hash v1的格式为:

username::hostname:LM response:NTLM response:challenge

Net-NTLM Hash v2的格式为:

username::domain:challenge:HMAC-MD5:blob

从Windows Vista 和 Windows Server 2008开始,默认情况下只存储NTLM Hash,LM Hash将不再存在。(因为LMHash存在漏洞)。

NTLM身份认证

NTLM认证分为本地认证和网络认证。

NTLM本地认证

将用户密码转化为NTLM Hash的时候与本地SAM数据库进行对比。

登陆流程:

winlogon.exe接受用户输入—>密码交给lsass.exe进程—>进程保存明文密码—>明文密码加密成NTLM Hash

NTLM工作组认证

挑战/响应验证机制

1、客户端输入服务端的用户、密码,然后本地缓存服务器密码的NTLM Hash值。

2、服务端返回给客户端一个16位的随机值challenge。

3、客户端用NTLM-Hash和challenge进行加密,拿到response。response里面包含Net-ntlm hash。

4、服务端用自己的ntlm-hash对challeng加密然后与客户端发送的对比。

NTLM 在域环境中的认证

在域环境中,在第四步中,服务端将net ntlm-hash发送给域控,域控负责检验net ntlm-hash是否正确。

用户密码

内网渗透—windows验证机制

https://3gstudent.github.io/Windows下的密码hash-NTLM-hash和Net-NTLM-hash介绍

NTLM认证的相关问题

Hash传递

在NTLM认证的第三步中,使用NTLM Hash进行计算Net-ntlmhash。在进行身份验证的时候无需使用用户明文密码,可以直接使用ntlmhash进行身份验证。

http://blog.sycsec.com/2018/10/02/What-is-Pass-the-Hash-and-the-Limitations-of-mitigation-methods/#pth攻击原理

https://xz.aliyun.com/t/8117#toc-2

https://whoamianony.top/2021/04/09/渗透测试/内网渗透测试/内网渗透测试:NTLM 与 NTLM 身份验证/

Net-NTLM爆破

NTLM Relay

KERBEROS认证协议

该协议要解决的问题

客户端要访问服务端上的某个协议时需要进行身份验证

在通讯过程中即使通讯内容被篡改,仍然能保持安全性。

两大部分

客户端向AS发起请求,进行身份验证。验证通过之后会给一个TGT也就是黄金票据。

客户端通过TGT来获取访问服务端上的服务的权限,也就是换取TGS白银票据

两大票据

黄金票据:由AS生成传递给客户端,使用域控制器中的KRBTGT用户的hash对客户端信息进行加密得到黄金票据。黄金票据存放到客户端原封不动。用来发送给TGS进行服务器授权。

白银票据:白银票据是用服务器端的hash加密用户信息得到的。

具体流程

客户端身份验证

客户端向AS进行身份验证获取TGT票据。

  • 客户端向AS发起请求

  • AS通过AD验证是否有该用户。

  • AS发送两条信息给客户端。

  • AS随机生成session-key,并用客户端用户的hash加密。

  • 发送TGT,黄金票据。

  • 客户端拿到信息之后,黄金票据不动,使用hash解密session-key。

客户端获取服务器授权

客户端发送TGT、要访问的服务器信息、客户端信息给TGS。

  • TGS向AD查询所请求的服务器是否存在。

  • TGS使用域控hash解密TGT,拿到session-key和客户端信息。

  • TGS拿到解密的session-key去解密另一条信息,也得到客户端信息。两者比较。

  • TGS生成一个server session key并向客户端发送以下信息。

  • 使用所访问服务器的hash加密server session key生成白银票据。

  • 使用session key加密server session key

  • 客户端拿到信息之后,用session key解密得到server session key 白银票据依据不动。

客户端请求服务器

客户端使用server session key加密客户端信息和白银票据一起发送给服务器。

  • 服务器拿到信息用自己的hash解密白银票据得到server session key和客户端信息。拿到key之后继续解密另一条信息拿到客户端信息。进行对比。

具体的传输内容

客户端身份验证

客户端

请求包中包含:请求用户名、客户端主机名、以及被用户hash加密的时间戳。其中被hash加密的时间戳是请求凭据。

AS服务器

拿到用户的请求凭据之后,从as服务器中获取hash进行解密,解密成果之后获取时间戳,如果在五分中之内则验证成功。

随机生成一个session key,向客户端传递经过krbtgt用户hash加密的黄金票据、用户hash加密的session key。

所以获取域控的用户hash之后,我们可以进行黄金票据伪造。

总结:

session key 由as服务器生成,被用户hash加密。

黄金票据由as服务器生成,被域控的hash加密。

客户端获取服务器授权

客户端

客户端信息、被session key 加密的时间戳、黄金票据

服务端解密黄金票据,拿到session key,然后使用session key解密被加密的时间戳,拿到时间戳。之后使用服务的hash加密生成白银票据。和一个session key加密的server session key。

https://xz.aliyun.com/t/8187

总结:

  • 机器是否具有某个服务器中服务的使用权,由KDC分发的票据来决定。
  • 客户端向AS发送的请求凭据是客户端的hash加密的时间戳。
  • 黄金票据TGT是由域用户的hash生成的。
  • KDC拿到TGT解密之后,如果正确直接返回被服务端hash加密的TGS也就是白银票据。这一步无论是否有权限访问服务器,只要具有TGT,就返回TGS。

黄金票据与白银票据的区别

加密方式不同:

前者是固定用户的hash加密,后者是服务账号的hash加密。

流程不同:

前者构造的时候需要KDC域控的参与,后者不需要。

权限不同:

在伪造前者可以访问任何服务,后者只能访问固定的服务。

原文始发于微信公众号(土拨鼠的安全屋):内网渗透—windows验证机制

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月26日13:22:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   内网渗透—windows验证机制http://cn-sec.com/archives/3677530.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息