Unquoted Service Path

Windows 시스템에서 서비스를 실행할 때 절대 경로에 공백이 포함되었지만 따옴표로 감싸져있지 않을 경우, 시스템이 해석하는 방식에 결함이 있어 서비스 바이너리를 가로채어 실행할 수 있습니다.

Abuse

Root Cause

C:\Users\Mick3y\Desktop\My Service\Daily Update\update.exe 와 같이 공백이 포함된 따옴표로 감싸지지 않은 서비스의 바이너리 절대 경로가 있다고 가정할 때, Windows는 공백을 발견하면 그것이 바이너리의 구분점이라 생각하여 다음과 같은 실행 파일을 찾습니다.

  • C:\Users\Mick3y\Desktop\My.exe

  • C:\Users\Mick3y\Desktop\My Service\Daily.exe

  • C:\Users\Mick3y\Desktop\My Service\Daily Update\update.exe

공백의 디렉토리 경로를 실행 파일로 해석하는 과정에서 공격자가 상위 디렉토리인 Desktop, My Service 등에 쓰기 권한이 있다면 My.exe, Daily.exe 등의 실행 파일을 올려 서비스 바이너리 하이재킹이 가능합니다.

circle-info

기본적으로 표준 사용자는 서비스를 중지하거나 시작할 수 없으므로 일반적으로 컴퓨터를 재부팅해야 합니다.

References

Last updated