【Windows身份认证】NTLM
前言
前几天自己在学习域渗透时突然对Windows的身份认证机制产生了兴趣,但看了好几天自己还是懵懵懂懂,期间自己看了许多师傅的优质文章,也做了一些例子的复现,于是有了这篇文章,可以说是自己的笔记或总结吧。
由于自己了解的也不是很深入,这篇文章写的技术可能比较浅,像NTLM和Kerberos的中间过程并没有写的很详细。自己还画了简单的过程图来加深理解和记忆,图画的不好,这些还请各位师傅见谅。
如果本文的内容有错误,还请各位师傅指正。
Windows身份认证机制
Windows身份认证机制主要有NTLM和Kerberos两种,其中NTLM主要被用在本地以及工作组环境,而在域环境中优先使用的是Kerberos。
在早期的windows系统(win2000以前)还有一种认证方式叫LM,但该方式的加密算法较脆弱,基本已经被淘汰掉了。
NTLM
NTLM(NT LAN Manager)是Windows中最常见的身份认证方式,主要有本地认证和网络认证两种情况。
NTLM Hash
在介绍NTLM之前,需要介绍NTLM中最关键的凭证:NTLM Hash。正常的明文密码加密为NTLM Hash的方法如下:
password ----> 十六进制编码 ----> Unicode转换 ----> MD4加密 ----> 得到NTLM Hash
例如:
admin -> hex(16进制编码) = 61646d696e
61646d696e -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634
本地认证
在本地认证过程中,当用户进行注销、重启、开机等需要认证的操作时,首先Windows会调用winlogon.exe进程(也就是我们平常见到的登录框)接收用户的密码。
之后密码会被传送给进程lsass.exe,该进程会先在内存中存储一份明文密码,然后将明文密码加密为NTLM Hash后,与Windows本地的SAM数据库(%SystemRoot%\system32\config\SAM)中该用户的NTLM Hash对比,如果一致则通过认证

网络认证
工作组环境
网络认证需要使用NTLM协议,该协议基于挑战(Challenge)/响应(Response)机制。
- 首先客户端向服务端发送
用户名以及本机的一些信息(此处更正) - 服务端接收到客户端的用户名后,先生成一个随机的16位的Challenge(挑战随机数),本地储存后将Challenge返回给客户端
- 客户端接收到服务端发来的Challenge后,使用用户输入密码的NTLM Hash对Challenge进行加密生成Response(也叫Net NTLM Hash),将Response发送给服务端
- 服务端接收到客户端发来的Response,使用数据库中对应用户的NTLM Hash对之前存储的Challenge进行加密,得到的结果与接收的Response进行对比,如果一致则通过认证

引用地址:https://xz.aliyun.com/t/6600
【Windows身份认证】NTLM的更多相关文章
- 转:细说ASP.NET Windows身份认证
转自:https://www.cnblogs.com/fish-li/archive/2012/05/07/2486840.html 细说ASP.NET Windows身份认证 阅读目录 开始 认识A ...
- 认识ASP.NET Windows身份认证
本文摘自:细说ASP.NET Windows身份认证 Forms身份认证虽然使用广泛,不过,如果是在 Windows Active Directory 的环境中使用ASP.NET, 那么使用Windo ...
- 细说ASP.NET Windows身份认证
上篇博客我谈到了一些关于ASP.NET Forms身份认证方面的话题,这次的博客将主要介绍ASP.NET Windows身份认证. Forms身份认证虽然使用广泛,不过,如果是在 Windows Ac ...
- 类型:.net;问题:asp.net window验证;结果:细说ASP.NET Windows身份认证
细说ASP.NET Windows身份认证 阅读目录 开始 认识ASP.NET Windows身份认证 访问 Active Directory 在ASP.NET中访问Active Directory ...
- IIS 登录失败 该登陆名来自不受信任的域,不能与windows身份认证一起使用
原文:https://blog.csdn.net/hhw199112/article/details/80234462 错误: 登录失败 该登陆名来自不受信任的域,不能与windows身份认证一起使用 ...
- 【OF框架】在部署中使用 Windows身份认证
准备 了解Windows身份认证相关知识及原理 框架开发项目完成,并完成发布包,完成在IIS中部署. 框架支持对Windows身份认证的实现,仅需要通过配置节进行配置即可切换,可以在部署的时候配置即可 ...
- 获取windows身份认证网站页面内容
有些网站必须登录才能获取到页面内容. 代码如下,可获取数据. var url = "https://yunda-api-test.appspot.com/int/parcel?wait=tr ...
- .NET Web的身份认证
百度一下”asp.net身份认证“,你会得到很多相关的资料,这些资料通常上来就会介绍诸如”Form认证“”Windows认证“等内容,而没有给出一个完整的流程.初学者对此往往一头雾水,我也曾经被坑过很 ...
- 细说ASP.NET Forms身份认证
阅读目录 开始 ASP.NET身份认证基础 ASP.NET身份认证过程 如何实现登录与注销 保护受限制的页面 登录页不能正常显示的问题 认识Forms身份认证 理解Forms身份认证 实现自定义的身份 ...
随机推荐
- Cesium入门4 - 创建Cesium Viewer
Cesium入门4 - 创建Cesium Viewer Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 任何Ce ...
- 阅读笔记——长文本匹配《Matching Article Pairs with Graphical Decomposition and Convolutions》
论文题目:Matching Article Pairs with Graphical Decomposition and Convolutions 发表情况:ACL2019 腾讯PCG小组 模型简介 ...
- CKKS加密方案
本文内容来自"Protecting Privacy throughHomomorphic Encryption",主要学习里面的CKKS部分. CKKS是一种同态加密方案,其安全性 ...
- Java IO: ByteArrayOutputStream使用
感谢原文作者:小思思smile 原文链接:https://blog.csdn.net/u014049880/article/details/52329333/ 更多请查阅Java API文档! 在创建 ...
- VMware14安装windows7的详细过程
感谢大佬:https://blog.csdn.net/u012230668/article/details/81701893 一.安装VMware虚拟机,以及下载一份ghost win7系统 下载地址 ...
- High ASCII字符从bat文件到dos控制台的转化问题
背景是这样的,由于项目需要,需要用silent install的方式安装一些程序,而安装参数中有一些High ASCII字符,如ùé.通过代码,使用默认编码(ANSI,说明下,我用的是法语的系统)创建 ...
- Eclipse、MyEclipse中代码提示框颜色
Matching breackets highlight = 匹配括号突出显示 Completion proposal background = 提示框背景色 Completion proposal ...
- java中最简单的计算执行时长的方式
日常在做一些性能测试的时候会通过执行时间来判断执行时长,java中最简单的方式如下: //开始时间 long startL= new Date().getTime(); //这里需要导入 java.u ...
- Web设计
架构:配置中心(数据发布与订阅),配置共享,服务发现,微服务鉴权,网关,负载均衡, 设计:分布式锁,延时队列 业务:日志.链路跟踪,灰度, 日志:(面向领域.业务.基础架构) 通信协议:http(1. ...
- 35、python并发编程之多线程(理论篇)
一 什么是线程 二 线程的创建开销小 三 线程与进程的区别 四 为何要用多线程 五 多线程的应用举例 六 经典的线程模型(了解) 七 POSIX线程(了解) 八 在用户空间实现的线程(了解) 九 在内 ...