windows本地认证

news2024/10/6 18:28:13

来自帅气学弟得经验

阅读流程

windows系统认证包括**本地交互式认证 **和 网络认证

交互式登录:向本地计算机或域账户确认用户的身份
网络登录:对用户尝试访问的网络服务或资源提供用户认证

若是本地用户本地认证需要了解**windows密码 **,**加密算法 **和 **认证流程 **
若是内网交互认证需要了解 **挑战/响应机制 哈希传递 **
网络认证则需要掌握
域认证Kerberos

windows密码

安全账户管理器SAM(Security Account Manager)机制
SAM存储路径:%SystemRoot%\system32\config\sam
windows本身不存储用户的明文密码,而是存储口令的单向散列(Hash)值

本地认证流程

1.winlogon.exe 登录框

  • Windows Logon Process(即winlogon.exe) 是windows NT用户登录程序,管理用户登录登出

2.lsass.exe 接受用户输入

  • lsass是微软windows系统的安全机制,用于本地安全和登陆策略

3.获取明文口令对应的Hash值
两种方法:

  • LAN Manager(LM):最早使用的密码哈希算法之一
  • NT LAN Manager v2(NTLMv2)

4.将加密后的Hash与SAM数据库中的Hash进行比较。

  • 比较结果相同 将User SID与Group SID 发送给winlogon.exe 准备登录界面
  • 不同则登录失败

Hash算法

LM Hash

LM-Hash算法

密码的LM哈希步骤

  1. 将用户口令中的字母全部转换为大写 ,再将口令的十进制ascii码转成16进制
  2. 若口令不足14个字符,后面用0填充;否则通过截断保留前面14个字符。
  3. 将14个字符平均分为长度为7的两组。
  4. 7字节的两组分别经str_to_key()函数处理,得到两个包含奇偶校验位的DES密钥,即每个都是8字节,64比特。

str_to_key()函数:

  • 将两组16进制转化为比特流,不足56bit则在左边加0。
  • 将比特流按照7比特一组,分出八组,末尾加0
  • 将每组比特流转换为16进制作为密钥,使用DES加密固定字符串,得到八个结果
  • 八个结果转为16进制,拼起来得到hash
  1. 分别用两个DES密钥加密一个预定义的8字节魔术字符串(KGS!@#$%),得到两组8字节密文。
  2. 两组8字节密文值链接组成16字节(128bit)的值,即为LM哈希。

图解

image.png
image.png
image.png

LM Hash的安全性缺陷

  1. DES算法的密钥太短(56bit)
  2. 无法抵御暴力破解。虽然口令有14位,但是两组7位是独立的,且不区分大小写,可能性只有697种。
  3. 若口令长度<=7,第二部分固定为0000000,最终的哈希值为固定值(0xAAD3B435B51404EE),因此很容易确定密码长度范围。
  4. Hash值在通过网络发送到服务器时,没有进行salting操作,容易遭受中间人攻击和重放攻击。

NT-Hash算法

  • NTLMv2

步骤:

1.先将明文口令(Ascii)进行16进制编码(Hex)
2.再将16进制转换为Unicode字符串
3.对Unicode字符串,使用MD4算法,产生固定长度的128bit哈希值。(口令多长,产生的哈希值都是128bit)

补充:

  • Unicode码用16位表示,也就是两个字节,即4个16进制数。
  • ASCII码用8位标识,即1个字节,2个16进制数。
  • ascii码范围内的字符,十六进制的ascii码与unicode码的数值相同
  • 所以比如字符’1’的ascii码十进制是49,即16进制位0x31,此时用unicode码表示就是0x0031
  • 在NT-Hash算法中将ASCII字符串转换为Unicode字符串时,使用小端序,即低字节放在低地址。0x0031,31是低字节,要放在低地址(左边),所以:3100

1669952137415.png

挑战/响应机制

NTLM协议

早起SMB协议在网络上传输明文口令。后来出现LAN Manager Challenge/Response 验证机制,简称LM,但他过于简单以至于很容易就被破解。
后来,微软提出了WindowsNT 挑战/响应机制。称之为NTLM,现在还有NTLMv2以及Kerberos验证体系。

C/R

开始前通常还会有协商步骤:即客户端向服务器确认协议的版本,是V1还是V2等等信息。

  1. 用户输入Windows账户和口令登录客户端主机。在网络登录前,客户端会缓存输入口令的Hash值,明文口令被丢弃。成功登录的用户如果试图访问服务器资源,则向服务器发送请求,该请求中包含明文的用户名。
  2. 服务器收到请求后,生成一个16位随机数,该随机数被称为挑战或Nonce,服务器将挑战以明文的形式发送给客户端。
  3. 客户端用步骤1中保存的口令哈希值作为密钥对挑战进行加密,然后把加密后的挑战作为响应发送给服务器。
  4. 服务器收到响应后,向域控制器DC(Domain Controller)发送针对该客户端的验证请求,请求包括该客户端的用户名、原始的挑战(随机数的明文)、和从客户端返回的响应(随机数的密文)三部分。
  5. DC根据用户名获取账号数据库中的口令哈希值,并对原始挑战进行加密,如果得到的加密值与服务器发送的响应值一致,则意味着用户拥有正确的口令,验证通过。否则,验证不通过。DC将验证结果发送给服务器。
  6. 服务器将验证结果反馈给客户端。

NTLM V2

image.png

哈希传递 Pass The Hash

什么是哈希传递?
哈希传递是能够在不需要账户明文密码的情况下完成认证的一个技术。它使用用户名对应的NTLM Hash将服务器给出的Chanllenge加密,生成一个response来完成认证。
在内网渗透中,我们常常需要抓取管理员的密码、NTLM Hash来进行下一步渗透,他能帮助我们解决渗透中获取不到明文密码、破解不了NTLM Hash而又想扩大战果的问题。
NTLM协议其实就是哈希传递的一种实现
smbmap smbexec crackmapexec matasploit都可以用来pth

域认证 Kerberos

Kerberos是一种网络认证协议,其设计目标是通过密钥系统为客户机/服务器应用程序提供强大的认证服务。
该认证过程的实现

  • 不依赖于主机操作系统的认证,
  • 无需基于主机地址的信任,
  • 不要求网络上所有主机的物理安全,
  • 并假定网络上传送的数据包可以被任意地读取、修改和插入数据。

在以上情况下,Kerberos 作为一种可信任的第三方认证服务是通过传统的密码技术(如:共享密钥也就是对称加密)执行认证服务的。相比于NTLM 它多了个中间信托机构。

域认证的三只狗头 代表着 Client Server KDC

image.png

域认证粗略流程

12 client向kerberos服务发送请求,希望获得访问server的权限。kerberos服务得到了这个消息,首先判断client是否是可信赖的,也就是白名单黑名单的说法。这就是AS服务完成的工作,通过在AD中存储黑名单和白名单来区分client。成功后AS返回TGT给客户端。(AS_REQ与AS_REP)
34 client得到TGT后,继续向kerberos服务请求,希望获得访问server的权限。kerberos服务得到了这个消息,这时通过client消息中的TGT,判断出了client拥有这个权限,于是给了client访问服务端的权限并返回了ticket。(TGS_REQ与TGS_REP)
56 client得到ticket后,终于可以访问server。这个ST只是针对这个server,其他server需要向TGS申请。(AP_REQ与AP_REP)

AD account database 存储所有client白名单,只有存在于白名单的client才能顺利申请TGT
AS 为client生成TGT服务
TGS 为client生成某个服务的ticket

image.png

详细拆解每一步

12 得到 client hash(session Key)、KDC hash(TGT)

1 首先客户端会向域控KDC服务上的AS发送我们客户端的一些信息,比如用户名,主机名等。
2 KDC服务上的AS就会判断这个主机是否在我们的域里面,如果存在,那么KDC上的AS就会生成一个session key(一串随机字符)。
3 域控上AD存储了所有用户密码的NTML Hash,上一步验证通过后会使用这个客户端用户对应的NTLM hash来加密我们的session key,并将加密后的值返回发送给客户端。
4 域控使用KDC特殊用户的NTLM hash,对session key和一些客户端的信息进行加密,最后加密出的结果也就是我们常说的TGT,返回给客户端
image.png我们再来用两张图详细的剖析下上面所说的"客户端发送"与"KDC返回"这样的两个过程:
发送:
image.png
返回:
image.png

34 发送请求信息 得到Server Session KEY和ticket

1 我们的客户端接收到了一个密文和一个TGT
2 第一个密文是KDC用我们客户端用户密码的NTLM hash加密session key产生的,因为这个客户端的用户的密码的NTLM hash不仅在域控上存在,在我们客户端本机也是存在的,所以的客户端就会使用这个客户端的用户的密码的NTLM hash来对密文进行解密,从而得到session key
3 下一步我们的客户端就会向KDC上的TGS服务发送请求信息,包括TGT以及用session key加密的当前客户端的一些信息和时间戳,还有一些客户端的信息和要访问的服务端的信息 这三块内容
4 当我们客户端向KDC发送以后,KDC的TGS服务就会开始进行认证,它首先会使用KDC服务对应的用户的NTLM hash去解密TGT得到session key,再通过session key去解密客户端包装加密的信息,得到客户端的一些信息和时间戳,然后会比较这个时间戳和当前的时间戳是不是间隔的太久了,如果间隔超过一定时间则需要他重新从头开始验证。
5 当KDC上的TGS认证通过以后呢,他又会随机生成一串字符,叫做
server session key
,这个server session key其实就是用于客户端和服务端进行通信时的密钥。TGS会使用session key来加密这个server session key并将这个密文返回给客户端。
6 TGS还会提取客户端的所在的域的域名,客户端的用户信息,server session key,到期时间等做成ticket,TGS还会提取接收到的要访问的服务端的一些信息,并使用服务器端对应的计算机名对应的NTLM hash来加密ticket,并将这个密文也返回给客户端。
image.png
ticket组成
image.png

56

1 客户端通过session key解密得到server session key,并使用server session key来加密客户端的信息和时间戳,并连同ticket一同发给服务端
2 因为服务端这台机器上是存着自己的用户hash的,所以我们可以使用Server hash解密得到ticket里的内容,通过end time来判断得到的ticket是否已经过期,还会得到ticket里的server session key,然后会使用这个server session key来解密1步骤的密文,得到客户端的信息和时间戳,并去校验这个客户端信息和ticket里的客户端信息是否相等,还会验证这个时间戳是否大于某个时间。image.png

白银票据

特点

1.不需要与KDC进行交互 即直接拿ticket与服务端交互(跳过域认证前两步)
2.需要目标服务的NTLM Hash 即Server Hash

image.png

伪造

Mimikatz
kerberos::list #列出票据
berberos::purge # 清除票据
假设在域里已经拿下了某台服务器,但这台服务器提供的某些服务需要域认证,我有这台服务器权限就可以导出hash,导出的hash里有server hash用来伪造白银票据,可以解决没有域账户但是仍然想与这台服务器进行认证以进行某些操作的问题。
导出该计算机名对应的hash:
image.png
image.pngimage.png

防御

1.尽量保证服务器凭证不被窃取
2.开启PAC(Privileged Attribute Certificate)特权属性证书保护功能,PAC主要是规定服务器将票据发送给Kerberos服务,由Kerberos服务验证票据是否有效。

黄金票据

特点

1.需要与DC通信
2.需要krbtgt用户的hash 即KDC hash
因为在下一步请求时 TGS是没有session Key的 TGS的session Key是从TGT来的

伪造

MSF kiwi
image.png

image.png

PAC

在黄金/白银票据的构造分析中,说了开启PAC可以防止白银票据的攻击。

那么PAC是什么呢?
我们都知道黄金票价的构造原理就是:掌握KRBTGT用户密码之后可以通过签发一张高权限用户的TGT票据,再利用这个TGT向KDC获取域内服务的ticket来实现对域的控制。那么这里的“高权限用户”是通过什么来判断的呢,答案就是PAC。

PAC在我们域认证中出现的节点是在哪的呢?
主要是两个节点:
1 当我们的客户端第一次向KDC去请求TGT的时候,我们返回的TGT票据中就包含了PAC。(AS_REP)
2 就是最后我们的客户端拿着ST去与服务端通信的时候,如果一切验证顺利,那么最后我们的服务端就会将解密出来的PAC发送给KDC去进行认证,KDC解密PAC。获取Client的sid,以及所在的组,再根据该服务的ACL,判断Client是否有访问服务的权限。防止白银票据其实主要也是这一步。 (AP_REP)

Access Token

image.png
组成
image.png

安全标识SID

在账号创建时被创建;账号删除,SID也同时被删除。即使用户名相同,每次创建时获得的SID也不同,不会保留原来的权限。

  • 相对标识RID:是SID的最后一部分,SID是几部分组成的一长串。RID就是一个数字。
  • RID为500时,是Administrator用户


生成过程
image.png

攻击

image.png

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

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

相关文章

【C++心愿便利店】No.5---构造函数和析构函数

文章目录 前言一、类的6个默认成员函数二、构造函数三、析构函数 前言 &#x1f467;个人主页&#xff1a;小沈YO. &#x1f61a;小编介绍&#xff1a;欢迎来到我的乱七八糟小星球&#x1f31d; &#x1f4cb;专栏&#xff1a;C 心愿便利店 &#x1f511;本章内容&#xff1a;类…

通过curl命令分析http接口请求各阶段的耗时等

目录 一、介绍二、功能1、-v 输出请求 响应头状态码 响应文本等信息2、-x 测试代理ip是否能在该网站使用3、-w 额外输出查看接口请求响应的消耗时间4、-o 将响应结果存储到文件里面5、-X post请求测试 (没测成功用的不多) 一、介绍 Curl是一个用于发送和接收请求的命令行工具和…

TCP/IP传输协议学习

了解完整的通信过程 1.发送方源终端设备的应用创建数据。 2.当数据在源终端设备中沿协议栈向下传递&#xff0c;对其分段和封装。 3.在协议栈网络接入层的介质上生成数据。 4.通过由介质和任意中间设备组成的网际层网络传输数据。 5.在目的终端设备中沿协议栈向上传递时对其…

用队列实现栈(C语言版本)

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;强烈推荐优质专栏: &#x1f354;&#x1f35f;&#x1f32f;C的世界(持续更新中) &#x1f43b;推荐专栏1: &#x1f354;&#x1f35f;&#x1f32f;C语言初阶 &#x1f43b;推荐专栏2: &#x1f354;…

ArcGIS 10.5安装教程!

软件介绍&#xff1a; ArcGIS Desktop 10.5中文特别版是一款功能强大的GSI专业电子地图信息编辑和开发软件&#xff0c;ArcGIS Desktop 包括两种可实现制图和可视化的主要应用程序&#xff0c;即 ArcMap 和 ArcGIS Pro。ArcMap 是用于在 ArcGIS Desktop 中进行制图、编辑、分析…

滴滴:二季度中国出行营收同比增长57%,6月日均单量超3000万单

9月9日&#xff0c;滴滴在其官网发布2023年第二季度业绩报告&#xff0c;二季度滴滴实现总收入488亿元&#xff0c;同比增长52.6%&#xff1b;归属于滴滴普通股股东的净亏损为3亿元&#xff0c;经调整EBITA亏损1000万元。 分业务来看&#xff0c;二季度滴滴中国出行&#xff0…

北京运营《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书

北京运营《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书

当所有行业都在数字化转型时,企咨行业如何快速“破局”

党的二十大报告指出&#xff0c;“加快发展数字经济&#xff0c;促进数字经济和实体经济深度融合&#xff0c;打造具有国际竞争力的数字产业集群。”随着新一轮科技革命和产业变革深入发展&#xff0c;数字化转型已经不是一道“选择题”&#xff0c;而是一堂“必修课”。 数字…

国产触控笔哪个牌子好?开学平价好用触控笔排行榜

很多学生在新学期的时候&#xff0c;都会用到电容笔&#xff0c;这说明电容笔的重要性。苹果推出了ipad专用的电容笔后&#xff0c;这种电容笔便成为了市场上最热门的产品&#xff0c;只是因为Apple Pencil的价格过于昂贵&#xff0c;所以很多人并没有购买得起。所以&#xff0…

一文读懂官方给出torch.nn.RNN API的参数及手写RNN API复现

理论部分 官方给出的文档解释&#xff1a; 计算公式&#xff1a; 该公式对应的结构框图&#xff1a; 其中 xt 表示当前 t 时刻的输入&#xff0c;Wih表示 “输入层” 到 “隐藏层” 的权重矩阵。即 Wih 会将输入映射至隐藏层。bih表示输入层到隐藏层的偏置&#xff0c;ht-1表…

【我的第一千篇文章】

作为一名Java开发者&#xff0c;我很自豪地宣布&#xff0c;这里是我输出的第一千篇文章。在过去的六年里&#xff0c;我一直坚持每月输出优质内容&#xff0c;并将其分享给了全世界的读者们。这一千篇文章中&#xff0c;有很多关于Java编程的技巧、经验分享、优秀实践示例、案…

16 “count(*)“ 和 “count(1)“ 和 “count(field1)“ 的差异

前言 经常会有面试题看到这样的问题 “ select count(*) ”, “ select count(field1) ”, “ select count(1) ” 的效率差异啥的 然后 我们这里 就来探索一下 这个问题 我们这里从比较复杂的 select count(field1) 开始看, 因为 较为复杂的处理过程 会留一下一些关键的调试…

C4D国潮场景3D模型合集

110个国潮场景3D模型&#xff0c;C4D源文件&#xff0c;部分效果图如下&#xff1a; 微信扫描下方二维码 回复关键字获取 100004

神经网络输出中间特征图

在进行神经网络的训练过程中&#xff0c;会生成不同的特征图信息&#xff0c;这些特征图中包含大量图像信息&#xff0c;如轮廓信息&#xff0c;细节信息等&#xff0c;然而&#xff0c;我们一般只获取最终的输出结果&#xff0c;至于中间的特征图则很少关注。 前两天师弟突然…

第24章 互斥锁实验(iTOP-RK3568开发板驱动开发指南 )

在上一章节中对信号量进行了学习&#xff0c;而本章节要学习的互斥锁可以说是“量值”为 1 的信号量&#xff0c;最终实现的效果相同&#xff0c;既然有了信号量&#xff0c;那为什么还要有互斥锁呢&#xff0c;带着疑问&#xff0c;让我们来进行本章节的学习吧&#xff01; 2…

古尔曼表示不服?郭明錤:苹果可能不会在10月发布M3芯片的机型

9月9日消息&#xff0c;据天风证券分析师郭明錤所言&#xff0c;苹果可能不会在今年发布搭载M3芯片的MacBook Air/Pro机型。这一说法与此前彭博社的马克古尔曼所透露的消息有所不同。根据古尔曼的消息&#xff0c;苹果最快在10月会发布M3款苹果MacBook Air和Pro电脑。他表示&am…

美国封锁激励中国制造业数字化转型的崛起 | 百能云芯

上海在近日公布了第二批工赋链主培育企业名单&#xff0c;共有15家企业入选。这些被称为“链主”的企业在上海制造业数字化转型的过程中扮演着关键角色&#xff0c;类似于领头大雁&#xff0c;它们是上海制造业的数字化网络中的关键节点。 中新社的报道指出&#xff0c;“数字技…

软件源码开发,网络中的“摄像头”:运维监控系统

在日常生活中&#xff0c;我们不管是在大街小巷&#xff0c;还是在商场大厦都可以见到一个圆形或是方形带有镜片的“小盒子”&#xff0c;这个“小盒子”就是摄像头&#xff0c;摄像头作为一个能实时录制记录它能照到范围内的视频图像的工具&#xff0c;可以在丢失物品、抓捕坏…

判断动物知识竞猜答案正误

判断动物知识竞猜答案正误 教学目标 1&#xff0e; 知识与技能&#xff1a; 结合实例&#xff0c;理解选择结构。掌握if语句的基本格式&#xff0c;掌握关系运算符。 过程与方法&#xff1a; 学会使用if编程解决实际生活中的一些问题。 情感态度与价值观&#xff1a; 教…

通讯软件018——分分钟学会UaExpert OPC UA Client配置

本文介绍如何配置UaExpert OPC UA Client&#xff0c;通过本文可以对OPC UA的基本概念有所了解&#xff0c;掌握OPC UA的本质。相关软件请登录网信智汇(wangxinzhihui.com)。 创建OPC UA 连接 这里需要掌握一下OPC UA的安全机制。 1&#xff09;安全模式&#xff1a; OPC UA安…