NTLM验证过程

简介:

参考文献:

Microsoft NTLM

Kerberos连接过程

正文

NTLM有Interactive和Noninteractive两种,Interactive就是用户登录类型的,只有client和DC两个参与者,而Noninteractive则是Client要去连接一个Server。Microsoft NTLM给出了NTLM的Noninteractive验证过程,有如下7步过程:

  1. (Interactive authentication only) A user accesses a client computer and provides a domain name, user name, and password. The client computes a cryptographic hash of the password and discards the actual password.
  2. The client sends the user name to the server (in plaintext).
  3. The server generates a 16-byte random number, called a challenge or nonce, and sends it to the client.
  4. The client encrypts this challenge with the hash of the user's password and returns the result to the server. This is called the response.
  5. The server sends the following three items to the domain controller:

    • User name
    • Challenge sent to the client
    • Response received from the client
  6. The domain controller uses the user name to retrieve the hash of the user's password from the Security Account Manager database. It uses this password hash to encrypt the challenge.
  7. The domain controller compares the encrypted challenge it computed (in step 6) to the response computed by the client (in step 4). If they are identical, authentication is successful.

但是其中有些地方不够详细,我在本文中加以补充。NTLM是windows验证的一种,其过程如下图所示:

下面来详细解析NTLM验证过程,仍然是七步过程:

  1. 用户登录时输入的user name、password和domain name,然后Client端计算password的hash值并保存在本地
  2. 客户端将user name的明文发送给DC
  3. DC生成一个16-byte的随机数,叫做challenge,传输给client
  4. client收到challenge以后,在复制一份拷贝,然后将其中一个challenge用password hash加密,这个叫做response,然后将challenge,response以及user name传送给server
  5. server端在收到client传送过来的三份内容以后将它们转发给DC
  6. DC在收到user name,response,challenge以后,根据user name在account database中找到其对应的password hash,然后用这个password hash加密challenge
  7. 最后一步是客户端将response跟加密后的challenge进行比较,如果相同则NTLM验证成功。

Microsoft NTLM的最后还提到了另外一点,就是让我们不要直接使用NTLM,而是使用negotiate。如果使用negotiate的话,那么windows会判断kerberos是否可用,如果可用就优先使用kerberos,否则使用NTLM。kerberos的安全性要比NTLM要高。

在sharepoint的中就有NTLM和negotiate的选择,默认选择的是NTLM,如果知道如何配置kerberos的话,建议使用negotiate模式



本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/08/23/2652541.html,如需转载请自行联系原作者


目录
相关文章
|
6月前
|
分布式计算 安全 Java
有哪些方法可以验证kerberos keytab文件的有效性?
有哪些方法可以验证kerberos keytab文件的有效性?
|
9月前
|
数据安全/隐私保护
JMX安全漏洞修复 服务端增加用户名和密码验证机制
JMX安全漏洞修复 服务端增加用户名和密码验证机制
|
11月前
|
缓存 安全 算法
域渗透 | kerberos认证及过程中产生的攻击
前言 Windows认证一般包括本地认证(NTLM HASH)和域认证(kerberos)。 认证的原理网上有很多文章。如果喜欢听视频课程的话,这里推荐倾旋师傅的分享课 https://www.bilibili.com/video/BV1S4411e7hr?spm_id_from=333.788.b_636f6d6d656e74.8 本篇文章主要内容是Kerberos认证过程中产生的攻击。
929 0
|
安全 JavaScript 前端开发
第二十一章 CSP Session 管理 - 身份验证和加密
第二十一章 CSP Session 管理 - 身份验证和加密
083.验证歌德巴赫猜想
083.验证歌德巴赫猜想
62 0
|
网络虚拟化 数据安全/隐私保护
|
网络虚拟化 数据安全/隐私保护
|
数据安全/隐私保护 Windows SQL
|
数据安全/隐私保护