스터디/해킹실습2

[운영체제 보안] 컴퓨터 아키텍처 및 운영체제, 커널 아키텍처, 인터럽트, 시스템 콜, 프로세스, 보안 아키텍처, 리눅스 보안

y00&z1 2021. 11. 1. 18:03

1.컴퓨터 아키텍처 및 운영체제

#컴퓨터 아키텍처  = CPU + 메모리 + 입출력 장치 

CPU = 제어장치 + 연산장치 및 각종 레지스터 

 

 2. 커널 아키텍처

3. 인터럽트 및 시스템 콜

 

4. 보안 아키텍처

#Trusted Computing Base(TCB)

: 운영체제 보안을 위해 요구되는 하드웨어와 소프트웨어를 탐재한 시스템. 보안 정책 실행을 위해서 컴퓨터 시스템 내부에 있는 보호 매커니즘을 총체적으로 지칭함

 

-Intel SGX

-ARM TrustZone

 

5. 프로세스 

#프로세스

: 실행중인 프로그램 ( = 메모리에 적재된 프로그램)

 

프로세스가 포함하고 있는 것 =   프로그램 코드 + current activity + stack + data section 

-current activity : program counter(PC), processer's registers

-stack : return address, temporary variables

-data section : global variables

 

#프로세스 상태

new 

running

waiting

ready

terminated

 

#프로세스 상태블록(PCB)

: 프로세스의 상태정보를 저장하는 구조체로, 운영체제가 프로세스에 대한 중요한 정보를 저장해놓는 저장 장소이다. 

상태관리와 context switch을 위해 필요하다. 

프로세스 생성 시 만들어진다.

 

  • PID : 프로세스 고유 번호
  • 프로세스 상태 : 준비 or 대기 or 실행
  • 다음 실행될 프로세스의 포인터
  • register save area
  •  CPU scheduling information : 스케줄링 및 프로세스 우선순위
  • 할당된 자원 정보
  • accounting information : cpu 사용시간, 실제 사용된 시간
  • 입출력된 상태 정보 (I/O status information)

 

 

#context switch

: cpu가 이전의 프로세스 상태를 PCB에 보관하고 또 다른 프로세스 정보를 PCB에서 읽어와서 레지스터에 적재하는 과정.  

  • 인터럽트 발생
  • 할당받은 CPU 사용 시간 모두 소모한 경우
  • I/O 입출력을 위해 대기해야 하는 경우

 

#프로세스 주소공간

-가상 주소공간

즉, 가상 메모리 시스템을 사용하기 위해서는 가상 주소(virtual address)와 물리 주소(physical address)가 필요하다. 

  • virtual address(가상 주소): 프로세스가 참조하는 주소
  • physical address(물리 주소): 실제 메모리 주소

https://jhnyang.tistory.com/33

 

[운영체제]PCB (Process Control Block)란? PCB 정보 & Context Switching 문맥교환 & Overhead 오버헤드

운영체제 목차 프로세스의 정의와 프로세스 상태에 대한 이해를 기반으로 하고 있습니다. 헷갈리시는 분은 이전 포스팅 보고 오기 프로세스를 조금 어렵게(?) 이렇게 표현하기도 해요 프로세스

jhnyang.tistory.com

 

https://libertegrace.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B0%80%EC%83%81-%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%9D%98-%EC%9D%B4%ED%95%B4

 

[운영체제] 가상 메모리의 이해

가상 메모리(Virtual Memory) 리눅스의 각 프로세스마다 4GB를 차지한다. 그런데 통상 메모리는 16GB? 정도인 것도 있고, 코드는 메모리에 반드시 있어야 하는데 여러개의 프로세스들 실행할 때 메모리

libertegrace.tistory.com

 

 

6. 리눅스 보안

#리눅스의 파일 권한과 특수 권한

 

파일종류 특수권한 소유자 접근권한 그룹 소유자 접근권한 기타 사용자 접근 권한
-, d,c, b, s, l, p 4 2 1 4 2 1 4 2 1 4 2 1
setuid setgid sticky bit r w z r w x r w x

 

 

#setuid

1. setuid 비트 설정방법

-8진수(4XXX)나 기호(u+s)를 이용하여 setuid 비트를 설정 가능 (setgid 비트 설정 제거 u-s)

-권한 변경을 위해 chmod 명령어 이용

 

-setgid 비트가 설정되어 있는 상태에서 : 

->그룹 소유자 접근 권한의 실행 권한 자리에 실행 권한이 있으면 소문자 s로, 

-> 실행권한이 없으면 대문자 S로 표시

 

2. setuid 비트 설정 시 보안 취약점

root 권한이 필요없는 프로그램에 소유주가 root + setuid 설정된 경우 <- 보안상 매우 취약

-> 일반 사용자로 접근하는 경우도 setuid 설정으로 실행 가능해짐

==> 권한 상승 우려가 있기 때문에 setuid 프로그램의 수 최소화 필요

 

 

 

https://eunguru.tistory.com/115

 

[UNIX / Linux] 특수 권한(setuid, setgid, sticky bit)

프로세스 번호 - UNIX 시스템에서는 프로세스에 다섯 가지 번호 부여 1. 프로세스에 부여되는 번호들 1) 프로세스 식별자(PID) 2) 실제 사용자 ID(RUID) 3) 유효 사용자 ID(EUID) 4) 실제 사용자 그룹(RGID) 5

eunguru.tistory.com