总述

本章描写了 域认证 的 相关专项专业解答。

🖥️ 1. Winlogon.exe: 属于 Windows 的 用户交互登录进程。
    主要职责:
        提供交互式登录界面(传统的 Ctrl+Alt+Del 登录安全序列)。
        调用 GINA(Graphical Identification and Authentication,Windows XP 以前) 或 Credential Providers(Vista+) 采集用户凭据(用户名/密码/智能卡)。
        将收集到的凭据交给 LSASS.exe 进行进一步处理和验证。
        🚩 关键点:Winlogon 本身不负责验证,只是“把用户输入的东西交给认证子系统”。


🔐 2. LSASS.exe(Local Security Authority Subsystem Service): 这是认证的“大脑”。
    进程位置:C:\Windows\System32\lsass.exe
    主要职责:
        1. 身份认证:
            处理本地登录(本地账户验证,读取 SAM 数据库)。
            处理域登录(与域控交互,Kerberos / NTLM)。
        2. 维持安全策略:
            本地安全策略(如密码长度、登录失败次数)。
            审计策略(记录安全日志)。
        3. 凭据管理:
            将用户的 Hash、明文密码(历史上 WDigest)、Kerberos 票据等保存在内存中,供系统和后续网络认证使用。
            这也是为什么提权到 SYSTEM 后能在 LSASS 内存里抓到敏感凭据(Mimikatz / sekurlsa)。
        4. 票据和密钥管理:
            与 Kerberos KDC 通信,保存 TGT/TGS 票据。
            NTLM 的会话密钥。


🔄 3. 两者关系(粗略流程)
    1. 用户按 Ctrl+Alt+Del → winlogon.exe 调用 Credential Provider → 弹出登录界面。
    2. 用户输入账户/密码 → winlogon.exe 把凭据交给 lsass.exe。
    3. lsass.exe 根据登录类型进行验证:
        - 本地账户:读取本机 SAM 数据库。
        - 域账户:通过 Kerberos/NTLM 与域控通信。
    4. 验证成功 → LSASS 创建访问令牌(Access Token),交还给 Winlogon → 用户登录桌面。
    5. 登录后,凭据(Hash/票据等)会被继续保存在 **LSASS 内存**中,供后续使用。


📌 总结
    Winlogon.exe:前台交互输入层(收集凭据 → 交给后台)。
    
    LSASS.exe:后台安全子系统(验证凭据 + 管理凭据 + 维护安全策略)。
    凭据只会常驻在 LSASS 内存里,所以攻击者提到的 sekurlsa::logonpasswords 就是直接读 LSASS 的内存。

⚠️ 一旦主机重启,LSASS 内存清空 → 凭据消失 → 必须重新登录才能重新生成。

![[Pasted image 20250818181921.png]]

logonpasswords

🔑 1. 本地管理员 vs. 域信息

  • 如果一台机器只是域成员机(不是域控 DC),本地管理员是看不到域内用户账号数据库的(因为那存在于域控的 NTDS.dit 数据库里)。
  • 所以本地管理员无法直接通过 hashdump 获取域用户的 NTLM Hashhashdump 在本机只能导出本地 SAM 数据库里的本地账号密码 Hash。

🔑 2. SYSTEM 权限与凭据抓取

  • 当你提权到 SYSTEM 权限后,可以访问 LSASS 进程(Local Security Authority Subsystem Service)的内存。
  • LSASS是 Windows 里负责处理认证、票据、SSPI 的进程,它会缓存所有已经登录过的会话凭据。
  • mimikatz sekurlsa::logonpasswords 或 sekurlsa::minidump 等命令,本质就是去读取 LSASS 内存,解析其中的结构(MSV、Kerberos、Wdigest、CredMan 等)。

所以你理解的对:
logonpasswords 是通过读取 LSASS 进程内存获取凭据的,不是通过 logon.exe
winlogon.exe 在用户交互登录时会参与认证流程,但凭据最终交由 LSASS 管理)


🔑 3. 能拿到什么凭据

通过内存抓取你可能得到:

  • NTLM Hash(散列值):来自 MSV1_0 模块,用于 NTLM 认证。
  • 明文密码(如果开启了 Wdigest 明文存储 / 或者用户刚输入过密码)。
  • Kerberos Ticket (TGT / TGS):域账户通过 Kerberos 登录后,票据也会被 LSASS 保留。
  • 凭据缓存(CredMan):保存某些网络连接时的缓存账号密码。

🔑 4. 什么时候能抓到

  • 只要有域用户曾经登录过这台机器,LSASS 里就可能保留它的凭据(Hash / 票据 / 明文)。
  • 如果主机 重启,LSASS 的内存会清空,凭据缓存就会消失(新的登录才会再次生成新的数据
文章作者: QiaoShen
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 QiaoShen-World
红队实践
喜欢就支持一下吧