关于认证协议

news2024/11/17 1:43:39

本地用户认证

本地认证的意思就是,我们的电脑上存储着自己的账号密码,无论电脑是否联网,只要能开机,就可以输入账号密码登录到电脑中,工作组就是采用本地认证

本地认证流程

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

首先,用户注销、重启、锁屏后,操作系统会让winlogon.exe显示登录界面,也就是输入框,接收输入后,将密码交给lsass进程,这个进程中会存一份明文密码,将明文密码加密成NTLM Hash,对SAM数据库比较认证。

WindowsLogonProcess(即winlogon.exe):是WindowsNT用户登陆程序,用于管理用户登陆和退出.用户注销、重启、锁屏后,操作系统会让winlogon.exe显示登陆界面

LSASS:用于微软Windows系统的安全机制。它用于本地安全和登陆策略

SAM文件是位于C\windows\system32\config\目录下的,用于储存本地所有用户的凭证信息,但是这并不代表着你可以随意去查看系统密码

SAM文件是Windows的用户账户数据库,所有用户的登录名及口令等相关信息都会保存在这个文件中,简单如下:

用户名称:LM-HASH:NTLM-HASH

Lsass.exe进程的作用非常重要,它主要负责管理本地安全策略和认证机制。这些策略包括密码策略、账户策略、用户权限、域策略等等。同时,它还负责对用户进行身份验证,以确保只有授权的用户才能访问系统资源。

1、将winlogon传过来的明文账号密码进行加密,然后和SAM文件中的密文账号密码作对比。如果对比成功就登陆成功

2、将收到的明文账号密码在本地内存中保留一份用作备用

LM Hash/NTLM Hash

系统支持:

Windows XPWindows 2000Windows 2003 系统默认使用 LM HASH 加密。

之后的 Windows 2008Windows 7Windows VistaWindows 8Windows 10 Windows 2016 禁用了 LM,默认使用 NTLM HASH

LM Hash的全名为"LAN Manager Hash",是微软为了提高 Windows操作系统的安全性而采用的散列加密算法,其本质是DES加密。尽管 LM Hash较容易被破解,但为了保证系统的兼容性, Windows只是将LM Hash禁用了(从 Windows vista和 Windows Server2008版本开始, Windows操作系统默认禁用 LM Hash)。

LM Hash明文密码被限定在14位以内,也就是说,如果要停止使用 LM Hash,将用户的密码设置为14位以上即可。如果 LM Hash被禁用了,攻击者通过工具抓取的 LM Hash通常为“aad3b435b51404eead3b435b51404ee”(表示 LM Hash为空值或被禁用)

NTLM Hash是微软为了在提高安全性的同时保证兼容性而设计的散列加密算法。NTLM Hash 是基于MD4加密算法进行加密的。个人版从 Windows vista以后,服务器版从 Windows Server2003以后, Windows操作系统的认证方式均为 NTLM Hash

  1. LM Hash

LM Hash生成流程

1、将明文口令转换为其大写形式 假设这里以明文Admin@123为例,转换为大写格式为:Admin@123----> ADMIN@123

2、将字符串大写后转换为16进制字符串

ADMIN@123---> 41 44 4D 49 4E 40 31 32 33

3、密码不足14字节要求用0补全

41 44 4D 49 4E 40 31 32 33---> 41 44 4D 49 4E 40 31 32 33 00 00 00 00 00

4、将上述编码分成27字节

第一组:41 44 4D 49 4E 40 31

第二组:32 33 00 00 00 00 00

  1. 将每一组7字节的十六进制转换为二进制,每7bit一组末尾加0,再转换成十六进制组成得到28字节的编码
  2. 将以上步骤得到的两组8字节编码,分别作为DES加密key为魔术字符串KGS!@#$% 进行加密 KGS!@#$%16进制为 4B47532140232425

最终结果拼接即可6F08D7B306B1DAD4B75E0C8D76954A50

LM Hash生成规则:

1.用户的密码被限制为最多14个字符。

2.用户的密码转换为大写。

3.系统中用户的密码编码使用了OEM内码页

4.密码不足14字节将会用0来补全。

5.固定长度的密码被分成两个7byte部分。每部分转换成比特流,在分7bit为一组末尾加0,然后再次进行16进制编码

6.上步骤得到的8byte二组,分别作为DES key“KGS!@#$%”进行加密,KGS!@#$%16进制为 4B47532140232425

7.将二组DES加密后的编码拼接,得到最终LM HASH值。

LM HASH的特点和问题:

1、口令不区分大小写
2、口令长度最大为14字节,另外如果口令长度不超过7字节,则LM Hash的后8字节是固定值
3DES算法强度不够

技巧:根据LM Hash特征,也能够判断用户的密码是否是大于等于7位。

  1. NTLM Hash

NTLM Hash生成过程:

1.转换为十六进制,比如Admin@123转换为16进制:41646d696e40313233

2.Unicode转换后:410064006d0069006e004000310032003300

3.再调用MD4加密算法加密:570a9a65db8fba761c1008a51d4c95ab

手动计算密码后,可以使用密码抓取工具进行验证

mimikatz.exe:

Privilege::debug

Sekurlsa::logonpasswords

  1. Hash存储

在本地登录Windows的情况下,操作系统会使用用户输入的密码作为凭证去与系统中的密码进行验证,操作系统中的密码存储在:%SystemRoot%\system32\config\sam

当我们登录系统的时候,系统会自动地读取SAM文件中的密码与我们输入的密码进行比对,如果相同,证明认证成功。

这个SAM文件中保留了计算机本地所有用户的凭证信息,可以理解为是一个数据库。

Windows本身不保存明文密码,只保留密码的Hash

域环境中,域用户的密码hash全部保存在C:\Windows\NTD\ntds.dit中。

  1. 总结

密码超过14时候会采用NTLM加密

test:1003:E52CAC67419A9A22664345140A852F61:67A54E1C9058FCA16498061B96863248:::

前一部分是LM Hash,后一部分是NTLM Hash LM Hash AAD3B435B51404EEAAD3B435B51404EE 这表示空密码或者是未使用LM_HASH

Hash一般存储在两个地方: 1SAM文件,存储在本机 对应本地用户 2NTDS.DIT文件,存储在域控上对应域用户

根据LM Hash特征,LM Hash8字节是固定值,也能够判断用户的密码是否是大于等于7,是的话则小于,不是的话则大于

网络身份认证协议

本地认证的方式满足不了日常所需

网络认证:Windows网络认证是指在Windows操作系统中进行网络通信和资源访问时,验证用户身份和授权权限的过程。它确保只有经过身份验证的用户能够访问网络资源,并根据其权限级别进行授权操作。

网络认证有哪些?

1.用户名和密码认证:这是最常见的认证方式,用户需要提供有效的用户名和密码,以验证其身份。这种认证方式适用于本地计算机账户或域账户

2.Kerberos认证:Kerberos是一种网络身份验证协议,在Windows域环境中广泛使用。它通过使用票据票据授予票据(TGT)来验证用户身份,并生成会话密钥用于加密通信。

3.NTLM认证:NTLM(NT LAN Manager)是一种早期的Windows网络认证协议,它使用基于挑战-响应的方式进行身份验证。尽管Kerberos已成为首选的认证协议,但NTLM仍然在某些情况下使用,特别是在与旧版Windows系统或非Windows系统进行交互操作时。

4.密钥身份认证:Windows还支持使用密钥来进行身份验证。这种方式涉及使用预先共享的密钥对用户进行身份验证,通常用于特定的场景和应用。

5.远程桌面认证(Remote Desktop Authentication):远程桌面是一种远程访问Windows计算机的功能。在远程桌面连接时,用户需要提供目标计算机的凭据进行认证,以验证身份并获得远程访问权限。

NTLM认证协议

  1. NTLM Hash与NTLM协议的关系

Windows中,密码Hash目前称之为NTLM Hash,其中NTLM全称是:"NT LAN Manager"

这个NTLM是一种网络认证协议,与NTLM Hash关系就是:NTLM网络认证协议是以NTLM Hash作为根本凭证进行认证的协议

也就是说,NTLMNTLM Hash相互对应。

早期SMB协议在网络上传输明文口令。后来出现 LAN Manager Challenge/Response 验证机制,它是如此简单以至很容易就被破解,后来微软提出了WindowsNT挑战/响应验证机制,称之为NTLM

发展历程

SMB ->  LM  ->  NTLM   ->  NTLM v2

  1. NTLM认证协议被使用

在平时的测试中,经常会碰到处于工作组的计算机,主机A想要访问主机B上的资源,就要向主机B发送一个存在于主机B上的一个账户,主机B接收以后会在本地进行验证,如果验证成功,才会允许主机A进行相应的访问。

NTLM(NT LAN Manager)认证是一种早期的Windows网络身份验证协议。它在Windows系统中用于验证用户的身份,并提供对网络资源的访问控制

NTLM认证协议使用Windows NTWindows 2000 Serveror later工作组环境中Kerberos用在域模式下)。AD域环境中,如果需要认证Windows NT系统,也必须采用NTLM。较之Kerberos,基于NTLM的认证过程要简单很多。NTLM采用一种质询/应答(Challenge/Response)消息交换模式。NTLM适用范围非常广,可用于域内的认证服务,也可用于没有AD的环境,让两台独立电脑相互认证。 

NTLM是一种网络认证协议,它是基于挑战(challenge/响应(Response)认证机制的一种认证模式。

  1. NTLM协议在Workgroup环境下的认证过程

应用场景:

NTLM协议的认证过程分为三步:

  1. 协商:主要用于确认双方协议版本(NTLM v1/NTLM V2)
    2、质询:这一步便是Challenge/Response认证机制的关键之处。
    3、验证:对质询的最后结果进行一个验证,验证通过后,即允许访问资源

认证肯定分为认证失败和认证成功两种

认证成功 :

1、首先,client会向server发起请求连接协商一些相关东西,比如客户端向服务器端发送用户信息(用户名)请求

  1. Server将会本地生成一个(16位或8位)随机字符,即Challenge,并保存在本地中,同时将Challenge发送给客户端

3、当client接收到Challenge时,将使用用户的LM HashNTLM-hash对Challenge进行加密、和用户名、域名、机器名等相关信息,生成Response,并Response发送给server。

4、Server在收到Response后,将其和相同的方式进行加密生成另一个Response,如果相同,则验证成功,如果不同就失败

其中,经过NTLM Hash加密Challenge的结果Response,在网络协议中称为Net NTLM Hash

如果上述数据包被恶意第三方截获得到Challenge和加密后的Hash值,那么LM_HashNT_Hash也容易泄露,所以微软改进后加入了TimeStamp时间戳来防止这种攻击,也就是NTLM v2

Windows Vista/Server2008开始,系统默认禁用Net-NTLMv1,使用Net-NTLMv2

Kerberos认证协议

存在的最大问题是什么呢??

最大的问题:双方不能证明自己是自己,就好比对暗号,其实是不安全的

Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

Kerberos的三大要素

在古希腊神话故事中,kerberos是一只具有三颗头颅的地狱恶犬,他守护在地狱之外,能够识别所有经此路过的亡灵,防止活着的入侵者闯入地狱

kerberos协议中也存在三个角色,分别是

1、客户端(client):发送请求的一方

2、服务端(Server):接收请求的一方

3、密钥分发中心(Key Distribution Center,KDC),而密钥分发中心一般又分为两部分,分别是:

AS(Authentication Server):认证服务器,专门用来认证客户端的身份并发放客户用于访问

TGS的TGT(票据授予票据)

TGS(Ticket Granting Service):票据授予服务器,用来发放整个认证过程以及客户端访问服务端时所需的服务授予票据(Ticket

Kerberos认证协议的基础概念

1、票据(Ticket):是网络对象互相访问的凭证。

2、TGT(Ticket Granting Ticket):入场券,通过入场券能够获得票据,是一种临时凭证的存在。

3、KDC(Key Distribution Center)负责管理票据、认证票据、分发票据,但是KDC不是一个独立的服务,它由以下服务组成:

①Authentication Service(简称AS): 为client生成TGT的服务

②Ticket Granting Service(简称TGS): 为client生成某个服务的ticket(ST ServiceTicket)

Kerberos认证流程

如何去解决这个问题呢?

此时还存在什么问题吗?

最大问题:卖票窗口凭什么给你卖票(你是合法的公民吗?)

那到底是如何认证呢?

计算机是如何认证呢?

客户端和AS通信原理

第一步:客户端拿着身份证去AS认证,认证通过后返回一张去卖票窗口买票的票(TGT)

a

身份信息:

TGT:

提供身份信息的数据包是AS-REQ(AS-requests)。发送TGT的数据包是AS-REP(AS-response)

当用户收到TGT时候对TGT进行解密

客户端和TGS通信原理

第二步:客户端拿着TGT去卖票窗口(TGS)买一张去动物园的票

TGT:                                ST:

     

TGS接收到TGT后,对其进行解密,然后再将TGS封装成ST发送给客户端

客户端和服务端通信原理

第三步:客户端拿着ST去动物园

服务端收到客户端发送的ST之后,对其进行解密

1、使用本机的机器用户HASH值解密ST得到 CS_SK

2、拿着CS_SK解密第一部分得到相关信息

3、进行对比后成功访问建立信任

TGTSTKerberos认证的两个重要票据,如果TGTST被伪造了那么将会造成安全问题

伪造的TGT被称作黄金票据,伪造的ST被称为白银票据

kerberos协议安全问题

横向移动AS-REQ:PTH(Pass The Hash)、域内用户枚举,密码喷洒

域内用户枚举,密码喷洒

即域内用于枚举可以在无域内有效凭据的情况下,枚举出域内存在的用户名,

并对其进行密码喷洒以此获得域内有效凭据。

面试小帮手:

什么是黄金票据与白银票据?

黄金票据就是伪造了Kerberos协议中的身份票据(TGT)

黄金票据可以访问该用户身份的所有服务

白银票据就是伪造了Kerberos协议通信流程中服务票据(SGT)

白银票据只能访问某一个服务

使用域管理员身份创建的票据就是黄金票据,可以访问域内的所有服务

kerberos认证流程?

客户端先去找AS服务进行认证,获取身份票据TGT。

然后拿着TGT票据寻找TGS服务,获取服务票据。

拿着服务票据访问具体的服务

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

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

相关文章

基于深度学习的中文标点预测模型-中文标点重建(Transformer模型)【已开源】

基于深度学习的中文标点预测模型-中文标点重建(Transformer模型)提供模型代码和训练好的模型 前言 目前以深度学习对文本自动添加标点符号研究很少,已知的开源项目并不多,详细的介绍就更少了,但对文本自动添加标点符号…

AVL树的介绍与实现

前言 我们上一期介绍了二叉搜索树并做了实现,本期我们来继续学习另一个更优的树即AVL树! 本期内容介绍 什么是AVL树? AVL树的实现 AVL树的性能分析 在正式的介绍AVL树之前,我们先来回忆一下二叉搜索树的特点:左子树的…

专业好用的屏幕捕获工具

一、简介 1、一款功能全面、操作简便的屏幕捕获工具,它不仅支持常规的截屏功能,还包括了录屏、OCR文字识别、翻译、GIF制作等多项实用功能。该软件适用于Windows操作系统,旨在为用户提供一站式的屏幕捕捉解决方案 二、下载 1、下载地址: 官网链接:https://verycapture.com…

第二十七章HTML.CSS综合案例

1.产品介绍 效果图如下&#xff1a; 代码部分如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

【UnityShader入门精要学习笔记】第十七章 表面着色器

本系列为作者学习UnityShader入门精要而作的笔记&#xff0c;内容将包括&#xff1a; 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更&#xff0c;有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 表面着色器…

274 基于matlab的随机粗糙表面对微气体轴承内气体压强分布的影响

基于matlab的随机粗糙表面对微气体轴承内气体压强分布的影响。采用差分法求解气体轴承的雷诺方程&#xff0c;通过尺寸参数、分形维数对粗糙度表面设置&#xff0c;滑流参数设置&#xff0c;实现气压分布可视化结果显示。程序已调通&#xff0c;可直接运行。 274 气体轴承 随机…

SpringCloud-面试篇(二十三)

&#xff08;1&#xff09;SpringCloud常见组件有那些 有无数微服务需要相互调用&#xff1a;可以用远程调用组件OpenFeign组件&#xff0c;也可以用Dobble 这么多微服务相互调用怎么管理&#xff1a;就用到注册中心组件Nacos&#xff0c;Eureka 所有的服务去找注册中心做注…

【Vue3-Element-Admin 动态路由】涉及到的配置

Vue3-Element-Admin 动态路由 涉及到的配置 0. Vue3-Element-Admin 项目地址1. router/index.ts2. Mock接口模拟数据3. store/permission4. api/menu5. plugins/permission 这篇文章讲的主要是 Vue3-Element-Admin 差不多内置的动态路由配置 (根据后端接口渲染) 先把开发环境&a…

vue3+three.js给glb模型设置视频贴图

1.在网上下载一个显示屏或者自己画一个,在blender中设置好显示屏的Mesh,UV设置好,这样方便代码中添加纹理贴图。可以让美术在建模软件中,先随机设置一张图片作为纹理,验证UV是否设置好 关于如何 在blender中给模型设置UV贴图百度很多的 // 视频 import * as THREE from…

直播回顾丨GQL 与新版本悦数图数据库亮点解析

5 月 23 日&#xff0c;悦数图数据库产品总监方扬亲临直播间&#xff0c;为我们深入剖析了 GQL 的技术内核&#xff0c;以及它如何引领图数据库技术的全新变革。同时&#xff0c;还揭秘了新版悦数图数据库的众多技术特点&#xff0c;让人眼前一亮。 添加图片注释&#xff0c;不…

python的模块

什么是模块&#xff08;Module&#xff09; 在计算机程序的开发过程中&#xff0c;随着程序代码越写越多&#xff0c;写在一个文件里的代码就会越来越长&#xff0c;越来越不容易维护。 为了让代码方便维护&#xff0c;我们将代码进行分类&#xff0c;分别放到不同的文件里。…

Xcode中给UIView在xib中添加可视化的属性

给UIView在xib中添加可视化的属性 效果如下图&#xff1a; 可以直接设置view 的 borderColor 、borderWidth、cornerRadius&#xff0c;也可以单独指定view的某个角是圆角。减少了代码中的属性。 完整代码&#xff1a; UIViewBorder.h #import <UIKit/UIKit.h>inter…

Python - 深度学习系列38 重塑实体识别5-预测并行化改造

说明 在重塑实体识别4中梳理了数据流&#xff0c;然后我发现pipeline的串行效率太低了&#xff0c;所以做了并行化改造。里面还是有不少坑的&#xff0c;记录一下。 内容 1 pipeline 官方的pipeline看起来的确是比较好用的&#xff0c;主要是实现了比较好的数据预处理。因为…

【全网唯一】触摸精灵iOS版纯离线本地文字识别插件

目的 触摸精灵iOS是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务&#xff0c;节省大量人工操作的时间。但触摸精灵的图色功能比较单一&#xff0c;无法识别屏幕上的图像&#xff0c;根据图像的变化自动执行相应的操作。本篇文章主要…

电脑没电关机,wsl和docker又挂了,附解决过程

如题&#xff0c;开了个会没带笔记本电源&#xff0c;点啊弄关机后docker打不开&#xff0c;我以为是docker坏了&#xff0c;结果docker报错&#xff1a; An unexpected error occurred while executing a WSL command. Either shut down WSL down with wsl --shutdown, and/or…

day32--Spring(一)

一、Spring简介 1 Spring课程介绍 问题导入 我们为什么要学习Spring框架&#xff1f; 1.1 为什么要学 Spring技术是JavaEE开发必备技能&#xff0c;企业开发技术选型命中率>90% 专业角度 简化开发&#xff0c;降低企业级开发的复杂性框架整合&#xff0c;高效整合其他技…

概率分布、回归分析、假设检验……用 DolphinDB 函数库快速实现概率统计分析

在金融和物联网等领域&#xff0c;概率统计与分析扮演着至关重要的角色。DolphinDB 作为一款强大的时序数据库&#xff0c;提供了一系列内置的概率统计与分析函数&#xff0c;能够满足用户的各种需求。 金融领域 风险管理&#xff1a;通过概率统计分析&#xff0c;金融机构可…

python数据分析——逻辑回归

参考资料&#xff1a;活用pandas库 逻辑回归 当响应变量为二值响应变量时&#xff0c;经常使用逻辑回归对数据建模。 # 导入pandas库 import pandas as pd # 导入数据集 acspd.read_csv(r"...\data\acs_ny.csv") # 展示数据列 print(acs.columns) # 展示数据集 pri…

进程间通信(27000字超详解)

&#x1f30e;进程间通信 文章目录&#xff1a; 进程间通信 进程间通信简介       进程间通信目的       初识进程间通信       进程间通信的分类 匿名管道通信       认识管道       匿名管道       匿名管道测试       管道的四种…

免费,Scratch蓝桥杯比赛历年真题--第15届蓝桥杯STEMA真题-2024年3月份(含答案解析和代码)

第15届蓝桥杯STEMA真题-2024年3月份 一、单选题 答案&#xff1a;D 解析&#xff1a;y坐标正值表示上&#xff0c;负值表示下&#xff0c;故答案为D。 答案&#xff1a;C 解析&#xff1a;18<25为真&#xff0c;或关系表示一真即为真&#xff0c;故答案为C。 答案&#xff…