[하루한줄] PsExec 0-day LPE non-official patch

URL

LPE 0day in PsExec

Target

Windows xp ~ Windows 10

PsExec v1.72

PsExec v2.2

Explain

PsExec를 사용하는 시스템에서 System 권한을 획득할 수 있는 전형적인 named pipe hijacking 취약점이 패치되었습니다. 해커는 PsExec가 기존에 존재하는 named pipe를 재사용할 때 권한 설정을 변경하지 않는다는 점을 악용해 System권한을 갖는 named pipe를 사용할 수 있게 되고 System 권한으로 임의의 프로세스를 생성할 수 있습니다.

0Patch는 이 취약점에 대한 패치를 공개하고 무료로 배포하고 있습니다. PsExec 서비스는 원격 request를 받아 처리하는 thread를 생성할 때 CreateNamedPipe()를 호출합니다. 0Patch가 공개한 패치에선 CreateNamedPipe()가 호출되기 전 FILE_FLAG_FIRST_PIPE_INSTANCE 플레그 값을 사용해 CreateNamedPipe()를 한 번 더 호출하는 것으로 동일한 이름의 named pipe가 존재하는지 확인합니다. 만약 동일한 이름의 named pipe가 이미 존재하면 Psexesvc.exe를 종료합니다.

Reference

https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

https://github.com/tenable/poc/blob/master/Microsoft/Sysinternals/PsExecEscalate.cpp