Windows下安全认证机制

NTLM(NT LAN Manager)

NTLM协议是在Microsoft环境中使用的一种身份验证协议,它允许用户向服务器证明自己是谁(挑战(Chalenge)/响应(Response)认证机制),以便使用该服务器提供的服务。NTLM协议即可以为工作组的机器提供身份验证,也可以用于域环境身份验证,NTLM还可以为SMB,HTTP,LDAP,SMTP等上层协议提供认证

NTLM协议发展历程

早期SMB认证协议以明文传输,因此出现了安全问题,后来出现了LM协议,但是比较容易破解,再后来出现了NTLM协议,目前NTLM协议主要有两个版本,NTLM v1和NTLM v2版本,区别如下

  • challage不同:v1版本的challage是8位,v2版本的是16位(关于challage是什么后面会说)
  • 加密算法不同:v1主要加密算法是DES,v2的主要加密算法是HMAC-MD5

NTLM认证大致流程

NTLM的认证分为三步

  • 协商
  • 质询
  • 验证
协商

协商这一步比较简单,客户端向服务器端发送协商消息,包含了协议版本等信息

质询
  1. 客户端向服务端发送用户名信息的请求
  2. 服务端接收到之后判断本地列表是否包含用户名,如果有则生成一个随机数称之为challenge,使用登入用户名对应的NTML Hash加密challenge,生成challenge1 (也叫Net NTLM Hash),同时将challenge发送给客户端
  3. 客户端接收到challenge之后,使用将要登入账户的NTLM Hash加密生成Response,然后将Response发送给服务器端
验证

服务器收到Response之后,判断是否与challenge1相等,如果相等则通过

个人觉得,这个过程和公私钥认证的过程挺像的

LM协议与NTLM协议

在Windows系统导出密码的时候,经常看到这样的密码格式

Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:31D6CFE0D16AE931B73C59D7E0C089C0:::

其中的

  • AAD3B435B51404EEAAD3B435B51404EE是LM Hash
  • 31D6CFE0D16AE931B73C59D7E0C089C0是NTLM Hash

LM Hash的本质是DES加密,但是现在基本都已经没有使用LM Hash

由于LM Hash加密算法的不安全性,微软后面推出NTLM Hash。其与LM Hash有着不同的加密算法

从Windows Vista 和 Windows Server 2008开始,默认情况下只存储NTLM Hash

用户登入的密码存储在lsass.exe进程中

右击可以转为存储文件

使用mimikatz.exe 查看hash值

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit

winlogon.exe -> 接收用户输入 -> lsass.exe -> (认证)

Kerberos

Kerberos是一种计算机网络认证协议 ,其设计目标是通过密钥系统为网络中通信的客户机(Client)/服务器(Server)应用程序提供严格的身份验证服务,确保通信双方身份的真实性和安全性。不同于其他网络服务,Kerberos协议中不是所有的客户端向想要访问的网络服务发起请求,他就能建立连接然后进行加密通信,而是在发起服务请求后必须先进行一系列的身份认证,包括客户端和服务端两方的双向认证,只有当通信双方都认证通过对方身份之后,才可以互相建立起连接,进行网络通信。即Kerberos协议的侧重在于认证通信双方的身份,客户端需要确认即将访问的网络服务就是自己所想要访问的服务而不是一个伪造的服务器,而服务端需要确认这个客户端是一个身份真实,安全可靠的客户端,而不是一个想要进行恶意网络攻击的用户。

协议端口

88

Kerberos协议角色组成

  • 客户端(Client):发送请求的一方
  • 服务端(Server):接收请求的一方
  • 密钥分发中心(Key distribution KDC)

密钥分发中心又分为两个部分,分别是:

  • AS(Authentication Server):认证服务器,专门用来认证客户端的身份并发放客户用于访问TGS的TGT(票据授予票据),主要是接收客户端的请求
  • TGS(Ticket Granting ticket):票据授予服务器,用来发放整个认证过程以及客户端访问服务端时所需的服务授予票据(ticket)

Kerberos认证过程简化描述

客户端在访问每个想要访问的网络服务时,他需要携带一个专门用于访问该服务并且能够证明自己身份的票据,当服务端收到了该票据他才能认定客户端身份正确,向客户端提供服务。所以整个流程可简化为三步:

  • 客户端向AS请求,证明自己身份,并且表明自己想要访问什么服务,AS核实身份之后会向客户端发送TGT
  • 客户端拿到TGT之后访问TGS,TGS核实客户端的TGT之后,会向客户端发送ST
  • 最后客户端拿着ST去访问想要访问的服务

在域渗透中,黄金票据就是伪造TGT,白银票据就是伪造ST

如果你的理解能力很强的话,可以参考:[1]毕淏,程晓荣.Kerberos认证协议分析与研究[J].电脑知识与技术,2017,13(27):37-38+59.DOI:10.14004/j.cnki.ckt.2017.3068.

在域环境下NTLM协议与kerberos协议应用的一些问题

其实无论是在域环境下还是在非域环境下,这两个协议都可以使用,在域环境下到底使用哪一个,主要还是由域控配置来进行选择,两个协议都是windows的一种安全认证协议,其应用比较广泛,设置可以应用到web服务之中,尽管如此,但是在windows server 2008以及更高的版本中,默认使用kerberos协议来进行安全认证

Windows登入认证过程

SAM文件

windows本机内是不存储明文密码的,只存储Hash值,本机用户的密码hash是放在本地的SAM文件里面,域内用户的密码hash是存在域控的NTDS.DIT文件里面

SAM文件的路径:C:\Windows\System32\config\SAM

认证流程

  1. 通过winlogon.exe获取用户输入的用户名与密码
  2. winlogon.exe将密码传递给lsass.exe,lsass.exe负责将密码进行加密为NTLM Hash
  3. 将lsass.exe加密的NTLM Hash与本地SAM文件里面的NTLM Hash进行比较,如果相同则将User SID,Group SID发送给winlogon.exe,否则登入失败

相关安全问题

lsass.exe这个进程比较特殊,会存储明文密码

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解密Android动态权限:保护用户隐私与应用安全的关键一步

解密Android动态权限:保护用户隐私与应用安全的关键一步 引言 在Android系统中,权限机制是保护用户隐私和应用安全的重要组成部分。Android应用需要获取一些敏感信息或执行某些敏感操作时,必须先获取相应的权限。例如,应用需要访…

普通策略梯度算法原理及PyTorch实现【VPG】

有没有想过强化学习 (RL) 是如何工作的? 在本文中,我们将从头开始构建最简单的强化学习形式之一 —普通策略梯度(VPG)算法。 然后,我们将训练它完成著名的 CartPole 挑战 — 学习从左向右移动购物车以平衡杆子。 在此…

正则表达式从放弃到入门(2):grep命令详解

正则表达式从放弃到入门(2):grep命令详解 总结 本博文转载自 这是一篇”正则表达式”扫盲贴,如果你还不理解什么是正则表达式,看这篇文章就对了。 如果你是一个新手,请从头阅读这篇文章,如果你…

苹果配件妙控鼠标、键盘、触控板值得入手吗

大家好,我是极智视界,欢迎关注我的公众号,获取我的更多前沿科技分享 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 苹果的优质和成功绝…

[进程控制]模拟实现命令行解释器shell

文章目录 1.字符串切割函数2.chdir()接口3.模拟实现shell 1.字符串切割函数 2.chdir()接口 3.模拟实现shell 模拟实现的shell下删除: ctrlbackspace模拟实现下table/上下左右箭头无法使用[demo] #include <stdio.h> #include <stdlib.h> #include <string.h&g…

高级开发实战MySQL、Redis、MongoDB 数据库,让你一课掌握核心技能

在现代软件开发中&#xff0c;数据库是不可或缺的一部分。MySQL、Redis和MongoDB作为三种常见的数据库系统&#xff0c;具有各自独特的特点和优势&#xff0c;对于高级开发者来说&#xff0c;掌握这三种数据库的核心技能至关重要。本文将带您通过实战的方式&#xff0c;学习如何…

pybind11教程

pybind11教程 文章目录 pybind11教程1. pybind11简介2. cmake使用pybind11教程3. pybind11的历史 1. pybind11简介 项目的GitHub地址为&#xff1a; pybind11 pybind11 是一个轻量级的头文件库&#xff0c;用于在 Python 和 C 之间进行互操作。它允许 C 代码被 Python 调用&am…

22、为什么是卷积?

(本文已加入“计算机视觉入门与调优”专栏,点击专栏查看更多文章信息) 我们先看一看神经网络(或者叫一个AI模型),是如何完成一张图片的推理的。 你肯定听说过阿尔法狗大战柯洁的故事,当时新闻一出,不知大家什么反应,反正我是被震撼到了。机器竟然学到了那么多的棋谱,…

OpenAI发生的大事件总结!

在 11 月的最后一天&#xff0c;OpenAI 官网发布了一则公告&#xff0c;宣布 Sam Altman 再次担任首席执行官&#xff0c;并成立了新的初始董事会。这项持续了 12 天的事件终于得到了解决&#xff0c;OpenAI 回到了正常运营轨道上。 一切仍然保持不变&#xff1a; Sam Altman仍…

免费分享一套开源SpringCloud支持全套二轮四轮全套源码支持云快充1.5、云快充1.6

文章目录 一、产品功能部分截图1.手机端&#xff08;小程序、安卓、ios&#xff09;2.PC端 二、小程序体验账号以及PC后台体验账号1.小程序体验账号2.PC后台体验账号关注公众号获取最新资讯 三、产品简介&#xff1f;1. 充电桩云平台&#xff08;含硬件充电桩&#xff09;&…

若依框架分页

文章目录 一、分页功能解析1.前端代码分析2.后端代码分析3. LIMIT含义 二、自定义MyPage,多态获取total1.定义MyPage类和对应的调用方法 一、分页功能解析 1.前端代码分析 页面代码 封装的api请求 接口请求 2.后端代码分析 controller代码 - startPage() getDataTable(…

编程中常见的技术难题有哪些?By AI

编程对于现代社会发展的重要性 编程&#xff0c;即按照特定的规则和逻辑&#xff0c;为计算机设计指令的过程&#xff0c;已经深深地融入现代社会的各个角落。它对人们的生活、工作和科技发展产生了深远的影响。 首先&#xff0c;编程改变了人们的生活方式。如今&#xff0c;…

力扣 --- 最后一个单词的长度

题目描述&#xff1a; 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 1&#xff1a; 输入&#xff1a;s "Hello World&…

van-list的onload事件多次触发的问题

一、问题描述 如图所示&#xff0c;页面刷新的时候&#xff0c;调了3次接口&#xff08;总共27条数据&#xff0c;我分页10条&#xff09;&#xff0c;一直莫名奇妙的 我期望是默认加载第一页&#xff0c;然后我上拉的时候再push第二页的数据 二、解决方法 还是要多看文档 1…

非标设计之气缸概述

气缸的组成&#xff1a; 气缸的分类 单作用气缸&#xff1a; 活塞仅一侧供气&#xff0c;气压推动活塞产生推力伸出&#xff0c;靠弹簧或自重返回。 双作用气缸&#xff1a; 气缸活塞两侧都有气压力&#xff0c;来实现前进或后退动作。 气缸的缓冲 但是&#xff0c;气缸也…

基于Java SSM框架+Vue实现疫情期间医院门诊网站项目【项目源码+论文说明】

基于java的SSM框架Vue实现疫情期间医院门诊网站演示 摘要 21世纪的到来&#xff0c;国家的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;智能科技时代崛起的优势&#xff0c;医院门诊管理系统当然也不能排除在外。疫情期间医院门诊管理系统是以实际运用为开发背…

WPF图像处理之像素操作

文章目录 框架准备图像转灰度像素操作 WPF Image控件的初步使用 框架准备 为了演示C#中的图像处理功能&#xff0c;先在xaml中导入一张图片&#xff0c;并且预留出一个WrapPanel&#xff0c;用于存放操作按钮。 <TabControl TabStripPlacement"Left"><Ta…

前后端数据传输格式(下)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 上篇主要复习了HTTP以及…

MySQL 的 NULL 是怎么存储的?

目录 一、MySQL介绍 二、什么是NULL 三、MySQL 的 NULL 是怎么存储的 一、MySQL介绍 MySQL是一种关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是一种开源软件&#xff0c;由瑞典MySQL AB公司开发&#xff0c;后被Sun Microsystems收购&#xff0c;现在…

阿里云租赁费用_阿里云服务器多配置报价表

阿里云服务器租用费用&#xff0c;云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、轻量应用服务器2核2G3M带宽轻量服务器一年87元&#xff0c;2核4G4M带宽轻量服务器一年165元12个月&#xff0c;ECS云服务器e系列2核2G配置99元一年、2核4G配置365元一年、2核8G配置522元一年…