Windows认证/白银票据

2024-02-21 12:10
文章标签 windows 认证 白银 票据

本文主要是介绍Windows认证/白银票据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Window认证学习笔记

(by 12306Bro)

前言

因为疫情导致在家办公,正好可以利用这段时间提升一下自己,所以打算学习一下Windows认证。

windows认证

    Kerberos 是一种网络认证协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

整个认证过程需要以下设备:
客户端(Client)
服务端(Server)
认证端(KDC) kerberos认证服务器称KDC,它是由 Authentication Service 和 Ticket Granting Service 组成,但是它会访问 AD数据库,在认证中会需要到。
在这里插入图片描述

  1. 客户端向AS请求

    首先client会先向DC(KDC>AS)发送请求,但是为了保证传输安全,客户端会使用已登录用户(user1)的Hash加密请求包中的timestamp(时间戳)部分,而域中所有用户的信息(包括hash)都保存在AD(NTDS.DIT)中,这样就只有DC和客户端可以对请求包进行解密,请求包中需要包含的内容有:
    发送内容① :[Pre-authentication data(client is ntlm_hash for Timestamp),Client name & realm(DomainName\Username),Server Name(KDC TGS NAME)]

    Pre-authentication data:被客户端加密的timestamp内容
    Client name & realm:客户端用户名,如user1/h0r2yc.cn
    Server Name:KDC、TGS 的 Server Name。

  1. AS认证通过后发送TGT给客户端

    DC(KDC>AS)接收到client发来的请求包后,会根据请求包中的用户名(user1)向AD请求user1对应的hash,然后用hash解密出timestamp,如果解密出的timestamp和当前时间未超过5min,验证通过,KDC会生成一个使用user1的hash加密的logon session key,以及一个用krbtgt(用于 Kerberos 身份验证的账户) hash加密的TGT,然后发送给客户端,TGT的有效期为8个小时。

    发送内容②:[Client_ntlm_hash(K(c,tgs))],[Krbtgt_ntlm_hash(k(c,tgs),Client_name(DomainName\Username),TGT_EndTime)]

    Logon Session Key:会话凭证
    Client name & realm:客户端用户,如user1
    End time: TGT到期的时间

    客户端接收到数据,使用user1 hash解密出logon session key,但是TGT使用krbtgt hash加密,客户端没有对应的hash所以没办法解密。有了logon session key就可以进行第三步。
    TGT里面包含PAC,PAC包含Client的sid,Client所在的组。注释:PAC的全称是Privilege Attribute Certificate(特权属性证书)。不同的账号有不同的权限,PAC就是为了区别不同权限的一种方式。
    大多数服务不验证PAC(通过将PAC校验和发送到域控制器进行PAC验证),因此使用服务帐户密码哈希生成的有效TGS可以完全伪造PAC。

  1. 客户端向TGS发送TGS请求包

    client接收到DC(KDC>AS)发送回来的数据后,client拿着自己加密的Session_key和TGT凭证向票据生成服务器(TGS)发起一个认证请求(KRB_TGS_REQ)。

    发送内容③ :[Session_key(Authenticator([DomainName\Username,ServerName(DomainName\Server)]))],[TGT]

    TGT:通过向AS请求获得的TGT
    Authenticator:客户端使用logon session key加密的联络暗号
    Client name & realm:客户端用户,如user1
    Server name & realm:客户端要访问的服务端的用户名
    Pre-authentication data:被客户端加密的timestamp内容

  1. TGS认证通过后发送Ticket以及session key
        TGS接收到client发来的请求后,使用krbtgt hash解密TGT得到logon session key,在使用logon session key解密Authenticator得到联络暗号,认证通过。认证通过后TGS生成使用logon session key加密的session key(session key用于客户端和server进行通讯),再生成一个使用user2 hash加密的ticket,然后发送给客户端。

    发送内容④ :k(c,tgs)加密[Session_key],[Server_ntlm_hash(Tiket(K(c,s),Client_Name(domainName\Username),TGT_EndTime))]

    Session Key:用于客户端和server通讯的key。
    Client name & realm: 客户端用户,如user1
    End time: Ticket的到期时间

  1. 客户端向server发送请求

    client接收到数据后,使用logon session key解密出session key,有了session key和Ticket后,就可以直接与server进行交互,无需再通过KDC认证。这时候client创建一个使用session key加密的Authenticator和timestamp(时间戳),然后client将加密过的timestamp、Authenticator以及ticket,还有一个询问是否需要双向验证的flag发送给server。

    发送内容⑤:K(c,s)加密[Authenticator([DomainName\Username,ServerName(DomainName\Server)])],[Tiket]

  1. server验证通过允许访问

    server接收到请求包后,使用user2 hash解密Ticket得到session key,再使用session key解密Authenticator和timestamp,如果timestamp和当前时间不超过5min,验证通过,允许访问。

    发送内容⑥:K(c,s)加密[Authenticator]

白银票据分析及利用

    白银票据是一个有效的票据授予服务(TGS)Kerberos票据,因为Kerberos验证服务运行的每台服务器都对服务主体名称的服务帐户进行加密和签名。
    白银票据主要是发生在第五步骤上。

  1. 首先我们尝试访问目标服务器根目录
    在这里插入图片描述
        访问主域控文件共享,可以看到是无法访问的,说明当前用户密码存在问题,也可以理解为无权限。

  2. 用域管理账号登录主域控,使用工具mimikatz.exe执行命令抓取hash(在域控中执行):

#mimikatz.exe “privilege::debug” “sekurlsa::logonpasswords” exit>log.txt

在这里插入图片描述

  1. 在Client端查看SID号(在Cient端执行),复制并保存,也可以根据上一步mimikatz导出的文件中找到。
    在这里插入图片描述

  2. 将在域控上抓取的hash也就是NTML值的复制到Client端,打开mimikatz.exe工具(在Cient端执行),创建票据命令:

#kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLM Hash> /user:<用户名> /ptt

在这里插入图片描述

kerberos::golden:使用minikatz中票据的功能
/domain:指定域名
/sid:Client端查询的sid号,在域控中查询也可以,都是一样的
/target:主域控中的计算机全名
/rc4:在域控中抓取的hash(NTLM)
/service:需要伪造的服务(cifs只是其中的一种服务,可伪造的服务很多)
/user:需要伪造的用户名(可自定义)
/ppt:伪造了以后直接写入到内存中
  1. 执行了后如果提示successfully表示伪造的白银票据成功写入到内存中。可以通过kerberos::list来查看
    在这里插入图片描述
  2. 打开Client的cmd来执行共享文件查看,可以看到是可以成功查看域控c盘下的文件,并且此时权限也是最高的权限。
    在这里插入图片描述
    白银票据可伪造服务类型
服务注释服务名
WMIHOST、RPCSS
Powershell RemoteingHOST、HTTP
WinRMHOST、HTTP
Scheduled TasksHOST
WMIHOST、RPCSS
LDAP 、DCSyncLDAP
Windows File Share (CIFS)CIFS
Windows Remote Server Administration ToolsRPCSS、LDAP、CIFS

检测白银票据利用行为

银票活动可能具有以下问题之一:
帐户域字段应为DOMAIN时为空白
帐户域字段应为DOMAIN时为DOMAIN FQDN。
事件ID:4624(帐户登录)
帐户域是FQDN,应为短域名
帐户域:LAB.ADSECURITY.ORG [ADSECLAB]
事件ID:4634(帐户注销)
帐户域为空,应为短域名
帐户域:_______________ [ADSECLAB]
事件ID:4672(管理员登录)
帐户域为空,应为短域名
帐户域:_______________ [ADSECLAB]

不过根据本人测试采集到的日志信息,未发现此类异常日志。可能是哪里存在问题,欢迎大佬们指点

白银/黄金区别

  1. 访问权限不同
    Golden Ticket: 伪造 TGT,可以获取任何 Kerberos 服务权限
    Silver Ticket: 伪造 TGS,只能访问指定的服务

  2. 加密方式不同
    Golden Ticket 由 Kerberos 的 Hash 加密
    Silver Ticket 由服务账号(通常为计算机账户)Hash 加密

  3. 认证流程不同
    Golden Ticket 的利用过程需要访问域控,而 Silver Ticket 不需要

参考链接

白银票据与黄金票据探究:
http://sh1yan.top/2019/06/03/Discussion-on-Silver-Bill-and-Gold-Bill/

windows认证-白银票据、黄金票据分析及利用
http://www.h0r2yc.cn/2019/08/17/windows认证-白银票据、黄金票据分析及利用/

[域渗透] - Pass the Ticket之金票&银票
http://www.test666.me/archives/264/

这篇关于Windows认证/白银票据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/731729

相关文章

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

windows和Linux安装Jmeter与简单使用方式

《windows和Linux安装Jmeter与简单使用方式》:本文主要介绍windows和Linux安装Jmeter与简单使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows和linux安装Jmeter与简单使用一、下载安装包二、JDK安装1.windows设

Python+Tkinter实现Windows Hosts文件编辑管理工具

《Python+Tkinter实现WindowsHosts文件编辑管理工具》在日常开发和网络调试或科学上网场景中,Hosts文件修改是每个开发者都绕不开的必修课,本文将完整解析一个基于Python... 目录一、前言:为什么我们需要专业的Hosts管理工具二、工具核心功能全景图2.1 基础功能模块2.2 进