配置Additional LSA Protection监控Password Filter DLL
字数 1531 2025-08-05 08:35:55

Windows LSA保护与Password Filter DLL监控技术详解

0x00 概述

本文详细讲解如何配置Windows系统的Additional LSA Protection功能来监控Password Filter DLL,以及相关的检测方法和绕过技术。内容基于Windows 8.1及更高版本系统,主要针对LSA(本地安全机构)的额外保护机制。

0x01 LSA额外保护机制

保护原理

从Windows 8.1开始,微软为LSA提供了额外的保护机制:

  • 要求加载到LSA的任何插件都必须使用Microsoft签名进行数字签名
  • 这种签名特指catalog签名,且需要满足WHQL认证
  • 目的是防止未受保护的进程读取内存和代码注入

系统要求

  • Windows 8.1或更新版本操作系统

0x02 配置Additional LSA Protection

注册表配置

  1. 注册表位置:

    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe
    
  2. 新建DWORD项:

    • 名称:AuditLevel
    • 值:00000008
  3. 命令行配置方式:

    REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe" /v "AuditLevel" /t REG_DWORD /d "00000008" /f
    
  4. 重启系统使配置生效

0x03 监控结果分析

相关事件日志

系统会记录以下两种事件:

  1. Event 3065

    • 记录代码完整性检查发现进程(通常是lsass.exe)试图加载不符合共享段安全要求的驱动程序
    • 但由于系统策略设置,仍允许加载
  2. Event 3066

    • 记录代码完整性检查发现进程试图加载不符合Microsoft签名级别要求的驱动程序
    • 但由于系统策略设置,仍允许加载

日志位置

Applications and Services Logs\Microsoft\Windows\CodeIntegrity

命令行查询方法

  1. 获取日志分类列表:

    wevtutil el >1.txt
    
  2. 查找CodeIntegrity对应的日志名称:

    Microsoft-Windows-CodeIntegrity/Operational
    
  3. 查询特定事件:

    wevtutil qe Microsoft-Windows-CodeIntegrity/Operational /rd:true /f:text /q:"*[system/eventid=3065 and 3066]"
    
  4. 清除日志:

    wevtutil cl "Microsoft-Windows-CodeIntegrity/Operational"
    

0x04 Password Filter DLL利用技术

Long UNC文件名欺骗技术

这是一种绕过检测的方法,具体步骤如下:

  1. 准备DLL文件

    • 将恶意DLL命名为Long UNC文件名格式
    • 保存在%windir%\system32\目录下
    • 示例命令:
      type Win32Project3.dll > "\\?\C:\windows\system32\scecli.dll "
      
      注意:文件名末尾有一个空格
  2. 获取短文件名

    dir /x scecli*.dll
    

    通常会得到类似SCECLI~1.DLL的短文件名

  3. 修改注册表

    • 读取当前配置:
      REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "Notification Packages"
      
    • 添加DLL:
      REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v "Notification Packages" /t REG_MULTI_SZ /d "scecli\0SCECLI~1.DLL" /f
      
  4. 重启系统

    • 使用Process Explorer等工具可观察到lsass进程加载了两个scecli.dll
    • 但Event 3066仍能检测到这种欺骗行为

0x05 绕过限制的尝试与结果

  1. 伪造Authenticode签名

    • 为Password Filter DLL添加伪造的微软Authenticode签名
    • 修改证书验证机制使其生效
    • 结果:无法绕过Additional LSA Protection,因为需要的是catalog签名而非Authenticode签名
  2. 自制catalog签名

    • 为Password Filter DLL制作catalog签名
    • 将其添加到系统的安全编录数据库中
    • 结果:仍然无法绕过Additional LSA Protection的监控

0x06 总结

  1. Additional LSA Protection能有效检测未获得合法catalog签名的Password Filter DLL
  2. 系统默认配置下仅记录而不阻止加载不符合要求的DLL
  3. 即使使用Long UNC文件名欺骗等技术,Event 3066仍能检测到异常行为
  4. 伪造签名或自制catalog签名的方法在当前机制下无法有效绕过检测

0x07 防御建议

  1. 在生产环境中启用Additional LSA Protection
  2. 定期检查CodeIntegrity日志中的3065和3066事件
  3. 监控注册表中LSA相关键值的变更
  4. 对system32目录下的异常文件保持警惕,特别是使用特殊命名技术的文件
Windows LSA保护与Password Filter DLL监控技术详解 0x00 概述 本文详细讲解如何配置Windows系统的Additional LSA Protection功能来监控Password Filter DLL,以及相关的检测方法和绕过技术。内容基于Windows 8.1及更高版本系统,主要针对LSA(本地安全机构)的额外保护机制。 0x01 LSA额外保护机制 保护原理 从Windows 8.1开始,微软为LSA提供了额外的保护机制: 要求加载到LSA的任何插件都必须使用Microsoft签名进行数字签名 这种签名特指catalog签名,且需要满足WHQL认证 目的是防止未受保护的进程读取内存和代码注入 系统要求 Windows 8.1或更新版本操作系统 0x02 配置Additional LSA Protection 注册表配置 注册表位置: 新建DWORD项: 名称: AuditLevel 值: 00000008 命令行配置方式: 重启系统使配置生效 0x03 监控结果分析 相关事件日志 系统会记录以下两种事件: Event 3065 : 记录代码完整性检查发现进程(通常是lsass.exe)试图加载不符合共享段安全要求的驱动程序 但由于系统策略设置,仍允许加载 Event 3066 : 记录代码完整性检查发现进程试图加载不符合Microsoft签名级别要求的驱动程序 但由于系统策略设置,仍允许加载 日志位置 命令行查询方法 获取日志分类列表: 查找CodeIntegrity对应的日志名称: 查询特定事件: 清除日志: 0x04 Password Filter DLL利用技术 Long UNC文件名欺骗技术 这是一种绕过检测的方法,具体步骤如下: 准备DLL文件 : 将恶意DLL命名为Long UNC文件名格式 保存在 %windir%\system32\ 目录下 示例命令: 注意:文件名末尾有一个空格 获取短文件名 : 通常会得到类似 SCECLI~1.DLL 的短文件名 修改注册表 : 读取当前配置: 添加DLL: 重启系统 : 使用Process Explorer等工具可观察到lsass进程加载了两个scecli.dll 但Event 3066仍能检测到这种欺骗行为 0x05 绕过限制的尝试与结果 伪造Authenticode签名 : 为Password Filter DLL添加伪造的微软Authenticode签名 修改证书验证机制使其生效 结果 :无法绕过Additional LSA Protection,因为需要的是catalog签名而非Authenticode签名 自制catalog签名 : 为Password Filter DLL制作catalog签名 将其添加到系统的安全编录数据库中 结果 :仍然无法绕过Additional LSA Protection的监控 0x06 总结 Additional LSA Protection能有效检测未获得合法catalog签名的Password Filter DLL 系统默认配置下仅记录而不阻止加载不符合要求的DLL 即使使用Long UNC文件名欺骗等技术,Event 3066仍能检测到异常行为 伪造签名或自制catalog签名的方法在当前机制下无法有效绕过检测 0x07 防御建议 在生产环境中启用Additional LSA Protection 定期检查CodeIntegrity日志中的3065和3066事件 监控注册表中LSA相关键值的变更 对system32目录下的异常文件保持警惕,特别是使用特殊命名技术的文件