本综合指南将向您展示如何使用 Mimikatz 进行黑客攻击,以便您可以像专业人士一样转储凭据并执行横向移动。
Mimikatz 是您将使用的最受欢迎的黑客工具之一,也是渗透测试和红队参与的行业标准。
它在许多顶级黑客认证中都有介绍,例如进攻性安全认证专家 (OSCP)、实用网络渗透测试员 (PNPT) 和认证红队操作员 (CRTO),因此它是您需要了解如何使用的工具。本指南将向您展示如何使用。
您将学习提取密码、转储凭据、创建黄金票证以及执行传递哈希和过度传递哈希等攻击。
这些都是黑客武器库中的基本技能,而 Mimkatz 是一款可以做到这一切的工具。但在我们进行酷炫的黑客攻击之前,Mimikatz 是什么?
让我们来一探究竟。
什么是 Mimikatz?
Mimikatz 是一种开源黑客工具,可以从受感染的机器中提取凭证信息。
它是由 Benjamin Delpy 创建的,作为概念证明,旨在强调 Microsoft 身份验证协议(如 Windows 新技术 LAN 管理器 (NTLM))如何容易受到攻击。
从那时起,它就成为了渗透测试和红队领域事实上的后开发工具,许多认证都要求您知道如何使用它。
黑客会在攻击的后利用阶段使用 Mimikatz 。此阶段始于您成功入侵计算机并获得未经授权的访问权限之后。
在此阶段,您将执行各种后利用活动,例如收集有关系统和内部网络的信息、提升您的权限以及创建持久性机制。这就是 Mimikatz 的作用所在。
Mimikatz 可以从内存或磁盘密码存储中提取凭证数据,包括纯文本密码、密码、Kerberos 票证和 NTLM 密码哈希。
然后,它可以使用这些被盗的凭证数据进行横向移动,并瞄准本地网络内的其他机器。这个过程如下:
-
您获得一台机器的初始访问权限。
-
您使用 Mimikatz 来提取存储在其上的凭证信息。
-
您可以使用该信息通过创建黄金票证或使用传递哈希(PtH)和过度传递哈希(传递密钥)等攻击来向本地网络内的其他机器或网络资源进行身份验证。
Mimikatz 的主要特点:
-
从内存和磁盘转储凭证
-
Kerberos 攻击,例如黄金票证和哈希溢出攻击
-
NTLM 攻击(例如传递哈希)
-
令牌模拟
-
利用 Print Spooler 等漏洞提升权限
-
通过清除 Windows 事件日志或注入合法进程来逃避防御
为了提供这些功能,Mimikatz 使用各种模块为核心工具添加功能。让我们来看看它们。
了解 Mimikatz 模块
Mimikatz 由 17 个模块组成。每个模块都提供特定的功能,可让您执行后利用活动,例如窃取凭据、提升权限或执行横向移动。
您最常使用的关键模块是:
-
sekurlsa:用于从本地安全机构子系统服务(LSASS)的内存中提取密码、密钥、PIN 码、哈希值和票证。
-
lsadump:用于转储 Windows安全帐户管理器(SAM) 数据库和本地安全机构 (LSA)。它包含用户的 NT 和 LM 哈希。
-
kerberos:用于通过 API 调用与 Kerberos 身份验证协议交互或执行 Kerberos 攻击,例如创建金票或银票以及提取 Kerberos 服务票。
-
privilege:用于访问命令以检查和操作 Mimikatz 内部进程的权限。
-
token:用于检查和操作您的 Windows 令牌。
-
vault:用于转储保存在 Windows Vault 中的密码。通常是 Web 浏览器或其他应用程序的密码。
这些模块利用 Windows 系统中的漏洞、弱点或设计特点来实现其目标。
例如,该sekurlsa模块利用了 NTLM 身份验证协议设计中的一个弱点。用户可以使用另一个用户的密码进行身份验证,而无需知道对方的明文密码——即传递哈希攻击。
由于这些模块与 Windows 操作系统的交互方式,您通常需要以特权进程的形式运行 Mimikatz 才能解锁其大多数功能。
特权进程比普通进程拥有更高的权限,通常通过以管理员或系统用户身份执行 Mimikatz 来实现。以下演示将使用提升的权限进行。
使用 Mimikatz 时需要注意的事项
此时,您可能会担心(或兴奋)有这样一种强大的工具存在;这种工具能够窃取凭据并不受阻碍地在网络中移动。事实上,这并不完全正确。
Mimikatz 是一款老工具,被渗透测试人员、红队成员和现实世界的黑客广泛使用。因此,安全工具甚至 Windows 操作系统中都内置了复杂的检测和缓解措施,可以捕获并阻止 Mimikatz。
如果您只是在运行 Windows 10+ 的计算机上下载并运行 Mimikatz,那么您将不会成功;Microsoft Defender 会阻止它,您将会失败。
但是,您可以通过多种方式让 Mimikatz 运行。首先,如前所述,您必须以管理员权限或系统级权限运行它。其次,您必须结合防御规避策略和技术来绕过安全机制。示例包括:
-
在内存中运行 Mimikatz 以避免防病毒扫描等磁盘检测。
-
禁用 Windows 反恶意软件扫描接口 (AMSI) 以逃避内存扫描。
-
通过将 Mimikatz 进程注入合法进程来绕过应用程序白名单。
-
使用父进程欺骗来逃避行为检测。
话虽如此,这些规避技术超出了本文的讨论范围,不会在以下演示中使用。相反,您将看到 Mimkatz 在已禁用防病毒和恶意软件保护的 Windows 计算机上的磁盘上执行。
要探索使用 Mimikatz 时的检测规避,请查看dpapi和process模块。这些模块允许您自定义 Mimikatz 的执行行为以绕过常见的保护措施。此外,请考虑使用内置规避技术的命令和控制 (C2) 框架(如PowerShell Empire)。
说得够多了。让我们开始看看 Mimikatz 的实际应用吧!
提取明文密码
您要执行的首批后利用活动之一是搜索您刚刚入侵的系统上的信息。这些信息可能是配置文件、敏感文档或用户的纯文本密码。
Mimikatz 可以使用其模块帮助您做到这一点sekurlsa,该模块可以从 LSASS 的内存中提取密码、私钥、PIN 码和票据。
要使用该模块提取明文密码sekurlsa,可以使用该logonpasswords命令。此命令列出所有可用的提供商凭据,包括最近登录的用户帐户和计算机凭据。
首先,您必须关闭所有 Windows 安全设置,下载 Mimikatz,然后通过右键单击该应用程序以管理员身份运行它。
一旦执行 Mimikatz,就会出现一个终端窗口,显示 Mimikatz 界面。
此时,你需要运行命令privilege::debug。此命令将请求当前 Mimikatz 进程的调试权限。如果你以管理员或系统用户身份运行,则此操作应该会成功,输出会指示这一点Privilege ‘20’ OK。
调试权限允许您调试和调整另一个用户帐户拥有的进程的内存 - 这是从 LSASS 中提取纯文本密码的要求。
现在,您可以继续提取密码。运行该命令sekurlsa::logonpasswords列出最近登录系统的所有用户。他们的登录数据将存储在 LSASS 的内存中,可供您提取。
此命令会给出大量输出。向下滚动,您可以找到登录到计算机的用户或最近注销的用户。
该清单表明了三件事:
-
用户姓名:StationX-user。
-
用户的 NTLM 和 SHA1 密码哈希:这些哈希可以被破解以泄露用户的密码或用于传递哈希攻击以执行横向移动。
-
用户的明文密码:显示此信息是因为此机器启用了旧版 WDigest 安全提供程序。看来他们是 Nathan 的粉丝。
WDigest 在现代 Windows 操作系统上默认处于禁用状态。如果您想启用它以跟随上面的演示,请以管理员身份在终端中运行以下命令:reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 1
从 LSASS 内存中提取密码并不是使用 Mimikatz 收集凭证信息的唯一途径。让我们再看看其他途径。
从 LSA 和 SAM 转储凭证
您可以从中转储凭据的另一个数据存储是 LSA 和 SAM 数据库。每次启动 Windows 计算机时都会加载这些数据库,如果您具有调试权限,则可以使用 Mimkatzlsadump模块从中转储凭据。
该lsadump模块有一个用于转储 LSA 数据的命令和一个用于转储 SAM 数据库内容的命令。
与之前一样,你必须以管理员或系统用户身份运行 Mimikatz,并使用命令获取调试权限privilege::debug。完成此操作后,你可以通过执行转储 LSA 数据lsadump::lsa /inject。
向下滚动输出,您可以看到该命令会转储最近登录的用户(如StationX-user)和未将其登录凭据存储在 LSASS 内存中的用户(如)的 NTLM 哈希StationX-admin。
您可以在传递哈希 (pass-the-hash) 或超越哈希 (overpass-the-hash) Mimikatz 攻击中使用这些密码哈希。
该/inject选项在工作站上执行时将转储 NTLM 密码哈希。如果在域控制器上执行,它将转储 NTLM、Wdigest、Kerberos 密钥和密码历史记录。
要转储 SAM 数据库中存储的凭据,您必须先将您的权限从管理员提升到系统。这可以通过运行命令来完成token::elevate。
获得系统权限后,运行命令lsadump::sam。
在这里,您可以获得系统上所有用户的相同 NTLM 哈希,无论他们的加密登录数据是否仍存储在内存中。
您选择转储本地凭证的方法将取决于您可以达到的访问级别、操作安全问题以及您想要窃取的凭证数据类型。
提取和使用 Kerberos 票证
如今,窃取 NTLM 哈希通常不足以绕过企业网络。
现代 Windows 环境已采用 Kerberos 身份验证协议,为 Active Directory 网络提供更强大的安全性。
Kerberos 是一种基于票证的身份验证协议,它利用 Windows 功能并使用密钥分发中心 (KDC) 向使用这些票证访问网络资源的客户端(工作站)颁发票证。KDC 将向客户端颁发两种类型的票证:
-
票证授予票证(TGT) 用于验证用户的身份(他们是谁)。
-
票证授予服务(TGS) 票证用于验证用户的权限(他们可以访问的内容)。
您可以从受感染的机器中提取这些票证,以另一个用户的身份进行身份验证并访问他们有权访问的资源。
有关 Kerberos 的深入指南以及如何攻击它,请参阅如何执行 Kerberoasting 攻击:终极指南。https://www.stationx.net/how-to-perform-kerberoasting-attacks/
要从您登录的机器提取 Kerberos 票证,您必须以管理员身份运行 Mimikatz 并使用命令获取调试权限privilege::debug。
一旦设置完成,您就可以执行sekurlsa::tickets列出所有最近经过身份验证的用户的所有可用 Kerberos 票证(Kerberos 票证存储在内存中)。
此命令有很多输出。要导出这些票证以供使用,请将/export选项附加到命令中。
票证被导出到.kirbi以用户的本地唯一标识符 (LUID) 和组号 (0 = TGS、1 = 客户端票证和 2 = TGT) 开头的文件中。
提取另一个用户的 Kerberos 票证后,您可以使用它以该用户的身份进行身份验证并访问他们有权访问的网络资源。让我们来看看您可以这样做的几种方法。
在提取 Kerberos 票证时,找出哪些票证可以让你访问哪些资源很有用。Bloodhound 是一个很好的工具。它可以执行 Active Directory 侦察并绘制出你可以使用窃取的票证跟踪的攻击路径。
创建黄金票证
使用您提取的 Kerberos 票证的一种方法是创建黄金票证。黄金票证是使用域 KDC 服务帐户 (KRBTGT) 的 NTLM 密码哈希对其进行签名和加密的 TGT。
它们允许您模拟域中的任何用户并为您提供对每个资源的访问权限。
要使用 Mimikatz 生成黄金票证,您必须指定几个强制性信息:
-
域名/domain
-
域的安全标识符 (SID)/sid
-
您想要模仿的用户名/user;这不必是真正的域用户。
-
KRBTGT 帐户的 NTLM 密码哈希/krbtgt
-
保存黄金票证的位置;如果你想将伪造的票证注入内存以供立即使用,/ticket你可以使用它/ptt
您应该能够从前一个lsadump::lsa /inject /user:krbtgt命令中获取所有这些信息。
一旦收集了所有这些数据,您就可以将其附加到命令中kerberos::golden以生成黄金票。
在这里你可以看到新的 Kerberos 票证被注入到这个 Mimikatz 会话中。这允许你对当前域中甚至跨域的任何资源进行身份验证。
该kerberos::list命令显示您在当前会话中拥有的所有 Kerberos 票证,类似于klist终端命令。
传递哈希(PtH)技术
如果您无法访问 KRBTGT 帐户,则可以使用 Mimikatz 的传递哈希攻击进行横向移动。
这需要系统级权限、您想要模拟的帐户的 NTLM 密码哈希以及为您尝试访问的服务器或服务启用的 NTLM 身份验证。
阅读传递哈希攻击:如何让网络攻击变得容易:https://www.stationx.net/pass-the-hash-attack/以了解更多详细信息。
要在 Mimikatz 中执行传递哈希攻击,首先使用以下命令转储用户的 NTLM 哈希sekurlsa::logonpasswords。
接下来,收集要在传递哈希攻击中使用的用户名/user、域/domain和密码哈希。收集后,使用命令执行攻击。/ntlmsekurlsa::pth
默认情况下,这将以管理员用户身份启动命令提示符,并将模拟的凭据信息注入此过程,允许您模拟该用户并访问他们有权访问的资源。
从上面的截图可以看出,StationX-admin用户没有权限读取secrets网络文件夹。但用户StationX-user可以。模拟此用户可让我们获得访问权限,如左下角生成的命令提示符所示。
如果您通过 C2 代理执行 Mimikatz 并想要使用该选项自定义自动运行的命令,则这是一个有用的选项/run。
但是,如果你不想自动运行命令,请将选项添加/impersonate到命令中。这将在你当前的 Mimikatz 会话中创建一个模拟该用户的令牌。
在安全强化的环境中,NTLM 身份验证将被关闭,资源将强制执行 Kerberos 身份验证。这就是哈希传递攻击的由来。
过度传递哈希(传递密钥)攻击
过度传递哈希攻击涉及提取目标用户的 Kerberos 身份验证票证并将其注入到您的会话中。这允许您冒充目标用户并访问他们有权访问的资源。
执行过度传递哈希攻击很简单。
首先,使用命令提取受感染机器上的 Kerberos 票证sekurlsa::tickets /export,如前所述。然后使用命令,kerberos::ptt后跟要模拟的用户票证的名称。
这会将 Kerberos 票证注入(或传递)到您当前的会话中。现在,您可以使用命令misc::cmd(1) 从此 Mimikatz 进程生成一个终端,并通过运行 (2) 确认您已准备好使用 Kerberos 令牌klist。
在这里,您可以看到的令牌StationX-user已被盗,允许您访问该用户有权访问的资源(3)。
如果 Mimikatzkerberos::ptt命令没有按预期工作,你可能需要尝试另一个 Kerberos 票证提取工具,如ticketer.py或Rubeus。有关更多信息,请查看此 GitHub 线程。
结论
Mimikatz 是一个非常强大的工具。
您已经了解了它如何提取加密密码、转储凭据以及如何用于传递哈希和过度传递哈希等攻击。
它能够攻击 NTLM 和 Kerberos 等 Windows 身份验证协议,这使得它长期以来成为渗透测试和红队行业的主要产品。
常见问题
传递哈希 (pass-the-hash) 和过度传递哈希 (over-pass-the-hash) 之间有什么区别?
传递哈希和过度传递哈希是使用窃取的凭据进行横向移动的两种不同技术。在传递哈希攻击中,攻击者使用受感染用户密码的 NTLM 哈希来验证远程服务。同时,在过度传递哈希攻击(传递密钥)中,攻击者使用 NTLM 哈希来获取用于访问网络资源的 Kerberos 票证。
原文始发于微信公众号(Ots安全):2024 年如何使用 Mimikatz 进行黑客攻击:权威指南
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论