域渗透之(黄金票据利用)
标签: windows安全 windows service 局域网
前言:
这里先介绍下Kerberos协议:
Kerberos是一种由MIT(麻省理工大学)提出的一种网络身份验证协议。它旨在通过使用**加密技术为客户端/服务器应用程序提供强身份验证。
在Kerberos协议中主要是有三个角色的存在:
1:访问服务的Client(用户的机器客户端)
2:提供服务的Server(服务端)
3:KDC(Key Distribution Center)**分发中心其中KDC服务默认会安装在一个域的域控中,而Client和Server为域内的用户或者是服务,如HTTP服务,SQL服务,远程桌面服务。在Kerberos中Client是否有权限访问Server端的服务由KDC发放的票据来决定。
Kerboeros工作原理
如下图所示:

1:Client向KDC发起AS_REQ请求内容为通过Client密码Hash 加密的时间戳、ClientID、网络地址、加密类型等内容。
2:KDC使用Client hash进行解密,并在ntds.dit(只有域控中才有的数据库)中查找该账户,如果结果正确就返回用krbtgt NTLM-hash加密的TGT票据,TGT里面包含PAC,PAC包含Client的sid,Client所在的组。
注释:PAC的全称是Privilege Attribute Certificate(特权属性证书)。不同的账号有不同的权限,PAC就是为了区别不同权限的一种方式。
3:Client(客户端)凭借TGT票据向KDC发起针对特定服务的TGS_REQ请求。
4:KDC使用krbtgt NTLM-hash进行解密,如果结果正确,就返回用服务NTLM-hash 加密的TGS票据,并带上PAC返回给Client(客户端)(这一步不管用户有没有访问服务的权限,只要TGT正确,就返回TGS票据)。
TGT:认证票据
TGS:票据发放服务
5:此时client拿着KDC给的TGS票据去请求服务。
6:服务端使用自己的NTLM-hash解密TGS票据。如果解密正确,就拿着PAC去KDC那边问Client有没有访问权限,域控解密PAC。获取Client的sid,以及所在的组,再根据该服务的ACL,判断Client是否有访问服务的权限。
至此,就是登录域控中Kerberos协议的工作流程,看起来可能点绕,根据我上面的贴图,一步步的看还是比较好理解的。
实验步骤
主域控:windows server 2008 IP地址:192.168.107.146
域内机器(Client):windows server 2008 IP地址:192.168.107.164
通过上面工作原理得知,我们这里只要伪造第三步,也就是TGT票据即可。
首先我们 需要先从域控中,或者是域内其他Client中导出krbtgt用户的hash,这里需要注意的是,krbtgt用户只有在域控中才会存在。
当然了如果你有域控管理员的其他账号,也是可以登录其他域其他机器来使用mimikatz.exe导出hash的。

第一步::在域控内导出krbtgt用户的hash和sid(使用mimikatz.exe工具):
lsadump::dcsync /domain:hydra.com /user:krbtgt domian:后面是域控名 user后面是krbtgt用户

2:在域内其他Client(用户机器)上使用其他域管理员来抓取krbtgt用户的hash和sid(使用mimikatz.exe工具),这里命令和上面的命令是一样的,最后抓取的hash也是和上面一样的,这里我就不贴图了。

第二步:.清除自己Client端(域内其他机器)的票据。
我们在域控上面成功抓取了hash和sid,将hash和sid复制到其他域内机器中,也就是Client端,然后在mimikatz.exe执行kerberos::list查看我们当前的票据。

然后在mimikatz.exe执行:kerberos::purge 意思就是清空当前用户登录的票据,通过下面的图片看到清空了以后,在执行list的时候,就没有任何的票据了。

第三步:伪造TGT票据(黄金票据)
kerberos::golden /admin:ceshi /domain:hydra.com /sid:S-1-5-21-4188752632-3746001697-3968431413 /krbtgt:524f4bed4b8a362bda1a560b9779eadf /ptt
kerberos::golden的意思是使用票据功能,/admin 后面的用户是我们可以伪造的任意用户,我这里用ceshi,/sid后面输入的就是我们之前抓到的sid,/krbtgt后面是之前抓到的hash, /ptt是立即执行到内存的意思。ps:一共有5个空格,这里需要注意下。
构造好了语句后,在Client端上执行,提示Successfully表示已经成功了。

第四步:通过kerberos::list查看当前票据,伪造成功(也可以通过cmd中klist查看,这里需要注意的是cmd需要用管理员的方式运行)


到了这一步以后,说明我们已经成功在Client端伪造了黄金票据(在伪造的时候可以是任意用户名,我这里是ceshi)。
第五步:在Client端通过Psexec.exe工具来与主域控进行连接(对于psexec.exe工具的使用这里不多做介绍)
连接成功了以后,是直接返回一个cmd的交互式界面,并且是最高权限。

此时,我们就可以在当前Client端(域内机器中)来执行主域控下cmd操作,并且权限是最高的。
总结
第一步:在域控中,或者是域内机器中(域管理员用户权限登录),因为是需要抓取hash和sid的,所以必须要是管理员权限,命令如下:
lsadump::dcsync /domain:hydra.com /user:krbtgt
第二步:清除自己client端(域内其他机器)的票据:
kerberos::purge
第三步:查看票据(client端):(此时票据信息肯定是空的)
kerberos::list
第四步:伪造黄金票据(client端),这里的参数文章上面都介绍过了,这里不多介绍。
kerberos::golden /admin:ceshi /domain:hydra.com /sid:S-1-5-21-4188752632-3746001697-3968431413 /krbtgt:524f4bed4b8a362bda1a560b9779eadf /ptt
第五步:尝试使用psexec登录域控的cmd控制台(client端):
psexec.exe \\dc.hydra.com cmd.exe
与其说是一种攻击方式,不如说是一种后门,当域控权限掉后,在通过域内其他任意机器伪造票据重新获取最高权限。
智能推荐
内网拓展——域渗透之ms-14-068利用
ms-14-068票据伪造获取域管账号密码 实验条件: 1.必须知道域 2.必须知道域的账号密码 3.sid 4.域控 实验步骤: 一、利用ms-14-068漏洞进行票据伪造 1.获取普通域用户的sid 2.获取域名和域控名 3.上传14068py.exe,输入命令进行票据伪装,生成TGT文件 4.清除票据记录,清除成功 5.上传mimikatz.e...
RabbitMQ(一) 基础知识
1.什么是MQ? MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息。 RabbitMQ是MQ的一种。下面详细介绍一下R...
图像插值技术——双线性插值法
https://www.cnblogs.com/gshang/p/12968496.html 在图像处理中,如果需要对图像进行缩放,一般可以采取插值法,最常用的就是双线性插值法。本文首先从数学角度推导了一维线性插值和二维线性插值的计算过程,并总结了规律。随后将其应用到图像的双线性插值上,利用Matlab编程进行图像的缩放验证,实验证明,二维线性插值能够对图像做出较好的缩放效果。 数学角度的线性插值...
【2】JVM-垃圾回收机制算法分析
目录 知识点1:什么是垃圾回收机制 1、finalize方法作用 知识点2:新生代与老年代 知识点3:如何判断对象是否存活 1、引用计数法 2、根搜索算法 知识点4:垃圾回收机制策略 1、标记清除算法 (1)应用场景 (2)优缺点 2、复制算法 (1)概念 (2)应用场景 (3)优缺点 3、标记压缩算法 (1)概念 (2)压缩算法简单介绍 (3)优缺点 4、Minor GC和Full GC区别 5...
使用机器学习算法进行验证码识别
数据集:MNIST数据集,包含大量验证码,我们可以使用K近邻算法、支持向量机和深度学习进行验证码识别。 K近邻算法的流程图: SVC流程图: 多层感知机MLP Hello MNIST Extracting mnist/train-images-idx3-ubyte.gz Extracting mnist/train-labels-idx1-ubyte.gz Extracting mnist/t10...
猜你喜欢
自动化运维工具SaltStack进阶(7)
文章目录 1. masterless 1.1 应用场景 1.2 masterless配置 1.2.1 修改配置文件minion 1.2.2 关闭salt-minion服务 1.2.3 salt-call 2. salt-master高可用 2.1 salt-master高可用配置 2.2 salt-master高可用之数据同步 3. salt-syndic分布式架构 3.1 salt-syndic...
Java的*.class字节码查看方法
Java字节码可以让我们更深入理解java程序工作细节,Java类字节码可通过下面方法进行查看:(比较常用的两种,当然你也可以下载小软件工具等等进行) cmd命令 对代码进行反汇编: 反汇编并输出附加信息 或 如下: IDE安装plugin 这里只介绍使用IntelliJ IDEA,eclipse类似: IntelliJ IDEA菜单中File–>Settings–&...
JDK动态代理源码 Java反射 代理
前言: Start:2020.11.1 End:2020.11.3 00:40 在学习mybatis源码和spring Aop源码时,JDK动态代理都是不能避过的! 内容: 代理与反射---->静态代理------>手写动态代理----->JDK动态代理+源码+总结 [根据目录选择你需要的内容查看] 动态代理-java反射机制的关系 动态代理是23种设计模式中的一种 常见的两种动...
二叉树的镜像
题目: 操作给定的二叉树,将其变换为源二叉树的镜像 根节点不动,所有的左子树和右子树调个位置 第一步 先把 8的左子树和右子树换位置 第二步 继续递归把10的左子树右子树换位置 第三步 继续递归把6的左子树右子树换位置...
centos7.5 源码安装zabbix3.4
官方中文手册:https://www.zabbix.com/documentation/3.4/zh/manual 安装要求 支持的数据库 前端软件 我这里使用的是LNMP环境,环境的搭建可自行百度,给出我的PHP配置 php.ini一定要满足如下的配置,否则后面zabbix安装不了 下载并安装 先关闭selinux 依赖包 下载源码包 编译 安装 创建zabbix用户和用户组,并更改zabbix...
