Session 0 Isolation 적용 전과 후

Windows XP, 2003 이하의 운영체제의 경우 처음으로 로그인하는 사용자의 user-mode 애플리케이션과 함께 서비스들이 모두 세션 0에서 실행되었다. 그 중에는 상승된 권한으로 실행되는 서비스들도 존재하였고 이 서비스들은 권한 상승을 노리는 공격자들의 타겟이 되었다.

 

이러한 문제를 해결하고자,그리고 세션 0에서 실행되는 서비스들은 상호작용 대상에서 제외시켰다. 이로 인해 더이상 서비스들은 다른 세션에서 실행되는 사용자 애플리케이션과 상호작용 할 수 없게 되었으며, 동시에 사용자 애플리케이션에 포함된 악성 코드로부터 보호되었다. 모든 서비스들과 user-mode 드라이버들은 세션 0에서 실행되도록 분리시키고, 사용자 세션은 세션 1 이후의 세션에서 실행되도록 하였다.

 

 

적용 대상

  • Windows Kernel 6 이상이 탑재되는 Windows 7 이후 운영체제부터 적용

 

영향

  • Session 0에서 실행되는 서비스가 UI와 같은 상호작용 기능을 수행할 경우, 서비스는 사용자의 Windows 세션과 다른 세션에서 독립적으로 실행되고 있기 때문에 정상적으로 서비스의 동작을 확인할 수 없다.
  • Window 메세지 기능을 이용하여 서비스와 애플리케이션 간의 통신을 수행하는 경우, 서비스와 애플리케이션이 서로 다른 메세지 큐를 갖게 되어 정상적으로 메세지 전달이 안된다.

 

Mitigation

  • Windows Vista에 내장된 mitigation을 사용할 경우,
    특수 desktop 내에서 세션 0과 사용자 간의 상호작용 가능
  • Windows XP compatibility mode를 사용할 경우,
    전역으로 생성된 오브젝트를 이용해 세션 0에서 실행되는 서비스와 사용자 애플리케이션 간의 작업 수행

 

해결 방안

  • Client - Server 모델을 적용하여 RPC나 명명된 파이프를 사용해서 서비스와 애플리케이션 간 통신하기
  • CreateProcessAsUser API를 사용하여 사용자의 세션에서 프로세스를 생성하고 상호작용 하기
  • 간단한 메세지 박스의 경우 WTSSendMessage API를 사용하여 사용자 세션에 알림 전달하기
  • 오브젝트에 명시적으로 Local\이나 Global\ 네임스페이스를 적용하여 서비스에서 사용할 수 있도록 하기

 


참고자료

  • 리버싱 핵심원리 42장
  • microsoft.com 웹페이지 본문
 

Application Compatibility - Session 0 Isolation

First published on TECHNET on Apr 27, 2007 In Windows XP, Windows Server 2003, and earlier versions of the Windows operating system, all services run in the..

techcommunity.microsoft.com

 

Interacting with Services

Table of contents Interacting with Services Article 09/14/2005 In this article --> In the comments for my first services post, someone asked about the SERVICE_INTERACTIVE_PROCESS flag that can be specified for the CreateService API. This flag allows the us

learn.microsoft.com

 

'OS' 카테고리의 다른 글

[Windows] Process 생성 및 종료 과정  (0) 2023.12.28
[Windows] Kernel Object  (0) 2023.12.27

+ Recent posts