首页 > 系统相关 >域渗透学习(一)Windows认证机制

域渗透学习(一)Windows认证机制

时间:2024-06-23 22:34:02浏览次数:3  
标签:Hash Windows NTLM 认证 渗透 Client 哈希 客户端

windows认证机制

何谓域渗透,域渗透就是基于windows域环境的渗透,而域渗透涉及到的技术,如哈希传递(PTH)票抵传递(PTT)委派攻击等,都是基于域环境下的认证机制来实现的,这也是为什么要了解windows认证机制的原因之一。

windows的认证包括三个部分,用户直接操作计算机登录账号(本地认证),远程连接到工作组(网络认证),登录到域环境中(域认证)

本地认证

用户输入密码,系统收到密码后将用户输入的密码计算成NTLM Hash,然后与sam数据库(%SystemRoot%\system32\config\sam)中该用户的哈希对比,匹配则登陆成功,不匹配则登录失败

这里提到的NTLM哈希,是一种单向哈希算法,windows将用户的密码计算成NTLM哈希之后才存储在电脑中

大致的流程为:
用户密码 -> HEX编码 -> Unicode编码 -> MD4

NTLM Hash的前身是LM Hash,由于存在安全缺陷已经被淘汰了

本地认证中用来处理用户输入密码的进程即lsass.exe,密码会在这个进程中明文保存,供该进程将密码计算成NTLM Hash与sam进行对比
我们使用mimikatz来获取的明文密码,便是在这个进程中读取到的

网络认证

NTLM协议的认证过程分为三不,也叫做挑战相应机制:

  1. 协商
  2. 质询
  3. 验证

协商:双方确定使用的协议版本,NTLM存在V1和V2两个版本,具体区别就是加密方式不同。

质询:挑战(Chalenge)/响应(Response)认证机制的核心

  1. 客户端向服务器端发送用户信息[用户名]请求
  2. 服务器接受到请求后,判断本地用户列表是否存在客户端的用户名,如果没有返回认证失败,如果有,生成一个16位的随机数,被称为"Challenge",然后使用登录用户名对应的NTLM Hash加密Challenge(16位随机字符),生成Challenge1保存在内存中。同时,生成Challenge1后,将Challenge发送给客户端。
  3. 客户端接受到Challenge后,使用自己提供的账号的密码转换对应的NTLM Hash,然后使用这个NTLM Hash加密Changllenge生成Response,然后将Response发送至服务端。

验证:在质询完成后,验证结果,是认证的最后一步。

服务端收到客户端发送的Response后,与之前保存在内存中的Channelge1比较,如果相等认证通过

简单的来说:客户端向服务器请求使用某个用户进行验证,服务端判断该用户是否存在,存在的话使用这个用户密码的哈希值来加密一个随机字符串,并且将这个随机字符串返回给客户端,客户端再把自己提供的密码进行哈希处理后也来加密这串随机字符串,然后再把结果发送给服务器,服务器把从客户端发送的加密结果与自己本地的加密结果进行比较,相同的话便通过认证
工作组环境和域环境下Net NTLM认证过程因为有DC(域控制器)的参与流程略有差异,不过不影响我们进行哈希传递攻击

域认证(Kerberos)

参与域认证的三个角色:
Client
Server
KDC(Key Distribution Center) = DC(Domain Controller) = AD(Account Database) + AS(Authenication Service) + TGS(Ticket Granting Service)

AD,全称叫account database,存储域中所有用户名和对应的NTLM Hash,可以理解为域中的SAM数据库,KDC可以从AD中提取域中所有用户的NTLM Hash,这是Kerberos协议能够成功实现的基础。

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

Client得到了TGT后,继续向KDC请求,希望获取访问Server的权限。KDC又得到了这个消息,这时候通过Client 消息中的TGT,判断出了Client拥有了这个权限,给了Client访问Server的权限Ticket。(TGS服务的任务)

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

标签:Hash,Windows,NTLM,认证,渗透,Client,哈希,客户端
From: https://www.cnblogs.com/kalixcn/p/18264022

相关文章

  • 在Windows环境中,如果你希望禁用通过Win+R快捷键运行命令提示符(cmd),可以采取以下方法。
    在Windows环境中,如果你希望禁用通过Win+R快捷键运行命令提示符(cmd),可以采取以下方法。这些方法包括组策略编辑器和注册表编辑器,但请注意,修改系统设置可能会影响系统的其他功能,应谨慎操作。方法1:使用组策略编辑器打开组策略编辑器:按 Win+R,输入 gpedit.msc,然后按回车。......
  • 域渗透之利用WMI来横向渗透
    目录前言wmi介绍wmiexec和psexec的区别wmic命令执行wmiexec.vbswmiexec.pyInvoke-WmiCommand.ps1前言上一篇打红日靶场拿域控是用ms17-010漏洞执行命令的方式,最后提到了wmi利用的方式。接下来我将继续采用之前的红日靶场环境,只保留web服务器和域控,使用wmiexec尝试拿下域控制器。......
  • 了解如何使用DIR命令来查看和管理文件系统中的文件和目录;更加灵活地利用 DIR 命令来筛
    应用大纲:初级使用方法1.基本用法使用 DIR 命令来列出当前目录中的所有文件和子目录。2.切换到不同目录使用 DIR[驱动器:][路径] 来列出指定目录中的文件和子目录。例如,DIRC:\Users。3.常用选项/P:分页显示结果,每页一屏。/W:宽列表格式显示,减少详细信息。/A:按......
  • Windows Api如何创建一个快捷方式并且在开始菜单搜索到自己的应用
     原文链接:http://cshelloworld.com/home/detail/1804473083243925504当我们点击win10系统搜索框的时候,输入名称,win10会帮助我们匹配到对应的应用。这里搜索框实际上就是windows系统的开始菜单。接下来我们随便找一个应用,右键,然后点击打开文件位置,我们来看下这个EveryThing的......
  • windows服务器上用nginx转发到iis中的网站
    windows服务器上用nginx转发到iis中的网站2024年6月23日测试通过前提:华为云1核心2G内存1M带宽服务器¥40/年,还没有备案,80端口用不了,在安全组里把81端口打开了,同时记得登录云服务器里把WINDOWS的防火墙关闭或者放行81端口想法:windows服务器里下载nginxwindows版本,然后所有请求......
  • 当Windows台式电脑或笔记本电脑随机关机时,请先从这8个方面检查
    序言你的Windows笔记本电脑或PC是否意外关闭?笔记本电脑电池故障、电源线松动、过热、电源设置错误、驱动程序过时或电脑组件故障等问题都可能是罪魁祸首。如果你对这个问题感到沮丧,试试这些解决方案。进行一些初步检查与从电池中获取电力的笔记本电脑不同,台式电脑依靠与外部......
  • 玄机——第五章 Windows 实战-evtx 文件分析 wp
    文章目录一、前言二、概览简化三、参考文章四、步骤(解析)步骤#11.将黑客成功登录系统所使用的IP地址作为Flag值提交;拓展1.1步骤#22.黑客成功登录系统后修改了登录用户的用户名,将修改后的用户名作为Flag值提交;拓展1.2拓展1.3步骤#33.黑客成功登录系统后成功访问了一个......
  • CrossOver 24 for Mac(windows 虚拟机)
    CrossOverforMac是一款功能强大的虚拟机软件,允许在Mac系统上运行Windows应用程序而无需重新启动计算机。通过CrossOver,用户可以轻松地运行Windows软件和游戏,而无需购买Windows许可证或使用虚拟机。CrossOver通过直接在Mac系统上提供所需的Windows资源,实现了无缝的跨平台兼容......
  • Windows系统分区
    系统分区一,选择分区表1,MBR(主引导记录)分区表;缺陷:最大支持2.1TB的硬盘;最大支持4个主分区。分区分类:①主分区:每块硬盘最多4个②扩展分区:每块硬盘最多1个,扩展分区+主分区最多4个,扩展分区不能格式化,不能写入数据扩展分区只能用于包含更多的逻辑分区③逻辑分区:逻辑分区......
  • Windows系统分区 二
    [2]格式化原理Block(数据块):Linux默认大小4KB,还支持1KB,2KB    du统计文件大小    df统计空间大小如果一个文件需要占用多个Block,他会尽量依次存储,但不是绝对的。一个文件可以占用多个Block,但是一个Block只能保存一个文件的数据。Inode(索引节点):大小128Byte......