关于认证协议

本地用户认证

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

本地认证流程

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服务,获取服务票据。

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

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

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

相关文章

哇噻,Zabbix7.0 LTS正式发布!功能又进化了!

📢📢📢📣📣📣 作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、My…

Python图像处理十讲

文章目录 1 初步2 光斑分析3 插值变换4 形态学处理5 滤波6 opencv初步7 相机校准8 图像分割9 边缘检测10 目标识别 1 初步 📷初步 图像的本质就是矩阵,图像处理,也就是矩阵处理。所以,在Python中,numpy和matplotlib可…

【python009】Python处理某区域边界经纬度数据至geohash

1.熟悉、梳理、总结项目研发实战中的Python开发日常使用中的问题、知识点等,如Python处理某区域边界经纬度数据至geohash,便于时空交集。 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 3.欢迎点赞、关注、批评…

FuTalk设计周刊-Vol.044

#AI漫谈 热点捕手 1、OpenAI取消GPT-4 Turbo,所有每日限制! 2月17日,OpenAI在社交平台宣布,取消了GPT-4 Turbo的所有每日限制,并将速率限制提升1倍。现在,每分钟可处理高达150万TPM的数据。 链接https:/…

数据库JDBC 查询sqlserver 2019 利用模板实现输入查询

数据源 SQLserver2019的数据,在数据库 名为 cyz 中创建几个表 create table book (bno char(10) primary key, cno char(10), bname char(20), bauthor char(20), bpress varchar(50), bprice decimal(8,2) )create table reader (rno char(10) primary key, rdepa…

java中如何灵活使用mysql中的json类型字段存储数据

日常数据库存储数据时经常会碰见一对多的数据结构类型,例如一笔订单中包含多个商品数据,一般情况下,可能会设计一个order表,一个sku表,但如果就想用一个表去存储这些订单和商品数据,那么应该如何去设计order表呢?这种情况下就可以使用万能json类型字段进行存储订单与商品一对多…

产品经理的“高光”时刻,你中了几个?

作为产品经理,都有着这样一个闪闪发光的梦,就是看着自己的产品从0到DAU过万、过十万,甚至是过百万。 不过想要成为过百万的大牛,天时地利任何一个都不能少,大多数的产品经理暂时还在打怪升级攒经验。 虽然暂时体验不…

怎么用微信小程序实现远程控制空调

怎么用微信小程序实现远程控制空调呢? 本文描述了使用微信小程序调用HTTP接口,实现控制空调,通过不同规格的通断器,来控制不同功率的空调的电源。 可选用产品:可根据实际场景需求,选择对应的规格 序号设备…

第二证券炒股技巧:短线炒股技巧?

在股票商场上,出资者分为长线和短线这两大类,其间短线炒股存在以下技巧: 1、早盘集合竞价时间上的技巧 早上集合竞价对短线出资者来说比较重要,其间早上集合竞价期间9:15-9:20之间出资者能够进行撤单操作&#xff0c…

AI大模型应用开发实践:5.快速入门 Assistants API

快速入门 Assistants API Assistants API 允许您在自己的应用程序中构建人工智能助手。一个助手有其指令,并可以利用模型、工具和知识来回应用户查询。 Assistants API 目前支持三种类型的工具: 代码解释器 Code Interpreter检索 Retrieval函数调用 Function calling使用 P…

电源modbus 485 测试方法之功能选择

目录 背景介绍 错误分析 功能开关拨码原因分析 背景介绍 在正常测试modbus-RTU 485通信是否正常时,正常的流程如下: 连接电源模块与摄像仪模块的485连接线,或使用USB转485连接电脑,打开串口调试助手,开始访问寄存…

线性代数|机器学习-P6正定和半正定矩阵

文章目录 1. 正定矩阵的判定标准2. 非正定矩阵3. 能量方程3. 正定方程4. 半正定矩阵 1. 正定矩阵的判定标准 目前我们有 5 种方法判断矩阵是否为正定矩阵: 所有的特征值大于零: λ i > 0 \lambda_i>0 λi​>0对于所有的非零向量x,…

微信小程序-WXS脚本

一、概述 1.WXS WXS(WeiXin Script)是小程序独有的一套脚本语言,结合 WXML,可以构建出页面的结构。 2.wxs 的应用场景 wxml中无法调用在页面的.js 中定义的函数,但是,wxml 中可以调用 wxs 中定义的函数。因此,小程序…

13. 一个天文望远镜R-C系统的设计

导论: 要求主口径2160mm,整个系统的相对孔径为1:1(相对孔径:镜头的有效孔径和焦距之比)。系统的焦距为19440mm,焦点需引出主镜之后,以便配接各种光谱和光度观测设备。 设计流程: (1)理论分析与计算 望远镜的两镜系统由一个主镜和一个次镜组成,通常主镜和次镜都是…

文本纠错助手

欢迎来到高效文本纠错的世界! 文本纠错助手 是您的最佳搭档,专为处理各种文本中的错误而生。在我们强大的 Intel G8i 处理器上,它能快速、准确地帮你找出并纠正错误。下面是这款神器的详细介绍。 硬件配置 处理器:Intel G8i 处理…

Adobe XD最新版号查询,如何使用?

Adobe XD是Adobe家推出的基于矢量的原型设计合作工具,被业界视为应对Sketch的“对抗”产品。Adobe XD不同于Sketch的系统限制,灵活性比较高,Windows和Mac都可以使用。自2017年推出以来,Adobe XD版经历了多次更新,这篇文…

vue3之拆若依--记实现后台管理首页(左侧菜单栏、头部信息区域...)

效果图 前期准备 启动若依在本地 启动若依后台,跑在自己本地: 这里对于如何下载若依相关的前后端代码请参考若依官网:RuoYi 若依官方网站 |后台管理系统|权限管理系统|快速开发框架|企业管理系统|开源框架|微服务框架|前后端分离框架|开源后台系统|RuoYi|RuoYi-Vue|RuoYi-…

03--nginx架构实战

前言:这应该是nginx梳理的最后一章,写一些关于网站架构和网站上线的知识内容,主要是感觉到运维并不是单一方向的行业,这一章概念会有一些广泛,但是非常重要,都是这几年工作中遇到的情况,整理一下…

element-plus表格添加简单右键

实现如下 <template><main class"mainClass" > <el-table :data"tableData" style"width: 100%"row-contextmenu"rowContextmenu"cell-contextmenu"cellContextmenu"contextmenu.prevent><el-table-c…

C51学习归纳4 --- 矩阵键盘

一、开发板原理图 我们可以看到这个键盘是4*4的&#xff0c;行可以由4个数据接口接收&#xff08;P1_4~7&#xff09;&#xff0c;列可以由4个数据接口接收&#xff08;P1_0~3)。 所以我们可让行作为扫描方向&#xff0c;或者列作为扫描方向&#xff0c;进行按键扫描。如何扫描…