一: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进行票据查询

第三步:权限验证

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

psexec \\hostname  cmd.exe

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 补丁来规避风险。

以上内容参考资料

  • 彻底理解Windows认证 - 议题解读 « 倾旋的博客

域渗透-横向移动(PTT)相关推荐

  1. 《内网安全攻防:渗透测试实战指南》读书笔记(五):域内横向移动分析及防御

    目录 前言 一.常用Windows远程连接和命令 1.IPC (1)利用条件 (2)连接失败的原因 2.Windows自带工具 (1)dir (2)tasklist 3.计划任务 (1)at (2)s ...

  2. 第5章域内横向移动分析及防御

    目录 第5章域内横向移动分析及防御 5.1 常用Windows远程连接和相关命令 5.1.1 IPC 5.1.2使用Windows自带的工具获取远程主机信息 5.1.3计划任务 5.2Windows系 ...

  3. 从Github一开源项目ADSEC【学习域渗透攻防基础】

    学习的开源项目是: https://github.com/cfalta/adsec 有些地方是直接Google 翻译过来的. 注意:本人域渗透新手,很多问题都不懂,有问题欢迎大哥后台留言啊!!! La ...

  4. 渗透测试入门9之域渗透

    渗透测试入门9之域渗透 信息搜集 powerview.ps1 Get-NetDomain - gets the name of the current user's domain Get-NetFor ...

  5. scaner 从外网到内网域渗透

    scaner 从外网到内网域渗透 本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精:本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿 ...

  6. 《域渗透攻防指南》签名版预售来啦

    千呼万唤始出来!终于,在广大粉丝翘首期盼下,国内首本专门讲述域内攻防的书籍<域渗透攻防指南>在2022年最后一个月和大家见面了.为了回馈粉丝的等待,让粉丝早日拿到心仪的书,特此联合机械工业 ...

  7. 域渗透-SPN与kerberoast攻击

    一:SPN服务主体名称 SPN(ServicePrincipal Names)服务主体名称,是服务实例(比如:HTTP.MSSQL.MySQL等服务)的唯一标识符. 1.1:SPN介绍 Kerbero ...

  8. 腾讯安全推出御界NDR「横移检测版」,全面检测域渗透攻击

    1.背景 一直以来,大量企业饱受域渗透攻击困扰. 由于企业内部资产及用户量庞大,大多数企业选择 AD 域作为用户和主机统一管理的方案,然而由于防护体系不完善,攻击者往往通过攻击域控进而攻击企业内部核心 ...

  9. 域渗透委派攻击之约束委派

    约束委派 约束委派(Constrained Delegation)即 Kerberos 的扩展协议 S4U2Proxy,服务账号只能获取某用户的 TGS ,从而只能模拟用户访问特定的服务,这也相对应非 ...

最新文章

  1. Blender中的多平面动画学习教程
  2. R可视化绘制威布尔分布(Weibull Distribution)
  3. hk.module must be initialized inside an hk.transform
  4. 【小白学习PyTorch教程】六、基于CIFAR-10 数据集,使用PyTorch 从头开始​​构建图像分类模型...
  5. 记录几款比较好用的jquery插件
  6. [JavaWeb-JavaScript]JavaScript概念与功能
  7. android view使用方法,android – 如何使用getView()方法,它在哪里被调用?
  8. HarmonyOS应用如何开发,使用什么开发工具及安装使用教程说明!
  9. java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)
  10. 鸿蒙手机(真机)播放音乐-第二集
  11. 小米11终于来了,12月28日见!
  12. SQL Server 2008 安装过程中遇到“性能计数器注册表配置单元一致性”检查
  13. Getway 中predicates: - Query=x 标签作用
  14. Salesforce入门教程(中文)-019 VF创建输入表单
  15. dell服务器开机蓝屏无限重启,戴尔电脑不停蓝屏重启怎么办
  16. 楚留香pc端无法获取服务器信息,楚留香手游PC端无响应解决方法
  17. 【名单回顾】2019/2020年第11届蓝桥杯大赛青少年组(北京赛区)选拔赛C++初级组一二等奖获奖名单
  18. Xmind各种删除图标的方法
  19. 为什么不要用苹果的@icloud.com邮箱申请你的APP ID
  20. 上海 -》 张家界 旅行 计划10.1

热门文章

  1. 若依框架内自带的excel导入导出功能
  2. 【虚幻引擎】UE4/UE5科大讯飞文字合成语音
  3. Docker安装与镜像的使用
  4. idle最好记的常用快捷键大全
  5. 图纸识别自动生成BOM清单的方法
  6. idea svn IP地址更换方法
  7. 在linux下刷B站方法总结
  8. WPF UserControl响应PreviewKeyDown事件方法
  9. 设置CFLAGS后,编译无效
  10. 做了两年前端开发,平时就是拿 Vue 写写页面和组件,简历的项目经历应该怎么写得好看?