Programing/network

윈도우 부팅이란?

하얀배터리 2018. 9. 13. 15:17
728x90



[정보보안] 윈도우 부팅이란?







  1. 윈도우 부팅 이란?
            
            부팅(booting)이라는 용어는“lifting yourself up by your bootstraps(자력으로 성공하기)”라는 문장에서 나온 말이고 컴퓨터가 사용자의 간섭 없이 스스로 작업 
      가능 상태로 만드는 것을 말한다.


  1. 윈도우 부팅 과정을 기술

          



1.Run BootManager

    ① BIOS Firmware

        - POST : 부팅시 가장 먼저 동작. 하드웨어를 점검합니다.
        - Load Boot Manager :  디스크의 첫번째 섹터인 MBR(Master Boot Record)로 부터 파티션 테이블을 검색하여 부팅가능한 파티션의 VBR(Volume Boot Record)를 읽습니다.
        VBR은 16bit Boot Manager 프로그램을 읽습니다. 16bit코드는 (32bit/64bit)코드 앞에 붙어서 존재합니다.

    ② EFI Firmware

        - POST : BIOS과정과 동일합니다.
        - Load BootCode : Boot Code가 펌웨어 내부에 내장되어 있어 MBR 과 VBR로드과정이 없습니다.
        EFI Firmware는 Protected Mode로 전환하여 32bit/64bit bootmgr.efi프로그램이 실행되도록합니다.


2. Windows Boot Manager : Read BCD(Boot Configuration Data) : 부팅구성에 필요한 Data를 읽어옵니다.

           - BCD(Boot Configuration Data) : 하나의 Windows Boot Manager Object, 하나이상의 Windows Boot Loader Object로 구성.

    ① Windows Boot Manager Object : Boot Manager화면의 설정값들(OS개수,부팅 도구 메뉴등)을 의미합니다.

        레지스트리 sub-key : {9dea862c-5cdd-4e70-acc1-f32b344d4795)

        BCDEdit.exe : 실행시 identifier bootmgr에서 보여줍니다.

    ② Windows Boot Loader Object : 설치된 OS가 가지는 구성을 나타냅니다


3.Windows Boot Loader ( winload.exe,NTLDR, Winload.efi )

    ① Load SYSTEM registry : HKLM/SYSTEM하위의 레지스트리를 로드

    ② winload의 무결성검사 로드된 이미지의 시그니쳐와 nt5.cat(%SystemRoot%\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\)과비교가 진행됩니다. 
    일치하지 않으면 종료, 디버깅활성화중이라면 경고메시지만을 보여줍니다.)

    ③ ntoskrnl.exe와 hal.dll을 로드. 커널디버깅 활성화시, 다음의 kernel-mode driver를 로드합니다.

            - kdcom.dll ( null moden cable)
            - kd1394.dll ( IEEE1394 cable )
            - kdusb.dll ( USB 2.0 debug cable )

    무결성검사 이후 다음의 dll들을 로드합니다.
        - pshed.dll
        - bootvid.dll
        - clfs.sys
        - ci.dll

로드이후 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\하위의 sub key들을 스캔하여
Start Value가 0x00000000(SERVICE_BOOT_START)를 가지는 디바이스 드라이버를 찾습니다.

      ④ Load Device Drvier
          무결성 체크가 활성화 되어있다면 nt5.cat과 검색된 드라이버의 디지털 서명를 비교한다. 실패한다면 Boot Loader를 종료하고 디버깅활성화중이라면 경고 메시지만을 보여줍니다.            
          부트 로드가 언제 어디서 실행되는지 알고 싶다면 "Bcdedit.exe /set BOOTLOG TRUE"를 통하여 확인할 수 있습니다 


    ⑤ 실행에 필요한 프로그램 및 구성요소 초기화

        ntoskrnl.exe에서 KiSystem-Startup()실행 시, ntoskrnl.exe의 주소공간에서 subsystem 및 구성하는 데이터들을 초기화 시킵니다.( SSDT구성,NTDLL.DLL로드등)
        레지스트리(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ 의 Start == SERVICE_SYSTEM_START,Type)시스템 클래스드라이버 및 서비스에 대한 검사를 진행합니다.  
        드라이버 무결성 체크가 활성화 되어있다면 ci.dll에있는 무결성 루틴을 수행하여 디지털 서명을 체크한다. 실패하면 로드되지 않습니다.

4. Session Manager   : Session Manager초기화


    ① "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\"에 등록된  프로그램 실행

    ② 환경변수 세팅 및 윈도우즈 SubSystem실행  
        ※ Smss.exe로드

          -> Win32k.sys 초기화 및 로드(VGA모드로 전환)
          ->"HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDlls\" Dll을 로컬 시스템 계정 하위에 로드
          -> Csrss.exe로드(Windows API를 사용가능하게 함)
          -> 세션 0(wininit.exe)과 1(winlogon.exe)을 실행

    ※Wininit.exe 실행시

        - lsass.exe실행 : local security authority subsystem
        - services.exe : Service Control Manager(레지스트리 : SERVICE_AUTO_START값을 가지는 모든 드라이버 로드)
        - lsm.exe : local session manager(원격 연결을 관리)

    ※Winlogon.exe 실행시

    - logonui.exe실행 : ctrl+alt+delete
    - "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"하위 "Shell"(explorer.exe),"UserInit"(userinit.exe)값들을 실행
    - UserInit.exe는 다음의 레지스트리 값을 가지는 프로그램을  실행한다.



  1. 다음 윈도우 서버 프로세스 설명
        

 smss.exe -- 세션 관리자

Smss는 Session Manager SubSystem의 약자로서 사용자 세션을 시작하는 기능을 담당합니다.
이 프로세스는 시스템 쓰레드에 의해 실행되며 Winlogon Win32(Csrss.exe)을 구동시키고 시스템 변수를 설정합니다.
이러한 과정이 끝나면, Smss는 Winlogon이나 Csrss가 끝나기를 기다려 정상적인 Winlogon/Csrss 종료시

시스템을 종료시키며 비정상적인 Winlogon/Csrss 종료시 시스템이 멎는 상태가 됩니다. (System Hang)

smss.exe

마이크로소프트에서 제공하는 Windows NT 사용자의 세션을 관리하는 응용프로그램입니다.
이것은 사용자 세션의 시작을 담당하는 세션 관리자 하위 시스템입니다.

wininit.exe

- Windows Start-Up Application.

Lsass.exe

Lsass는 Local Security Authentication Server의 약자로서 Winlogon 서비스에 필요한 인증 프로세스를
담당합니다. 이 과정은 Msgina.dll과 같은 인증 패키지를 이용하여 이루어집니다.


Services.exe
Service Control Manager로서 시스템 서비스들을 시작/정지시키고 그들간의 상호작용하는 기능을수행한다.


Svchost.exe
Svchost는 DLL로부터 실행되는 다른 프로세스들의 host 역할을 해 줍니다.
따라서 작업관리자의 프로세스 창에는 하나 이상의 Svchost.exe가 존재할 수 있습니다.




  1. 윈도우 서버 기본 로컬 그룹에 대해 설명

Administators 

이 그룹의 구성원은 컴퓨터에 대한 모든 권한을 가지며 필요한 경우 사용자 권한과 액세스 제어 권한을 사용자에게 할당할 수 있습니다.

Administrator 계정은 이 그룹의 기본 구성원입니다. 컴퓨터가 도메인에 가입되어 있으면 Domain Admins 그룹이 자동으로 이 그룹에 추가됩니다. 이 그룹은 컴퓨터에 대한 모든 권한을 갖고 있으므로 사용자를 추가할 때 주의하십시오.

Backup Operators

이 그룹의 구성원은 파일 보호 권한에 관계없이 컴퓨터의 파일을 백업하고 복구할 수 있습니다. 이것은 백업 수행 권한이 모든 파일 사용 권한보다 우선하기 때문입니다. 이 그룹의 구성원은 보안 설정을 변경할 수 없습니다.

Guests

이 그룹의 구성원은 로그온할 때 임시 프로필을 만드는데 이 프로필은 구성원이 로그오프할 때 삭제됩니다. Guest 계정은 기본적으로 사용되지 않으며 역시 이 그룹의 기본 구성원입니다.
*기본값: 비활성

Remote Desktop Users

이 그룹의 구성원은 컴퓨터에 원격으로 로그온할 수 있습니다.

Users

이 그룹의 구성원은 응용 프로그램 실행, 로컬 및 네트워크 프린터 사용, 컴퓨터 잠금과 같은 일반적인 작업을 수행할 수 있습니다. 이 그룹의 사용자는 디렉터리를 공유하거나 로컬 프린터를 만들 수 없습니다. 기본적으로 Domain Users, Authenticated Users 및 Interactive 그룹은 이 그룹의 구성원입니다. 따라서 도메인에서 만든 모든 사용자 계정이 이 그룹의 구성원이 됩니다.


1.Run BootManager

    ① BIOS Firmware

        - POST : 부팅시 가장 먼저 동작. 하드웨어를 점검합니다.
        - Load Boot Manager :  디스크의 첫번째 섹터인 MBR(Master Boot Record)로 부터 파티션 테이블을 검색하여 부팅가능한 파티션의 VBR(Volume Boot Record)를 읽습니다.
        VBR은 16bit Boot Manager 프로그램을 읽습니다. 16bit코드는 (32bit/64bit)코드 앞에 붙어서 존재합니다.

    ② EFI Firmware

        - POST : BIOS과정과 동일합니다.
        - Load BootCode : Boot Code가 펌웨어 내부에 내장되어 있어 MBR 과 VBR로드과정이 없습니다.
        EFI Firmware는 Protected Mode로 전환하여 32bit/64bit bootmgr.efi프로그램이 실행되도록합니다.


2. Windows Boot Manager : Read BCD(Boot Configuration Data) : 부팅구성에 필요한 Data를 읽어옵니다.

           - BCD(Boot Configuration Data) : 하나의 Windows Boot Manager Object, 하나이상의 Windows Boot Loader Object로 구성.

    ① Windows Boot Manager Object : Boot Manager화면의 설정값들(OS개수,부팅 도구 메뉴등)을 의미합니다.

        레지스트리 sub-key : {9dea862c-5cdd-4e70-acc1-f32b344d4795)

        BCDEdit.exe : 실행시 identifier bootmgr에서 보여줍니다.

    ② Windows Boot Loader Object : 설치된 OS가 가지는 구성을 나타냅니다


3.Windows Boot Loader ( winload.exe,NTLDR, Winload.efi )

    ① Load SYSTEM registry : HKLM/SYSTEM하위의 레지스트리를 로드

    ② winload의 무결성검사 로드된 이미지의 시그니쳐와 nt5.cat(%SystemRoot%\System32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\)과비교가 진행됩니다. 
    일치하지 않으면 종료, 디버깅활성화중이라면 경고메시지만을 보여줍니다.)

    ③ ntoskrnl.exe와 hal.dll을 로드. 커널디버깅 활성화시, 다음의 kernel-mode driver를 로드합니다.

            - kdcom.dll ( null moden cable)
            - kd1394.dll ( IEEE1394 cable )
            - kdusb.dll ( USB 2.0 debug cable )

    무결성검사 이후 다음의 dll들을 로드합니다.
        - pshed.dll
        - bootvid.dll
        - clfs.sys
        - ci.dll

로드이후 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\하위의 sub key들을 스캔하여
Start Value가 0x00000000(SERVICE_BOOT_START)를 가지는 디바이스 드라이버를 찾습니다.

      ④ Load Device Drvier
          무결성 체크가 활성화 되어있다면 nt5.cat과 검색된 드라이버의 디지털 서명를 비교한다. 실패한다면 Boot Loader를 종료하고 디버깅활성화중이라면 경고 메시지만을 보여줍니다.            
          부트 로드가 언제 어디서 실행되는지 알고 싶다면 "Bcdedit.exe /set BOOTLOG TRUE"를 통하여 확인할 수 있습니다 


    ⑤ 실행에 필요한 프로그램 및 구성요소 초기화

        ntoskrnl.exe에서 KiSystem-Startup()실행 시, ntoskrnl.exe의 주소공간에서 subsystem 및 구성하는 데이터들을 초기화 시킵니다.( SSDT구성,NTDLL.DLL로드등)
        레지스트리(HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\ 의 Start == SERVICE_SYSTEM_START,Type)시스템 클래스드라이버 및 서비스에 대한 검사를 진행합니다.  
        드라이버 무결성 체크가 활성화 되어있다면 ci.dll에있는 무결성 루틴을 수행하여 디지털 서명을 체크한다. 실패하면 로드되지 않습니다.

4. Session Manager   : Session Manager초기화


    ① "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\"에 등록된  프로그램 실행

    ② 환경변수 세팅 및 윈도우즈 SubSystem실행  
        ※ Smss.exe로드

          -> Win32k.sys 초기화 및 로드(VGA모드로 전환)
          ->"HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDlls\" Dll을 로컬 시스템 계정 하위에 로드
          -> Csrss.exe로드(Windows API를 사용가능하게 함)
          -> 세션 0(wininit.exe)과 1(winlogon.exe)을 실행

    ※Wininit.exe 실행시

        - lsass.exe실행 : local security authority subsystem
        - services.exe : Service Control Manager(레지스트리 : SERVICE_AUTO_START값을 가지는 모든 드라이버 로드)
        - lsm.exe : local session manager(원격 연결을 관리)

    ※Winlogon.exe 실행시

    - logonui.exe실행 : ctrl+alt+delete
    - "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"하위 "Shell"(explorer.exe),"UserInit"(userinit.exe)값들을 실행
    - UserInit.exe는 다음의 레지스트리 값을 가지는 프로그램을  실행한다.



  1. 다음 윈도우 서버 프로세스 설명
        

 smss.exe -- 세션 관리자

Smss는 Session Manager SubSystem의 약자로서 사용자 세션을 시작하는 기능을 담당합니다.
이 프로세스는 시스템 쓰레드에 의해 실행되며 Winlogon Win32(Csrss.exe)을 구동시키고 시스템 변수를 설정합니다.
이러한 과정이 끝나면, Smss는 Winlogon이나 Csrss가 끝나기를 기다려 정상적인 Winlogon/Csrss 종료시

시스템을 종료시키며 비정상적인 Winlogon/Csrss 종료시 시스템이 멎는 상태가 됩니다. (System Hang)

smss.exe

마이크로소프트에서 제공하는 Windows NT 사용자의 세션을 관리하는 응용프로그램입니다.
이것은 사용자 세션의 시작을 담당하는 세션 관리자 하위 시스템입니다.

wininit.exe

- Windows Start-Up Application.

Lsass.exe

Lsass는 Local Security Authentication Server의 약자로서 Winlogon 서비스에 필요한 인증 프로세스를
담당합니다. 이 과정은 Msgina.dll과 같은 인증 패키지를 이용하여 이루어집니다.


Services.exe
Service Control Manager로서 시스템 서비스들을 시작/정지시키고 그들간의 상호작용하는 기능을수행한다.


Svchost.exe
Svchost는 DLL로부터 실행되는 다른 프로세스들의 host 역할을 해 줍니다.
따라서 작업관리자의 프로세스 창에는 하나 이상의 Svchost.exe가 존재할 수 있습니다.




  1. 윈도우 서버 기본 로컬 그룹에 대해 설명

Administators 

이 그룹의 구성원은 컴퓨터에 대한 모든 권한을 가지며 필요한 경우 사용자 권한과 액세스 제어 권한을 사용자에게 할당할 수 있습니다.

Administrator 계정은 이 그룹의 기본 구성원입니다. 컴퓨터가 도메인에 가입되어 있으면 Domain Admins 그룹이 자동으로 이 그룹에 추가됩니다. 이 그룹은 컴퓨터에 대한 모든 권한을 갖고 있으므로 사용자를 추가할 때 주의하십시오.

Backup Operators

이 그룹의 구성원은 파일 보호 권한에 관계없이 컴퓨터의 파일을 백업하고 복구할 수 있습니다. 이것은 백업 수행 권한이 모든 파일 사용 권한보다 우선하기 때문입니다. 이 그룹의 구성원은 보안 설정을 변경할 수 없습니다.

Guests

이 그룹의 구성원은 로그온할 때 임시 프로필을 만드는데 이 프로필은 구성원이 로그오프할 때 삭제됩니다. Guest 계정은 기본적으로 사용되지 않으며 역시 이 그룹의 기본 구성원입니다.
*기본값: 비활성

Remote Desktop Users

이 그룹의 구성원은 컴퓨터에 원격으로 로그온할 수 있습니다.

Users

이 그룹의 구성원은 응용 프로그램 실행, 로컬 및 네트워크 프린터 사용, 컴퓨터 잠금과 같은 일반적인 작업을 수행할 수 있습니다. 이 그룹의 사용자는 디렉터리를 공유하거나 로컬 프린터를 만들 수 없습니다. 기본적으로 Domain Users, Authenticated Users 및 Interactive 그룹은 이 그룹의 구성원입니다. 따라서 도메인에서 만든 모든 사용자 계정이 이 그룹의 구성원이 됩니다.





 하얀배터리 블로그에 작성된 모든 글은 무단 복제 , 수정 , 스크랩을 금지 합니다.  !!


 개시물은 배운 내용을 바탕으로 하여 쓰여진 것이므로 잘못된 내용이 있을 수 있습니다. 잘못된 내용은 지적 바랍니다. 


#하얀배터리 #IT #정보보안 #윈도우 #window #프로그래밍 #programming #html #java #C #javascript #database #jQuery #서버 #보안 #리눅스


 # 코딩 #4차산업 #5G #정보 #보안 #IOT #빅데이터 #드론 #사물인터넷  #정보보안전문가 #파이썬 # 스마트폰 # 안드로이드 # IOS  















728x90