Windows认证机制小结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows认证机制小结相关的知识,希望对你有一定的参考价值。
参考技术Awin认证机制主要有三个: 本地主机认证 , 网络主机认证 , 域内主机认证
简单来说,本地认证过程就是我们开机后,输入密码成功进入桌面的过程。
这个过程中回涉及到几个进程:
大概过程:
网络认证是工作组之间主机互相访问,正常是通过SMB服务的445端口。在工作组之间主要使用NTLM-Hash验证机制进行验证,目前更新为NTLM V2和域kerberos验证体系。
大概过程:
Kerberos协议是一种基于第三方可信主机的网络认证协议,它允许两个实体之间在非安全网络环境下以一种安全的方式证明自己的身份。
A用秘密做秘钥加密文字生成密文,把密文和文字一块发送给B,B再用秘密解密得到明文,把明文和文字进行对比。若一致,则证明是A。
但是网络中,密文和文字很有可能被窃取。只要时间足够,总能破解秘钥。所以不能使用这种长期有效的秘钥。而是改用短期的临时秘钥。这个临时秘钥需要一个第三方可信任的机构来提供(KDC)
相关名词说明:
大概过程:
小结:
Client要访问Server,先去AS认证自己的身份。认证通过后AS返回给Client一个TGT。Client再拿着TGT在TGS中判断是否有访问Server的权限。如果有权限,TGT交换成Ticket,给Client用于和Server通信。
第一步:客户端认证
客户端首先向KDC的AS服务发起请求,请求内容有客户端hash加密的时间戳、客户端信息、服务器信息等内容。
AS去AD查客户端用户ID是否存在,若存在则会返回给Client两条信息,即 KRB_AS_REP :
第二步:服务授权
Client收到回复 KRB_AS_REP ,会使用自己的NTLM-Hash,将被加密过的临时秘钥Session-Key进行解密,得到没有被加密的Session-Key,然后将其保存在本地,如果有需要访问某个服务时就可以构成 TGS_REQ 提交给TGS,来得到对应的ST。
在这个过程中发送的 TGS_REQ 中包含了使用Session-Key(AS生成的)加密的时间戳以及Client-info、Server-info 等数据,以及一些其他信息,以及使用krbtgt用户NTLM-Hash加密的TGT(TGT是用krbtgt 账户的NTLM加密的,Client无法解密)
TGS收到该请求,先去AD查找客户端发来的服务ID是否存在,存在的话用krbtgt NTLM-hash解密TGT得到Session-key 、timestamp、Client-info、Server-info。再用Session-key 解密第一部分内容,得到Client-info、timestamp。
将两部分获取到时间戳timestamp进行比较,如果时间戳和解密时间相差太久则终止验证。
TGS还会将这个Client的信息与TGT中的Client信息进行比较,如果两个相等的话,还会继续判断Client有没有权限访问Server,如果有,查找域控中储存的服务器hash、并随机生成一个server session key。
TGS返回的 KRB_TGS_REP ,由两部分组成:
至此,Client和KDC的通信就结束了,然后是和Server进行通信。
第三步:服务请求
Client收到 KRB_TGS_REP ,获得了加密的server session key以及ST。先使用刚才储存在本地的Session-key(AS生成的)对server session key(TGS生成的)进行解密,得到未加密的server session key(TGS生成的),然后继续将其和ST一起储存在本地。
当Client需要访问Server时,Client则会发送 KRB_AP_REQ 。
KRB_AP_REQ 包含了使用server session key(TGS生成的)加密时间戳、Client-info、Server-info等数据,以及一些其他信息,ST因为使用的是Server NTLM-hash 进行的加密,无法解密,然后再原封不动地把ST一同发送给Server。
Server 收到请求,用自身的Server NTLM解密了ST,得到server session key和客户端信息,这里也会判断截止时间是否还有效,然后使用解密出的server session key解密另一条消息,得到Client-info、timestamp。然后与ST的Client-info、timestamp进行对比。timestamp 一般时间为8小时。验证通过后,回复 KRB_AP_REP ,建立通信。
当黑客可以获得Krbtgt用户的NTLM-Hash就代表着黑客黑客就可以伪造TGT
白银票据不同于黄金票据,白银票据的利用过程是伪造TGS,通过已知的授权服务密码生成一张可以访问该服务的 TGT。因为在票据生成过程中不需要使用 KDC,所以可以绕过域控制器,很少留下日志。而黄金票据在利用过程中由 KDC 颁发 TGT,并且在生成伪造的 TGT 得 20 分钟内,TGS不会对该 TGT 的真伪进行效验。
白银票据依赖于服务账号的密码散列值,这不同于黄金票据利用需要使用 Krbtgt 账号的密码哈希值,因此更加隐蔽。
kerberos 认证学习
横向移动-win认证机制
Kerberos协议认证过程
横向移动-域的Kerberos协议
Web安全之认证机制
索引
一、认证是什么,和授权的区别?
“认证”是很容易理解的一种安全手段,常见的认证方式就是用户名和密码。那么“认证”和“授权”是一回事吗,答案是否定的。不要把这两个概念搞混了,认证翻译为Authentication, 授权是Authorization,他们的区别:
认证的目的是为了认出用户是谁,而授权的目的是为了决定用户能够做什么。
举个例子解释一下,假设应用系统是一座房子,持有钥匙的人可以进去,那么房子是通过锁和钥匙的匹配来进行“认证”的,用钥匙开门的过程就是互联网里对应的登录(Login)操作。可是开门之后什么事情能做,什么事情不能做就是“授权”管理了。如果进来的是房主,他可以在客厅看电视,也可以进卧室睡觉,可以随意做想做的事情,因为他具有物资的最高权限。如果进来的是客人,那么可能他仅仅被允许坐在客厅看电视,不能进入卧室,没有进卧室的权限。
从这个例子看出,“能否进入卧室”这个权限被授予的前提,是需要识别出来进房子的是主人还是客人,即如何授权是取决于认证信息的。那么如何才能准确的判断一个人是谁呢,主人把钥匙丢了或者别人伪造钥匙怎么办?这个问题很复杂,目前只能根据“凭证”来确定一个人的身份,这个凭证可以是钥匙,也可以是其他诸如指纹、人脸、虹膜等生物特征。
认证实际上就是一个验证“凭证”的过程。
如果只有一个凭证被用于认证,则称为“单因素认证”;如果有两个或多个凭证被用于认证,则称为“双因素认证”或“多因素认证”。一般来说多因素认证的强度要高于单因素认证,但是在用户体验上,多因素认证或多或少都会带来一些不方便的地方。
二、密码的那些事儿
1.密码设置策略
目前互联网普遍已密码作为最基础的认证手段。密码的优点是使用成本低,认证过程实现起来简单,它的缺点是安全能力比较弱,密码可能被猜解,所以涉及密码认证方案是第一个需要考虑的问题是密码强度。
推荐的密码强度(策略)如下:
- 密码长度普通应用在6位以上,重要应用密码至少8位以上。
- 密码要区分大小写字母
- 密码为大写字母、小写字母、数字、特殊符号中的两种以上的组合
- 不要有连续的字符,如1234、abcd等
- 不要设置为自己的名字,生日等个人信息
目前攻击者常用的攻击手法是选择一些弱口令,比如123456,然后猜解用户名,直到发现一个使用弱口令的账号为止。
2.密码保存策略
密码的保存也需要注意,一般来说密码都需要经过加密后或者至少经过哈希后再存储在数据库中,这样即使是网站的管理人员,也不能够看到用户的密码。在这种情况下,即使数据泄露了,攻击者也无法获取到密码的明文。 登录时验证密码的过程仅仅是验证用户提交的密码的哈希值,与保存在数据库中的哈希值是否一致。
3.浏览器记住密码
建议不要让浏览器记住您的密码,请选择“一律不”
这个规则我们可是在多次H VV 行动中吃过亏的,切记,选择–一律不!
三、SSO单点登录安全保障
单点登录 (SingleSignOn,SSO) 指一个用户可以通过单一的 ID 和凭证(密码)访问多个相关但彼此独立的系统,它是一种应用很广泛的认证方案。用户只需要登录一次就可以访问所有的系统,大大提升了用户体验,但是也把风险集中在了单点上。
SSO的优点在于风险集中化,就只需要保护好这一个点,缺点也同样很明显,单点一旦被攻破的话,后果会非常严重,将影响到所有使用单点登录的系统。降低这种风险的办法是在一些敏感的系统里,再单独实现一些额外的认证机制,如某些支付平台,在付款前要求用户再输入一遍支付密码。
四、小结
本文介绍了认证相关的安全问题,认证解决了凭证验证的问题,授权是决定认证过的用户都有哪些权限。
认证的方法很多,常见的密码认证需要注意密码强度要设置为高强度,最后介绍了单点登录的概念及安全方面利弊,本文能帮助大家提高安全意识。
以上是关于Windows认证机制小结的主要内容,如果未能解决你的问题,请参考以下文章
深入详解windows安全认证机制ntlm&Kerberos