NTLM认证协议

news2025/1/11 13:54:44

NTLM(Windows NT LAN Manager)是一种用于身份验证和安全通信的协议。它最初由微软开发,用于早期版本的Windows操作系统。NTLM协议在Windows网络环境中广泛使用,特别是在企业网络中。

NTLM身份验证步骤

NTLM验证是一种Challenge/Response 验证机制,由三种消息组成:通常称为type 1(协商),类型type 2(质询)和type 3(身份验证)。

  1. 用户登录客户端电脑

  2. (type 1)客户端向服务器发送type 1(协商)消息,它主要包含客户端支持和服务器请求的功能列表。

  3. (type 2)服务器用type 2消息(质询)进行响应,这包含服务器支持和同意的功能列表。但是,最重要的是,它包含服务器产生的Challenge(16位随机数)。

  4. (type 3)客户端用type 3消息(身份验证)回复质询。用户接收到步骤3中的challenge之后,使用用户hash与challenge进行加密运算得到response,将response,username,challenge发给服务器。消息中的response是最关键的部分,因为它们向服务器证明客户端用户已经知道账户密码。

  5. 服务器拿到type 3之后,使用challenge和用户hash进行加密得到response2(这就是Net-NTLM Hash)与type 3发来的response进行比较。如果用户hash是存储在域控里面的话,那么没有用户hash,也就没办法计算response2。也就没法验证。这个时候用户服务器就会通过netlogon协议联系域控,建立一个安全通道,然后将type 1,type 2,type3 全部发给域控(这个过程也叫作Pass Through Authentication认证流程)。

  6. 域控使用challenge和用户hash进行加密得到response2,与type 3的response进行比较。

    在这里插入图片描述

NTLM Hash的产生

假设我的密码是admin,那么操作系统会将admin转换为十六进制,经过Unicode转换后,再调用MD4加密算法加密,这个加密结果的十六进制就是NTLM Hash。

admin -> hex(16进制编码) = 61646d696e
61646d696e -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

LM Hash的产生

LM是NTLM的前身,LM与NTLM的认证机制相同,但是加密算法不同:

将所有小写字母转换为大写字母
• 123ABC // 未达到7个字符
• 将密码转化为16进制,分两组,填充为14个字符,空余位使用0x00字符填补
• 31323341424300000000000000
• 将密码分割为两组7个字节的块
• 31323341424300 00000000000000 // 16进制
• 将每组转化为比特流,不足56Bit则在左边加0
• 31323341424300 ->(转换为二进制) 110001001100100011001101000001010000100100001100000000(补足56Bit) 00110001001100100011001101000001010000100100001100000000
• 将比特流按照7比特一组,分出8组,末尾加0

由于后者都为0,结果可想而知,那就都是0;
• 将每组比特流转换为16进制作为被加密的值,使用DES加密,字符串 “KGS!@#$%”为Key(0x4B47532140232425),得到8个结果 ,每个 结果转换为16进制。
• 00110000100110001000110001101000000101000001001000001100 00000000
• 30988C6814120C00 -> DES(30988C6814120C00) -> 48-D7-EB-91-2F-5E-69-7C
• 由于我们的密码不超过7字节,所以后面的一半是固定的:
• AA-D3-B4-35-B5-14-04-EE
• 连接两个DES加密字符串。这是LM哈希。
• 48-D7-EB-91-2F-5E-69-7C-AA-D3-B4-35-B5-14-04-EE

LM和NTLM的区别

NTLM V1和NTLM V2最显著的区别就是Challenge与加密算法不同:

  • Challenge长度:NTLM V1的Challenge有8位,V2是16位
  • 加密算法:NTLM V1加密算法是DES,V2加密算法是HMAC_MD5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/561464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java-API简析_java.lang.Class类(基于JDK1.8)(浅析源码)

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/130838927 出自【进步*于辰的博客】 其实我的【Java-API】专栏内的博文对大家来说意义是不大的。…

【连续介质力学】涉及积分的定理

涉及积分的定理 分部积分 分部积分: ∫ a b u ( x ) v ′ ( x ) d x u ( x ) v ( x ) ∣ a b − ∫ a b v ( x ) u ′ ( x ) d x \int_a^bu(x)v(x)dxu(x)v(x)|_a^b-\int_a^bv(x)u(x)dx ∫ab​u(x)v′(x)dxu(x)v(x)∣ab​−∫ab​v(x)u′(x)dx 其中,…

Packet Tracer - 综合技能练习(配置 VLAN 间路由、配置静态路由以及默认路由)

Packet Tracer - 综合技能练习 地址分配表 设备 接口 IP 地址 子网掩码 默认网关 VLAN R1 S0/0/0 172.31.1.2 255.255.255.0 不适用 不适用 G0/0.10 172.31.10.1 255.255.255.0 不适用 10 G0/0.20 172.31.20.1 255.255.255.0 不适用 20 G0/0.30 172.31.…

chatgpt赋能Python-python_punctuation

了解Python中的标点符号:了解Punctuation,打造Python高效编程 Python是一种精简的高级编程语言,它可以通过简洁的语法和强大的工具集来处理各种编程任务。在Python中,标点符号是非常重要的组成部分。了解Python中的标点符号将有助…

凹函数和凸函数

凹函数英文concave,凸函数英文concave。 在有些参考资料中,凸函数又称为下凹(concave down)函数,凹函数称为上凹(concave up)函数。 凹函数和凸函数根据判定方法的不同,分为以下两类: 一元函…

Vulkan Tutorial 1 实例和物理设备

目录 0 基本代码 1 Instance 2 验证层 3 物理设备和队列系列 4 逻辑设备和队列 0 基本代码 首先包括LunarG SDK的Vulkan头,它提供了函数、结构和枚举。stdexcept和iostream’头文件被包括在内,用于报告和传播错误 函数将被initVulkan函数调用进入…

C语言生成随机数

目录 概念: 具体运用 实战 1.只使用rand()函数 2.使用rand()函数和srand() 函数 概念: 在实践中,找到真正的随机数字是困难的。数字计算机只能在⼀个限定的范围内和有限的精度下去处理数字。在⼤多数情况下,最好的⽅法是产⽣伪随机数&am…

【AI 孙燕姿】歌声转换技术原理浅析

最近打开B站,首页会推荐很多以【AI 孙燕姿】开头的视频,内容是用孙燕姿的音色去唱其他歌手的歌。出于好(ceng)奇(re)心(du),作者去了解下歌声转换(Singing Voice Conversion,SVC)这个任务。不看不知道&…

比亲妈都细,从0-1手把手教你搭建Elasticsearch+kibana+IK分词器

前言: 最近用到了ElasticsearchkibanaIK分词器,但是基本上能搜到的所有教程、视频都用的是老版本的,奈何我又空有一身反骨,我就不爱用老版本的,结果就一个一个的踩坑。 Elasticsearch是我用过的最坑的软件之一了&#…

通过ChatGPT跟MetaHuman对话,Android/iOS兼容

一、申请ChatGPT的API-KEY 1.通过 openAI官网申请API-KEY 2.参考使用腾讯云函数一分钟搭建 OpenAI 免翻墙代理搭建openAI免翻墙代理 3.通过Postman测试一下openAI函数是否可被调用,传入BearerToken和Body参数,ChatGPT即可返回应答数据 二、启用必要的插件 1.启用文字转语…

5.24黄金短线上涨能否继续做空?今日如何布局

近期有哪些消息面影响黄金走势?今日黄金多空该如何研判? ​黄金消息面解析:黄金消息面解析:周二(5月23日),国际金价延续隔夜跌势,因在美联储官员的鹰派言论推动下,美元重启涨势,尽管…

chatgpt赋能Python-python_padding

Python中Padding的介绍 在Python编程中,Padding是一种在字符串或序列前后添加空格或其他占位符来实现对齐的技术。这种技术常用于数据格式化、打印输出、加密等场合,具有很高的实用性。 Python中Padding技术主要由三种函数实现:rjust, ljus…

当系统部署到测试环境,或线上时,该如何查看当前FastJson的版本

当系统部署到测试环境,或线上时,该如何查看当前FastJson的版本 提示:看见网上很多方法,有的不是很实用了,近日自己将fastJson版本升级到了1.2.76;需要在系统中查看版本信息;用到了如下方法&…

Java——《面试题——JVM篇》

前文 java——《面试题——基础篇》CSDN博客 1.知识点汇总 JVM是Java运行基础,面试时一定会遇到JVM的有关问题,内容相对集中,但对只是深度要求较高. 其中内存模型,类加载机制,GC是重点方面.性能调优部分更偏向应用,重点突出实践能力。编译…

网络安全技能差距的高成本

犯罪分子总是利用我们的无能为他们谋取利益。根据(ISC)的一份报告,全球网络安全专业人员短缺近 300 万。导致网络安全专家短缺的原因是多方面的,例如网络安全威胁的复杂性越来越高,技术进步的速度越来越快,…

C++继承技术

方法覆盖 virtual关键字 只有在基类中声明为 virtual 的方法才能被派生类正确覆盖。关键字位于方法声明的开头,如下面的 Base 的修改版本所示: class Base {public:virtual void someMethod() {}protected:int m_protectedInt { 0 };private:int m_pr…

一图看懂 dis 模块:将 python 字节码反汇编为助记符,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 dis 模块:将 python 字节码反汇编为助记符,资料整理笔记(大全) 🧊摘要🧊模块图🧊类关系图…

chatgpt赋能Python-python_plt_散点图

Python plt散点图:学习数据可视化的有力武器 Python是一种广泛使用的编程语言,广泛应用于数据科学,数据分析,计算机视觉等领域。而在数据可视化方面,Python也提供了很多强大的工具,其中plt散点图是一种非常…

Chatbot UI老外在用的gpt网页版 搭建方法分享!

新建了一个网站 https://ai.weoknow.com/ 每天给大家更新可用的国内可用chatGPT资源 Chatbot UI 高仿ChatGPT官网,中文还支持贼好,界面美观度间距还需要打磨。是老外做的吗? ​ 环境部署 更新环境 apt update -y && apt upg…

09 - 进程长参数编程

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接:(更新中)Linux系统编程训练营 - 目录 文章目录 1. 短选项扩展编程1.1 再论进程参数(短选项)1.2 进程短选项示例 2. 进程长参数编程2.1 进程长参数示例2.2 进程长参…