内网基础——Windows认证

news2025/1/11 12:45:27

文章目录

  • 一、本地认证
  • 二、网络认证
    • 2.1 NTLM协议
      • 2.1.1 Chalenge/Response
      • 2.1.2 总结
      • 2.1.3 Pass the Hash
    • 2.2 Kerberos认证
      • 2.2.1 Kerberos认证协议的基础概念
      • 2.2.2 域认证粗略流程
  • 三、Windows Access Token

一、本地认证

windows本地认证流程大致可以抽象为以下三个阶段:

  1. winlogon.exe进程接受用户输入的密码;
  2. 调用lsass.exe进程队用户输入的密码进行加密,将其转换为NTLM Hash;
  3. 将有密码转换成的NTLM Hash与SAM文件中存储的NTLM Hash进行比较,如相同,将groupsidusersid发送给winlogon.exe准备登录,如不同则登陆失败。
  • winlogon.exewindows logon process,是windows NT用户登录程序,用于管理用户登录和退出。
  • lsass.exelocal security authority service,是windows系统的安全机制,用于本地安全和登录策略。用到的mimikatz.exe就是劫持该进程,来获取明文密码。
  • SAM,是指securtiy account manager,windows对用户账户的安全管理使用的安全账号管理器,SAM文件即账号密码数据库文件。存储在%SystemRoot%\system32\config\sam

在本地认证的过程中,其实就是将用户输入的密码转换为NTLM Hash与SAM中的NTLM Hash进行比较。

NTLM Hash大致运算流程:

用户密码->HEX编码->Unicode编码->MD4

admin -> hex(16进制编码) = 61646d696e
61646d696e -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

在这里插入图片描述

此外,NTLM hash的前身是LM Hash,但是由于存在安全缺陷已经被淘汰。

二、网络认证

网络认证即远程登陆另一台电脑所采用的认证机制。工作组环境下,一般采用NTLM协议进行网络认证;域环境下,一般采用Kerberos协议进行网络认证。

NTLM Hash与NTLM

在Windows中,密码Hash目前称之为NTLM Hash,其全称为NT LAN Manager。而NTLM则是指NTLM协议,其与NTLM Hash的关系就是:NTLM网络认证协议是以NTLM Hash作为根本凭证进行认证的协议。

2.1 NTLM协议

NTLM是一种网络认证协议,它是基于挑战(Chalenge)/响应(Response)认证机制的一种认证模式。这个协议只支持Windows。

栗子:假设A主机与B主机属于同一个工作组环境,A想访问B主机上的资料,需要将一个存在于B主机上的账户凭证发送至B主机,经过认证才能够访问B主机上的资源。远程桌面RDP就是默认采用NTLM协议进行网络认证。

2.1.1 Chalenge/Response

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

  • 协商:双方确定使用的协议版本,NTLM存在V1和V2两个版本,具体区别就是加密方式不同。
  • 质询:挑战(Chalenge)/响应(Response)认证机制的核心
  • 验证:在质询完成后,验证结果,是认证的最后一步。

1、质询的完整过程

  1. 客户端向服务器端发送用户信息(用户名)请求
  2. 服务器接受到请求,生成一个16位的随机数,被称之为“Challenge”, 使用登录用户名对应的NTLM Hash加密Challenge(16位随机字符), 生成Challenge1。同时,生成Challenge1后,将Challenge(16位随机 字符)发送给客户端。
  3. 客户端接受到Challenge后,使用将要登录到账户对应的NTLM Hash加密Challenge生成Response,然后将Response发送至服务器端。

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

2、验证

服务器端收到客户端的Response后,比对Chanllenge1与Response是否相等,若相等,则认证通过。

注意:
1.Chanllenge是Server产生的一个16字节的随机数,每次认证都不同;
2.Response的表现形式是Net-NTLM Hash,它是由客户端提供的密码Hash加密Server返回的Chanllenge产生的结果。

2.1.2 总结

整个NTLM协议的流程图如下(工作组环境):
在这里插入图片描述

域环境下的NTLM认证又有所不同:
在这里插入图片描述

域环境下,使用域用户登录远程主机,因为域用户的用户名密码保存在域控上,所有验证阶段是由域控进行response的对比。

2.1.3 Pass the Hash

哈希传递(PTH)是能够在不需要账户明文密码的情况下完成认证的一个技术。哈希传递解决了我们渗透中获取不到明文密码、破解不了NTLM Hash而又 想扩大战果的问题。以下是哈希传递的必要条件:

  • 哈希传递需要被认证的主机能够访问到服务器(废话)
  • 哈希传递需要被传递认证的用户名
  • 哈希传递需要被传递认证用户的NTLM Hash

要完成一个NTLM认证,第一步需要客户端将自己要参与认证的 用户名发送至服务器端,等待服务器端给出的Challenge⋯⋯

哈希传递实质:就是使用用户名对应的NTLM Hash将服务器给出的Chanllenge加密,生成一个Response,来完成认证。

2.2 Kerberos认证

域内认证即采用了Kerberos协议的认证机制,与NTLM认证相比最大的区别是有一个可信的第三方机构KDC的参与。

参与域认证的三个角色(三只狗):

  • Client
  • Server
  • KDC(Key Distribution Center) = DC(Domain Controller) = AD(Account Database)+ AS(Authenication Service)+ TGS(Ticket Granting Service)

2.2.1 Kerberos认证协议的基础概念

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

    • Authentication Service(AS): 身份认证服务,专门用来认证客户端的身份并发放客户用于访问TGS的TGT黄金票据)。
    • Ticket Granting Service(TGS): 票据授予服务,为客户端生成某个服务的ST(白银票据)。
  • AD,全称叫account database,存储域中所有用户的用户名和对应的NTLM Hash,可以理解为域中的SAM数据库。KDC可以从AD中提取域中所有用户的NTLM Hash,这是Kerberos协议能够成功实现的基础

  • TGT:黄金票据,由身份认证服务(AS)授予的票据,用于身份认证,存储在内存,默认有效期为10小时。

  • ST:白银票据,由票据授予服务为client生成的用于某个服务的票据(ticket)。

从物理层面看,AD与AS,TGS,KDC均为域控制器(Domain Controller)。

2.2.2 域认证粗略流程

  1. Client向KDC发起服务请求,希望获取访问Server的权限。KDC得到了这个消息,首先得判断Client是否是可信赖的, 也就是从AD数据库中寻找该用户是否可用来登录。这就是AS服务完成的工作,成功后,AS返回TGT给Client。TGT就是黄金票据。

  2. Client得到了TGT后,继续向KDC请求,希望获取访问Server的权限。KDC通过Client 消息中的TGT,判断出了Client拥有了这个权限,KDC中的TGS给Client访问Server的ST。ST就是白银票据。

  3. Client得到ST后便可以使用这个Ticket成功访问Server。但是这个ST只能用来访问这个Server,如果要访问其他Server需要向KDC重新申请。

在这里插入图片描述

三、Windows Access Token

Access Token(访问令牌),它是一个描述进程或者线程安全上下文的一个对象。不同的用户登录计算机后, windows都会通过lsass.exe生成一个Access Token。这个用户开启的所有进程都会从explorer.exe复制一份Access Token给进程自己。这也是为啥有时候 A 用户的进程 B 用户没有权限去使用,因为 A 、B 用户的 access token 不同,而且该进程的代码中写了令牌校验的机制。

Access Token种类:

  • 主令牌:用于交互会话登录(例如本地直接登录、rdp login 、psexec )
  • 模拟令牌:用于非交互登录(利用net use访问共享文件夹,或者wmi、winrm等等)

两种令牌都是在登录时产生创建的,两种token只在系统重启后清除;具有主令牌的用户在注销后,该Token将变成模拟令牌,依旧有效。

关于SID
安全标识符(Security identifiers),简称为SID,分为 OwnerSidGroupSid。所谓SID就是每次当我们创建一个用户或一个组的时候,系统会分配给该用户或组一个唯一SID,当你重新安装系统后,也会得到一个唯一的SID。SID是唯一的,不随用户的删除而分配到另外的用户使用。请记住,SID永远都是唯一的。SID是由计算机名、当前时间、当前用户态线程的CPU耗费时间的总和三个参数决定以保证它的唯一性。

SID的表现形式:

  • 域SID-用户ID
  • 计算机SID-用户ID
  • SID列表都会存储在域控的AD或者计算机本地账户数据库中

主令牌产生细节
用户使用凭据(用户密码)进行认证;登录session创建;windows 返回用户的 sid 和用户所在组的 sid ;LSA 创建一个 Access token; 使用凭据成功认证;登录 session;token ;进程、线程
在这里插入图片描述
关于令牌方面的攻击,后面在叙述。

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

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

相关文章

从源头解决砍单问题:Temu、亚马逊自养号采购防关联全攻略

近期有很多跨境卖家向珑哥咨询,他们在进行采购下单过程中会出现砍单的问题,其实造成这种的原因很多,一套稳定的测评系统并不是单解决IP的纯净度问题或者支付卡的卡头风控问题就可以解决的,Temu、亚马逊测评下单砍单率、F号率高的原…

是德KEYSIGHT B1500A 半导体测试仪

安捷伦Agilent/KEYSIGHT B1500A/b1506a/B1505A半导体测试仪 附加功能: 基于 PC 的仪器,配备 Microsoft Windows 操作系统和 EasyEXPERT 软件用于电流-电压 (IV)、电容-电压 (CV)、脉冲生成、快速 IV 和时域测量的单盒解决方案。十个模块插槽&#xff0…

爬虫学习——24.字体反爬

什么是字体反爬 网页开发者自己创造一种字体,因为在字体中每个文字都有其代号,那么以后在网页中不会直接显示这个文字的最终的效果,而是显示他的代号,因此即使获取到了网页中的文本内容,也只是获取到文字的代号&#…

还搞不清楚String、StringBuilder、StringBuffer?

目录 一、String——引用类型,而不是基本数据类型 二、StringBuffer类 三、StringBuilder类 四、String、StringBuffer、StringBuilder比较 五、String、StringBuffer、StringBuilder的选择 一、String——引用类型,而不是基本数据类型 1.…

怎么隐藏搜狗输入法

点击输入法,右键选择更多 点击选项,点击全屏隐藏

《“八股文”之辩:程序员面试与实际工作的纠葛》

在当今的编程世界中,“八股文”成为了一个备受争议的话题。它既是大中小企业面试程序员时的常见问题,又引发了广泛的讨论和思考。那么,“八股文”究竟在实际工作中扮演着怎样的角色呢? “八股文”作为面试的必问内容,…

福建聚鼎:现在装饰画好做吗

在当今社会,随着人们审美情趣的提升和生活品质的改善,家居装饰画已经成为了一种流行的墙面装饰方式。许多人都在思考,现在做装饰画是否是一个好时机? “逆水行舟,不进则退。”在日新月异的市场中,装饰画行业的竞争愈发…

利用 Python 和 IPIDEA:跨境电商与数据采集的完美解决方案

目录 实操案例:利用 IPIDEA 进行数据采集步骤一:注册和获取代理IP步骤二:编写数据采集添加错误处理数据存储到 CSV 文件多线程采集数据 步骤三:处理和分析数据 总结 实操案例:利用 IPIDEA 进行数据采集 我们今天用一个…

TCP/IP 网络模型详解(二)之输入网址到网页显示的过程

当键入网址后,到网页显示,其间主要发生了以下几个步骤: 一、解析URL 下图是URL各个元素所表示的意义: 右边蓝色部分(文件的路径名)可以省略。当没有该数据时,代表访问根目录下事先设置的默认文…

零基础STM32单片机编程入门(二十四) 内部FLASH详解及读写实战含源码

文章目录 一.概要二.内部FLASH地址空间排布三.内部FLASH主要特色四.内部FLASH读写操作1.FLASH数据读取2.FLASH数据擦除3.FLASH数据写入 五.内部FLASH的各种保护1.写保护2.读保护 六.FLASH读写例程七.CubeMX工程源代码下载八.小结 一.概要 STM32F103C8T6是一款强大而灵活的微控…

Language——基础

前言 开发语言的本质 不同数据类型之间的值传递 正则表达式 (1) 几乎所有语言都支持正则表达式 (2) ^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$ 数据库 (1) 增删改查 一. Python 二.Java 主语言 1. 文件类型 (1) 源代码文件 java——java程序源代码 …

keepalived介绍以及配置主备库自动切换,一条龙服务

Keepalived是什么? Keepalived是一种用于实现高可用性(HA)的开源软件,它通过虚拟路由冗余协议(VRRP,Virtual Router Redundancy Protocol)来实现主备切换,从而提高服务的可用性。 虚拟路由冗…

Matplotlib知识点详解(巨详细!!!)

37.Matplotlib: 配置参数: 如果浏览器不显示图片,加上 %matplotlib inline 让图片可以显示中文 plt.rcParams[font.sans-serif]SimHei 让图片可以显示负号 plt.rcParams[axes.unicode_minus]False 支持svg矢量图 %config Inlineback…

[C++] 深入浅出list容器

文章目录 list介绍list接口的使用构造函数iterator迭代器capacity**element access**modifiers list中的迭代器失效问题常见容器及其迭代器类型特性单向迭代器(Forward Iterator)双向迭代器(Bidirectional Iterator)随机访问迭代器…

肆[4],VisionMaster全局触发测试说明

1,环境 VisionMaster4.3 2,实现功能 2.1,全局触发进行流程控制执行。 2.2,取像完成,立即运动到下一个位置,同步进行图片处理。 2.3,发送结果的同时,还需要显示图像处理的痕迹。 …

力扣爆刷第168天之TOP200五连刷106-110(每日温度单调栈、盛水最多滑动窗口、全排列回溯)

力扣爆刷第168天之TOP200五连刷106-110(每日温度单调栈、盛水最多滑动窗口、全排列回溯) 文章目录 力扣爆刷第168天之TOP200五连刷106-110(每日温度单调栈、盛水最多滑动窗口、全排列回溯)一、138. 随机链表的复制二、739. 每日温…

⌈ 传知代码 ⌋ 记忆注意力用于多模态情感计算!

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

【TS】TypeScript数组类型:掌握数据集合的类型安全

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 TypeScript数组类型:掌握数据集合的类型安全引言1. TypeScript数组类…

Three.js结合物理引擎实现掉落效果

<template> </template><script setup> import * as THREE from three import gsap from gsap //导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls // 导入 dat.gui import { GUI } from three/addons/libs/lil-gui…

好用的抠图软件在哪里找?这篇文章就有几款好用的抠图工具

在图像处理的世界中&#xff0c;抠图技术无疑是一项至关重要的技能。 无论是设计师、摄影师还是普通的图像编辑爱好者&#xff0c;都可能需要从一张图片中精确地分离出某个对象或元素。但是&#xff0c;手动抠图不仅耗时而且技术要求高&#xff0c;这时候&#xff0c;一款优秀…