II. 시스템 보안
2026년 03월 19일 15시
카테고리 -
LECTURE,
인터넷보안
인터넷보안(황승연) 3주차 강의내용
1. 운영 체제 보안
시스템 보안 :
- 네트워크에 연결된 시스템의 취약점을 이용해 해커들이 침입해서 정보시스템을 이용하는 것을 방지.
데이터 유출, 시스템 변조, 서비스 중단
- 허가되지 않은 시스템 접근을 막아 시스템에 저장된 정보와 정상적인 운용을 보호.
- 정보시스템은 크게 네트워크, 시스템, 어플리케이션 3개의 계층으로 구성.
- 공격이 여러 단계에서 발생하기 때문에 계층으로 나누어 보안을 수행.
네트워크 공격 → 시스템 침입 → 어플리케이션 데이터 탈취.
정보시스템은 하드웨어와 소프트웨어, 시스템 요소로 구성
- 하드웨어 보안: 시스템을 구성하는 물리적 장치가 손상되거나 무단으로 접근되는 것을 방지하는 것
- 모니터, 키보드, 메인 보드, 하드 디스크, 램 메모리
- 소프트웨어 보안: 프로그램의 취약점을 이용한 공격으로부터 시스템을 보호하는 것
- 시스템 보안: 사용자 계정 관리, 접근 권한 통제, 로그 기록 등을 통해 시스템의 안전한 운영을 보장하는 관리적·기술적 보안 활동
- 계정 및 패스워드 관리, 접근 제어 및 권한 관리, 로그 관리
시스템을 공격하는 방법 : 버퍼 오버플로우, 패스워드 크래킹, 백도어
1) 운영 체제
응용 소프트웨어와 하드웨어의 중간에 위치하는 프로그램의 집합
2) 운영 체제의 기능
- 프로세스 관리
- 프로세스의 생성, 실행, 종료 등을 관리하며 CPU를 여러 프로세스가 효율적으로 사용할 수 있도록 스케줄링을 수행.
- 주 기억장치의 관리
- 메인 메모리(RAM)의 할당과 해제를 관리하며, 여러 프로그램이 메모리를 효율적으로 사용할 수 있도록 제어.
- 보조 기억장치의 관리
- 하드디스크나 SSD와 같은 보조 저장장치의 공간을 관리하고 데이터 저장 및 접근을 효율적으로 수행하도록 관리.
- 입출력 시스템의 관리
- 키보드, 마우스, 프린터, 디스크 등의 입출력 장치와 프로그램 사이의 데이터 전달을 관리
- 파일 시스템 관리
- 파일과 디렉토리를 생성, 삭제, 저장, 검색할 수 있도록 관리하며 데이터의 체계적인 저장 구조를 제공
- 보호 및 보안 시스템
- 사용자 인증과 접근 권한을 관리하여 허가되지 않은 사용자나 프로그램이 시스템 자원에 접근하지 못하도록 보호
- 프로세스 (실행 중인 프로그램)
- 운영체제가 CPU와 메모리 등의 자원을 할당하여 실행되는 작업 -** 병행처리**
- 여러 개의 프로세스나 작업을 동시에 실행하는 것처럼 처리하여 시스템 자원을 효율적으로 활용하는 방식
- 프로세스 스케줄링
- 여러 프로세스 중 어떤 프로세스가 CPU를 사용할 것인지 결정하고 실행 순서를 관리하는 기능
- 대표적으로 FCFS, SJF, Round Robin 등의 알고리즘
- 교착상태
- 두 개 이상의 프로세스가 서로가 가진 자원을 기다리면서 작업이 진행되지 못하고 무한히 대기하는 상태
- 조건
상호배제, 점유대기, 비선점, 순환대기
3) 파일 시스템
- 파일과 디렉토리
- 파일: 데이터를 저장하는 단위
- 디렉토리: 파일을 모아 관리하는 폴더
- 디렉토리 구조
- Windows 파일 시스템 - NTFS
-
Unix 파일시스템 – EXT4
- 파일 권한 공격
- 파일에 대한 읽기/쓰기/실행 권한 설정 오류를 악용
- 파일 업로드 공격
- 정상 파일처럼 보이지만 실제로는 악성코드
- Image.jpg → 실제로는 webshell.php → 서버에서 실행되어 권한 탈취
- TOCTOU 공격 (Time-of-check to Time-of-use)
- 파일 검사 시점과 사용 시점 사이의 틈을 이용하여 공격자가 파일을 바꾸는 공격 기법
4) UNIX System의 특징
- 대화식 운영체제
- 멀티태스킹
- 높은 이식성
- 계층적 파일 시스템 (트리구조)
- 다양한 개발도구
- 이기종간의 통신능력 우수
5) Linux System의 특징(추가사항)
- 다중 사용자 시스템
- 여러 사용자가 동시 접속 가능 → 사용자 권한 관리 중요
- 오픈소스
- 운영체제 표준(POSIX) 준수
- 가상 메모리 사용
- Virtual Console
- 기본 6개의 콘솔 제공(Alt + F1 ~ F6)
- 다양한 파일 시스템 지원
6) 윈도우의 특징
- GUI 환경
- Plug & Play (PnP)
- 멀티태스킹
- OLE(Object Linking & Embedding)
- 한 프로그램의 데이터를 다른 프로그램에서 사용
- ex) 엑셀 데이터를 파워포인트에서 사용 가능
- 멀티미디어
7) 계정 및 패스워드 관리
- 윈도우: 운영체제에 대한 관리자 권한을 가진 계정을 administrator라고 칭하는데, 이는 시스템에 가장 기본으로 설치되는 계정
- 유닉스 : 기본 관리자 계정으로 root가 존재
- 계정 생성과 삭제시 적절한 승인 절차가 마련되어 있어야 하고, 불필요한 계정이 존재하는지와 불필요하게 관리자 권한 등이 부여되어 있지 않은지를 주기적으로 확인해야 함
8) 로그 관리
- Authentication (인증)
✓ 자신의 신원(Identity)을 시스템에 증명하는 과정. 가장 일반적인 경우가 아이디와 패스워드를 입력하는 과정
✓ 아이디가 신원을 나타내고 패스워드가 정상이면 인증
- Authorization (인가)
✓ 인증된 사용자에게 권한(permission)을 부여하는 것
- Accounting (계정/추적/로그)
✓ 사용자의 행동을 기록
✓ 문제 발생 시 추적 가능 (책임추적성, Accountability)
9) 취약점 관리
- 버퍼 오버플로우 같은 응용 프로그램 자체에 있는 취약점에 패치를 적용해 이를 제거 (코드 수정)
- 시스템 내부로 침투하지 못하도록 경로를 차단
- 응용 프로그램의 취약점을 통해 운영체제에 접근할 경우에도 영향력을 최소화하기 위해 응용 프로그램에 최소 권한만 부여 (최소 권한 원칙)
- 시스템에 존재하는 불필요한 서비스나 악성 프로그램을 확인하기 위해 시스템의 서비스 포트 및 프로세스를 주기적으로 검사
2. 윈도우 시스템 보안
1) NTFS 권한
- 윈도우즈에서 사용 가능한 파일 시스템에는 FAT 16(32), NTFS
- 퍼미션을 부여하기 위해선 특정 퍼미션이 있어야 함
- NTFS는 퍼미션을 보관함
- 퍼미션은 Allow와 Deny가 있음
2) 레지스트리(Registry)
- 등기소 (registry) : 시스템 정보를 담고 있는 데이터베이스
- 윈도우의 모든 설정 정보를 저장
- 사용자와 시스템, 파일/디렉토리의 모든 정보를 분류해서 저장
- 실시간으로 적용
- 레지스트리의 내용을 보려면 레지스트리 편집기를 실행
3) 레지스트리 보안
- 레지스트리가 손상되면 시스템 오류 발생, 프로그램 실행 불가, 부팅 불가
- 공격 형태
- 시작 프로그램 등록 → 보안 설정 변경 → 시스템 기능 비활성화
- 대책
- 인가되지 않은 사용자의 접근을 차단
- 접근 통제, 권한 관리, 변경 감시, 백업
3. 시스템 보안 위협 유형
1) 버퍼 오버플로 공격
- 데이터의 길이에 대한 불명확한 정의를 악용한 덮어쓰기로 인해 발생.
- 정상적인 경우 사용되지 않아야 할 주소 공간, 덮어쓸 수 없는 부분에 해커가 임의 코드를 덮어쓰는 공격.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
struct Data {
char buffer[10];
int check;
};
int main() {
struct Data data;
data.check = 0;
printf("Input : ");
gets(data.buffer); // 취약점
// gets는 개행 전까지의 모든 문자를 입력받음
// 해커는 이를 통해 스택 내의 함수 복귀주소를 조작
// fgets 등의 함수로 글자수 제한 필요
printf("check = %d\n", data.check);
if (data.check != 0) {
printf("Hacked!\n");
}
else {
printf("Normal\n");
}
return 0;
}
2) 포맷 스트링 공격
- 사용자로부터 입력을 받아들이거나 결과를 출력하기 위하여 사용하는 형식.
- 데이터의 형태와 길이에 대한 불명확한 정의로 인한 문제점 중 ‘데이터에 형태에 대한 불명확한 정의’로 인한 것.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
char input[100];
printf("입력: ");
scanf("%s", input);
printf(input); // 취약점
// 입력값으로 포맷(%x 등)을 집어넣는 등
// 주지 않은 인자 값을 읽어냄
printf("\n");
return 0;
}
3) 백도어 공격
- 백도어
- 정상적인 인증 절차를 거치지 않고 시스템에 몰래 접근할 수 있는 통로
- 다른 파일을 감염시키지 않음
- 넷버스(NetBus)
✓ 파일 삭제, 키보드 입력 감시, 정보 탈취, 화면 제어
- 백오리피스(Back Orifice)
✓ 악의적인 백도어 프로그램
✓ 시스템 명령어 실행, 네트워크 조작, 시스템 설정 변경
- 스쿨버스(School Bus)
✓ 정상프로그램인 척하면서 사용자에게 실행을 유도하는 악성프로그램
- 루트킷(Rootkit)
✓ 시스템에 침투한 뒤, 자신의 존재를 숨기면서 관리자 권한을 유지하는 악성 프로그램
4) 무차별 공격
- 패스워드 사전 파일을 이용하여 미리 지정한 아이디에 대입하여 접속 계정을 알아내는 해킹 방법.
- Brute Force 공격이 가능한 서비스 종류 - Telnet, FTP, pop3, www, NTNetBios, SQL Sever.
5) MITB 공격과 Web Injection
- 브라우저 내부에 악성코드가 들어가서 사용자의 행동을 가로채는 공격
- 메모리에 로딩된 웹 페이지의 내용을 도청하거나, 위/변조 할 수 있음
- 사용자가 보는 화면과 서버에 전송되는 내용이 다르게 조작되는 것
- MITB를 통해 웹 페이지를 위/변조하는 공격 - Web Injection.
2장 연습문제 답안
4
2
2
2
3
4
4
4
4
4