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申请。