[하루한줄] Windows: CreateProcessWithLogon Write Restricted Service EoP

URL

Target

  • Windows

Explain

Windows Vista 이후로 Windows Service Hardening이라는 미티게이션이 추가되었었습니다. 이 미티게이션의 기능 중 하나가 Write Restrict token인데, 이는 해당 토큰을 가진 프로세서에서는 다른 리소스에 쓰기가 제한되는 미티게이션입니다. 현재 Windows 10에서는 대략 10개의 서비스에 해당 미티게이션이 적용되어 있다고 합니다.

James Forshaw가 이번에 찾은 취약점(비록 마이크로소프트가 취약점이라고 인정하진 않았지만…)은 이 미티게이션을 우회할 수 있습니다. Write Restriction이 걸린 서비스 프로세스에서 CreateProcessWithLogon 함수에 LOGON_NERCREDENTIALS_ONLY 플래그를 세팅하고 호출할 시 Write Restriction이 적용되지 않은 새로운 프로세스를 실행할 수 있습니다. 새로운 프로세스는 Write Restriction이 걸려있지 않을 뿐 아니라 INTERACTIVE 그룹 SID가 추가됩니다. 또한 이 취약점은 LOCAL SERVICE, NETWORK SERVICE 또는 Virtual Service Account 계정에서도 트리거가 가능하며 SeImpersonatePrivilegeSeAssignPrimaryTokenPrivilege 같은 권한이 필요하지도 않습니다.