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-Hash 或 Pass-the-Ticket。
- 在域环境中,你可以利用 KRBTGT 哈希 伪造 黄金票据,实现持久化。
- 为了不被杀软发现,你需要使用 内存加载、免杀 等技巧,同时要注意 事件日志 的清理。