windows域环境的认证机制学习

windows域环境的认证机制学习

对于Kerberos和NTLM的验证机制之前就重复学习过好几次,但是因为平时的学习过程中需要用到这两个验证机制的地方并不是很多所以一直没有做学习笔记导致经常容易忘,今天早上刚好看到了谢公子的windows域环境下认证和攻击初识就跟着重新学了一边顺便做了几个图,Kerberos部分的内容过程看图不方便的话可以回去看原文,这里只摘抄文中的几个没有被我放到图中的注释

Kerberos

image-20221010113610118

注:krbtgt账户是创建域时系统自动创建的,可以认为是为了kerberos认证服务而创建的账号。

注:TGT是KDC加密的,Client无法解密,并且具有有效期,客户端用其向TGS请求ST。

image-20221010113606949

注:验证器Authenticator只能使用一次,是为了防止TGT被冒用。kerberos设计之初,产生票据的概念就是为了避免重复的常规密码验证,因为票据在有效期内可以重复使用。为了避免冒用,设计出session key以及Authenticator。session key只有真正的客户端、服务知道,利用session key加密验证器,服务就可以解密对比验证器以及票据中声明的用户、客户端信息是否一致,一致说明票据来自可信客户端。

62638be70e3e745194dca594

NTLM认证

这部分的内容相比于Kerberos验证的就简单的多了,这里直接贴一下windows域环境下认证和攻击初识的原文吧(主要是感觉几个图都做的挺好的)

NTLM认证采用质询/应答(Challenge/Response)的消息交换模式。NTLM既可用于域环境下的身份认证,也可以用于没有域的工作组环境。主要有本地认证和网络认证两种方式。

本地认证:

用户登陆windows时,windows首先会调用winlogon.exe进程接收用户输入的密码,之后密码会被传递给lsass.exe进程,进程会先在内存中存储一份明文密码,并将密码加密为NTLM hash,与本地SAM数据库中用户的NTLM hash对比,一致则登陆成功。

img

网络认证:

如下为NTLM域环境中网络认证流程。

第一步:首先用户输入正确用户密码登陆到客户端主机,用户想要访问某个服务器的服务,客户端先发送一个包含用户名明文的数据包给服务器,发起认证请求。

img

第二步:服务器生成一个随机数,称为Challenge,返回给客户端。

img

第三步:客户端接收到Challenge后,用密码hash加密,生成Response,发送给服务。

img

第四步:服务将Response、用户名、Challenge发送给域控验证。域控使用本地数据库(NTDS.dit)中保存的对应用户的NTLM hash对Challenge进行加密,得到的结果与Response进行对比,一致则认证成功。然后将认证结果返回给服务端。

img

2022_10_10 12:00

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇