配置 Additional LSA Protection 监控 Password Filter DLL
0x00 前言
针对文章 《Password Filter DLL 在渗透测试中的应用》 中 wyzzoo 的回复,提醒注意高版本系统上考虑的问题,地址如下:https://github.com/3gstudent/feedback/issues/13
于是我对这部分内容进行研究,整理成文
0x01 简介
本文将要介绍以下内容:
- 如何配置额外的 LSA 保护
- 如何获得监控结果
- 补充一个 Password Filter DLL 的利用思路
- 利用 Additional LSA Protection 的检测效果
0x02 配置额外的 LSA 保护
Windows8.1 系统开始,为 LSA 提供了额外的保护,以防止由未受保护的进程读取内存和代码注入
保护方法:
要求加载到 LSA 的任何插件都使用 Microsoft 签名进行数字签名,具体的说,数字签名指的是 catalog 签名,签名需要满足 WHQL 认证
参考资料:https://docs.microsoft.com/zh-cn/windows-hardware/drivers/install/whql-release-signature
测试系统: Win8.1 x64
配置方法:
1、操作系统需要满足条件:
Win8.1 或者更新的系统
2、修改注册表
注册表位置 HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe
,新建 DWORD 项 AuditLevel
,值为 00000008
对应 cmd 命令如下:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe" /v "AuditLevel" /t REG_DWORD /d "00000008" /f
3、重启系统
0x03 获得监控结果
查看日志 Event 3065 和 Event 3066
Event 3065:此事件记录代码完整性检查确定进程(通常是 lsass.exe)试图加载不符合共享段的安全要求的特定驱动程序。但是,由于设置了系统策略,图像被允许加载。
Event 3066:此事件记录代码完整性检查确定进程(通常是 lsass.exe)试图加载不符合 Microsoft 签名级别要求的特定驱动程序。但是,由于设置了系统策略,图像被允许加载。
位置: Applications and Services Logs\Microsoft\Windows\CodeIntegrity
能够记录不符合条件的 dll,但并未阻止加载 dll,如下图
通过命令行查询日志 Event 3065 和 Event 3066:
获取日志分类列表:
wevtutil el >1.txt
找到 CodeIntegrity
对应的为 Microsoft-Windows-CodeIntegrity/Operational
查找 Event 3065 和 Event 3066:
wevtutil qe Microsoft-Windows-CodeIntegrity/Operational /rd:true /f:text /q:"*[system/eventid=3065 and 3066]"
如下图
补充:删除日志 CodeIntegrity:
wevtutil cl "Microsoft-Windows-CodeIntegrity/Operational"
0x04 补充一个 Password Filter DLL 的利用思路——利用 Long UNC 文件名欺骗实现 DLL 的 隐藏
具体隐藏细节可参考文章 《Catalog 签名伪造——Long UNC 文件名欺骗》
1、将 dll 命名为 Long UNC 文件名格式,保存在 %windir%\system32\
下
lsass.exe 进程默认加载 scecli.dll,所以选择将 dll 伪装成 scecli.dll
命令行:
type Win32Project3.dll > "\\?\C:\windows\system32\scecli.dll "
注:scecli.dll 名称后面有一个空格
2、获得该 dll 的短文件名
命令行:
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 进程加载的 dll
显示加载两个同样的 scecli.dll,具体属性存在差别,如下图
5、检测
Event 3066 成功检测,如下图
0x05 补充
1、为 Password Filter DLL 添加一个伪造的微软 Authenticode 签名,并且修改证书验证机制使其生效,仍无法绕过 Additional LSA Protection 的监控,因为 Password Filter DLL 需要合法的 catalog 签名,而不是 Authenticode 签名
2、自己为 Password Filter DLL 制作一个 catalog 签名并将其添加到系统的安全编录数据库中,仍无法绕过 Additional LSA Protection 的监控
0x06 小结
本文介绍了配置 Additional LSA Protection 监控 Password Filter DLL 的方法和检测效果,如果 Password Filter DLL 未获得合法的 catalog 签名,系统能绕成功检测,但默认不会阻止加载。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: 渗透技巧——通过 SAM 数据库获得本地用户 hash
下一篇: Covenant 利用分析
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论