본문 바로가기
디지털포렌식

디지털포렌식 2급 필기 준비 - 2과목

by todayisfriday 2025. 4. 16.

파티션의 구조

  • 파티션의 개념
하드디스크 또는 SSD 같은 저장장치를 논리적으로 분할한 영역
→ 운영체제가 각 파티션을 독립적인 드라이브처럼 인식하게 해줌
  • 구성 요소 (MBR기준)
+--------------------+
| MBR (Master Boot Record) - 512B |
+--------------------+
| 파티션 테이블 (Partition Table) |
+--------------------+
| 부트 코드 (Boot Code) |
+--------------------+
| 각 파티션의 시작 오프셋, 크기 정보 |
+--------------------+
| 논리 파티션 영역들 |
+--------------------+

 

  • 디스크, 파티션, 볼륨

구성 요소 설명 예시
디스크 (Disk) 물리적인 저장 장치 전체 (HDD, SSD 등) 디스크 0, 디스크 1 (Windows에서 보이는 이름)
파티션 (Partition) 디스크를 논리적으로 나눈 영역. 각 파티션마다 파일 시스템 설정 가능 기본 파티션, 확장 파티션, 논리 파티션 등
볼륨 (Volume) 파티션 위에 파일 시스템이 설정되어 드라이브처럼 사용할 수 있는 단위 C:, D:, E: 드라이브
파일 시스템 볼륨 안에서 데이터를 구조적으로 저장·관리하는 방식 FAT32, NTFS, exFAT, ext4 등
  • 디스크를 물리적으로 구분한 것이 파티션, 논리적으로 묶은 것이 볼륨
  • 여러 개의 파티션을 하나의 볼륨으로 사용가능하지만 일반적으로 1파티션 = 1볼륨
  • MBR, VBR, GPT
구분 MBR
(Master Boot Record)
VBR
(Volume Boot Record)
GPT
(GUID Partition Table)
위치 디스크 맨 앞
(LBA 0, Sector 0)
각 파티션의 시작 부분 LBA 1부터 시작
(LBA 0은 보호용 MBR)
기능 부팅 코드 + 파티션 정보 포함 OS 로더 실행, OS 부팅 시작 파티션 정보 저장 (UEFI 기반),
복구용 백업 포함
구성 446B 부트 코드 +
64B 파티션 테이블 +
2B 시그니처(0x55AA)
부트 코드 +
파일시스템 식별 코드 등
GPT 헤더 + 파티션 엔트리 테이블
(128개 이상 지원)
부팅 방식 BIOS 기반 MBR이 제어를 넘긴 다음
OS 로더 실행
UEFI 기반 (보다 현대적인 방식)
파티션 수 기본 4개
(확장 파티션으로 늘릴 수 있음)
N/A (파티션 내부 구조이므로) 128개 이상 가능
디스크 용량 지원 최대 2TB N/A 최대 18EB (엑사바이트)
백업 존재 여부 없음 없음 GPT 헤더와 테이블은
디스크 끝에 백업 저장
호환성 구형 시스템과 호환 우수 모든 OS에서 사용됨 신형 시스템 전용,
일부 구형 OS는 지원 안됨

 

더보기

LBA (Logical Block Addressing): 디스크 주소를 논리적으로 표현 (ex. LBA 0 = MBR)

0x55AA 시그니처: MBR의 끝을 나타내는 16진수 서명 → 부트 가능한 디스크 식별

부트 코드: 시스템 부팅 시 가장 먼저 실행되는 명령어 집합

파티션 테이블: 각 파티션의 시작 위치, 크기, 부팅 여부 저장

저널링: 변경 내역 기록 → 시스템 오류 발생 시 데이터 복구에 활용

 

파일시스템

  • 개념
저장장치(HDD, SSD 등)에 데이터를 저장하고 관리하는 구조적 체계
운영체제가 파일을 저장/읽기/삭제할 수 있도록 데이터의 저장 위치와 메타데이터를 체계적으로 관리하는 역할을 함

[ 부트 섹터 ]                            ---> 해당 파티션의 부트 정보 저장
[ FAT 또는 MFT 등 메타영역 ] ---> 파일 위치 정보/연결 정보 관리 (ex. FAT, NTFS)
[ 데이터 영역 (파일 저장) ]       ---> 실제 파일 내용이 저장되는 공간

 

  • 파일시스템의 주요 기능
기능 설명
파일 저장/삭제 파일을 저장하고 필요 시 삭제 처리
디렉토리 관리 파일들을 폴더 구조로 분류하고 접근 가능하게 함
메타데이터 저장 파일의 이름, 생성/수정일, 크기, 속성 등 기록
공간 할당 파일을 저장할 섹터/클러스터를 결정하고 관리
접근 제어 사용자의 접근 권한, 암호화 등 보안 기능 제공 (NTFS 등)

 

  • 파일시스템의 종류
파일 시스템 지원 OS 단일 파일 최대 크기 특징
FAT32 Windows, Linux 등 4GB 호환성 높음, 저널링 X
NTFS Windows 전용 이론상 16TB 이상 ACL, 암호화, 저널링 
exFAT Windows, macOS, Linux 매우 큼 (16EB 이론) 대용량 USB/SD 카드용
ext4 Linux 전용 16TB 저널링, 성능↑, 대용량 지원
HFS+ / APFS macOS 전용 수 TB macOS 전용 고속 파일 시스템

 

  • FAT 파일시스템 종류
파일 시스템 최대 파일 크기 최대 볼륨 크기 지원 환경 주요 특징
FAT12 32MB 이하 32MB MS-DOS, 플로피 디스크 초기형, 12비트 구조
FAT16 2GB 2GB DOS, 초기 Windows 16비트 FAT, 기본 FAT 구조 개선
FAT32 4GB 8TB (이론상) Windows, Linux, macOS 등 가장 널리 사용된 FAT, 호환성 ↑, 저널링 X
exFAT 16EB 128PB 이상 Windows, macOS, Android 등 FAT32 단점 보완, 대용량 USB/SD 카드용

 

  • EXT 파일시스템 종류
파일 시스템 최대 파일 크기 저널링 지원 OS 주요 특징
ext 2GB X Linux (구버전) 최초의 리눅스 파일 시스템
ext2 2TB X Linux 안정성↑, 저널링 없음
ext3 2TB O Linux ext2 기반 + 저널링 추가
ext4 16TB (이론상 1EB) O Linux 대용량 지원, 성능↑, 가장 널리 사용

 

NTFS 파일 시스템

  • 개념
New Technology File System의 약자로, 마이크로소프트가 개발한 고급 기능의 파일 시스템
Windows NT 계열 이후 기본 파일 시스템
FAT32의 한계를 극복하고 보안, 안정성, 대용량, 복구 기능을 지원

 

  • NTFS 핵심 요소
구성 요소 설명
MFT (Master File Table) NTFS의 핵심! 모든 파일과 디렉토리의 정보를 담고 있는 메타데이터 테이블
파일 레코드 MFT의 각 항목, 파일 하나당 1레코드 이상
속성(Attribute) 파일 이름, 크기, 생성 시간, 데이터 위치 등 세부 항목
저널링 (Journal) 변경 사항을 기록하여 데이터 복구 기능 강화
보안 정보 사용자 권한 정보(ACL 등) 포함
$LogFile 트랜잭션 로그 → 시스템 복구 가능

 

  • 제공 기능
기능 설명 목적/장점 시험 포인트
MFT
(Master File Table)
파일과 디렉토리 정보를 저장하는 메타데이터 테이블 빠른 파일 접근, 전체 파일 관리 NTFS의 핵심 구조,
FAT의 FAT 테이블과 대응
저널링 (Journal) 변경 내용을 기록하여 오류 발생 시 복구 지원 데이터 무결성 향상, 복구 가능 ext3/ext4와 유사,
FAT32에는 없음
파일 암호화 (EFS) 파일 또는 폴더 단위로 암호화 가능 보안 강화, 데이터 보호 NTFS만의 기능,
exFAT/FAT에는 없음
접근 제어 목록 (ACL) 사용자 및 그룹별
파일 접근 권한 설정
보안성 강화, 다중 사용자 환경 대응 NTFS만 지원,
윈도우 서버에서 중요
압축 기능 파일 및 폴더 단위 압축 저장 가능 저장공간 절약 속도는 다소 저하될 수 있음
디스크 쿼터 (Quota) 사용자 별 디스크 사용량 제한 가능 공유 시스템 자원 관리 Windows 서버 환경에서 자주 사용
하드 링크 /
심볼릭 링크
하나의 파일을 여러 이름으로
접근 가능
파일 복사 없이 공유 가능 유닉스 유사 기능, NTFS도 지원
트랜잭션 파일 처리
(TxF)
파일 작업을 트랜잭션 단위로 처리 일관성 보장, 원자성 처리 응용 프로그램에 따라 활용

 

  • 파일 삭제 시 동작 방식

① MFT 레코드 상태 변경 - 해당 파일의 **파일 속성(Attribute)**에서 “삭제됨” 표시 (in-use → not in use)
② $Bitmap 업데이트 - 파일이 점유하던 클러스터의 사용 상태를 “비어 있음”으로 표시
③ 데이터 영역은 그대로 - 실제 파일 내용은 데이터 영역에 그대로 존재
④ $LogFile 기록 - 삭제 동작이 저널링 시스템에 기록됨 → 복구 추적 가능
⑤ $MFTMirror 및 복구 정보는 유지 - 일부 정보는 복구 시 사용될 수 있음

더보기
  • 실제 파일 데이터는 삭제되지 않고 남아 있음
  • 복구 도구(예: Recuva, FTK, Autopsy 등)로 복원 가능
  • 보안 삭제(영구 삭제)를 위해선 덮어쓰기 또는 Wipe 작업 필요
  • $Bitmap과 MFT의 상태 변경만으로도 파일은 “삭제된 것처럼” 동작
  • NTFS는 삭제 시 논리적 삭제만 수행
  • MFT의 파일 상태만 변경되고 데이터는 그대로 존재
  • $Bitmap은 클러스터 해제 정보 갱신
  • $LogFile은 트랜잭션(삭제 동작) 기록
  • 복구는 삭제 직후가 가장 유리, 덮어쓰기되면 어려워짐

 

운영체제

  • 개념
사용자와 하드웨어 사이의 중재자 역할을 하며 컴퓨터 자원을 효율적으로 관리하고 제어하는 시스템 소프트웨어

구성요소
커널 (Kernel) : 운영체제의 핵심! 자원 관리와 시스템 호출 처리
쉘 (Shell) : 사용자 명령어 해석 후 커널에 전달 (CLI/GUI)
파일 시스템 : 파일과 디렉토리 관리 기능 담당
드라이버 : 하드웨어 장치 제어를 위한 소프트웨어 모듈
시스템 콜 : 응용프로그램이 OS의 기능을 요청하는 방법 (ex. open, read 등)

 

  • 운영체제의 분류
분류 기준 유형 정의 및 설명 대표 예시
사용자 수 단일 사용자 OS 한 번에 한 명의 사용자만 사용할 수 있는 운영체제, 다중 사용자 환경 미지원 MS-DOS,
Windows 95
다중 사용자 OS 여러 사용자가 동시에 시스템에 접속하여 자원을 공유할 수 있는 운영체제 UNIX, Linux,
Windows Server
동시
작업 수
단일 작업 OS 한 번에 하나의 프로그램만 실행할 수 있는 구조, 자원 활용도 낮음 MS-DOS
다중 작업 OS 두 개 이상의 프로그램을 동시에 실행할 수 있는 멀티태스킹 지원 운영체제 Windows, Linux,
macOS
처리 방식 배치 처리 OS 사용자의 개입 없이 작업들을 모아서 한꺼번에 처리
초기 대형 컴퓨터에서 사용
IBM 초기 OS,
COBOL 시스템
시분할 OS 여러 사용자에게 CPU 시간을 할당해 빠르게 번갈아가며 처리
반응 속도 빠름
UNIX, Linux
실시간 OS
(RTOS)
정해진 시간 안에 작업을 완료해야 하는 시스템용 OS, 지연 허용 불가 VxWorks, QNX,
RTLinux
사용자
인터페이스
CLI
(명령어 인터페이스)
텍스트 기반 명령어 입력 방식, 숙련자에게 강력하지만 사용자 친화도 낮음 Linux Shell, CMD, PowerShell
GUI
(그래픽 인터페이스)
아이콘, 창, 마우스를 사용하는 시각적 환경 제공, 사용자 친화도 높음 Windows, macOS

 

  • 파일 할당 기법
기법 설명 장점 단점 대표 예
연속 할당
(Contiguous)
파일이 디스크에서 연속된 블록에 저장됨 빠른 접근 속도
(직접 계산 가능)
외부 단편화 발생
파일 크기 예측 필요
초기 파일 시스템, CD-ROM
연결 할당
(Linked)
각 블록이 다음 블록 주소를 포인터로 연결 단편화 적고
공간 활용도 높음
무작위 접근 느림
포인터 저장 공간 필요
FAT(File Allocation Table)
인덱스 할당
(Indexed)
모든 블록 번호를 저장한
인덱스 블록을 통해 관리
무작위 접근 용이
검색 빠름
인덱스 블록 크기 제한
간접 인덱스 필요
UNIX, ext 계열

 

  • 운영체제 기능
항목 인터럽트 (Interrupt) 예외 (Exception) OLE (Object Linking and Embedding)
정의 외부 또는 내부 장치의 요청으로 CPU의 흐름을 중단시키고 OS가 개입 프로그램 실행 중 오류나
특수 상황 발생 시 OS 개입
한 응용프로그램에서 다른 프로그램의
객체를 연결 또는 포함하는 기술
유형 하드웨어 인터럽트, 소프트웨어 인터럽트 0으로 나누기, 페이지 폴트,
권한 위반 등
Object Linking(연결),
Object Embedding(삽입)
발생 시점 외부 I/O 장치, 타이머, 시스템 콜 등 실행 중인 명령어 처리 도중 사용자가 문서 내에
다른 애플리케이션 객체 삽입 시
주 사용 목적 즉각적인 처리 필요 이벤트에 대응 비정상 상황 처리 및 시스템 보호 애플리케이션 간 데이터 연동 및 통합
운영체제 관여 중단 후 인터럽트 핸들러 호출 예외 핸들러 호출 또는 강제 종료 OS보다는 사용자 환경(UI)과
애플리케이션 레벨
예시 키보드 입력, 디스크 읽기 완료 Divide by zero,
segmentation fault
Word 문서에 Excel 그래프 삽입

 

디스크 스케쥴링

  • 개념 및 목적
디스크 입출력 요청이 여러 개 있을 때, 디스크 헤드를 어떤 순서로 움직이면 가장 효율적인지 결정하는 방식

목적
평균 탐색 시간 단축 : 디스크 헤드의 총 이동 거리 ↓
처리율 향상 : 더 많은 요청을 더 빠르게 처리
공정성 유지 : 요청 간 형평성 고려 (기아 현상 방지)

 

  • 종류
알고리즘 설명 특징 기아(Starvation)
FCFS
(First Come First Served)
요청 순서대로 처리 구현 쉬움, 이동 거리 비효율 없음
SSTF
(Shortest Seek Time First)
현재 헤드에서 가장 가까운 요청부터 처리 평균 탐색 시간 ↓, 효율 ↑ 발생 가능
SCAN
(엘리베이터 알고리즘)
한 방향으로 이동하다 끝까지 가면 반대 방향으로 처리 이동 규칙 명확,
요청 편향 줄임
거의 없음
LOOK SCAN과 유사하지만, 실제 요청 있는 곳까지만 이동 불필요한 이동 ↓ 없음
C-SCAN
(Circular SCAN)
한쪽 방향으로만 이동, 끝까지 갔다가 처음으로 점프 요청 처리 균형↑ 없음
C-LOOK LOOK + C-SCAN: 요청 있는 구간까지만 이동 후 점프 가장 효율적 방식 중 하나 없음

 

  • 예시 문제
[문제]
현재 디스크 헤드는 트랙 53에 위치해 있다.  
요청된 디스크 트랙 번호는 다음과 같다:  
👉 98, 183, 37, 122, 14, 124, 65, 67

SSTF(Shortest Seek Time First) 알고리즘을 사용했을 때,  
디스크 헤드의 이동 순서와 총 이동 거리는?
더보기

[풀이 과정]
SSTF는 "현재 위치에서 가장 가까운 트랙"을 우선 처리하는 방식이다.

초기 위치: 53  
1. 53 → 65 (거리 12)  
2. 65 → 67 (2)  
3. 67 → 37 (30)  
4. 37 → 14 (23)  
5. 14 → 98 (84)  
6. 98 → 122 (24)  
7. 122 → 124 (2)  
8. 124 → 183 (59)

[결과]
- 디스크 헤드 이동 순서:  
  53 → 65 → 67 → 37 → 14 → 98 → 122 → 124 → 183

- 총 이동 거리:  
  12 + 2 + 30 + 23 + 84 + 24 + 2 + 59 = 236 트랙

[핵심 요약]
- SSTF는 "가장 가까운 요청부터" 처리
- 효율은 높지만, 일부 요청이 오래 기다리는 '기아 현상' 발생 가능성 있음

 

프로세스 스케줄링

  • 프로세스와 쓰레드
구분 프로세스 (Process) 스레드 (Thread)
정의 실행 중인 프로그램의 독립된 단위 프로세스 내에서 실행되는 작업의 최소 단위
메모리 공간 각 프로세스는 독립된 메모리 공간 사용 (코드, 데이터, 힙, 스택) 코드, 데이터, 힙은 공유하고, 스택은 개별 보유
자원 소모 많음 (컨텍스트 스위칭 비용 ↑) 적음 (스레드 간 전환 비용 ↓)
통신 방식 프로세스 간 통신(IPC, 파이프, 소켓 등) 필요 같은 메모리 공간 공유 → 빠른 통신 가능
독립성 서로 독립적 → 하나가 죽어도 영향 없음 같은 프로세스 내에서는 서로 영향 가능
생성 비용 높음 (OS가 많은 정보 생성) 낮음 (프로세스 내에서 간단히 생성)
예시 크롬 창 하나, 워드 프로그램 크롬 탭 하나, 워드에서 맞춤법 검사 스레드

 

  • 용어정의
용어 정의 공식
도착 시간 (Arrival Time) 프로세스가 준비 큐에 도착한 시간 시스템 기준 시점
실행 시간 (Burst Time) CPU가 프로세스를 실행하는 데 걸리는 시간 요청된 연산량
완료 시간 (Completion Time) 프로세스가 CPU에서 완전히 끝나는 시간 스케줄링 결과
대기 시간 (Waiting Time) 프로세스가 CPU를 기다린 총 시간 반환 시간 - 실행 시간
반환 시간 (Turnaround Time) 도착부터 종료까지 걸린 총 시간 완료 시간 - 도착 시간
응답 시간 (Response Time) 처음으로 CPU를 받기까지 걸린 시간 첫 실행 시작 - 도착 시간

 

  • 선점형 스케줄링
현재 실행 중인 프로세스를 중간에 강제로 중단시켜 더 높은 우선순위의 프로세스나 새로운 작업을 우선 실행하도록 하는 스케줄링 방식
즉, CPU를 빼앗을 수 있는 스케줄링
실시간성과 응답성이 비선점형보다 우수
알고리즘 기준 설명 기아 현상
SRTF
(Shortest Remaining Time First)
남은 실행 시간 SJF의 선점형 버전. 더 짧은 작업이 도착하면
현재 작업 중단
가능
선점형 우선순위 우선순위 값 더 높은 우선순위 프로세스가 오면 CPU를 뺏음 가능 (Aging 필요)
Round Robin 시간 할당량
(Time Quantum)
모든 프로세스가 순서대로 일정 시간씩 CPU 사용 없음 (공정함)
멀티레벨 큐(선점형) 큐 우선순위 상위 큐가 항상 우선. 하위 큐는 CPU를 빼앗길 수 있음 있음

 

  • 비선점형 스케줄링
알고리즘 스케줄 기준 특징 장점 단점 기아 발생
FCFS
(First-Come, First-Served)
도착 순서 가장 먼저 도착한 프로세스를 끝날 때까지 실행 구현 간단,
공정한 방식
Convoy 효과
(긴 작업으로 전체 지연)
없음
SJF (Non-preemptive)
(Shortest Job First)
실행 시간
(Burst Time)
실행 시간이 가장 짧은
프로세스를 먼저 실행
평균 대기
시간 최소
긴 작업은 계속 밀림 있음
우선순위 스케줄링
(Priority Scheduling)
우선순위 값 우선순위가 가장 높은
프로세스 먼저 실행
중요 작업 빠르게 처리 가능 낮은 우선순위는
무한정 대기 가능
있음
(Aging 필요)

 

프로세스 페이징

프로세스의 논리적 주소 공간을 고정 크기 단위(페이지)로 나누고, 물리적 메모리도 같은 크기의 프레임으로 나누어 페이지를 프레임에 매핑하는 메모리 관리 기법
프로세스 논리 주소:   [Page 0][Page 1][Page 2]...
물리 메모리 프레임:   [Frame 5][Frame 2][Frame 7]...
→ Page Table에 의해 매핑


논리 주소 공간 → 페이지(Page) 단위로 분할
물리 주소 공간 → 프레임(Frame) 단위로 분할
각 페이지는 아무 프레임에나 할당 가능 (순서 무관)

논리 주소 = (페이지 번호, 오프셋)
물리 주소 = 프레임 번호 × 프레임 크기 + 오프셋


1. CPU가 논리 주소 생성 → 페이지 번호 + 페이지 내 오프셋으로 나뉨
2. 페이지 번호 → 페이지 테이블에서 프레임 번호 조회
3. 프레임 번호 + 오프셋 → 물리 주소 계산
  • 핵심 용어 정리
용어 정의 페이징과의 관계 역할 / 기능
국부성
(Locality)
프로세스가 특정 메모리 영역을
집중적으로 참조하는 성질
국부성이 높을수록
페이지 부재(Page Fault) 발생률 ↓
페이징 성능 최적화의 이론적 기반
워킹셋
(Working Set)
일정 시간 구간(Δ) 동안 프로세스가
자주 사용하는 페이지 집합
실행 안정성 유지에 필요한
최소 프레임 수를 결정
프레임 할당 기준,
스레싱 방지 지표
스레싱
(Thrashing)
페이지 부재가 너무 많아 CPU가
작업보다 교체에 시간 소모
워킹셋보다 적은 프레임 할당 시 발생 페이징 오버헤드 급증,
성능 급락
페이지 부재
(Page Fault)
필요한 페이지가 메모리에 없는 상태 페이징 시스템의 주소 접근 시 발생 디스크에서 페이지 로딩 필요 → 느림
프레임(Frame) 물리 메모리에서 페이지를 저장하는 고정 크기 블록 페이지는 프레임에 매핑되어 저장됨 페이징에서 실질적인
저장 단위
페이지(Page) 논리 주소 공간을 나눈 고정 크기 단위 페이지는 프레임과 1:1 매핑됨 논리 주소에서 물리 주소로
변환 시 기본 단위
페이지 테이블 페이지 번호와 프레임 번호의
매핑 정보를 저장하는 표
주소 변환 시 반드시 참조됨 논리 → 물리 주소 매핑 핵심
TLB
(Translation Lookaside Buffer)
페이지 테이블을
빠르게 참조하기 위한 캐시
주소 변환 속도 향상 자주 사용하는 페이지 매핑을 빠르게 찾음
페이지 교체 알고리즘 프레임 부족 시
어떤 페이지를 제거할지 결정
페이징의 효율에 큰 영향을 미침 LRU, FIFO, Optimal 등
다양한 방식 존재
  • 관계도 요약
[국부성] → 페이지 접근이 특정 영역에 집중됨
       ↓
[워킹셋] = 그 집중된 "사용 중인 페이지 집합"
       ↓
워킹셋보다 적은 프레임 할당 시 → [스레싱] 발생

이 모든 흐름을 관리하는 기본 메커니즘 = [페이징 시스템]
→ 페이지/프레임, 페이지 테이블, TLB, 교체 알고리즘 등 포함
  • 페이징 교체 알고리즘
알고리즘 교체 기준 장점 단점 기아 발생 특징 / 비고
FIFO
(First-In, First-Out)
가장 오래된 페이지 제거 구현 쉬움 성능 비효율
(Belady's anomaly 발생)
X 역설적 오류 발생 가능
OPT
(Optimal)
가장 오래 사용되지 않을 페이지 제거 이론상 최적 실제 구현 불가
(미래 예측 필요)
X 비교 기준용 알고리즘
LRU
(Least Recently Used)
가장 오랫동안 사용되지 않은 페이지 제거 국부성 반영, 성능 우수 비용 ↑
(시간/스택 기록 필요)
X 자주 사용됨,
TLB와 유사
LFU
(Least Frequently Used)
가장 적게 사용된
페이지 제거
이용률 기반 제거 초기 사용 안 한
페이지 유지 가능
O 사용률 계산 필요
Second Chance FIFO + 사용 비트 체크 FIFO의 단점 보완 구현 복잡 X Clock 알고리즘과 유사
Clock 원형 포인터
+사용 비트 검사
효율적,
구현 쉬움
가끔 오래된 페이지
남을 수 있음
X Second Chance의
하드웨어 버전

 

입출력장치의 버퍼링, 스풀링

항목 버퍼링 (Buffering) 스풀링 (Spooling)
정의 데이터를 일시적으로 저장하는
작은 메모리 영역(버퍼)사용
I/O 요청을 디스크에 먼저 저장했다가 장치가 준비되면 처리
목적 속도 차이를 완충하여
입출력 속도 향상 및 중첩 실행 지원
여러 I/O 작업을 순서대로 큐에 저장하여 병목 없이 처리
동작 방식 버퍼 메모리에 잠시 저장 후
입출력 장치로 전달 (또는 반대)
디스크 큐에 요청 파일 저장
→ 장치 준비 시 꺼내 처리
사용 위치 주로 메모리(RAM)에 존재 보조기억장치(디스크)에 저장
실시간성 실시간 반응 가능 (속도 차이 보완) 실시간성 낮음 (일괄 처리 성격)
주요 예시 키보드 입력 버퍼, 네트워크 송신 버퍼 프린터 출력 스풀링, 이메일 전송 대기 큐
중첩 실행 가능 여부 가능 (입출력과 처리 병행) 가능 (디스크에 저장되므로 CPU 독립적 실행)
주로 사용되는 장치 빠르거나 실시간 반응이 필요한 장치
(키보드, 모니터 등)
느리고 공유가 필요한 장치 (프린터, 디스크 등)

 

WINDOWS 운영체제

Microsoft에서 개발한 그래픽 사용자 인터페이스(GUI) 기반의 운영체제로, 데스크탑, 노트북, 태블릿, 서버 등 다양한 환경에서 사용 됨

  • 최초 버전: Windows 1.0 (1985)
  • 대표 버전: Windows XP, 7, 10, 11, Windows Server 시리즈
  • 현재는 Windows NT 커널 기반 운영체제로 통합됨
  • 핵심 구성 요소
구성 요소 설명
커널(Kernel) 하드웨어와 직접 상호작용, 프로세스·메모리·장치·파일 시스템 관리
HAL (Hardware Abstraction Layer) 하드웨어의 세부 사항을 추상화하여 OS가 일관되게 작동하도록 함
서비스 (Services) 백그라운드에서 자동 실행되는 기능들 (예: 인쇄, 보안, 업데이트 등)
레지스트리 (Registry) 시스템 및 사용자 설정을 저장하는 계층적 데이터베이스
드라이버 (Driver) 하드웨어 장치와 OS를 연결해주는 소프트웨어
GUI (사용자 인터페이스) 아이콘/창 기반의 사용 환경 제공 (탐색기, 시작 메뉴 등)
  • MFT(Master File Table)

MFT는 NTFS 파일 시스템에서 모든 파일과 디렉터리에 대한 메타데이터를 저장하는 중앙 테이블이다.

  • NTFS의 파일 관리의 핵심
  • NTFS에서는 모든 것(파일, 폴더, 심지어 MFT 자신까지)  파일로 관리
  • 파일 시스템의 “전화번호부” 혹은 인덱스” 역할
항목 설명
파일 이름 짧은 이름/긴 이름 등 포함 가능
타임스탬프 생성, 수정, 접근 시간 (4가지 이상)
파일 속성 읽기 전용, 숨김, 시스템 파일 등
파일 크기 및 실제 데이터 위치 클러스터 단위로 저장 위치 표시
보안 정보 ACL(Access Control List) 기반 보안 권한
하드 링크 정보 동일 파일을 참조하는 링크 목록
파일이 디렉터리인지 여부 디렉터리 플래그 포함
해당 파일의 MFT 항목 번호 파일마다 고유 번호 (예: $MFT 항목 0은 자기 자신)
  • MFT Entry 내 주요 속성
속성 이름 (Tag) 설명 포렌식 활용
$STANDARD_INFORMATION 파일의 기본 정보:
생성/수정/접근 시간, 권한, 속성 등
타임라인 분석의 핵심
MAC 시간 확인
$FILE_NAME 파일 이름, 이름 변경 시간, 부모 디렉터리 정보 등 이름 변경 여부, 실제 이름 확인
$DATA 실제 파일 내용(데이터)을 저장
작은 경우 레코드 내 저장 (resident) /
크면 외부 저장 (non-resident)
파일 내용 일부 추출 가능
$OBJECT_ID UUID 같은 고유 식별자 (특수 파일에만 존재) 링크 추적 시 유용
$SECURITY_DESCRIPTOR ACL 등 접근 제어 정보 포함 사용자 권한 분석
$ATTRIBUTE_LIST 속성이 여러 개일 경우 연결 리스트 형태로 연결 파일이 여러 MFT Entry에 걸칠 때 구조 확인
$INDEX_ROOT 
$INDEX_ALLOCATION
디렉터리 구조, 서브 디렉터리/파일 목록 관리용 속성 폴더 내부 분석
삭제 디렉터리 추적
$BITMAP 할당된 클러스터 여부 추적 파일 확장/축소 여부 확인
$LOGGED_UTILITY_STREAM 일부 시스템 특화 스트림용 보안 또는 NTFS 복구 대상
  • 레지스트리 키
Windows 시스템, 사용자, 소프트웨어 설정 정보를 계층적으로 저장하는 데이터베이스의 항목 단위

레지스트리 키 = 폴더
레지스트리 값 = 폴더 안의 파일

HKEY_LOCAL_MACHINE
└── Software
        └── Microsoft
               └── Windows
                        └── CurrentVersion
                                └── Run
루트 키 설명
HKEY_LOCAL_MACHINE (HKLM) 시스템 전체에 적용되는 설정 (드라이버, 서비스, 프로그램 등)
HKEY_CURRENT_USER (HKCU) 현재 로그인한 사용자 계정의 설정
HKEY_CLASSES_ROOT (HKCR) 파일 확장자 연결, COM 객체 등록 등
HKEY_USERS (HKU) 모든 사용자 프로파일 설정 (HKCU는 여기의 하위 항목 중 하나)
HKEY_CURRENT_CONFIG (HKCC) 현재 하드웨어 프로파일 정보 (부팅 시 동적 생성)
데이터 타입 설명
REG_SZ 일반 문자열 (string)
REG_DWORD 32비트 정수 값
REG_BINARY 이진 값 (바이트 배열)
REG_MULTI_SZ 문자열 배열 (여러 줄)
REG_EXPAND_SZ 환경 변수 포함 문자열
  • 하이브 파일
윈도우 레지스트리를 구성하는 실제 파일
하이브 파일 이름 실제 경로 포함 정보 포렌식 활용 포인트
SYSTEM C:\Windows\System32\config\SYSTEM 부팅 정보, 드라이버,
서비스, 하드웨어 설정
시작 서비스, 부팅 시간,
드라이버 흔적 확인
SOFTWARE C:\Windows\System32\config\SOFTWARE 설치된 프로그램, 경로,
설정, 라이선스 정보
설치 프로그램 목록, 악성코드 흔적, 실행 경로 분석
SAM
(Security Accounts Manager)
C:\Windows\System32\config\SAM 로컬 사용자 계정,
그룹, 암호 해시
사용자 목록, 관리자 계정 여부, 암호 크래킹 대상
SECURITY C:\Windows\System32\config\SECURITY 로컬 보안 정책,
감사 정책
감사 로그 정책,
접근 제어 권한 분석
DEFAULT C:\Windows\System32\config\DEFAULT 기본 사용자 프로필 설정 초기 사용자 환경 복원,
자동 실행 정보 확인
NTUSER.DAT C:\Users\\[사용자명]\\NTUSER.DAT 현재 사용자 계정의 설정, 실행 흔적 사용자 활동 이력, 실행 프로그램, 열어본 파일 추적
UsrClass.dat C:\Users\\[사용자명]\\AppData\\Local\\Microsoft\\Windows\\UsrClass.dat 최근 파일 목록,
윈도우 UI 설정
최근 사용 흔적,
UI 커스터마이징 정보
  • 시스템 백업 가능
항목 설명
레지스트리 설정 SYSTEM, SOFTWARE, SECURITY, DEFAULT 하이브 정보 포함
시스템 파일 DLL, EXE, SYS 등 핵심 운영체제 파일 (SFC로 보호되는 파일 포함)
드라이버 및 서비스 설정 장치 드라이버 및 서비스 자동 시작 정보 등
시스템 구성 설정 MSCONFIG, 부팅 옵션, 환경 변수
COM+ DB / WMI 구성 시스템 구성요소 상태 저장
애플리케이션 설치 시 생성된 복원 지점 프로그램 설치 시 자동 백업 지점 생성
Shadow Copy(볼륨 스냅샷) 사용자가 지정한 파일/폴더의 이전 버전 저장 가능
.sys, .inf 파일 일부 커널/하드웨어 드라이버 파일 포함
  • 시스템 백업 불가능
항목 설명
사용자 문서 바탕화면, 문서, 사진, 다운로드 등 사용자 데이터는 제외됨
e-mail, 개별 앱 데이터 메일 클라이언트 내부 데이터, 웹 브라우저 캐시 등
비운영체제 드라이브의 데이터 복원 지점 생성 시 C 드라이브(시스템 볼륨) 만 대상임
일반 실행 파일(EXE) 사용자가 직접 복사한 프로그램, 무설치형 앱
암호화된 파일 (EFS) 일부 복원 실패 가능 (인증서 문제 시)
임시 파일, 로그 Temp, Recent, Thumbs.db 등 캐시성 파일
응용 프로그램 사용자 설정 일부 앱의 사용자 맞춤 설정은 복원 안 됨 (예: Photoshop 설정 등)
레지스트리 외부에서 직접 조작된 시스템 설정 복원 포인트가 아닌 수동 변경값은 포함 안 될 수 있음

 

UNIX, LINUX 운영체제

항목 UNIX LINUX
개발 시기 1969년 (AT&T) 1991년 (리누스 토르발스)
라이선스 상용 (비공개가 많음) 오픈소스 (GPL 기반)
커널 구조 대부분 모놀리식 커널 모놀리식 커널 + 모듈화
플랫폼 서버/슈퍼컴퓨터 중심 PC, 서버, 모바일, 임베디드 등
사용자층 기업/학술/기관 개발자, 일반 사용자, 교육, 서버
대표 배포판 AIX, HP-UX, Solaris, BSD Ubuntu, RedHat, Fedora, Arch 등
시스템 구조 POSIX 기반 구조 POSIX 준수, GNU 유틸리티 결합
지원 기업 기술지원 중심 커뮤니티 + 일부 기업 지원
커널 업데이트 제한적, 기업 유지 활발한 개발과 커뮤니티 패치
  • UNIX 파일시스템 구조
구성 요소 설명
부트 블록 (Boot Block) 부팅 시 필요한 부트스트랩 코드 포함 (파일 시스템의 시작 부분)
슈퍼 블록 (Super Block) 파일 시스템의 전체 정보 저장 (크기, 사용 상태, i-node 수 등)
i-node 테이블 (Index Node) 각 파일의 메타데이터 저장소 (권한, 소유자, 크기, 포인터 등)
데이터 블록 (Data Block) 실제 파일의 데이터가 저장되는 공간
디렉터리 블록 파일 이름과 해당 i-node 번호의 매핑 정보 저장
프리 블록/비트맵 영역 사용 가능한 블록과 i-node 관리 (할당 여부 표시)
실린더 그룹 파일 할당의 지역성을 높이기 위한 논리적 분할 단위
실린더 그룹 블록 해당 그룹 내 메타데이터(i-node 테이블, 블록 비트맵 등) 저장
  • UNIX,LINUX 디렉토리 구조
/
├── bin        # 필수 실행 파일 (ls, cp, mv 등)
├── boot       # 부트로더, 커널 관련
├── dev        # 장치 파일 (하드디스크, 터미널 등)
├── etc        # 시스템 설정 파일
├── home       # 사용자 디렉터리 (/home/사용자명)
├── lib        # 공용 라이브러리 (.so 파일 등)
├── media/mnt  # 외부 장치 마운트 위치
├── proc       # 가상 파일 시스템 (커널/프로세스 정보)
├── root       # 루트 사용자의 홈 디렉터리
├── sbin       # 시스템 관리용 실행파일
├── tmp        # 임시 파일 저장 공간
├── usr        # 사용자가 설치한 프로그램, 라이브러리
├── var        # 로그, 메일, 캐시, 스풀 등 자주 변하는 파일
거의 동일하지만, Linux는 배포판에 따라 약간의 차이가 있을 수 있음 (예: /run, /snap 등은 Ubuntu 계열에 있음)
Linux는 FHS 표준을 좀 더 적극적으로 따름
/sys, /run, /srv 등 Linux 고유의 디렉터리도 추가됨 (대부분 시스템 관리 목적)
  • UNIX,LINUX 명령어
기능 명령어 설명 예시
📁 현재 경로 확인 pwd 현재 작업 디렉터리 출력 pwd
📁 목록 보기 ls 파일/디렉터리 목록 출력 ls -al
📁 디렉터리 이동 cd 디렉터리 변경 cd /etc
📁 디렉터리 생성 mkdir 새 디렉터리 생성 mkdir mydir
📁 디렉터리 삭제 rmdir 빈 디렉터리 제거 rmdir olddir
📁 파일 복사 cp 파일 또는 디렉터리 복사 cp a.txt b.txt
📁 파일 이동/이름 변경 mv 파일 이동 또는 이름 바꾸기 mv file1.txt docs/
📁 파일 삭제 rm 파일 또는 디렉터리 삭제 rm -r tmpdir
📁 파일 내용 출력 cat / less / more 텍스트 파일 보기 cat README.md
🔍 텍스트 검색 grep 문자열 포함 라인 출력 grep 'error' log.txt
🔍 파일 검색 find 조건에 맞는 파일 찾기 find /var -name '*.log'
🔍 파일 정보 확인 file / stat 파일 유형, 메타데이터 확인 stat config.txt
🔐 현재 사용자 whoami 로그인된 사용자 ID 출력 whoami
🔐 관리자 권한 sudo, su 루트 권한 실행 sudo apt update
🔐 권한 변경 chmod 파일 권한 변경 chmod 755 script.sh
🔐 소유자 변경 chown 사용자 또는 그룹 변경 chown user1 file.txt
🔐 권한 보기 ls -l 접근 권한, 소유자 확인 ls -l /etc/passwd
⚙️ 프로세스 확인 ps, top, htop 실행 중 프로세스 보기 ps aux, top
⚙️ 프로세스 종료 kill, killall PID 또는 이름으로 종료 kill 1234, killall chrome
⚙️ 메모리 확인 free 메모리 사용량 확인 free -m
⚙️ 디스크 공간 df, du 디스크 사용 현황 df -h, du -sh *
⚙️ 시스템 부팅 시간 uptime 부팅 이후 경과 시간 uptime
⚙️ 시스템 종료/재시작 shutdown, reboot 종료, 재부팅 shutdown -h now
📦 압축 파일 생성 tar / zip 디렉터리 압축 tar -czf backup.tar.gz dir/
📦 압축 해제 tar, unzip 압축 해제 tar -xzf file.tar.gz
🌐 IP 정보 ifconfig, ip 네트워크 인터페이스 확인 ip a, ifconfig
🌐 연결 테스트 ping 네트워크 연결 확인 ping google.com
🌐 포트 확인 netstat, ss 포트 상태 확인 ss -tuln
🌐 원격 접속 ssh 원격 시스템 접속 ssh user@192.168.0.1
🛠 기타 명령 man 명령어 설명서 man ls
🛠 기타 명령 alias 명령어 별칭 생성 alias ll='ls -l'
🛠 기타 명령 history 명령어 기록 보기 history
🛠 기타 명령 clear, date, cal 화면 지우기, 날짜 확인 clear, date
  • UNIX/LINUX 시스템 보안 도구
도구 이름 주요 기능 설명
sudo 일반 사용자가 일시적으로 관리자 권한 명령을 실행하도록 허용
passwd 사용자의 비밀번호를 설정 또는 변경
chage 사용자 계정의 비밀번호 만료 주기 및 정책 설정
iptables 리눅스 방화벽, 포트·프로토콜 기반 트래픽 필터링
ufw iptables를 쉽게 사용하기 위한 간단한 방화벽 설정 도구
fail2ban 로그인 실패 감지 후 의심 IP 자동 차단
nmap 시스템의 열린 포트와 실행 중인 서비스 탐지
netstat / ss 현재 열려 있는 포트, 연결 상태 확인
tcpdump 네트워크 트래픽을 CLI에서 패킷 단위로 캡처/분석
wireshark GUI 기반 고급 패킷 분석 도구
chkrootkit 시스템에 설치된 루트킷 존재 여부 검사
rkhunter 백도어, 루트킷, 비정상 권한 설정 탐지 도구
clamav 리눅스 환경에서 악성코드 탐지 가능한 안티바이러스 도구
lynis 전체 시스템 보안 점검 자동화 스크립트
Nikto 웹서버의 설정 오류 및 취약점 스캐너
OpenVAS 포트 기반 네트워크 취약점 스캐너 (기업용 보급형)
Volatility 메모리 덤프에서 악성코드/프로세스 추적 분석 도구
sleuthkit / autopsy 파일 시스템, 타임라인, 삭제 파일 분석용 디지털 포렌식 도구
  • UNIX/LINUX 시스템 로그 파일
경로 내용
/var/log/syslog or /var/log/messages 시스템 전반의 일반 로그 (Ubuntu: syslog / CentOS: messages)
/var/log/auth.log 로그인, 인증, sudo 명령 기록
/var/log/secure (Red Hat 계열) 인증 관련 이벤트
/var/log/dmesg 부팅 시 커널 메시지 출력
/var/log/boot.log 부팅 서비스 관련 로그
/var/log/kern.log 커널 관련 메시지
/var/log/faillog 로그인 실패 정보
/var/log/lastlog 각 계정의 마지막 로그인 시간
/var/log/btmp 실패한 로그인 기록 (바이너리) → lastb로 확인
/var/log/wtmp 로그인/로그아웃 기록 (바이너리) → last 명령으로 조회
/var/log/utmp 현재 로그인 사용자 세션 정보 (명령어 who)
/var/log/httpd/access_log 웹서버 접속 로그 (Apache)
/var/log/httpd/error_log 웹서버 오류 로그
  • I-NODE 블록 매핑 방식
구조 이해

i-node는 파일 이름을 저장하지 않는다 → 이름은 디렉터리 엔트리에서 i-node 번호와 연결됨
i-node는 직접 블록 12개 + 간접 블록(1~3차) 으로 데이터 블록을 가리킨다
1차/2차/3차 간접 블록은 포인터 블록 → 데이터 블록 방식으로 확장된다
포렌식 분석 포인트

파일 삭제 시 i-node가 먼저 해제되고, 데이터 블록은 덮어쓰기 전까지 존재할 수 있음
링크 수(link count)가 0이면 해당 파일은 삭제 대상이 될 수 있음
하드링크는 같은 i-node 번호를 공유하므로 복수 경로가 하나의 파일을 가리킬 수 있음
i-node 번호와 블록 주소는 별개이며, 삭제 복구 시 번호 추적이 중요
간접 블록 구조 덕분에 i-node는 수 GB ~ TB급 대용량 파일까지 대응 가능

 

기타 추가 주요 포인트

  • 파일 할당 기법 (File Allocation Methods)
방식 설명 장점 단점
연속 할당 파일이 디스크에 연속된 블록에 저장됨 빠른 접근, 간단한 구현 단편화 발생, 파일 확장 어려움
연결 할당 각 파일이 블록 단위로 저장되고 포인터로 연결됨 단편화 없음, 유연한 확장 랜덤 접근 느림
인덱스 할당 i-node 방식과 유사, 인덱스 블록이 데이터 블록 목록 저장 랜덤 접근 가능 인덱스 블록 크기 제한 존재
  • 디렉터리 엔트리 구조

디렉터리 자체는 특수한 파일이며, 내부에 (파일 이름, i-node 번호) 쌍을 저장함

구성 항목 설명
파일 이름 최대 길이 제한 있음 (예: ext2는 255바이트)
i-node 번호 실제 파일 메타데이터(i-node)의 위치를 가리킴
디렉터리 내 파일 이름 중복 X (동일 디렉터리 기준)
ls -i 명령으로 i-node 번호 확인 가능
  • 프로세스 및 메모리 관리
개념 설명 예시
프로세스 상태 실행(Running), 준비(Ready), 대기(Waiting), 종료(Terminated) 상태 전이 다이어그램
스케줄러 종류 장기/단기/중기 스케줄러 단기 스케줄러가 CPU 스케줄링
메모리 관리 페이징, 세그멘테이션, 가상 메모리 등 page table, TLB
  • CPU 스케줄링 기법 요약
알고리즘 방식 특징
FCFS 도착 순 단순하지만 Convoy 효과 발생
SJF 실행 시간 짧은 순 평균 대기시간 최소화, 기아 가능성
RR 시간 할당량 순환 선점형, 공정성 강조
Priority 우선순위 기준 Aging 기법 필요 (기아 방지)
  • 레지스트리 Last Write Time

레지스트리 키의 마지막 수정 시간은 포렌식 분석에 매우 중요

항목 설명
저장 위치 레지스트리 키 자체 메타데이터에 포함됨 (하이브 파일 내부)
확인 방법 FTK, Registry Explorer, KAPE 등으로 분석
활용 악성코드 등록 시간, 설정 변경 시간 확인 가능
  • 레지스트리 데이터 유형 (Registry Value Types)
유형 설명
REG_SZ 문자열
REG_DWORD 32비트 정수
REG_BINARY 바이너리 (0x...)
REG_MULTI_SZ 여러 줄 문자열 배열
REG_EXPAND_SZ 환경 변수 포함 문자열
Run, RunOnce, Services 키에서 자주 사용됨
포렌식 분석 시 어떤 값이 어떤 유형인지 구분할 수 있어야 함