원문 캡처 · zerosalarium.com
원문 캡처 · zerosalarium.com

보안 연구자 Two Seven One Three는 Windows 메시지와 디버거를 이용해 대상 프로세스에 코드를 주입하는 개념 증명 도구 PhantomBuffer를 공개했다. 글은 이 기법이 일부 고급 EDR의 감시를 피했다고 주장하며, 방어 측에는 관련 API 호출과 디버거 실행 경로를 살펴볼 것을 제안한다.

PhantomBuffer는 SendMessageW의 WM_SETTEXT 메시지로 페이로드를 대상 프로세스에 보내고, ReadProcessMemory로 대상 메모리에서 페이로드를 찾은 뒤 실행 권한을 부여한다. 이어 대상 스레드의 실행 위치를 바꾸는 과정에는 Windows 디버거 도구에 포함된 cdb.exe를 활용한다. 이 방식은 페이로드를 기록할 때 널 바이트(0x00)가 두 개 연속된 경우 대상 프로세스에 제대로 쓰이지 않는다는 제한이 있다고 설명한다.

도구 모음에는 적절한 GUI 컨트롤이 있는 프로세스를 찾고, 없으면 지정한 프로세스를 실행할 수 있는 FindTargetWindows와 실제 주입을 수행하는 PhantomBuffer가 포함된다. 연구자는 테스트에서 고급 EDR이 탐지하지 못했다고 주장했지만, 글은 테스트 환경이나 독립 검증 결과를 제시하지 않는다.

방어책으로는 WM_SETTEXT와 함께 사용되는 SendMessage 호출을 감시하고, cdb.exe가 기본 경로가 아닌 곳에서 실행되는지 살펴보는 방법을 제시한다. 글은 일부 EDR이 기본 경로 밖에서 실행되는 cdb.exe를 경고할 수 있다며, 가능한 경우 기본 경로인 C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe에 두는 편이 안전하다고 설명한다.

PhantomBuffer 저장소

데모 영상

이전 연구: WriteProcessMemory 없이 프로세스 주입하기