windows认证(已完结)


注:因为觉得这篇文章写的不是太详细,于是写了一篇更加详细的,请移步:

 

本地认证

NTLM:admin(密码) -> hex(16进制编码) -> unicode -> MD4

本地认证:winlogon.exe接受用户输入交给lsass.exe,加密密码获得NTLM hash,与SAM文件进行比对

winlogon.exe管理用户登入和登出 lsass用于微软windows系统的安全机制

LM hash:是NTLM的前身,现在几乎已经被弃用

网络认证

工作组环境:没有信托机构,只能够点对点通信,A想访问B的资料,需要将一个存在于B主机上的账户凭证发送至B主机,经过认证才能够访问B主机上的资源

最常见的服务:SMB 445

NTLM:协商 -> 质询 -> 验证

协商:确认NTLM版本是1.0还是2.0

质询:客户端向服务端发送用户信息,服务端接收到请求生成一个16位的随机数,称为”challenge“,使用登录用户名对应的NTML hash加密challenge,生成challenge1,同时将challenge发送给客户端

Net NTML Hash = NTLM Hash(Challenge)

客户端接收到challenge后,使用将要登录到用户对应的NTML hash加密challenge生成response,将response发送到服务器端

服务器端接受到response后,对比challenge1与response是否相等

NTLM v1 - DES  challenge 8位

NTLM v2 - HMAC-MD5  challenge 16位

哈希传递

必要条件:

1、被认证主机能够访问服务器

2、被传递认证的用户名

3、被传递用户的NTLM hash

Active Directory 活动目录

存储了有关网络对象的信息,网络对象分为:用户、用户组、计算机、域、组织单位、安全策略

Kerbroes 域认证体系

Client Server KDC(Key Distribution Center) = DC

KDC:

AD(account database):存储所有client的白名单,只有存在于白名单里的client才能申请到TGT

AS:为client生成TGT的服务

TGS:为client生成某个服务的ticket

从物理层面看,AD和KDC都为DC

粗略流程:

1.client向kerberos服务请求,希望获取访问server的权限。 kerberos得到了这个消息,首先得判断client是否是可信赖的, 也就是白名单黑名单的说法。这就是AS服务完成的工作,通过在AD中存储黑名单和白名单来区分client。成功后,返回AS返回TGT给client。

2.client得到了TGT后,继续向kerberos请求,希望获取访问 server的权限。kerberos又得到了这个消息,这时候通过client 消息中的TGT,判断出了client拥有了这个权限,给了client访问server的权限ticket。

3.client得到ticket后,终于可以成功访问server。这个ticket只是针对这个server,其他server需要向TGS申请。