IT 보안

정보보안기사 필기 - Part 1. 시스템 보안

xoheon 2024. 6. 24. 02:06

Part 1. 시스템 보안

정보보안기사 필기

Part 1. 시스템 보안

  • CPU : 입력장치로부터 자료를 받아 연산 후 , 결과를 출력 장치로 전송하는 과정을 제어하는 핵심 장치
    (연산,레지스터,제어,버스 기억장치, 캐시, 주기억장치, 보조기억장치)

  • CPU 구성요소 :
    1. ALU(연산장치) : 산술연산, 논리연산
    2. 레지스터 : 소규모 데이터, 중간 결과를 기억해두는 고속 영역
    3. Control Unit(제어장치) : 명령어 해석, 제어신호 발생
    4. 내부 CPU 버스 : ALU 레지스터간의 데이터 이동

  • 레지스터 종류
    PC(Program Counter) : 다음에 수행할 주기억장치 주소 기억MBR(Memory Buffer Register) : 주기억 장치 입/출력 자료 기억
  • IR(Instruction Register) : 주기억 장치 -> 인출한 명령코드 기억
  • MAR(Memory Address Register) : 주기억장치에 접근하기 위한 주기억장치 주소 기억

  • 버스 종류 (입출력 영향을 끼침)주소 버스 : 기억장소 위치, 식별
  • 제어 버스 : CPU, 기억장치, I/O 장치사이의 제어신호 전송
  • 데이터 버스 : 데이터 전송 용도

  • CPU 명령 실행 주기
    1. 인출 (Instruction Fetch) : 메모리 데이터를 로드하여 레지스터에 적재
    2. 간접 (Indrection) : 간접주소 방식 채택 경우 - CPU가 메모리 참조시 메모리 주소를 참조
    3. 실행 (Execution) : 명령, 데이터 > 산술, 논리연산 수행
    4. 인터럽트 (Interrupt) : 예기치 않은 문제 발생시에도 업무처리 가능 하게 하는 기능

  • 캐시메모리 : CPU와 주기억장치 속도차이 극복을 위한 버퍼메모리(기억장치)
    • 캐시메모리 사상방식
      • 직접사상 (Direct Mapping) : Main Memory를 여러구역으로 분할하여 캐시슬롯과 직접 매핑
      • 집합 연관사상(Set Associate Mapping) : 직접 + 연관 방법 메모리를 세트(블록)으로 분할하여 매핑
      • 연관사상 (Associate Mapping) : Main Memory 블록들이 캐시 슬롯에 어느곳이든 적재 가능
    • 캐시 메모리 관리 방식(CPU 원하는 데이터가 캐시 메모리에 적재하도록 관리)
      • 호출기법
        • Demand Fetch : 필요시 인출
        • Pre-Fetch : 예상되는 데이터를 미리 패치
    • 캐시메모리 교체 알고리즘
      1. FIFO(First in First Out) : 가장 오래 있었던 Page 교체 / 자주 사용되는 페이지가 교체될 수 있음
      2. LFU(Least Frequently Used) : 가장 사용횟수가 적은 Page 교체 / 가장 세로 들어온 페이지 교체될 수 있음
      3. LRU(Least Recently Used) : 가장 오랫동안 사용되지 않은 Page 교체 / 오버헤드 우려
      4. NUR(Not Used Recently) : 미사용 Page 교체 (참조/수정비트 사용)
      5. SCR(Second Chance Replacement) : 최조 참조 비트1, 1->0 두번 기회
    • 페이지 교체시 문제점
      • Page Fault(페이지 부재), DemadPaging, Thrashing(부재가 너무번번하여 프로세스 수행보다 페이지 교체 시간소요가 소모됨)

  • 가상메모리 (Virtual Memory) : Virtual Address Space 사용, 물리적 메모리보다 더 큰용량 제공
    • 가상메모리 관리 단위 (페이지 VS 세그먼트) : 비연속 할당
      • 페이지 : 동일한 크기의 최소 논리 단위 / 내부 단편화
      • 세그먼트 : 용도별로 논리적 단위로 나눔 / 외부 단편화
    • 연속 할당 : 고정분할, 가변 분할

  • I/O 인터페이스 (주기억장치 - 보조기억장치 입출력)
    1. CPU 경유 : 프로그램에 의한 I/O, 인터럽트에 의한 I/O인터럽트에 의한 I/O : 인터럽트 요청 감지시 수행작업을 중지
    2. 프로그램에 의한 I/O : CPU가 주변 장치를 감시하는 Polling 방식
    3. CPU 비경우 : DMA(Direct Memory Access Controller), Channel I/O채널 I/O (I/O Processor) : I/O장치의 복잡성으로 DMA 한계를 보완하여 별도 전용 처리기능 프로세서 탑재
      1. MultiPlexer Channel : 저속장치, 시분할 방식
      2. Selector : 고속장치, 단일 입출력
    4. DMA : 메모리와 주변장치를 직접 관리, 속도 빠름 (Cycle Stealing )

  • 운영체제 : 컴퓨터 시스템의 자원들을 효율적으로 관리, 사용자의 컴퓨터 사용 편의성 환경 제공
    • 운영제체의 목적
      • 처리능력 향상
      • 신뢰성 향상
      • 응답시간의 단축
      • 자원 활용률 향상
      • 가용성 향상
  • 운영체제 주요 자원 관리 기능
    • 프로세스 관리
    • 기억장치 관리
    • 주변장치 관리
    • 파일 관리
  • 프로세스 관리 (Process Management)
    • 프로세스 - 레지스터, 스택, 포인터, 실행중인 프로그램, 데이터 등의 집합체
    • 실행중인 프로그램, PCB 보유, Library Call, 자원할당의 기본 단위
    • 스레드 : 제어의 흐름, 프로세스에서 실행의 개념, CPU 작업의 기본단위, System Call
  • CPU 스케줄링 기법 (프로세스 상태 전이)
    • 점유방식
      1. 선점(Premptive) : 프로세스 CPU 점유 시 다른 프로세스 점유 기능(Round-robin,SRT)
      2. 비선점(Non-Preemtive) : 프로세스 CPU 점유시 독점 (FCFS,SJF,HRN)
    • 비선점 방식
      • FCFS(First Come first Service) : 대기큐에 도착한 순서에 따라 CPU할당
      • SJF(Short Job First) : 수행시간이 짧은 작업부터 CPU 할당
      • HRN(HIghest Ratio Next) : SJF 개선하여 프로세스 우선순위로 할당
    • 선점 방식
      • Round-robin : 각 프로세스는 같은 시간을 CPU에서 할당 받음
      • SRT(Shortest Reamainig Time) : 수행시간이 짧은 작업부터 CPU 할당하지만 수행중 다른 프로세스가 더 짧은시간 일때 점유 가능
  • 컴퓨터의 자원을효 효율적으로 사용하기 위한 정책, 자원을 요청하는 프로세스 순서를 정함

  • Multi Level Queue : 여러 종류의 그룹(큐)로 나누어 각자 독자적인 스케줄링 기법을 사용
  • Multi Level Feedback Queue : 그룹(큐)들을 라운드로빈 + 비선점방식 (Hybrid 스케줄링)

  • 병행성 제어
    1. 임계역역(Critical Section) : 공유자원의 독점을 보장하는 코드 영역, 병렬컴퓨팅 일부로도 쓰임, 세마포어 개념이용
      세마포어 : 공유자원의 개수를 나타내는 변수
    2. 모니터 상호배제 기법 : 하나의 프로세스만이 모니터 배부의 존재, 모니터 내부의 지역변수로 정의
  • 상호 배제(Mutual Excluson Techniques) : 다수의 프로세스 동일 자원 접근 시 무결성 보장, 임계영역 사용

  • 교착 상태 (Dead Lock) : 하나이상의 프로세스가 더 이상 계속할 수 없는 특정 사건을 기다리고 있는 상태
    • 교착상태 발생 조건
      • 상호배제 : 하나이상의 프로세스가 자원을 배타 점유
      • 점유와 대기 : 부분 할당으로 다른 종류의 자원을 요구하면서 자원 점유
      • 비선점 : 자원이 해재 되지 않음
      • 환형 대기 : 프로세스와 자원들이 원형을 이루며 서로 상대방의 자원을 요청
  • 교챡상태 대응 방법 (예방, 회피 , 발견, 회복)
    1. 예방(Prevention) : 필요 조건을 부정, 교착상태 예방
      • 점유와 대기 부정 : 필요한 자원을 일시에 요청
      • 비선점 조건의 부정 : 자원점유 후 자원 요청시 자원해제 선 요청
      • 환형대기 조건 부정 : 프로세스들의 자원별로 우선순위 결정
      • 상호배제 조건 부정 : 자원 비공유 전제
    2. 회피(Avoidence) : 가능성을 인정, 회피
      • 은행원 알고리즘 (안전상태, 불안전상태) : 프로세스가 요구한 최대 요구량 만큼 자원을 할당 안전순서서열 존재, 교챡상태는 불안전상태에서만 일어남
    3. 발견(Detection) : 교착상태 발생 허용, 원인을 규명하고 해결
      • 교챡상태 발견 알고리즘 : 교착생태 발생 검사 알고리즘, 고챡상태 빈도수 파악
      • 자원할당 그래프 : 방향 그래프 이용, 그래프 소거법을 이용하여 교챡 상태 감지
    4. 회복 (Recovery)
      • 프로세스 중지
      • 선점
  • 장치관리기법
    1. 탐색 시간 : 현위치에서 특정 실린더로 디스크 헤더가 이동하는데 소요되는 시간
    2. 회전 지연시간 : 섹터가 디스크 헤드까지 도달하는 시간
    3. 전송시간 : 데이터 전송 시간
  • 디스크
    디스크 접근 시간

  • 디스크 스케줄링 기법
    1. FCFS(First-Come Frist Served) : 먼저 들어온 요청 우선처리
    2. SSTF(Shortest-Seek-Time Frist) : 탐색거리가 가장 짧은 트랙 요청 우선 처리
    3. SCAN : SCAN에서 바깥쪽에서 안쪽으로 이동
    4. C-LOCK : 진행방향에서 요청 없을시 헤드를 처음위치로 이동

  • 파일 시스템(File System)
    • FAT(File Alioction Table)
      • FAT16 : 대부분 MS 호환가능, 2GB, 암호화 및 압출 불가능, 파일명 최대 영문 8자, 클러스터 1632KB
      • FAT32 : 2TB, 암호화 및 압출 불가능, 파일명 최대 영문 256자, 클러스터 4KB
      • NTFS(New Technology File System) : 암호화 및 압출 지원, 가변 클러스터[
    • EXT(Extended File System)
      • EXT : MINIX File System 보완, 최대 2GB, 파일명 255bytes, 단편화 문제
      • EXT2 : 2GB. 볼륨 32TB, 오류 수정 지원
      • EXT3 : 저널링 기능, 온라인 파일 시스템 증대, 디스크 조작화 최소화
      • EXT4 : 16GB, 볼륨 16Exabytes, 온라인 조각모음, 저널 체크섬, 하위 호환 가능
    • UFS(Unix File System) : 유닉스 파일 시스템 (부트블록, 슈퍼블록, 실린더 그룹, i-node 테이블
      • 슈퍼블록 : 파일 스시템 크기, i-node 테이블의 크기
      • i-node 테이블 : 파일 정보 - 파일 크기, 위치, 유형 허가권, 날짜

  • RAID : 디스크 고장 시 복구를 위해 2개 이상에 디스크에 데이터를 저장하는 기술 저 가용성 디스크를 배열구조로 중복 구성

RAID 0 : 최소 2개 디스크, 데이터를 나누어 저장, 장애발생시 복구 불가

RAID 1 : 디스크 완전 이중화, 많음 비용 발생, ReadWrite 병령 가능

RAID 2 : Hamming Code를 이용하요 오류 복구

RAID 3 : Partiy 정보를 별도 디스크에 저장

RAID 4 : Parity 정보를 별도 디스크에 블록별 저장 Wirte 성능 저하

RAID 5 : 분산 Parity 구현, 안전성 향상

RAID 6 : Parity 다중화, 장애발생 상황에서도 다른 정상 동작


  • 리눅스 서버 보안
    1. 쉘 : 명령어 해석기, 명령의 입출력 수행(Bash,Bourne, C, Korn), 프로그램 실행
    2. 커널 : 주기억장치에 상주, 사용자 프로그램 관리
    3. 파일 시스템 : 정보를 저장하는 기본적 구조, 계층(트리) 구조
  • 리눅스 핵심 구성요소

  • 리눅스 파일종류
    1. 루트 파일 시스템 : 시스템 프로그램, 디렉터리
    2. 일반 파일 : 프로그램, 원시 프로그램파일, 텍스트 등
    3. 디렉터리 파일 : 디렉터리에 관한 정보를 저장하는 논리적인 단위
    4. 특수 파일 : 주변장치에 연결된 파일

  • 리눅스 부팅
    1. PROM 검사
    2. 사용자 로그인 불가능한 상태, 암호변경할 떄 사용
    3. 공유된 자원이 없는 다중 사용자 단계
    4. 공유자원을 가진 다중 사용자 단계
    5. 사용 되지 않는 단계
    6. 3단계 가동후 X-Windows 싱행
    7. 재부팅 단계 > 3단계로 재부팅
  • Run Level

  • 리눅스 인증과 권한 /etc/passwd
  • passwd 파일 구조

Root : x : 0 : 0 : root : /root : /bin bash

사용자계정 : 패스워드(/etc/shadow) : UserID : GroupID : Home Directory : Shall


  • 리눅스 권한 관리
  • Umask (R =4, W=2, X=0, User : Group : Other) : Default 권한, 파일 666, 디렉터리 777

Chmod : 권한 부여 명령 (chmod 777 파일 명, chmod u+g, g-w, o+r 파일 명 )

Chown : 파일에 대한 사용자, 그룹 변경 (Chown 소유자 : 그룹)


  • 특수권한 관리 (Setuid, Setgid, Stickybit)
  • Setuid : 파일을 소유자권한으로 실행 가능 (4000, u+s)

Setgid : 파일을 그룹 권한으로 실행 가능 (2000, g+s)

Stickybit : 공용 디렉토리 (1000)


  • 로그파일 /var/log
  • 현재 사용자 확인 : w, who - 로그인 사용자 ID, 사용 터미널, 로그인 시간

로그인한 사용자 정보 : /var/utmp

로그인, 로그아웃 정보 : /var/wtmp (last 명령어 사용)

로그인 실패 정보 : /var/btmp


  • Syslog (syslogd : /etc/syslogd.conf 로그 수준) : 로그 수준을 읽고, 로그를 기록

유형 : emerg > alert > crit > err > warn > notice > info > debug


  • 작업 스케줄러 관리
  • Cron : 반복적인 프로세스 작업을 수행할 때 사용하는 batch 프로그램 (/etc/crontab)

30 * * * * root /home/test.txt : 30분 마다 test 실행

분 시 일 월 요일 사용자 실행 명령

AT : 한번만 실행


  • 파일 무결성 검사
  • 초기 상태 파일 정보에 대해 해시값 저장, 이후 비교

Tripwire (--init : 초기화 , --check : 무결성 검사)


  • 윈도우 클라이언트 및 서버 보안
  • 파일 시스템 (FAT, NTFS)

  • 윈도우 인증 시스템 (Winlogon, GINA, LSA, SAM, SRM)
    1. Winlogon : 윈도우 로그인 프로세스
    2. GINA(msgina.dll) : Winlogon Gina로딩하여 계정과 암호를 LSA 전달
    3. LSA(lsas.exe) : SRM 작성한 감사로그 기록, 계정과 암호 검증을 위해 LTLM 모듈 로딩, 계정검증
    4. SAM : 사용자 계정정보 해시값 저장
    5. SRM : 사용자 고유 SID 부여 SID 권한 부여

  • 윈도우 실행 프로세스
    1. WIninit.exe : 윈도우 시작 프로그램
    2. Services.exe : 윈도우 서비스 관리
    3. Lsm.exe : 시스템관리 작업, 주요 함수 실행, 호스트 컴퓨터-서버 연결 관리
    4. Svchost.exe : 서비스를 관리하기위한 프로세스
    5. Conost:exe : 키보드, 마우스 입력 허용, 문자 출력 셸의 기본 기능 수행

  • 공유 폴더 (Net BIOS : 445)

공유폴더 확인 : net share

공유폴더 삭제 : net share /delete


  • 레지스트리 : MS 운영체제에서 OS 및 응용 프로그램등에 피료한 정보를 저장하고 관리하기 위한 계층형 데이터 베이스 Key, Value , Data Type, Data로 이루워져 있음.

  • 루트키 ( 레지스트리 최상위 키)
    1. HKEY_CLASSES_ROOT : 확장자, 프로그램간의 연결 정보
    2. HKEY_LOCAL_MACHINE : HW,SW 설치 정보
    3. HKEY_USERS : 사용자 정보
    4. HKEY_CURRENT_CONFIG : 디스플레이, 프린터 정보

  • 주요 레지스트리 키컴퓨터 이름 : HKLM\SYSTEM\ControlSet00X\Control\ComputerName\ActiveComputerName최근에 실행한 명령어 : HKU{USER}\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
  • 시작프로그램 : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Current Version\ Run[]
  • 버전 정보 : HKLM\SOFTWARE\Microsoft\Windows NT\Current Version

  • 이벤트 로그 및 웹 아키팩트 분석
  • 윈도우 이벤트 로그 : 이벤트 뷰어를 통해 확인 가능 , .evt

웹 아키팩트 분석 : 사용자가 웹 사이트를 이용한 흔적을 분석하는 것 (웹 브라우저 캐시, 히스토리 , 쿠키)


  • 바이러스 (자가복제 가능) vs 악성코드 (자가복제 불가능)1세대 (원시형 바이러스) : 고정된 크기 주기억장치에 상주하여 감염 (Stone 바이러스, 예루살렘 바이러스)

  • 세대 별 바이러스

2세대 (암호화 바이러스) : 프로그램을 암호화 시킴, 암호화 방식이 일정하여 복호화 방식 쉬임 (폭포 바이러스, 느림보 바이러스)

3세대 (은폐형 바이러스) : 다른 실행파일에 기생 감염 시 백신을 속여 감염 여부 확인이 어려움 ( 맥가이버 바이러스, 브레인 바이러스)

4세대 바이러스 (갑옷형 바이러스) : 10만개 이상의 암호화 기법을 사용하여 은폐 (다형성 바이러스, 자체 변형 바이러스)

5세대 바이러스 (매크로 바이러스) : 매크로 명령을 사용하는 프로그램을 감염, 누구나 쉽게 생성/배포 가능 (Melisa 바이러스, Nimda 바이러스)


  • 악성코드
  • Shellcode : 작은 크기의 코드로 소프트웨어 취약점을 이용하는 기계어 코드

HeapSpray : 셸코드를 힙영역에 뿌리는 것 전역변수를 이용한다.

예방방법 : (ASLR 설정 - 메모리 동적 주소 할당)

Sysctl - w kernel.radomize_va_space=1

버퍼 오버플로우 : 프로세스가 사용가능한 메모리 공간을 초과해 발생되는 공격

스택 오버플로우 : 스택에 저장되어 있는 복귀주소가 지역변수에 의해 침범

비권고 함수 : strcpy, strcat, getwd, gets scanf, sprintf

권고 함수 : strmcat stmcpy, fgets, fscanf, vfscanf, snprintf

힙 버퍼 오버플로우 : 동적으로 할당하는 공간이 힙에 저장되어 경계값을 검사하지 않고, 사용 시 메모리가 경계를 초과

APT(Advanced Persistant Threat) : 특정 공격들을 SNS를 사용하여 지속적으로 수행하는 공격 (침투 - 탐색 - 수집/공격 - 유출)