关于认证协议

本地用户认证

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

本地认证流程

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.mzph.cn/web/22292.shtml

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

相关文章

【异常分析:四分位距与3σ原则】

文章目录 前言四分位距(IQR)3σ原则使用步骤计算四分位距应用3σ原则 代码 前言 异常分析的目标是识别数据中的异常值,这些异常值可能是由于错误的记录、设备故障或者其他未知原因导致的。四分位距(interquartile range, IQR&…

H5进度条样式,自定义进度条

进度条样式预览 实现代码&#xff1a; <view class"mainPro"><view class"proBg"><view class"proDetail" :style"{ width: ${schedule}% }"></view></view><view class"proTxt">完成进…

【StableDiffusion】2024.6.4 亲测成功,无魔法 Civitai 镜像,国内下载 Civitai 模型的方法

一、废话不说&#xff0c;直接开始 废话&#xff1a;请注意&#xff0c;这个插件不是万能的&#xff0c;有一些模型无法下载&#xff0c;大概能下载 70% 左右的模型 1.github下载插件 https://github.com/tzwm/sd-webui-model-downloader-cn/tree/main 这个步骤不用我多说了…

Spring boot集成通义千问大模型实现智能问答

Spring boot集成通义千问大模型实现智能问答 背景 我在用idea进行java开发时发现了通义灵码这款免费的智能代码补全插件&#xff0c;用了一段时间了&#xff0c;感觉很不错。就想着在自己的项目中也能集成通义千问大模型实现智能回答&#xff0c;毕竟对接openai需要解决网络问…

SQL注入-时间盲注

SQL时间盲注&#xff08;Time-based Blind SQL Injection&#xff09;&#xff0c;又叫延时注入&#xff0c;是一种SQL注入攻击技术&#xff0c;用于在无法直接获取查询结果或查看响应内容变化的情况下&#xff0c;通过引入时间延迟来推断数据库的信息&#xff1b;时间盲注依赖…

什么是真正的高效阅读,高效阅读的方法和技巧

一、教程描述 查理芒格说他认识的厉害的人没有一个不读书的&#xff0c;为什么我们也读书却成不了厉害的那个人呢&#xff1f;所以这绝对不是书的问题&#xff0c;而是人的问题。阅读应该带有目的性&#xff0c;要帮我们解决实际问题。如果读一本书只是读完它&#xff0c;那读…

如何理解与学习数学分析——第一部分——数学分析概观

第1 部分&#xff1a;数学分析概观(Studying Analysis) 1. 数学分析之面目(What is Analysis like?) 本章说明了分析中的定义、定理和证明。 它介绍了一些符号&#xff0c;并解释了如何使用数学分析中的这些数学符号和数学词汇、以及应该把它们读成什么。它指出了这种类型的…

CANDela studio的State

State主要用来查看&#xff0c;点击State Groups&#xff0c;可以看到session和security下面有多少个会话和security level&#xff0c;所以删除和新建都不能在这里操作。 Dependencies没有安装插件&#xff0c;看不到图形不要紧&#xff0c;点击下面那个图标&#xff0c;就能编…

【好物推荐】夏日肌肤守护者:护肤皂

随着夏日的到来&#xff0c;高温、潮湿和紫外线成为了肌肤的三大挑战。在这个季节里&#xff0c;护肤不仅仅是为了美观&#xff0c;更是对肌肤健康的一种保护。在众多护肤产品中&#xff0c;护肤皂因其清洁力强、使用方便等特点&#xff0c;成为了夏季护肤的得力助手。今天&…

【Java基础】字符集

【Java基础】字符集 0. 预备知识1.计算机中的存储规则2. Unicode、UTF-83. 为什么出现乱码4. 如何防止产生乱码 0. 预备知识 字符集&#xff08;Character Set&#xff09;是多个字符的集合&#xff0c;它规定了字符在计算机中的编码方式。 字符集的定义与作用 字符集是各种…

11 - 员工奖金(高频 SQL 50 题基础版)

11- 员工奖金 -- join和left join的区别 -- 如果是join则右侧的数据有的就插&#xff0c;没的就啥也不干&#xff0c;交白卷&#xff0c;也不留null -- 但是left join让右侧数据在没有对应数据时补上了null select e.name,b.bonus from Employee e left join bonus b on e.empI…

SpringBoot 统一返回格式

目录 一、为什么要统一返回&#xff1f; 二、全局异常处理代码 三、统一返回对象代码 四、使用方法 五、结果展示 一、为什么要统一返回&#xff1f; 在Spring Boot应用中&#xff0c;为了保持API接口的响应格式统一&#xff0c;通常会采用全局异常处理和自定义返回对象的方…

Java进制转换

进制介绍 二进制&#xff1a;0B开头&#xff0c;0-1 八进制&#xff1a;0开头&#xff0c;0-7 十进制&#xff1a;0-9 十六进制&#xff1a;0x开头&#xff0c;0-9和A-F public class Binary{public static void main(String[] args){//二进制 10int n10B1010//十进制 1010int…

[协议]TCP协议

TCP,UDP协议工作在传输层 TCP基于连接&#xff1b; UDP基于非连接 TCP三次握手 UDP:不能保证丢包&#xff0c;传输稳定性不如TCP;

场外期权怎么做?

对于中国的投资者而言&#xff0c;场外期权交易目前主要由特定的券商提供&#xff0c;并且仅对机构开放。个人投资者无法直接参与此类交易&#xff0c;但可以通过与这些券商合作的机构公司进行询价和下单。场外期权交易涉及一系列严谨的步骤&#xff0c;以下是其基本流程&#…

QT中将资源文件(image、qss、qm等)封装到静态库中,程序该如何引用静态库中的资源文件

1、静态库 2、主程序中使用第三方库中的资源文件 核心代码: int main(int argc, char *argv[]) {QApplication a(argc, argv

【C++】优先级队列仿函数

目录 一.priority_queue的使用 二.仿函数 三、priority_queue的模拟实现 首先&#xff0c;我们先来了解一下什么是优先级队列 priority_queue&#xff0c;翻译为优先级队列&#xff0c;是一种容器适配器 底层容器可以是任何标准容器类模板&#xff0c;也可以是其他特定设计…

面试一个多月,我上岸了!

大家好&#xff0c;我是枫哥&#xff0c;&#x1f31f;阿里云技术专家、&#x1f4dd;资深面试官、&#x1f339;Java跳槽网课堂创始人。拥有多年一线研发经验&#xff0c;曾就职过科大讯飞、美团网、平安等公司。目前组建的团队&#xff0c;专注Java技术分享&#xff0c;一对一…

PromptPort:为大模型定制的创意AI提示词工具库

PromptPort&#xff1a;为大模型定制的创意AI提示词工具库 随着人工智能技术的飞速发展&#xff0c;大模型在各行各业的应用越来越广泛。而在与大模型交互的过程中&#xff0c;如何提供精准、有效的提示词成为了关键。今天&#xff0c;就为大家介绍一款专为大模型定制的创意AI…

九、从0开始卷出一个新项目之瑞萨RZN2L生产烧录固件(jflash擦写读外挂flash)

目录 七、生产烧录固件(jflash擦/写/读外挂flash) 7.1 flash母片读写 7.2 jflash擦/写/读外挂flash 九、从0开始卷出一个新项目之瑞萨RZN2L 七、生产烧录固件(jflash擦写读外挂flash) 七、生产烧录固件(jflash擦/写/读外挂flash) 7.1 flash母片读写 略 7.2 jflash擦/写/读…