Mimikatz Explorer - Kerberos PTT & Purge
字数 1718 2025-08-06 12:21:02

Mimikatz Kerberos PTT & Purge 技术详解

1. 概述

Mimikatz 是一款功能强大的安全工具,其中的 Kerberos 模块提供了票据传递攻击(Pass-the-Ticket, PTT)和票据清除(Purge)功能。这些功能在渗透测试和红队操作中非常有用,能够帮助攻击者在Windows域环境中横向移动。

2. Kerberos::PTT (票据传递)

2.1 功能原理

kerberos::ptt 功能可以将现有的 Kerberos 票据提交到内存中,实现票据传递攻击。其核心是通过 Windows API LsaCallAuthenticationPackage 发送 KERB_SUBMIT_TKT_REQUEST 消息。

2.2 KERB_SUBMIT_TKT_REQUEST 结构

typedef struct _KERB_SUBMIT_TKT_REQUEST {
    KERB_PROTOCOL_MESSAGE_TYPE MessageType;
    LUID LogonId;
    ULONG Flags;
    KERB_CRYPTO_KEY32 Key; // key to decrypt KERB_CRED
    ULONG KerbCredSize;
    ULONG KerbCredOffset;
} KERB_SUBMIT_TKT_REQUEST, *PKERB_SUBMIT_TKT_REQUEST;
  • MessageType: 必须设置为 KerbSubmitTicketMessage
  • Key: 用于解密 Kerberos 凭据(KRB_CRED)的加密密钥
  • KerbCredSize: KRB_CRED 数据的大小(字节)
  • KerbCredOffset: KRB_CRED 数据在整个消息中的偏移量

2.3 实现流程

  1. 票据文件读取:

    • 检查输入参数是否为目录,如果是则查找所有 .kirbi 文件
    • 使用 kull_m_file_readData 读取票据文件内容
  2. 构建请求:

    • 计算请求大小: sizeof(KERB_SUBMIT_TKT_REQUEST) + 票据数据大小
    • 设置 MessageType = KerbSubmitTicketMessage
    • 设置票据数据大小和偏移量
    • 将票据数据追加到请求结构后面
  3. 提交请求:

    • 调用 LsaCallKerberosPackage 发送请求
    • 处理返回状态

2.4 使用示例

mimikatz.exe "kerberos::ptt 4-40850000-Administrator@LDAP~DC01.pentest.com~pentest.com-PENTEST.COM.kirbi" exit

3. Kerberos::Purge (票据清除)

3.1 功能原理

kerberos::purge 用于清除当前会话缓存的 Kerberos 票据,通过发送 KERB_PURGE_TKT_CACHE_REQUEST 消息实现。

3.2 KERB_PURGE_TKT_CACHE_REQUEST 结构

typedef struct _KERB_PURGE_TKT_CACHE_REQUEST {
    KERB_PROTOCOL_MESSAGE_TYPE MessageType;
    LUID LogonId;
    UNICODE_STRING ServerName;
    UNICODE_STRING RealmName;
} KERB_PURGE_TKT_CACHE_REQUEST, *PKERB_PURGE_TKT_CACHE_REQUEST;
  • MessageType: 必须设置为 KerbPurgeTicketCacheMessage
  • LogonId: 登录会话标识符
  • ServerName: 要删除票证的服务名称(设为0长度表示所有服务)
  • RealmName: 要删除票证的领域名称(设为0长度表示所有领域)

3.3 实现流程

  1. 初始化请求:

    • 设置 MessageType = KerbPurgeTicketCacheMessage
    • 将其他成员设为0或NULL,表示删除所有票证
  2. 提交请求:

    • 调用 LsaCallKerberosPackage 发送请求
    • 处理返回状态

3.4 使用示例

mimikatz.exe "kerberos::purge" exit

4. 技术细节

4.1 票据传递的关键点

  1. 需要将 KERB_SUBMIT_TKT_REQUEST 结构扩展以包含票据数据
  2. 票据数据必须正确放置在 KerbCredOffset 指定的位置
  3. 需要 SeTcbPrivilege 权限才能访问其他登录帐户的票证缓存

4.2 票据清除的关键点

  1. ServerNameRealmName 均为0长度时,会删除所有票证
  2. 否则只删除匹配 ServerName@RealmName 的票证

5. 防御措施

  1. 限制特权账户使用: 限制具有 SeTcbPrivilege 权限的账户
  2. 监控异常行为: 监控异常的票据请求和清除操作
  3. 限制票据有效期: 设置较短的票据有效期
  4. 启用高级审计: 启用Kerberos相关的事件日志记录

6. 总结

Mimikatz的Kerberos模块提供了强大的票据操作功能,理解其工作原理对于渗透测试和防御都至关重要。PTT攻击可以绕过密码验证直接使用窃取的票据,而Purge功能可以清除攻击痕迹。防御方应了解这些技术的实现细节,才能有效检测和防御此类攻击。

Mimikatz Kerberos PTT & Purge 技术详解 1. 概述 Mimikatz 是一款功能强大的安全工具,其中的 Kerberos 模块提供了票据传递攻击(Pass-the-Ticket, PTT)和票据清除(Purge)功能。这些功能在渗透测试和红队操作中非常有用,能够帮助攻击者在Windows域环境中横向移动。 2. Kerberos::PTT (票据传递) 2.1 功能原理 kerberos::ptt 功能可以将现有的 Kerberos 票据提交到内存中,实现票据传递攻击。其核心是通过 Windows API LsaCallAuthenticationPackage 发送 KERB_SUBMIT_TKT_REQUEST 消息。 2.2 KERB_ SUBMIT_ TKT_ REQUEST 结构 MessageType : 必须设置为 KerbSubmitTicketMessage Key : 用于解密 Kerberos 凭据(KRB_ CRED)的加密密钥 KerbCredSize : KRB_ CRED 数据的大小(字节) KerbCredOffset : KRB_ CRED 数据在整个消息中的偏移量 2.3 实现流程 票据文件读取 : 检查输入参数是否为目录,如果是则查找所有 .kirbi 文件 使用 kull_m_file_readData 读取票据文件内容 构建请求 : 计算请求大小: sizeof(KERB_SUBMIT_TKT_REQUEST) + 票据数据大小 设置 MessageType = KerbSubmitTicketMessage 设置票据数据大小和偏移量 将票据数据追加到请求结构后面 提交请求 : 调用 LsaCallKerberosPackage 发送请求 处理返回状态 2.4 使用示例 3. Kerberos::Purge (票据清除) 3.1 功能原理 kerberos::purge 用于清除当前会话缓存的 Kerberos 票据,通过发送 KERB_PURGE_TKT_CACHE_REQUEST 消息实现。 3.2 KERB_ PURGE_ TKT_ CACHE_ REQUEST 结构 MessageType : 必须设置为 KerbPurgeTicketCacheMessage LogonId : 登录会话标识符 ServerName : 要删除票证的服务名称(设为0长度表示所有服务) RealmName : 要删除票证的领域名称(设为0长度表示所有领域) 3.3 实现流程 初始化请求 : 设置 MessageType = KerbPurgeTicketCacheMessage 将其他成员设为0或NULL,表示删除所有票证 提交请求 : 调用 LsaCallKerberosPackage 发送请求 处理返回状态 3.4 使用示例 4. 技术细节 4.1 票据传递的关键点 需要将 KERB_SUBMIT_TKT_REQUEST 结构扩展以包含票据数据 票据数据必须正确放置在 KerbCredOffset 指定的位置 需要 SeTcbPrivilege 权限才能访问其他登录帐户的票证缓存 4.2 票据清除的关键点 当 ServerName 和 RealmName 均为0长度时,会删除所有票证 否则只删除匹配 ServerName@RealmName 的票证 5. 防御措施 限制特权账户使用 : 限制具有 SeTcbPrivilege 权限的账户 监控异常行为 : 监控异常的票据请求和清除操作 限制票据有效期 : 设置较短的票据有效期 启用高级审计 : 启用Kerberos相关的事件日志记录 6. 总结 Mimikatz的Kerberos模块提供了强大的票据操作功能,理解其工作原理对于渗透测试和防御都至关重要。PTT攻击可以绕过密码验证直接使用窃取的票据,而Purge功能可以清除攻击痕迹。防御方应了解这些技术的实现细节,才能有效检测和防御此类攻击。