配置 Additional LSA Protection 监控 Password Filter DLL

发布于 2025-01-22 07:17:16 字数 4569 浏览 1 评论 0

0x00 前言

针对文章 《Password Filter DLL 在渗透测试中的应用》 中 wyzzoo 的回复,提醒注意高版本系统上考虑的问题,地址如下:https://github.com/3gstudent/feedback/issues/13

于是我对这部分内容进行研究,整理成文

0x01 简介

本文将要介绍以下内容:

  • 如何配置额外的 LSA 保护
  • 如何获得监控结果
  • 补充一个 Password Filter DLL 的利用思路
  • 利用 Additional LSA Protection 的检测效果

0x02 配置额外的 LSA 保护

参考官方文档:https://docs.microsoft.com/en-us/windows-server/security/credentials-protection-and-management/configuring-additional-lsa-protection

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,如下图

Alt text

通过命令行查询日志 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]"

如下图

Alt text

补充:删除日志 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 ,如下图

Alt text

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,具体属性存在差别,如下图

Alt text

5、检测

Event 3066 成功检测,如下图

Alt text

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

战皆罪

暂无简介

文章
评论
25 人气
更多

推荐作者

白云不回头

文章 0 评论 0

糖粟与秋泊

文章 0 评论 0

洋豆豆

文章 0 评论 0

泛滥成性

文章 0 评论 0

mb_2YvjCLvt

文章 0 评论 0

夜光

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文