IT 그리고 정보보안/Knowledge base

윈도우 로그인 관리자 (Winlogon.exe)

plummmm 2021. 4. 13. 06:54
반응형

이번에는 윈도우 로그인 관리자인 Winlogon.exe 에 대해 공부해보겠음.

 

오늘 배울 과정에 대한 그림 설명을 잠시 하자면,

 

윈도우 비스타 이전 : Winlogon.exe가 Lsass.exe와 Services.exe 를 실행시킴.

윈도우 비스타 이후 : Winlogon.exe와 Wininit.exe가 함께 실행되고, Wininit.exe가 Lsass.exe와 Services.exe를 실행시킨다.

 

Lsass.exe ( Local Security Authority Subsystem Service )는 부팅시 보안 인증을 담당하고 LSA 라고도 부른다.

Services.exe ( Service Control Manager )는 서비스를 관리하고, SCM 이라고도 부른다.

 

Winlogon 은 또한 유저 로그인 동작을 수행하는 GINA ( Graphical Identification and Authentication )를 호출하고

로그온, 로그오프 관련 작업에 관여한다.

 

대기할 때 항시 SAS(Secure Attention Sequence : Alt + Ctrl + Del)키 입력을 감시하다가

SAS키 입력이 들어오면 GINA를 불러와 사용자가 로그온 작업을 할 수 있도록한다.

 

그리고 컴퓨터 잠금과 해제, 스마트카드,PIN 같은 추가적인 자격 증명 제공한다.

이와 관련된 DLL은

%SystemRoot%\System32\authui.dll (여길 수정하면 로그온 테마 변경 가능)

%SystemRoot%\System32\SmartcardCredentialProvider.dll 이다.

 

이를 GINA와 연결하여 Winlogon.exe과 상호 작용하면서 로그인,인증 UI를 관리한다.

 

그리고 Winlogon은 자격 증명 제공 오류로 부터 자신을 보호하기 위하여 Logonui.exe(자격 증명 제공자)를 이용한다.

이것은 네트워크 제공자 로드, 로그온 인터페이스 노출, Winlogon 종료 방지 등의 기능을 한다.

 

비스타 이전 까지는 Winlogon이 종료되면 시스템 크래쉬가 발생했지만, 

이후로는 Wininit.exe 이친구가 지켜줘서 로그오프만 된다. 대신 얘가 꺼지면 또 꽥..

 

또한 Winlogon은 고유한 SID를 할당하여 데스크톱 인스턴스(키보드, 화면, 마우스)에 배정하게 되고ㅡ

이를 로그온 프로세스 토큰에 포함하여 보안을 담당하는 Lsass에 전달한 후 인증을 통과하면

할당했던 SID를 로그온 프로세스 토큰에 포함해 로그인 인증용도로 사용한다.

 

그냥 쉽게 말해 컴퓨터 잠금,로그온,오프에 관여한다.

 

그다음 아까 언급한 Wininit.exe에 대해 알아보자.

얘는 윈도우 비스타 이후로 생겼다고 말했었따.

즉 비스타 이전에는 저놈이 존재하지도 않는다. 

 

더 설명하기 전에 잠깐 세션에 대해 언급하겠다.

프로세스는 이제 다들 아실거임. 프로세스들은 각각 자신들이 속한 사용자가 있고, 또한 속한 세션이 있다.

 

위와같이 작업관리자에서 세션 id가 확인이 가능하다.

세션은 여러가지가 있을 수 있으나, 가장 중요한 세션 0와 1에 대해 말하겠다.

 

윈도우 비스타 이상이라는 가정하에,

세션 0는 윈도우 서비스가 시작하는 곳, 세션 1은 첫번째로 로그온한 사용자의 프로그램이 시작되는 곳을 일컫는다.

여러 사용자를 로그온 한다면 세션은 갯수는 더욱더 늘어나겠지?? ㅇ.ㅇ

 

그럼 이제 다시 본론으로 돌아와서 

Wininit은 세션이 0이다. 아까 비스타 이전에서 Wininit이 생기기 전에는 Winlogon에서 LSA와 SCM을 제어하는 역할을 한다고 말했었다. 이때는 Winlogon의 세션이 0 이었다.

 

세션 0은 순수 서비스와 보안 프로세스만 두고 사용자가 접근할 수 없도록 격리하여 보안 강화를 위한 것이다.

비스타 이후 부터는 이 기능들을 Wininit으로 옮기고 세션 0에 두고, Winlogon은 세션1이 된다.

Winlogon이 혼자 수행해야 하는 작업들을 나누어 가져 부담을 덜어주고 속도 개선을 위함이라고 생각된다.

 

windows7 에서 Wininit.exe 가 Servcies.exe 와 Lsass.exe를 관리하는 것을 확인할 수 있다. ( process explorer )

 

 

출처 : 리버싱 윈도우 - 로드북 

반응형