01 운영체제의 개념과 기능
1. 운영체제의 개념
- 운영체제 내부구조 및 설걔원리 에서 운영체제란 사용자가 컴퓨터 시스템을 손 쉽게 사용하도록 하고, 시스템 자원을 효율적으로 관리할 수 있도록 하는 프로그램 집합
- 아이들을 돌보는 엄마처럼 프로그램의 프로세스 생성과 메모리 접근 등 서로 충돌 없이 요구를 잘 실행하도록 곁에서 도와주는 역할
2. 운영체제의 기능
- 운영체제의 종류
- 사용자 명령 인터페이스 중심으로 메모리 관리자, 프로세서 관리자, 자치 관리자, 파일 관리자 등 네 가지 서브시슽템 관리자로 기본 구성된다. +) 네트워크를 지원하는 운영체제ㅔ에는 네트워크 관리자가 추가 된다.
2.1 사용자 명령 인터페이스(UCI
- 사용자와 시스템의 대화 수단이라고 할 수 있음
- 많은 운영체제에서 GUI를 적용하기에 아이콘과 메뉴, 마우스라는 이터페이스를 이용하여 시스템과 대화함
2.2 서브시스템 관리자
- 메모리 관리자
- 메모리 관리자는 프로그램이 메모리를 요청하면 적합성을 점검하고, 적합하다면 메모리를 할당함
- 할당된 메모리를 다른 프로그램이 접근하지 못하게 관리하고 보호하며, 프로그램을 종료할 때는 할당된 메모리를 회수함
- 프로세서 관리자
- 프로그램을 실행하려면 프로세서가 프로그램 코드를 구성하는 명령어를 하니씩 차례대로 수행해야 함
- 프로세서 관리자는 명령어들을 체계적이고 효율적으로 실행할 수 있도록 작업 스케줄링하고 사용자의 작업 요청을 수용하거나 거부함
- 장치 관리자
- 프린터, 디스크 드라이버, 모뎀, 모니터 등 시스템 안의 모든 장치를 프로그램에 할당하거나 회수함
- 파일 관리자
- 시스템 안의 데이터, 응용 프로그램 등 모든 파일에 사용자별로 파일 접근 권한을 붕여하며, 접근 권한에 따라 파일을 할당하고 해제함
- 네트워크 관리자
- 네트워크에서 접근 가능한 GPU, 메모리, 프린터, 디스크 드라이버, 모뎀, 모니터 같은 자원을 관리함
02. 윈도우의 이해
1. 윈도우의 역사
- 윈도우는 1981년 10월에 선보인 MS-DOS 1.0에서 시작됨
- MS-DOS는 IBM 컴퓨터의 개인용 운영체제로 선택됨
2. 윈도우의 구조 (윈도우의 커널 구조와 파일 시스템 구조를 알아본다
- 커널 : 운영체제의 중심에 위치하며, 운영체제에서 어떤 작업을 시작하더라도 커널 동작으로 제어함. 즉, 커널은 인터럽트 처리, 프로세스 관리, 메모리 관리, 파일 시스템 관리, 프로그래밍 인터페이스 제공 등 운영체제 기본 기능을 제공하는 핵심이라고 할 수 있음
2.1 윈도우의 커널 구조
- 윈도우와 유닉스에서 커널의 기본 개념은 같으나 형태는 다름
- 둘 다 동작할 때 커널을 손상하면 안되므로 접근 가능한 메모리에 로드하지 않는 것이 일반적임
- 윈도우 시스템은 보통 다음과 같은 링 구조로 되어 있음
- 맨 밑에서 부터 하드웨어 > 하드웨어를 제어하는 HAL > 마이크로 커널 > 각종 관리자 > 운영체제에서 동작하는 갖가지 응용 프로그램 순으로 위치함
- 링 구조의 계층은 각 보안 요소를 충족하고 개별적으로 운영할 때 시스템 보안 수준이 높은 상태로 유지될 것이라는 생각에서 고안함
- 커널 모드는 기본적으로 사용자가 접근할 수 없는 영역으로, 프로그램을 실행하는 기본 관리 시스템이 위치함
- 마이크로 커널 : 윈도우는 이를 여러 관리자에게 분담시키고 자신은 하드웨어와 하는 통신만 제어함으로써 최소한의 커널이 됨
- 윈도우 관리자의 역할
- 입출력 관리자 : 시스템의 입출력을 제어함. 즉, 장치 드라이버 사이에서 메시지를 전달함. 또 응용 프로그램이 하드웨어와 곧바로 통신할 수 있는 통로를 제공함
- 개체 관리자 : 윈도우는 파일, 포트, 프로세스, 스레드 등 모든 것을 개체로 정의함. 개체 관리자는 이런 각 개체 정보를 제공함
- 보안 참조 관리자 : 각 데이터나 시스템 자원의 제어를 허가하거나 거부함으로써 시슽템의강제 보안 설정을 책임짐.
- 프로세스 관리자 : 스레드를 생성하고 요청에 따라 처리함.
- 로컬 프로시저 호출 관리자 : 각 프로세스는 서로의 메모리 공간을 침범하지 못하기 때문에 프로세스 간 통신이 필요할 때는 이를 대신할 수 있는 장치가 필요한데, 그 장치가 로컬 프로시저 호출 관리자임
- 그래픽 장치 관리자 : 화면세 선이나 곡선을 그리거나 폰트 등을 관리함
- 기타 관리자 : 캐시 관리자, PNP 관리자, 전원관리자 등이 있음
- 사용자 모드에는 다양한 응용 프로그램이 있을 수 있으며, 응용 프로그램을 싱행하는 서브시스템이 있음
- 서브시스템은 윈도우에서 여러 응용 프로그램을 실행하는 컨테이너라고 할 수 있음
2.2 윈도우의 파일 시스템
- 윈도우에는 FAT, FAT32, NTFS 같은 파일 시스템이 있음
- FAT
- 2GB까지를 한 파티션으로 설정할 수 있음
- 테이블의 기본 크기는 16비트인데, 이는 하드 디스크에 파일을 담는 최소 단위인 크러스터가 32KB이기 때문임
- 전체 용량은 2GB임
- FAT35
- 클러스터를 총 32비트개 가질 수 있음
- 현재도 종종 사용하며, 호환성이 좋아 리눅스나 다른 운영체제에 정보를 옮길 때 유용함
- 접근 제어를 설정할 수 없다는 문제점이 있어 보안과는 거리가 먼 파일 시스템이라고 할 수 있음
- NTFS
- 개별 폴더와 파일에 사용 권한을 설정할 수 있고, 각 파일과 폴더에 해당 계정만 접근하여 읽을 수 있게 암호화할 수 있기 때문임
- 폴더를 암호화 하면 폴더에 있는 파일도 모두 암호화 되며, 암호화된 폴더나 파일은 복사나 이동을 해도 암호화 속성을 잃지 않음
- 특정 계정의 사람이 어떤 날 몇 시 몇 분에 파일을 열었는지, 열다가 실패했는지 여부를 알 수 있는 감사 기능을 제공함
3. 윈도우 부팅 순서
3.1 윈도우 XP, 윈도우 서버 2000/2003의 부팅 순서
- STEP1. POST 실행
- 운영체제와 관련된 부분은 아님
- 어떤 운영체제를 설치해도 POST 과정을 거치는데, POST 실행은 하드웨터 스스로 시싀템에 문제가 없는지 기본 사항을 검사하는 과정임
- BIOS가 POST를 실행하고, 라우터나 스위치 등 장비에서도 처음 스위치를 켤 때 PSOT를 실행함
- STEP2. 기본 부팅 관련 설정 사항 로드
- BIOS는 CMOS에 설정된 시스템 설정 사항 및 부팅과 관련된 여러 가지 정보를 읽어 시스템에 적용함
- STEP3. MBR로드
- MBR은 저장 매체의 첫 번째 섹터에 위치하는 512바이트 영역으로, 부팅 매체의 기본 파일 시스템 정보가 들어있음
- 운영체제를 부팅할 때 저장 매체의 첫 번째 섹ㅌ터를 호출하면 해당 부트 코드를 수행함
- 부트 코드의 주 역할은 파티션 테이블에서 부팅 가능한 파이션을 찾아 해당 파디션의 부트 섹터를 호출하는 것임
- 부팅 가능한 파이션이 없으면 미리 정의된 오류 메시지를 출력함
- STEP4. NTLDR실행
- 하드 디스크이 부팅 파티션에 있는 프로그램으로 윈도우 를 부팅할 수 있도록 간단한 파일 시스템을 싱행하고, boot.ini 파일 내용을 읽어 가능한 부팅 옵션을 보여줌
- STEP5. NTDETECT.com
- NTLDR에서 제어권을 위임 받아 시스템에 설치한 다음 하드웨어를 검사함
- STEP6. ntoskrnl.exe 실행
- 1. 커널 로드 : 시스템 설정을 로드하고, 이것을 HKEY_LOCAL_MACHINE|Sysyem|CurrentControlset|Services에 저장함. 그리고 이 정보를 확인하여 로드할 드라이브와 순서를 결정함
- 2. 커널 초기화 : 드라이버에서 현재 제어 설정을 검사하고 작업을 시작함
- 3. 서비스 로드 : 세션 관리자 서브시스템과 Win325 서브시스템을 로드함
- 4. 서브시스템 시작 : 윈도우 서브시슽템을 초기화한다. Win32 서브시스템은 로그인을 처리하고 Winlongon.exe를 시작함. Ctrl + Alt + Delete 를 누르면 로그인 창을 활성화하고, 계정과 패스워드를 입력받아 로컬 보안 인증 서버에 보냄. 계정과 패스워드를 전달받은 로컬 보안 인증 서버는 보안 계정 관리자에 저장된 정보와 비교하여 서로 일치하면 Userinit.exe 프로세스가 HKET_LOCAL_MACHINE|SOFTWARE|Microsoft|Windows NT|CurrentVersion|Winlogon의 셸 값에서 참조되는 셸을 실행함
3.2 윈도우 비스타 이후 버전 부팅 순서
- STEP1-3. POST 실행 및 기본 부팅 관련 설정 사항 로드, MBR 로드
- POST와 CMOS에서 기본 부팅 관련 설정 사항 및 MBR 로딩은 앞서 언급한 내용과 같음
- STEP4. 윈도우 부트 서브시스템 실행
- MBR에서는 NTLDR을 실행하지 않고 윈도우 부트 서브시스템을 실행함
- 윈도우 부트 서브시스템은 bootmgr.exe를 실행하고 부트 설정 데이터를 읽어 실행 가능한 운영체제의 목록을 보여줌
- NTLDR이 boot.ini를 읽어 실행 가능한 운영체제의 목록을 보여 주는 것과 같음
- BCD는 boot.ini처럼 텍스트 파일로 구성된 것은 아니며, bcdedit.exe를 이용하여 편집이 가능함
- STEP5. 윈도우 OS로더 실행
- 윈도우 OS로더인 Winload는 NTDETECT처럼 각종 드라이버를 로드하고 ntoskrnl.exe를 실행함
03. 리눅스/유닉스의 이해
1. 리눅스/유닉스의 역사
- 종류가 다양하지만 기본적인 구성은 거의 비슷함
- 유닉스의 시초는 멀틱스라는 시불할 운영체제로 1963년 부터 3년 동안 MIT, GE, 벨 연구소가 공동으로 개발함
- 초창기 유닉스는 상용 목적이 아니였음. 어떻게 보면 장난처럼 시작한 운영체제로 몇몇 사람이 흥미를 봉이면서 조금씩 발전함
2. 리눅스/유닉스의 구조
- 커널의 기본 개념은 윈도우와 큰 차이가 없음. 하지만 윈도우는 본래 커널이 하던 일을 여러 관리자가 분담하는 반면, 유닉스 커널은 윈도우처럼 개별 관리자가 존재하지 않음
- 윈도우는 본래 커널이 하던 일을 여러 관리자가 분담한 반면, 유닉스 커널은 위도우처럼 관리자가 존재 하지 않는다.
- 유닉스에서 커널을 거대한 프로그램 덩어리로 만든 모놀리식 커널과 개별 모듈로 구성된 마이크로 커널이 있다.
2.1 셀
- 셀이 제공하는 주요 기능
- 자체 내장 명령어 제공
- 입출력, 오류의 방향 변경
- 와일드카드
- 조건부, 무조건부 명령 열 작성
- 백그라운드 처리
- 셸 스크립트(프로그램)작성
2.2 리눅스 / 유닉스의 파일 시스템
- 유닉스의 파일 종류
- 일반 파일 : 일반적으로 생각하는 데이터 파일이나 실행 파일이다.
- 디렉터리 : 유닉스에서 디렉터리도 파일에 해당한다.
- 특수 파일 : 유닉스에서는 프린터나 터미널, 테이프 드라이버 같은 물리적인 장치를 특수 파일로 접근한다.
- 파이프 파일 : 파이프는 | 문자를 말하며, 명령 두 개를 연결할 때 사용한다.
3. 리눅스 / 유닉스 부팅 순서
- 1. POST실행
- 2. 기본 부팅 관련 설정 사항 로드
- 3.MBR (마스터 부트 레코드)로드
- 4. 부트 로더 실행
- 5. 실행 레벨에 따른 서비스 실행
각 싱행 레벨
- 실행 레벨 0 : 시스템을 종료할 때 사용한다.
- 실행 레벨 1 : 단일 사용자 모드로, 기본적으로 관리자 권한의 셸을 얻는다. 그러나 대부분 데몬을 실행하지 않으므로 기능을 제약되어 있다.
- 실행 레벨 2 : NFS를 지워하지 않는 다중 사용자 모드이다.
- 실행 레벨 3 : 일반 셸 기반의 인터페이스를 가진 다중 사용자 모드이다.
- 실행 레벨 4 : 깁본적으로 사용하지 않지만, 사용자가 임의로 정의하여 사용할 수 있다.
- 실행 레벨 5 : 기본은 실행 레벨3과 같으나, GUI환경을 지원한다.
- 실행 레벨 6 : 재부팅 한다.
'시스템 해킹과 보안' 카테고리의 다른 글
PART 03 운영체제 보안 (2) | 2024.11.07 |
---|---|
PART 02 시스템 해킹 (1) | 2024.11.04 |