IT’s Portfolio

[OS] 운영체제 이해하기 본문

Security Study

[OS] 운영체제 이해하기

f1r3_r41n 2019. 11. 9. 14:28
728x90
반응형

운영체제 (Operation System)

- 사용자가 컴퓨터 시스템을 손쉽게 사용하도록 도와줌.

- 시스템 자원(메모리, 프로세서, 입출력 장치, 정보, 네트워크 등)을 효율적으로 관리할 수 있도록 하는 프로그램 집합.

 

운영체제의 기능

운영체제는 사용자에게 시스템 자원을 효율적으로 사용하고, 관리하기 위해 기능을 제공함.

 

- 사용자 명령 인터페이스 (UCI : User Command Interface)

  • 윈도우 운영체제 계열은 CMD, EXE. 유닉스와 리눅스 계열은 /bin/sh, /bin/bash SHELL
  • 해커들이 원격 공격을 통해 가장 얻고자 하는 기능

- 메모리 관리 (Memory Management)

  • 프로그램을 실행할 때 프로그램 코드와 데이터를 저장하고 처리하기 위한 메모리 필요
  • 프로그램의 메모리 요청에 대한 적합성 검증 및 메모리 할당
  • 할당된 메모리를 다른 프로그램이 접근하지 못하게 관리하고 보호함. 사용 종료 후 회수
  • 운영체제/시스템 해킹 할 때 메모리 관련 취약점을 매우 많이 이용

- 프로세스 관리 (Processor Management)

  • 프로세서(CPU)가 프로그램을 실행하는 과정에서 프로그램 코드가 단계적으로 수행
  • 프로그램 코드를 구성하는 명령어(Instruction)를 체계적이고 효율적으로 실행되도록 작업 스케줄링(Job Scheduling) 관리
  • 프로그램의 취약점을 공격할 때 명령어를 이해하고, 프로그램 구동 원리를 이해하는 것이 매우 중요

- 장치 관리 (Device Management)

  • 모니터, 키보드, 프린트, 하드디스크 등 시스템 내의 모든 장치(Device)를 프로그램에 할당하거나 회수하는 기능

- 파일 관리 (File Management)

  • 시스템 내의 파일과 폴더에 사용자 별 접근 권한을 부여, 접근 권한에 따라 파일을 읽거나 쓰거나 실행할 수 있는 기능을 관리
  • 공격자가 UCI 기능을 획득하면 파일 관리 기능을 통해 중요 파일을 열람하여 정보를 탈취해감
  • 유닉스/리눅스 계열과 같이 Multi-User 시스템이 기본인 경우, 파일 관리가 잘못되었을 때 일반 사용자가 중요 파일에 접근할 수 있는 등 접근 통제 취약점이 발생

CPU와 메모리

CPU: 연산장치 (레지스터 Register)

메모리(Memory): 저장장치 (스택, 힙, 메모리 주소)

 

- CPU: 80x86 (32bit CPU Register)

범주 80386 레지스터 이름 비트 용도

범용 세그먼트

(General Register)

EAX 누산기 32 주로 산술 연산에 사용(함수의 결과 값 저장)
EBX 베이스 레지스터 32 특정 주소 저장(주소 지정을 확대하기 위한 인덱스로 사용)
ECX 카운트 레지스터 32 반복적으로 실행되는 특정 명령에 사용(루프의 반복 횟수나 좌우 방향 시프트 비트 수 기억)
EDX 데이터 레지스터 32 일반 자료 저장(입출력 동작에 사용)

세그먼트 레지스터

(Segment Register)

CS 코드 세그먼트 레지스터 16 실행될 기계 명령어가 저장된 메모리 주소 지정
DS 데이터 세그먼트 레지스터 16 프로그램에서 정의된 데이터, 상수, 작업 영역의 메모리 주소 지정
DD 스택 세그먼트 레지스터 16 프로그램이 임시로 저장할 필요가 있거나 사용자의 피호출 서브루틴이 사용할 데이터와 주소 포함
ES, FS, GS 엑스트라 세그먼트 레지스터 16 문자 연산과 추가 메모리 지정을 위해 사용되는 여분의 레지스터

포인터 레지스터

(Pointer Register)

EBP 베이스 포인터 32 SS 레지스터와 함께 사용되어 스택 내의 변수 값을 읽는데 사용
ESP 스택 포인터 32 SS 레지스터와 함께 사용되며, 스택의 가장 끝 주소를 가리킴
EIP 명령 포인터 32 다음 명령어의 상대 위치 주소를 저장하며 CS 레지스터와 합쳐져 다음에 수행될 명령의 주소 형성

인덱스 레지스터

EDI 목적지 인덱스 32 목적지 주소에 대한 값 저장
ESI 출발지 인덱스 32 출발지 주소에 대한 값 저장
플래그 레지스터 EFLAGS 플래그 레지스터 32 연산 결과 및 시스템 상태와 관련된 여러가지 플래그 값 저장

 

- CPU: 80x86 (64bit, 32bit, 16bit, 8bit CPU 레지스터)

64bit Register Lower 32bit Lower 16bit Lower 8bit
rax eax ax al
rbx ebx bx bl
rcx ecx cx cl
rdx edx dx dl
rsi esi si sil
rdi edi di dil
rbp ebp bp bpl
rsp esp sp spl
rip eip    

 

- 윈도우 메모리 구조는 32bit일 때 기본적으로 프로세스 별로 4GB 구성 (2^32Bytes)

- 윈도우 운영체제는 가상메모리 사용. 프로세스 별로 유저영역 2GB, 커널영역 2GB(모든 프로세스 공유)로 총 4GB의 독립된 메모리 공간 사용.

- 64bit의 경우 이론적으로 16EB(2^64Bytes) 이어야하나, 실제로 그 일부인 8TB 영역만 사용자 영역에서 사용

728x90
반응형

'Security Study' 카테고리의 다른 글

HTTP Method 중 GET과 POST 정리  (0) 2019.10.27
Comments