
무기화된 CobaltStrike BOF for CVE-2023-36874 Windows Error Reporting LPE
이것은 Filip Dragovic(@filip_dragovic)의 CVE-2023-36874 Windows 오류 보고 LPE 익스플로잇을 구현한 성숙하고 작동 가능한 CobaltStrike BOF입니다. 그는 취약한 DLL을 리버싱하고 이 익스플로잇에 중요한 문서화되지 않은 COM 구조체를 만들어 작업 익스플로잇을 만드는 데 큰 기여를 했습니다.
이 BOF는 사용자가 지정한 EXE를 대상 머신의 디스크에 드롭한 후 취약점을 트리거하여 EXE가 SYSTEM에 의해 실행되도록 합니다.
Microsoft는 이 취약점 공개에 대해 Google의 위협 분석 그룹(Threat Analysis Group)에 공을 돌렸지만, 저는 CrowdStrike의 발표된 연구를 통해 알게 되었습니다.
이 블로그 게시물에는 이 익스플로잇과 관련된 여러 가지 아티팩트가 나열되어 있습니다. 아티팩트의 명명 규칙(8.exe, 2016.exe, 2019.exe, 10new+11.exe 등)과 Microsoft가 Server 2008까지 거슬러 올라가 패치를 출시했다는 사실을 통해 이 취약점이 상당히 많은 Windows 버전에 영향을 미친다는 것을 추론할 수 있습니다.
이 BOF는 Windows 10 및 Windows 11 21H1~22H2에서만 작동합니다. 20H1/H2에서도 작동할 수 있지만 테스트할 머신이 없습니다. 이전 Windows 버전에서는 이 익스플로잇이 실행 중인 프로세스를 충돌시킵니다. 아마도 wercplsupport.dll COM 관련 구조의 차이 때문일 것이며 추가 작업으로 극복할 수 있을 것 같지만, 이전 Windows 버전에는 다른 많은 익스플로잇이 있으므로 지금은 그 작업을 다른 사람에게 맡기겠습니다.
CobaltStrike에서 wer_lpe.cna를 로드하면 wer_lpe 명령이 나타납니다.
업로드하려는 EXE의 경로를 제공하고, 선택적으로 현재 낮은 권한 사용자가 쓰기 권한이 있는 디렉터리를 지정합니다. 디렉터리를 지정하지 않으면 wer_lpe는 Beacon의 현재 디렉터리에 쓰기를 시도합니다.


OPSEC 유지 및 정적 시그니처 회피 시도, 그리고 익스플로잇 후 자동 정리를 위해 원래 POC에 몇 가지 추가 기능이 추가되었습니다.
익스플로잇의 일환으로 C:\ProgramData\Microsoft\Windows\WER\ReportArchive 디렉터리에 새 폴더를 만들어야 합니다. 이 폴더는 익스플로잇 체인의 일부로 디스크에 드롭되어야 하는 Report.wer 파일을 보관합니다. Filip의 원래 익스플로잇은 "MyFolder"라는 디렉터리를 만듭니다. ReportArchive 디렉터리에 포함된 실제 폴더/보고서를 살펴보면 낮은 수준의 탐지를 더 잘 피할 수 있는 명명 규칙에 대한 더 나은 아이디어를 얻을 수 있습니다.

BOF에는 머신의 ReportArchive 디렉터리에서 발견된 두 개의 실제 폴더 스텁이 포함되어 있습니다(하나는 주석 처리됨). 런타임에 wer_lpe는 GUID를 무작위로 생성하여 선택한 스텁에 추가하여 Report.wer 파일을 생성할 그럴듯한(그리고 통계적으로 고유한) 폴더를 만듭니다.

report.wer 파일은 이 익스플로잇을 탐지할 수 있는 또 다른 쉬운 정적 지표입니다. 원래 익스플로잇은 Report.wer 파일을 EXE 내의 리소스로 패키징합니다. 이 BOF는 공격 머신의 익스플로잇 디렉터리에서 'Report.wer'를 찾아 읽고 Beacon으로 보내 디스크에 쓰게 합니다. 이를 통해 사용자는 미리 패키징된 Report.wer 파일을 원하는 파일로 교체할 수 있습니다.
익스플로잇 내의 여러 COM 호출은 익스플로잇이 진행되기 위해 임의의 문자열이 필요합니다. 이것들도 런타임에 생성된 무작위 문자열로 대체되었습니다.
이 익스플로잇이 임의의 EXE를 실행하기 때문에, EXE가 지속적으로 실행되도록 하려는 경우(새 Beacon을 실행하도록 하는 경우) EXE가 디스크에서 잠겨 있으므로 정리가 문제가 될 수 있습니다. Wer_lpe는 이 문제를 해결하기 위해 LloydLabs가 만든 자체 삭제를 구현했습니다(계속해서 엄청난 이점을 얻고 있습니다). Wer_lpe는 익스플로잇 과정에서 생성된 모든 파일과 디렉터리를 삭제/정리하고 그 성공/실패에 대한 상태 보고서를 제공합니다.
2023년에 대상 머신에서 서명되지 않은 임의의 EXE를 실행하는 것은 종종 헛된 시도이기 때문에, DLL 사이드로딩 기회를 활용하기 위해 익스플로잇이 실제 wermgr.exe(임의 디렉터리로 복사됨)를 실행하도록 시도해 보았습니다. 익스플로잇의 특성상 이는 불가능합니다. 자세한 내용은 이 Twitter 스레드를 참조하십시오.
이 익스플로잇은 머신에 대한 로컬 관리자 권한이 있는 사용자가 실행하면 실패합니다. 이는 취약한 코드가 (의역하면) "가장 높은 사용 가능한 무결성"으로 사용자를 가장하기 때문입니다. 로컬 관리자인 사용자의 경우 관리자 토큰이 가장되며, 이 토큰은 취약점을 트리거하는 데 필요한 리디렉션이 구현된 중간 무결성 토큰과는 별도의 DOS 장치 맵을 가지고 있습니다. 이 익스플로잇은 UAC 우회를 대체하지 않습니다.
Microsoft는 2023년 7월 11일에 이 취약점에 대한 패치를 거의 모든 생각할 수 있는 OS(사용자가 여전히 실행 중일 수 있는)에 대한 월간 보안 업데이트의 일부로 출시했습니다. 사람들, 시스템에 패치를 적용하세요.
무엇보다도 Filip Dragovic(@filip_dragovic)에게 그의 작동 코드와 이 익스플로잇의 개발 과정에 대해 대화하고 가르쳐 주신 데 대해 엄청난 감사를 전합니다.