域渗透-横向移动(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:名词解析
- KDC(Key Distribution center):密钥分发中心,在域环境中,KDC服务默认会安装在域控中。
- AS(Authentication Service):认证服务,验证client的credential(身份认证信息),发放TGT。
- TGT(Ticket Granting ticket):票据授权票据,由KDC的AS发放,客户端获取到该票据后,以后申请其他应用的服务票据(ST)时,就不需要向KDC的AS提交身份认证信息(credential),TGT具有一定的有效期。由 KBRTGT HASH 加密的 sessionkey-as 和 Timestamp 等信息。TGT=KBRTGT HASH()
- TGS(Ticket Granting Service):票据授权服务,验证TGT,发放ST。
- ST(Service Ticket):服务票据,由KDC的TGS发放,是客户端应用程序访问Server某个服务的凭证,Server端验证通过则完成Client与Server端信任关系的建立。
- Session key:用来加密client和TGS之间传输的数据。
- 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\Parameters
的ValidateKdcPacSignature
设置为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)相关推荐
- 《内网安全攻防:渗透测试实战指南》读书笔记(五):域内横向移动分析及防御
目录 前言 一.常用Windows远程连接和命令 1.IPC (1)利用条件 (2)连接失败的原因 2.Windows自带工具 (1)dir (2)tasklist 3.计划任务 (1)at (2)s ...
- 第5章域内横向移动分析及防御
目录 第5章域内横向移动分析及防御 5.1 常用Windows远程连接和相关命令 5.1.1 IPC 5.1.2使用Windows自带的工具获取远程主机信息 5.1.3计划任务 5.2Windows系 ...
- 从Github一开源项目ADSEC【学习域渗透攻防基础】
学习的开源项目是: https://github.com/cfalta/adsec 有些地方是直接Google 翻译过来的. 注意:本人域渗透新手,很多问题都不懂,有问题欢迎大哥后台留言啊!!! La ...
- 渗透测试入门9之域渗透
渗透测试入门9之域渗透 信息搜集 powerview.ps1 Get-NetDomain - gets the name of the current user's domain Get-NetFor ...
- scaner 从外网到内网域渗透
scaner 从外网到内网域渗透 本次实验环境靶场来自于暗月(moonsec)师傅,文中内容全由个人理解编制,若有错处,大佬勿喷,个人学艺不精:本文中提到的任何技术都源自于靶场练习,仅供学习参考,请勿 ...
- 《域渗透攻防指南》签名版预售来啦
千呼万唤始出来!终于,在广大粉丝翘首期盼下,国内首本专门讲述域内攻防的书籍<域渗透攻防指南>在2022年最后一个月和大家见面了.为了回馈粉丝的等待,让粉丝早日拿到心仪的书,特此联合机械工业 ...
- 域渗透-SPN与kerberoast攻击
一:SPN服务主体名称 SPN(ServicePrincipal Names)服务主体名称,是服务实例(比如:HTTP.MSSQL.MySQL等服务)的唯一标识符. 1.1:SPN介绍 Kerbero ...
- 腾讯安全推出御界NDR「横移检测版」,全面检测域渗透攻击
1.背景 一直以来,大量企业饱受域渗透攻击困扰. 由于企业内部资产及用户量庞大,大多数企业选择 AD 域作为用户和主机统一管理的方案,然而由于防护体系不完善,攻击者往往通过攻击域控进而攻击企业内部核心 ...
- 域渗透委派攻击之约束委派
约束委派 约束委派(Constrained Delegation)即 Kerberos 的扩展协议 S4U2Proxy,服务账号只能获取某用户的 TGS ,从而只能模拟用户访问特定的服务,这也相对应非 ...
最新文章
- Blender中的多平面动画学习教程
- R可视化绘制威布尔分布(Weibull Distribution)
- hk.module must be initialized inside an hk.transform
- 【小白学习PyTorch教程】六、基于CIFAR-10 数据集,使用PyTorch 从头开始​​构建图像分类模型...
- 记录几款比较好用的jquery插件
- [JavaWeb-JavaScript]JavaScript概念与功能
- android view使用方法,android – 如何使用getView()方法,它在哪里被调用?
- HarmonyOS应用如何开发,使用什么开发工具及安装使用教程说明!
- java中四种操作(DOM、SAX、JDOM、DOM4J)xml方式详解与比较(转)
- 鸿蒙手机(真机)播放音乐-第二集
- 小米11终于来了,12月28日见!
- SQL Server 2008 安装过程中遇到“性能计数器注册表配置单元一致性”检查
- Getway 中predicates: - Query=x 标签作用
- Salesforce入门教程(中文)-019 VF创建输入表单
- dell服务器开机蓝屏无限重启,戴尔电脑不停蓝屏重启怎么办
- 楚留香pc端无法获取服务器信息,楚留香手游PC端无响应解决方法
- 【名单回顾】2019/2020年第11届蓝桥杯大赛青少年组(北京赛区)选拔赛C++初级组一二等奖获奖名单
- Xmind各种删除图标的方法
- 为什么不要用苹果的@icloud.com邮箱申请你的APP ID
- 上海 -》 张家界 旅行 计划10.1