配置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
注册表配置
-
注册表位置:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe -
新建DWORD项:
- 名称:
AuditLevel - 值:
00000008
- 名称:
-
命令行配置方式:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe" /v "AuditLevel" /t REG_DWORD /d "00000008" /f -
重启系统使配置生效
0x03 监控结果分析
相关事件日志
系统会记录以下两种事件:
-
Event 3065:
- 记录代码完整性检查发现进程(通常是lsass.exe)试图加载不符合共享段安全要求的驱动程序
- 但由于系统策略设置,仍允许加载
-
Event 3066:
- 记录代码完整性检查发现进程试图加载不符合Microsoft签名级别要求的驱动程序
- 但由于系统策略设置,仍允许加载
日志位置
Applications and Services Logs\Microsoft\Windows\CodeIntegrity
命令行查询方法
-
获取日志分类列表:
wevtutil el >1.txt -
查找CodeIntegrity对应的日志名称:
Microsoft-Windows-CodeIntegrity/Operational -
查询特定事件:
wevtutil qe Microsoft-Windows-CodeIntegrity/Operational /rd:true /f:text /q:"*[system/eventid=3065 and 3066]" -
清除日志:
wevtutil cl "Microsoft-Windows-CodeIntegrity/Operational"
0x04 Password Filter DLL利用技术
Long UNC文件名欺骗技术
这是一种绕过检测的方法,具体步骤如下:
-
准备DLL文件:
- 将恶意DLL命名为Long UNC文件名格式
- 保存在
%windir%\system32\目录下 - 示例命令:
注意:文件名末尾有一个空格type Win32Project3.dll > "\\?\C:\windows\system32\scecli.dll "
-
获取短文件名:
dir /x scecli*.dll通常会得到类似
SCECLI~1.DLL的短文件名 -
修改注册表:
- 读取当前配置:
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
- 读取当前配置:
-
重启系统:
- 使用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目录下的异常文件保持警惕,特别是使用特殊命名技术的文件