비스타 이전에는 부팅시 보안 인증을 담당하는 Lsass.exe(Local Security Authority Subsystem Service, LSA라고도 함)와 서비스를 관리하는 Services.exe(Service Control Manager, SCM)를 실행 하고(앞서 얘기했듯 비스타 이후부터는 Wininit.exe가 SCM과 LSA을 실행한다), 유저 로그인 동작을 위해 GINA(Graphical Identification and Authentication)를 호출하는 등 로그온, 로그오프 관련 기능을 수행한다.
Winlogon은 대기시 항시 SAS(Secure attention sequence: Alt+Ctrl+Del)키 입력를 감시하다가, SAS키 입력 발생시 GINA를 불러와 사용자가 로그온 작업을 진행할 수 있도록 한다. 그리고 컴퓨터를 잠그거나, 잠금 해제와 같은 보안 관련 작업도 진행한다. 더욱이 스마트카드와 같은 다른 자격 증명 제공자를 설치할 수 있도록 지원하여, 여러 사용자 인증 방식을 사용할수도 있으며 기본 자격 증명 제공자로는 패스워드와 PIN, 스마트 카드 방식을 제공한다.
이 기본 제공 자격 증명 제공자의 Dll은 아래에 위치한다.
%SystemRoot%\System32\authui.dll
%SystemRoot%\System32\SmartcardCredentialProvider.dll
이를 GINA와 연결하여 Winlogon와 상호 작용하면서 로그온 UI와 인증 UI 그리고 인증 제공자의 인터페이스를 관리하게 된다.
만약 윈도우 시작 화면 및 UI를 사용자 입맛에 맞게 변경하고자 한다면, 윈도우 시작 화면과 UI를 제공하는 Authui.dll을 수정하여 변경할 수 있다.
그리고 Winlogon은 자격 증명 제공자의 오류로부터 자신을 보호하기 위해, 별도의 프로세스인 Logonui.exe(자격 증명 제공자)를 이용한다. Logonui.exe는 네트워크 제공자를 로드하고, 윈도우 로그온 인터페이스를 보여주게 된다. 이를 통해 자격 증명 제공자의 오류로 인하여, Winlogon가 함께 종료되는 것을 방지한다(윈도우 XP에서는 Winlogon이 종료되면 시스템 크래쉬가 발생하지만, 비스타 이후부터는 Winlogon가 종료되면 로그오프만 진행된다. 이는 Wininit.exe 덕분인데, 대신 서비스와 드라이버를 로드하는 Wininit.exe에 문제가 발생하면 시스템 크래쉬가 발생한다. Csrss는 윈도우 XP, 비스타 모두 시스템 크래쉬가 발생한다).
또한 Winlogon은 고유한 SID(잠시후 Lsass.exe에서 다룬다)를 사용자에게 할당하여 데스크톱 인스턴스(키보드, 화면, 마우스)에 배정하게 되고, 이를 로그온 프로세스 토큰에 포함하여 보안을 담당하는 Lsass에 전달한 후, 성공적으로 인증이 완료되면, 할당하였던 SID를 로그온 프로세스 토큰에 포함해, 사용자의 로그인 인증 용도로 사용된다.
그리고 Winlogon에서 사전에 로드한 네트워크 제공자를 통해 인증에 필요한 정보들을 한번에 얻어갈 수 있어, 네트워크에 연결된 시스템이 별도의 인증 없이 로그인 할 수 있도록 지원하여 다른 머신에서 동일 계정과 패스워드를 쓰는 워크그룹 로그인이나, 도메인 환경의 SSO(Single sign-on, 하나의 인증정보를 여러 시스템에서 사용) 등을 가능하게 하도록 한다.
아래 그림은 Winlogon가 관장하는 주요 작업 흐름을 그림으로 나타낸 것이다.
고정키, WFP, WRP
만약 고정키 설정을 해놓았을 경우 GINA 화면에서 SAS키 이외에 쉬프트(Shift)키를 통해 윈도우에서 제공하는 고정키 설정이 가능하게 된다.
고정키는 Alt, Ctrl, Shift 등을 계속 이용해야 하는 상황을 위해, 이 기능을 활성화하면 해당 키를 누른 상태인 것처럼 시스템이 인식하게 된다.
이 기능이 활성화되면 GINA 화면에서도 설정이 가능하게 된다(윈도우 설치시 기본적으로 활성화 된다).
이 기능은 Sethc.exe라는 프로세스에 의해 실행되는데 이를 이용하여, 간단히 약간의 장난을 걸을 수도 있다. 그리고 여기서 윈도우 시스템 보안 기능인 WFP와 WRP에 대해서도 함께 알아보도록 하자. 그럼 먼저 아래 그림과 같이 간단한 실습을 따라해보자.
Sethc.exe를 Cmd.exe로 변경할 경우, 로컬 로그인을 바이패스 할 수 있다.
위와 같이 Sethc.exe를 Cmd.exe와 바꿔치기 한 후 컴퓨터를 재시작하면, 아래와 같이 로그인 하지 않은 상태에서 Shift키를 5번 눌려 명령 프롬프트창을 실행할 수 있다. 이후 새로운 유저를 생성한다거나 파일 생성들을 명령 프롬프트로 할 수 있게 된다.
이 방법은 윈도우 10 등 버전을 가리지 않고 사용이 가능한 방법이기 때문에 만약 비밀번호 분실등의 복구 목적으로 사용한다면 유용할 수 있으나, 반대로 로그인을 무력화 할 수 있어 해킹을 당할 수 있기 때문에 필요한 경우에만 사용하기 바란다.
'WebBook > 윈도우 구조' 카테고리의 다른 글
시스템 프로세스(Windows Startup Process) - 서비스 관리자 Services.exe (0) | 2022.03.14 |
---|---|
시스템 프로세스(Windows Startup Process) - 보안 관리자 Lsass.exe (0) | 2022.03.05 |
시스템 프로세스(Windows Startup Process) - 서브시스템(Subsystem) (0) | 2022.02.21 |
시스템 시작, 커널 생성 (0) | 2022.02.13 |
MBR에서 로그온까지 (0) | 2022.02.09 |