Ntoskrnl.exe
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
Ntoskrnl.exe는 마이크로소프트 윈도우 운영 체제의 핵심 커널 이미지 파일이다. 부트로더로부터 하드웨어 정보, 레지스트리 파일 경로, 부팅 환경 설정 등을 포함하는 구조체를 받아 초기화를 시작한다. x86 아키텍처에서는 GDT, IDT, TSS가 준비된 상태로 보호 모드에서 시스템을 받으며, 주요 진입점을 통해 시스템 독립 초기화 및 유휴 루프를 수행한다. Ntoskrnl.exe는 드라이버 서명, 메모리 관리자, IDT 등을 초기화하고, 세션 관리자 서브시스템(SMSS)의 시작을 확인하여 초기화를 완료한다. 또한, 함수들은 헝가리안 표기법을 따르며, 인터럽트 처리, 메모리 관리, 레지스트리 접근, 드라이버 로드, 보안 기능 등을 담당한다. 특히, 윈도우 서버 2003 SP1 이후의 64비트 버전에서는 커널 패치 보호 기능(PatchGuard)을 통해 커널의 무단 변경을 감지한다.
더 읽어볼만한 페이지
- 윈도우 NT 커널 - 장치 드라이버
장치 드라이버는 운영 체제와 하드웨어 장치 간 통신을 중재하는 소프트웨어로서, 하드웨어 종류에 상관없이 응용 프로그램이 코드를 작성하도록 추상화를 제공하고, 명령어와 API 호출을 해석하여 장치 제어를 가능하게 하지만 보안 취약점의 대상이 될 수 있다. - 윈도우 NT 커널 - 커널 트랜잭션 관리자
커널 트랜잭션 관리자(KTM)는 커널 모드에서 작동하며, 커널 및 사용자 모드 리소스와 분산 리소스 간의 데이터베이스 트랜잭션을 지원하여 시스템 안정성 향상과 데이터 무결성 보장에 기여한다. - 윈도우 구성 요소 - 인터넷 익스플로러
마이크로소프트가 개발한 웹 브라우저인 인터넷 익스플로러는 윈도우 운영 체제와의 통합으로 높은 시장 점유율을 유지했으나, 웹 표준 문제와 보안 취약점으로 비판받으며 2015년 엣지에 자리를 내주고 2022년 지원이 종료되었지만, 엣지의 IE 모드로 레거시 호환성을 유지하고 있다. - 윈도우 구성 요소 - 원격 데스크톱 서비스
원격 데스크톱 서비스(RDS)는 네트워크를 통해 원격으로 컴퓨터의 데스크톱 환경에 접근할 수 있게 해주는 기술이며, 클라이언트 소프트웨어, 서버 구성 요소, 다양한 역할을 수행하는 구성 요소로 구성된다.
| Ntoskrnl.exe |
|---|
2. 초기화
Ntoskrnl.exe는 컴퓨터 부팅 과정에서 부트로더에 의해 메모리에 로드되어 실행되며, 시스템 초기화 과정을 주도한다. 부트로더로부터 하드웨어 정보, 레지스트리 파일 경로, 부팅 옵션 등을 담은 구조체를 전달받는다.[40][41][8][9][24][25][26]
x86 아키텍처에서는 보호 모드에서 GDT, IDT, TSS 설정을 완료한다.
2. 1. 초기화 과정
부트로더에게서 제어권을 넘겨받은 커널은 시스템 종속적인 초기화와 시스템 독립적인 초기화를 수행한 후 유휴 루프에 진입한다.커널은 부트로더로부터 구조체 형식의 포인터를 받는다. 이 구조체는 하드웨어 정보, 윈도우 레지스트리 파일 경로, 부팅 환경 설정, 커널 매개변수, 부트로더가 로드한 파일 경로 등을 포함한다.[8] 이 구조체의 정의는 커널 디버거를 사용하거나 마이크로소프트 심볼 데이터베이스에서 다운로드하여 얻을 수 있다.[9]
x86 아키텍처에서 커널은 GDT, IDT, TSS가 준비된 보호 모드 상태로 시스템을 받는다. 그러나 각 주소를 알지 못하므로 PCR 구조체를 채우기 위해 하나씩 로드해야 한다.
커널은 드라이버 서명, 메모리 관리자, IDT 등 각종 리소스와 구성 요소의 초기화 처리를 수행하고, 마지막으로 Session Manager Subsystem|세션 관리자 서브시스템영어 (SMSS)가 문제없이 시작되었는지 확인하여 초기화 처리를 마친다.[27]
3. 구성 요소
Ntoskrnl.exe는 크게 '에그제큐티브(Executive)'와 '커널(Kernel)' 두 가지 주요 계층으로 구성된다. 에그제큐티브는 상위 계층으로, I/O, 객체 관리, 보안, 프로세스 관리, 프로세스 간 통신(IPC), 가상 메모리, 윈도우 및 그래픽 관리 등을 담당한다. 커널은 하위 계층으로, 스레드 스케줄링, 인터럽트 처리, 지연 프로시저 호출(DPC) 등 기본적인 운영 체제 서비스를 제공한다.
4. 함수
Ntoskrnl.exe의 함수들은 헝가리안 표기법을 사용하여 코딩되어 있으며, 함수명은 해당 구성 요소를 나타내는 접두사(prefix)로 정의된다. 예를 들어 `IoCreateDevice`는 I/O 매니저의 함수이고, `ObReferenceObjectByHandle`은 오브젝트 매니저의 함수임을 알 수 있다. 각 함수의 접두사에 따른 의미는 하위 섹션에서 자세히 설명하고 있다.
4. 1. 주요 함수 접두어
Windows 커널은 변수명이 아닌 타입명을 나타내는 헝가리안 표기법을 사용하여 코딩되어 있다. ntoskrnl의 함수명은 해당 컴포넌트를 나타내는 접두사에 의해 정의된다. 그 중 일부를 다음 표에 나타낸다.
5. 인터럽트 처리
Ntoskrnl.exe는 최신 운영 체제에서 입출력 포트 폴링 대신 인터럽트를 사용하여 장치와 정보를 주고받는다. 인터럽트 테이블은 하드웨어 인터럽트, 소프트웨어 인터럽트 및 예외를 위한 핸들러를 포함한다.[10]
NT의 인터럽트 처리는 우선순위("IRQL"이라고 함)에 따라 인터럽트를 조건부로 마스크하여, 다양한 커널 구성 요소가 주변 장치 및 기타 장치의 서비스를 반드시 차단하지 않고 중요한 작업을 수행할 수 있게 한다.[10]
IA-32 버전에서 소프트웨어 인터럽트 핸들러의 예로 IDT 테이블 항목 2E16 (16진법) (10진수로는 46)가 있으며, 어셈블리 언어에서 시스템 호출에 대해 `INT 2EH`로 사용된다. 이 항목은 `KiSystemService`라는 내부 서브루틴을 가리킨다. 최신 버전에서는 `SYSENTER` 명령어를 사용하고 x86-64에서는 `SYSCALL` 명령어를 사용하는 다른 메커니즘이 대신 사용된다.[10]
5. 1. 인터럽트 처리 과정 (x86 아키텍처)
x86에서 인터럽트는 인터럽트 디스패치 테이블(IDT)을 통해 처리된다. 장치가 인터럽트를 발생시키면 플래그 레지스터의 인터럽트 플래그(IF)가 설정되고, 프로세서는 인터럽트 번호에 해당하는 인터럽트 핸들러를 IDT에서 찾는다. 이 인터럽트 번호는 프로그래머블 인터럽트 컨트롤러(PIC) 칩 또는 최신 하드웨어의 고급 프로그래머블 인터럽트 컨트롤러(APIC)에 의해 인터럽트 요청(IRQ)으로부터 변환된다. 인터럽트 핸들러는 인터럽트를 처리하기 전에 프로세서 레지스터의 일부 상태를 저장하고, 처리 완료 후 원래 값으로 복원한다.[10]6. 메모리 관리
Ntoskrnl.exe는 윈도우의 가상 메모리 시스템을 관리한다. 물리적 메모리(RAM)는 페이지(보통 4KB) 단위로 나뉘어 관리되며, 각 페이지는 페이지 테이블 항목이라는 구조에 저장되어 운영체제에 의해 관리되고 프로세서 하드웨어에 의해 접근된다. 페이지 테이블은 트리 구조로 구성되며, 최상위 테이블의 물리적 페이지 번호는 제어 레지스터 3(CR3)에 저장된다.[41]
가상 주소와 물리적 주소 간의 매핑은 페이지 테이블을 통해 이루어진다.
6. 1. 가상 주소 공간
마이크로소프트 윈도우는 가상 주소 공간을 두 영역으로 나눈다. 낮은 부분은 0부터 시작하며, 각각의 프로세스마다 독립적으로 초기화되고, 사용자 모드와 커널 모드 모두에서 접근할 수 있다. 프로세스에서 돌아가는 응용 프로그램은 사용자 모드에서 돌아가는 코드를 제공한다. 높은 부분은 몇몇 예외적인 경우를 제외하고는 커널 모드에서만 접근할 수 있으며 시스템 전체적으로 한 번만 초기화된다. `Ntoskrnl.exe`는 다른 커널 모드 구성 요소들과 같이 이 영역에 매핑된다. 이 영역은 또한 커널 모드 코드(커널 모드 힙과 파일 시스템 캐시)에서 사용되는 데이터도 포함한다.[41]| 아키텍처 | MmHighestUserAddress | MmSystemRangeStart |
|---|---|---|
| x86 | 0x7fffffff | 0x80000000 |
| ARM | ||
| x86-64 | 0x000007ffffffffff (윈도우 8.1 업데이트 2까지) 0x00007fffffffffff (윈도우 8.1 업데이트 3부터) | 0xffff8000'00000000 |
7. 레지스트리
레지스트리는 "하이브"라고 불리는 여러 개의 파일로 디스크에 저장된다. 시스템 하이브는 부팅 과정 초기에 로드되어 필요한 설정 정보를 제공한다.[42] 소프트웨어 및 사용자 관련 정보를 제공하는 추가적인 레지스트리 하이브는 시스템 초기화 이후, 그리고 사용자 로그인 이후에 각각 로드된다.
8. 드라이버
장치 드라이버 목록은 `SYSTEM` 레지스트리 하이브 내의 현재 제어 집합 키의 `Services` 키에서 가져온다.[1] 이 키는 장치 드라이버, 커널 프로세스 및 사용자 프로세스를 저장하며, 이들은 모두 "서비스"라고 불리며 같은 위치에 함께 저장된다.[1]
초기화 과정이나 드라이버 로드 요청 시 커널은 커널 서비스로 태그된 서비스를 찾기 위해 해당 트리를 탐색한다.[1]
9. 보안
윈도우 서버 2003 SP1 이후의 64비트 버전 윈도우에는 커널 패치 보호(PatchGuard)라는, 몇 분마다 커널 등의 시스템 구조에 대한 변경을 검사하는 기능이 있다.[28][29] 변경이 감지되면 윈도우는 블루 스크린으로 전환되어 시스템을 정지시킨다. 그러나 멀웨어 중에는 커널 시작 전에 로드되는 프로그램(부트 섹터 등)에 감염되어 이 보호 기능을 회피하고 커널을 변조하는 부트 키트(Bootkit)라고 불리는 종류가 존재한다.[30] 이러한 취약점에 대해서는 UEFI의 보안 부팅과 TPM을 이용하여 Root of Trust|신뢰의 근간영어를 확립하는 것이 유효하다.[31]
참조
[1]
웹사이트
Systems Internals Tips and Trivia
https://web.archive.[...]
SysInternals Information
[2]
웹사이트
Cache Manager Routines
http://msdn.microsof[...]
Microsoft Corporation
2009-06-13
[3]
웹사이트
File System Runtime Library Routines
http://msdn.microsof[...]
Microsoft Corporation
2009-06-13
[4]
웹사이트
I/O Manager Routines
http://msdn.microsof[...]
Microsoft Corporation
2009-06-13
[5]
웹사이트
Core Kernel Library Support Routines
http://msdn.microsof[...]
Microsoft Corporation
2009-06-13
[6]
웹사이트
Power Manager Routines
http://msdn.microsof[...]
Microsoft Corporation
2009-06-13
[7]
간행물
Nt vs. Zw - Clearing Confusion On The Native API
http://www.osronline[...]
OSR Open Systems Resources
2013-09-16
[8]
웹사이트
struct LOADER_PARAMETER_BLOCK
http://www.nirsoft.n[...]
[9]
서적
Practical Reverse Engineering Using X86, X64, Arm, Windows Kernel, and Reversing Tools.
John Wiley & Sons Inc
2014
[10]
웹사이트
What is IRQL and why is it important? {{!}} Ask the Performance Team Blog
https://blogs.techne[...]
Microsoft Corporation
2018-11-11
[11]
서적
Modern operating systems
Pearson Prentice Hall
2008
[12]
Wayback
Microsoft TechNet : Systems Internals Tips and Trivia
http://technet.micro[...]
20080408141752
[13]
웹사이트
Deeper into Windows Architecture
https://blogs.msdn.m[...]
マイクロソフト
2007-02-25
[14]
웹사이트
Cache Manager Routines
http://msdn.microsof[...]
マイクロソフト
2009-06-13
[15]
웹사이트
CmRegisterCallbackEx routine (Windows Drivers)
https://msdn.microso[...]
マイクロソフト
2016-07-10
[16]
웹사이트
Executive Library Support Routines (Windows Drivers)
https://msdn.microso[...]
マイクロソフト
2016-07-10
[17]
웹사이트
File System Runtime Library Routines
http://msdn.microsof[...]
マイクロソフト
2009-06-13
[18]
문서
Windows Internals
[19]
웹사이트
I/O Manager Routines
http://msdn.microsof[...]
マイクロソフト
2009-06-13
[20]
웹사이트
Core Kernel Library Support Routines
http://msdn.microsof[...]
マイクロソフト
2009-06-13
[21]
웹사이트
Power Manager Routines
http://msdn.microsof[...]
マイクロソフト
2009-06-13
[22]
간행물
Nt vs. Zw - Clearing Confusion On The Native API
http://www.osronline[...]
OSR Open Systems Resources
2013-09-16
[23]
웹사이트
The Old New Thing : What does the "Zw" prefix mean?
http://blogs.msdn.co[...]
マイクロソフト
2009-06-13
[24]
웹사이트
struct LOADER_PARAMETER_BLOCK
http://www.nirsoft.n[...]
NirSoft
2016-07-10
[25]
문서
Windows Internals
[26]
문서
Windows Internals
[27]
문서
Windows Internals
[28]
문서
The Rootkit Arsenal
[29]
웹사이트
Assessment of Windows Vista Kernel-Mode Security
https://www.symantec[...]
シマンテック
2006-08-09
[30]
웹사이트
ファイア・アイ、検出が困難で危険なブートキットによりカード決済情報を狙う脅威グループを確認 - FireEye
https://www.fireeye.[...]
FireEye, Inc.
2015-12-10
[31]
웹사이트
Modern Bootkit Trends: Bypassing Kernel-Mode Signing Policy
http://go.eset.com/u[...]
ESET
2016-07-09
[32]
웹사이트
Systems Internals Tips and Trivia
https://web.archive.[...]
SysInternals Information
[33]
웹인용
Cache Manager Routines
http://msdn.microsof[...]
마이크로소프트
2016-02-11
[34]
웹인용
File System Runtime Library Routines
http://msdn.microsof[...]
마이크로소프트
2016-02-11
[35]
웹인용
I/O Manager Routines
http://msdn.microsof[...]
마이크로소프트
2016-02-11
[36]
웹인용
Core Kernel Library Support Routines
http://msdn.microsof[...]
마이크로소프트
2016-02-11
[37]
웹인용
Power Manager Routines
http://msdn.microsof[...]
마이크로소프트
2016-02-11
[38]
저널
Nt vs. Zw - Clearing Confusion On The Native API
http://www.osronline[...]
OSR Open Systems Resources
2003-08-27
[39]
웹인용
The Old New Thing : What does the "Zw" prefix mean?
http://blogs.msdn.co[...]
마이크로소프트
2016-02-11
[40]
웹사이트
http://www.nirsoft.n[...]
[41]
서적
Practical Reverse Engineering Using X86, X64, Arm, Windows Kernel, and Reversing Tools.
John Wiley & Sons Inc
2014
[42]
서적
Modern operating systems
Pearson Prentice Hall
2008
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com