Mimikatz-Windows background knowledge

The Windows background knowledge you need when reading Mimikatz User Manual

Mimikatz-Windows background knowledge

Author: Asterism && Deepseek Date: 2026.3.20

Lastest edited on 2026.3.20


一、认证与凭据相关

1. LSASS(本地安全认证子系统服务)

  • 是什么:Windows 中一个核心进程(lsass.exe),负责处理用户登录、密码验证、以及生成和缓存登录凭据(如密码哈希、Kerberos 票据)。它相当于系统的“安全管家”,所有用户登录后的凭据都会暂存在它的内存中。
  • 为什么重要:Mimikatz 主要就是从这个进程的内存中读取凭据。如果 LSASS 被保护(比如启用 LSA 保护),Mimikatz 就无法直接访问。

2. NTLM 哈希

  • 是什么:Windows 存储用户密码的一种形式。当你设置密码时,系统会通过 NTLM 算法计算出一个固定长度的哈希值,并保存在 SAM 文件或域控的 NTDS.dit 中。登录时,系统会验证这个哈希而不是明文密码。
  • 格式:通常显示为 LM哈希:NTLM哈希,如 aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c。LM 哈希部分在现代 Windows 中基本为空(全是 aad3b...)。冒号后面的 8846... 就是 NTLM 哈希。
  • 作用:Mimikatz 可以抓到这个哈希,然后用它模拟用户登录其他机器(Pass-the-Hash),无需破解明文密码。

3. Kerberos 票据

  • 是什么:在域环境中,Windows 默认使用 Kerberos 协议进行身份验证。用户登录后会获得一个“票据授予票据”(TGT),相当于一个“身份证”,之后访问其他服务时,用 TGT 换取该服务的“服务票据”(ST),然后用 ST 访问服务。
  • TGT(票据授予票据):由域控的 KRBTGT 账户加密,有效期通常为 10 小时。有了 TGT,可以在域内申请任何服务的 ST。
  • ST(服务票据):针对某个特定服务(如文件共享、HTTP)的票据,只能用于该服务。
  • 作用:Mimikatz 可以导出这些票据(.kirbi 文件),然后在另一台机器上导入,冒充原用户访问服务(Pass-the-Ticket)。

4. 域(Domain)

  • 是什么:一组由域控统一管理的计算机和用户的集合,常用于企业网络。域控(Domain Controller)负责用户认证、权限分配等。
  • 为什么重要:很多 Mimikatz 高级功能(黄金票据、白银票据)都是针对域环境的。

5. SID(安全标识符)

  • 是什么:每个用户、组或计算机在 Windows 中的唯一编号,类似于身份证号。例如 S-1-5-21-123456789-1234567890-1234567890-500,其中前几段是“域 SID”(标识这个域),最后一段是“相对标识符”(RID,标识具体对象,500 是管理员)。
  • 作用:在伪造黄金票据时,必须正确提供域 SID,否则票据无效。

6. KRBTGT 账户

  • 是什么:域控中一个特殊的用户账户,密码随机且不可登录。它被用来加密域内所有 Kerberos TGT 票据。KRBTGT 的密码哈希是域中最敏感的信息之一。
  • 作用:如果你获得了 KRBTGT 的哈希,就可以自己伪造任意用户的 TGT(黄金票据),从而在域内畅通无阻。

7. 明文密码 vs 哈希

  • 明文密码:就是用户输入的原始密码,比如 MyP@ssw0rd。某些旧版 Windows 或配置会在内存中缓存明文,Mimikatz 可以抓取。
  • 哈希:密码经过算法计算后的固定长度字符串。获取哈希后可以用它直接认证,无需破解出明文。

二、安全机制与防护

1. LSA 保护(RunAsPPL)

  • 是什么:Windows 的一项安全功能,将 LSASS 进程标记为“受保护进程”(Protected Process Light,PPL),只允许微软签名的代码打开 LSASS 的内存。这直接阻止了 Mimikatz 等第三方工具读取 LSASS。
  • 如何应对:在测试环境中可以临时禁用(修改注册表重启),或者使用离线内存转储的方式绕过(因为转储文件不再受 PPL 保护)。

2. Credential Guard

  • 是什么:基于虚拟化安全的隔离技术,将 LSASS 的一部分放入虚拟化容器中,使得即使内核级攻击也无法读取凭据。在启用 Credential Guard 的系统上,Mimikatz 基本无法直接提取明文密码或 NTLM 哈希(但有时仍能获取一些哈希)。
  • 绕过:离线转储 LSASS 依然有效,因为 Credential Guard 不保护转储文件。也可以寻找未启用该功能的旧系统。

3. AMSI(反恶意软件扫描接口)

  • 是什么:Windows 的一项机制,允许杀毒软件在 PowerShell、VBScript 等脚本执行前扫描其内容,从而拦截恶意脚本。
  • 影响:当你用 PowerShell 加载 Invoke-Mimikatz 时,可能会被 AMSI 拦截。
  • 绕过:可以通过反射加载、内存修改等方式临时禁用 AMSI(需深入研究)。

4. UAC(用户账户控制)

  • 是什么:Windows 的安全机制,即使你是管理员,许多操作仍需二次确认(弹出“是否允许”窗口)。Mimikatz 的许多功能需要管理员权限,但 UAC 可能阻止某些操作。
  • 解决:可以通过各种技术绕过 UAC(如使用计划任务、COM 对象等),但简单起见,在测试中可以直接以管理员身份运行。

5. 事件日志

  • 是什么:Windows 记录系统、安全、应用等事件的日志文件。安全日志会记录登录、权限变更、进程创建等。
  • 风险:Mimikatz 的使用会在安全日志中留下大量痕迹(如进程创建、特权服务调用)。攻击者通常会在最后清除日志(eventlog::clear),但清除操作本身也会被记录。

6. 杀毒软件 / EDR

  • 是什么:安全防护软件,会检测已知恶意软件的行为。Mimikatz 的特征已被所有杀毒软件标记。
  • 应对:使用免杀技术(内存加载、加壳、修改源码等)来躲避检测。

三、系统工具与操作

1. 任务管理器

  • 是什么:Windows 自带的进程管理工具,可以查看、结束进程,也能创建转储文件(右键进程 -> 创建转储文件)。在 Windows 11 中,默认情况下任务管理器可能没有足够权限转储 LSASS,需要以管理员身份运行。

2. Procdump

  • 是什么:微软 Sysinternals 套件中的一个命令行工具,可以转储进程内存。它比任务管理器更灵活,支持多种转储类型和触发条件。
  • 用法procdump -ma lsass.exe output.dmp

3. PowerShell

  • 是什么:Windows 的命令行脚本环境,功能强大。Mimikatz 的免杀版本(如 Invoke-Mimikatz)通常通过 PowerShell 加载。
  • 注意:PowerShell 的日志记录功能(如 Script Block Logging)会记录执行的命令,可能暴露行为。

4. Cobalt Strike

  • 是什么:一款商业化的渗透测试框架,集成了大量攻击模块,包括 Mimikatz 的封装。通过其 Beacon 代理,可以方便地在内存中执行 Mimikatz 而不落地文件。
  • 作用:常用于红队行动,简化了免杀和隐蔽执行。

四、补充概念

1. 内存转储(Dump)

  • 是什么:将某个进程的当前内存内容保存到一个文件中(.dmp)。这个文件包含了该进程使用的所有数据,包括密码、哈希等。之后可以用 Mimikatz 离线分析这个文件,避免在目标机器上直接操作。

2. SAM(安全账户管理器)

  • 是什么:本地用户账户数据库,存储本地用户的密码哈希(NTLM)。位于 C:\Windows\System32\config\SAM,但文件被系统锁定,不能直接复制。Mimikatz 可以读取内存中的 SAM 信息。

3. NTDS.dit

  • 是什么:域控上存储所有域用户账户信息的数据库,包括密码哈希、组信息等。攻击者可以通过 DCSync 或卷影复制等方式导出它。

4. DCSync

  • 是什么:一种技术,利用目录服务的复制权限,请求域控返回指定用户的密码哈希。Mimikatz 的 lsadump::dcsync 就是干这个的,需要域管理员或特定权限。

5. 卷影复制(Volume Shadow Copy)

  • 是什么:Windows 的备份机制,可以创建系统快照。攻击者有时通过卷影复制读取正在使用的系统文件(如 NTDS.dit),从而绕过文件锁。

总结

上述概念共同构成了 Windows 安全体系的基础。当你使用 Mimikatz 时,本质上是在与这些机制打交道:

  • 你要从 LSASS 中抓取凭据,但可能被 LSA 保护Credential Guard 阻止。
  • 你抓到的可能是 NTLM 哈希Kerberos 票据,然后用于 Pass-the-HashPass-the-Ticket
  • 在域环境中,你可以利用 KRBTGT 哈希 伪造 黄金票据,实现持久化。
  • 为了不被杀软发现,你需要使用 内存加载免杀 等技巧,同时要注意 事件日志 的清理。