Programing/network
윈도우 부팅이란?
하얀배터리
2018. 9. 13. 15:17
728x90
[정보보안] 윈도우 부팅이란?
- 윈도우 부팅 이란?
부팅(booting)이라는 용어는“lifting yourself up by your bootstraps(자력으로 성공하기)”라는 문장에서 나온 말이고 컴퓨터가 사용자의 간섭 없이 스스로 작업
가능 상태로 만드는 것을 말한다.
- 윈도우 부팅 과정을 기술
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는 다음의 레지스트리 값을 가지는 프로그램을 실행한다.
- 다음 윈도우 서버 프로세스 설명
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가 존재할 수 있습니다.
- 윈도우 서버 기본 로컬 그룹에 대해 설명
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는 다음의 레지스트리 값을 가지는 프로그램을 실행한다.
- 다음 윈도우 서버 프로세스 설명
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가 존재할 수 있습니다.
- 윈도우 서버 기본 로컬 그룹에 대해 설명
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