🖥️ 1과목 · 시스템 보안#
W1 (8/14~8/21) 진도 · 필기 20문항 · 실기 비중 높음 🔑 = 실기 직결 (답안카드 후보)
📘 참고
출제기준 대응 (2023.1.1~2026.12.31 적용) ① 정보 시스템의 범위 및 이해 → 1장 2장 ② 시스템 보안위협 및 공격기법 → 12장 13장 ③ 예방과 대응 → 8장 14장 15장
📑 목차#
| 장 | 내용 | 비중 |
|---|---|---|
| 1 | 정보 시스템의 범위 | 개념 |
| 2 | 운영체제 기본 | 이론 |
| 3 | 리눅스 계정 관리 🔑 | ★★★ |
| 4 | 파일 권한 🔑 | ★★★ |
| 5 | 파일시스템·RAID | ★★ |
| 6 | 리눅스 로그 🔑 | ★★★ |
| 7 | 부팅·프로세스·스케줄러 | ★★ |
| 8 | 리눅스 서버 보안 설정 🔑 | ★★★ |
| 9 | PAM·접근통제 🔑 | ★★ |
| 10 | 윈도우 보안 🔑 | ★★★ |
| 11 | 모바일·IoT 단말 보안 | ★ |
| 12 | 악성코드 🔑 | ★★★ |
| 13 | 시스템 공격 기법 🔑 | ★★★ |
| 14 | 시스템 분석 도구 🔑 | ★★ |
| 15 | 시스템 보안 솔루션 🔑 | ★★ |
| 16 | 클라우드·가상화 보안 | ★★ |
| 17 | 빈출 암기표 | — |
1. 정보 시스템의 범위#
출제기준 첫 항목. 개념 문제로 1~2문항 나온다.
단말 시스템#
| 단말 | 주요 위협 |
|---|---|
| PC | 악성코드, 로컬 권한상승, 매체 유출 |
| 모바일 | 앱 위변조, 루팅/탈옥, 무선 도청 |
| 프린터/복합기 | 기본 패스워드, 스풀 데이터 잔존, 네트워크 노출 |
| IoT / IIoT | 펌웨어 취약점, 기본 계정, 물리 접근, 대규모 봇넷화(Mirai) |
서버 시스템#
| 서버 | 핵심 보안 포인트 |
|---|---|
| DB | 계정·권한 분리, 암호화, 감사로그, SQL Injection |
| DNS | 캐시 포이즈닝, 존 전송(AXFR) 제한, DNSSEC |
| 오픈 릴레이 차단, SPF/DKIM/DMARC, 스팸·피싱 | |
| WEB/WAS | 디렉토리 리스팅, 불필요 메소드, 에러 노출, 세션 관리 |
| 파일서버 | 공유 권한, 익명 접근 차단 |
| Cloud | 설정 오류(퍼블릭 노출), 키 관리, 책임 공유 |
💡 TIP
서버별 상세는 3과목(애플리케이션 보안)에서 다시 깊게 다룬다. 여기선 "어떤 서버에 어떤 위협" 매칭만 잡으면 된다.
2. 운영체제 기본#
OS의 4대 관리 기능 — 프로세스 / 메모리 / 파일 / 장치
| 개념 | 내용 |
|---|---|
| 커널 구조 | 모놀리식(성능↑, 안정성↓) vs 마이크로커널(모듈화, 안정성↑) |
| 보호 링 | Ring 0 = 커널 모드, Ring 3 = 사용자 모드. 링 간 이동은 시스템 콜 |
| 프로세스 메모리 | 위→아래: 스택 ↓ / (빈 공간) / 힙 ↑ / 데이터(BSS) / 코드(텍스트) |
스택은 높은 주소 → 낮은 주소로 자란다. 이게 버퍼 오버플로우로 리턴주소를 덮을 수 있는 이유다.
메모리 관리#
| 기법 | 특징 | 단편화 |
|---|---|---|
| 페이징 | 고정 크기 페이지로 분할 | 내부 단편화 |
| 세그먼테이션 | 논리 단위(가변 크기)로 분할 | 외부 단편화 |
| 가상 메모리 | 디스크를 메모리처럼 사용 | 페이지 폴트, 스래싱 |
페이지 교체 알고리즘: FIFO / LRU(가장 오래 미사용) / LFU(최소 사용 빈도) / Optimal
프로세스 스케줄링#
| 선점 여부 | 알고리즘 |
|---|---|
| 비선점 | FCFS, SJF, HRN, 우선순위(비선점) |
| 선점 | Round Robin, SRT, 다단계 큐, MLFQ |
HRN 우선순위 = (대기시간 + 서비스시간) ÷ 서비스시간 — 계산 문제로 나온다
교착상태(Deadlock) 4대 조건 🔑#
| 조건 | 의미 |
|---|---|
| 상호배제 | 한 번에 한 프로세스만 자원 사용 |
| 점유와 대기 | 자원을 쥔 채 다른 자원을 기다림 |
| 비선점 | 강제로 자원을 뺏을 수 없음 |
| 환형 대기 | 대기 사슬이 원형을 이룸 |
해결: 예방(4조건 중 하나 제거) / 회피(은행가 알고리즘) / 탐지 / 복구
3. 리눅스 계정 관리 🔑#
/etc/passwd — 7필드#
root : x : 0 : 0 : root : /root : /bin/bash
① ② ③ ④ ⑤ ⑥ ⑦
| # | 필드 | 비고 |
|---|---|---|
| ① | 사용자명 | |
| ② | 패스워드 | x = shadow 사용 중 (여기 해시가 있으면 취약) |
| ③ | UID | 0 = root. UID 0이 여러 개면 백도어 계정 의심 |
| ④ | GID | |
| ⑤ | 설명(comment) | |
| ⑥ | 홈 디렉토리 | |
| ⑦ | 로그인 셸 | /sbin/nologin, /bin/false = 로그인 차단 |
💡 TIP
점검 포인트: UID가 0인 계정이 root 외에 있는가? 불필요 계정(lp, sync, shutdown, games 등)의 셸이 nologin인가?
/etc/shadow — 9필드 🔑#
root : $6$xyz... : 19000 : 0 : 99999 : 7 : : :
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨
| # | 필드 | 비고 |
|---|---|---|
| ① | 사용자명 | |
| ② | 암호화된 패스워드 | $1=MD5, $5=SHA-256, $6=SHA-512 · */! = 잠김 · 빈칸 = 패스워드 없음(위험) |
| ③ | 마지막 변경일 | 1970-01-01부터의 일수 |
| ④ | 최소 사용일 | 변경 후 이 기간엔 재변경 불가 |
| ⑤ | 최대 사용일 | 만료 주기 |
| ⑥ | 경고일 | 만료 며칠 전부터 경고 |
| ⑦ | 비활성일 | 만료 후 유예 |
| ⑧ | 계정 만료일 | |
| ⑨ | 예약 |
/etc/group#
wheel : x : 10 : user1,user2
그룹명 비번 GID 멤버
계정 명령#
| 명령 | 용도 |
|---|---|
useradd / usermod / userdel |
생성·수정·삭제 |
passwd -l / -u |
계정 잠금 / 해제 |
chage -l user |
패스워드 만료 정책 확인 |
su / sudo |
사용자 전환 / 권한 위임 |
4. 파일 권한 🔑#
기본 권한#
| 기호 | 숫자 | 파일 | 디렉토리 |
|---|---|---|---|
| r | 4 | 읽기 | 목록 조회(ls) |
| w | 2 | 쓰기 | 생성·삭제 |
| x | 1 | 실행 | 진입(cd) |
rwxr-xr-- = 754
특수 권한 🔑 (실기 최빈출)#
| 권한 | 숫자 | 표시 | 의미 |
|---|---|---|---|
| SUID | 4000 | rws------ |
실행 시 소유자 권한으로 동작 → 권한상승 위험 |
| SGID | 2000 | ---rws--- |
실행 시 그룹 권한으로 동작 |
| Sticky | 1000 | drwxrwxrwt |
디렉토리에서 소유자만 삭제 가능 (/tmp) |
대문자
S/T= 실행 권한(x) 없이 특수권한만 설정된 상태
탐색 명령 🔑
find / -perm -4000 -type f 2>/dev/null # SUID
find / -perm -2000 -type f 2>/dev/null # SGID
find / -perm -6000 -type f 2>/dev/null # SUID+SGID
find / -nouser -o -nogroup 2>/dev/null # 소유자 없는 파일
find / -type f -perm -2 2>/dev/null # 누구나 쓰기 가능한 파일
umask 🔑#
파일 = 666 − umask, 디렉토리 = 777 − umask
| umask | 파일 | 디렉토리 |
|---|---|---|
| 022 (기본) | 644 | 755 |
| 027 (권장) | 640 | 750 |
| 077 | 600 | 700 |
설정 위치: /etc/profile, /etc/bashrc, ~/.bash_profile
파일 기본값이 777이 아니라 666인 이유: 새 파일에 실행 권한을 주지 않기 위해.
기타 권한 명령#
| 명령 | 용도 |
|---|---|
chmod / chown / chgrp |
권한·소유자·그룹 변경 |
chattr +i |
불변(immutable) → root도 수정 불가. 로그 보호용 |
lsattr |
확장 속성 확인 |
setfacl / getfacl |
ACL 세부 권한 |
5. 파일시스템·RAID#
| 디렉토리 | 용도 |
|---|---|
/bin /sbin |
필수 명령 / 관리자 명령 |
/etc |
설정 파일 |
/var |
로그·스풀 등 가변 데이터 |
/usr |
사용자 프로그램 |
/tmp |
임시 (Sticky bit) |
/proc |
커널·프로세스 정보 (가상 파일시스템) |
/dev |
장치 파일 |
inode 🔑#
파일의 메타데이터 구조체.
- 포함: 파일 유형, 권한, 소유자(UID/GID), 크기, 타임스탬프(atime/mtime/ctime), 링크 수, 데이터 블록 포인터
- 미포함: 파일 이름 ← 시험 단골. 파일명은 디렉토리 엔트리에 있다
| 링크 | 특징 |
|---|---|
| 하드 링크 | 같은 inode. 파일시스템 넘을 수 없음, 디렉토리 불가 |
| 심볼릭 링크 | 경로를 가리키는 별도 파일(inode 다름). 파일시스템 넘기 가능 |
마운트 하드닝 🔑#
/etc/fstab 옵션 — nosuid(SUID 무시) · noexec(실행 금지) · nodev(장치파일 무시) · ro
→ /tmp, /home, /var 파티션 분리 + 위 옵션 적용이 권고사항
RAID 🔑#
| 레벨 | 구성 | 최소 디스크 | 특징 |
|---|---|---|---|
| 0 | 스트라이핑 | 2 | 성능↑, 내결함성 없음 |
| 1 | 미러링 | 2 | 완전 이중화, 용량 50% |
| 5 | 스트라이핑 + 분산 패리티 | 3 | 디스크 1개 장애 허용 |
| 6 | 이중 패리티 | 4 | 디스크 2개 장애 허용 |
| 10 | 1+0 (미러 후 스트라이핑) | 4 | 성능·안정성 모두 |
백업 방식: 전체(Full) / 증분(Incremental, 마지막 백업 이후 변경분) / 차등(Differential, 마지막 전체 백업 이후 변경분)
6. 리눅스 로그 🔑#
실기 단답형 최빈출 구간. 파일-명령-내용 3개를 세트로 외운다.
| 로그 | 경로 | 조회 명령 | 내용 |
|---|---|---|---|
| utmp | /var/run/utmp |
who, w |
현재 로그인 중인 사용자 |
| wtmp | /var/log/wtmp |
last |
로그인/로그아웃 성공 이력, 재부팅 |
| btmp | /var/log/btmp |
lastb |
로그인 실패 이력 |
| lastlog | /var/log/lastlog |
lastlog |
사용자별 마지막 로그인 |
| secure | /var/log/secure |
(텍스트) | 인증·su·sudo·SSH (RedHat) |
| auth.log | /var/log/auth.log |
(텍스트) | 위와 동일 (Debian) |
| messages | /var/log/messages |
(텍스트) | 일반 시스템 메시지 |
| sulog | /var/log/sulog |
(텍스트) | su 명령 사용 |
| pacct/acct | /var/log/pacct |
lastcomm |
사용자별 명령 실행 이력 |
| xferlog | /var/log/xferlog |
(텍스트) | FTP 파일 전송 |
| dmesg | /var/log/dmesg |
dmesg |
부팅 시 커널 메시지 |
| cron | /var/log/cron |
(텍스트) | 스케줄 작업 실행 |
| history | ~/.bash_history |
history |
셸 명령 이력 |
📌 중요
utmp/wtmp/btmp/lastlog는 바이너리 파일이라
cat으로 못 본다 → 전용 명령 필요. 이게 그대로 문제로 나온다.
syslog#
- 설정:
/etc/syslog.conf(또는/etc/rsyslog.conf) - 형식:
facility.priority action예)authpriv.* /var/log/secure - 원격 로그 서버:
*.* @192.168.0.10— 로그 위변조 방지의 핵심 대책
우선순위 8단계 (높음 → 낮음)
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| emerg | alert | crit | err | warning | notice | info | debug |
로그 관리#
- logrotate —
/etc/logrotate.conf,/etc/logrotate.d/. 주기적 순환·압축·보관 기간 설정 - 로그 보호:
chattr +i, 원격 로그 서버 전송, 접근 권한 최소화(640 이하)
7. 부팅·프로세스·스케줄러#
부팅 순서#
BIOS/UEFI → MBR(부트로더 GRUB) → 커널 로드 → init/systemd → 런레벨 서비스
런레벨#
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|---|---|---|---|---|---|---|
| 종료 | 단일 사용자 | 다중(NFS X) | 텍스트 다중 | 미사용 | GUI | 재부팅 |
런레벨 1(single user)은 패스워드 없이 root 진입 가능 → GRUB 패스워드 설정이 대응책 🔑
프로세스·서비스 명령#
| 명령 | 용도 |
|---|---|
ps -ef, top |
프로세스 조회 |
kill -9 PID |
강제 종료 |
nice / renice |
우선순위 조정 |
netstat -antp / ss -antp |
열린 포트 + 프로세스 |
lsof -i |
파일·소켓 사용 프로세스 |
systemctl list-unit-files |
서비스 목록 (불필요 서비스 점검) |
스케줄러 🔑#
| 항목 | cron | at |
|---|---|---|
| 용도 | 주기적 반복 | 1회성 |
| 설정 | /etc/crontab, crontab -e |
at 시각 |
| 접근제어 | /etc/cron.allow, /etc/cron.deny |
/etc/at.allow, /etc/at.deny |
crontab 5필드: 분(0-59) 시(0-23) 일(1-31) 월(1-12) 요일(0-7)
allow 파일이 있으면 거기 적힌 사용자만 허용. allow가 없고 deny만 있으면 deny 외 전부 허용. 백도어 점검: cron에 등록된 수상한 스크립트는 지속성 확보 수단으로 자주 쓰인다.
8. 리눅스 서버 보안 설정 🔑#
📌 중요
실기 최빈출 구간. "
를 차단하려면 어떤 파일의 어떤 설정을 바꾸는가"가 그대로 문제가 된다. KISA 「주요정보통신기반시설 기술적 취약점 분석·평가 상세가이드」의 U-01U-72 항목이 원천.
SSH 보안 — /etc/ssh/sshd_config#
| 설정 | 값 | 의미 |
|---|---|---|
PermitRootLogin |
no | root 원격 직접 로그인 차단 |
PermitEmptyPasswords |
no | 빈 패스워드 로그인 차단 |
Protocol |
2 | SSH v1 비활성화 |
MaxAuthTries |
3~5 | 인증 시도 제한 |
AllowUsers / DenyUsers |
계정 목록 | 접속 허용·차단 계정 |
Port |
22 외 | 기본 포트 변경 |
LoginGraceTime |
60 | 로그인 대기 시간 제한 |
Telnet 대신 SSH를 쓰는 이유: Telnet은 ID/PW를 평문 전송 → 스니핑에 그대로 노출
root 접속 통제#
| 파일 | 역할 |
|---|---|
/etc/securetty |
root가 직접 로그인 가능한 터미널 목록. 비우면 콘솔 직접 로그인 차단 |
/etc/pam.d/su |
pam_wheel.so 활성화 → wheel 그룹만 su 가능 |
/etc/sudoers |
권한 위임. visudo 로만 편집 (문법 검사) |
패스워드 정책 — /etc/login.defs 🔑#
| 항목 | 권장값 | 의미 |
|---|---|---|
PASS_MAX_DAYS |
90 | 최대 사용 기간 |
PASS_MIN_DAYS |
1 | 최소 사용 기간 |
PASS_MIN_LEN |
8 | 최소 길이 |
PASS_WARN_AGE |
7 | 만료 경고 시작일 |
복잡도는 PAM(pam_pwquality / pam_cracklib)에서 설정
불필요 서비스 제거#
- 점검:
netstat -antp로 열린 포트 → 용도 불명 서비스 중지 - 대표 제거 대상: telnet, ftp, rlogin/rsh/rexec(r-command), finger, echo/discard/daytime/chargen
r-command관련 파일:/etc/hosts.equiv,~/.rhosts→ 신뢰 기반 인증 우회 위험, 권한 600 + 내용 비우기- inetd/xinetd:
/etc/xinetd.d/하위에서 서비스별disable = yes
보안 패치 관리#
| 원칙 | 내용 |
|---|---|
| 정기 패치 | 벤더 보안 공지 모니터링, 정기 주기 수립 |
| 사전 검증 | 테스트 환경 적용 → 운영 반영 |
| 롤백 계획 | 장애 시 복구 절차 |
| 자동화 | yum-cron, WSUS, 패치관리시스템(PMS) |
9. PAM·접근통제 🔑#
PAM (Pluggable Authentication Module)#
- 위치:
/etc/pam.d/ - 모듈 유형 4가지
| 유형 | 역할 |
|---|---|
auth |
인증 (패스워드 확인) |
account |
계정 유효성 (만료·시간 제한) |
password |
패스워드 변경 정책 |
session |
세션 시작·종료 처리 |
- control flag:
required(실패해도 계속 진행 후 최종 실패) /requisite(즉시 실패 반환) /sufficient(성공 시 즉시 통과) /optional - 계정 잠금:
pam_tally2,pam_faillock—deny=5 unlock_time=120 - 패스워드 복잡도:
pam_cracklib,pam_pwquality su제한:pam_wheel.so
TCP Wrapper 🔑#
호스트 기반 접근 통제. /etc/hosts.allow → /etc/hosts.deny 순서로 검사, 둘 다 없으면 허용.
# /etc/hosts.deny
ALL : ALL
# /etc/hosts.allow
sshd : 192.168.0.
순서가 그대로 문제로 나온다. allow 먼저, deny 나중, 둘 다 없으면 허용.
접근통제 모델#
| 모델 | 결정 주체 |
|---|---|
| DAC 임의적 | 소유자가 권한 부여 (일반 리눅스 권한) |
| MAC 강제적 | 시스템(보안등급) 이 강제 (SELinux, AppArmor) |
| RBAC 역할기반 | 역할에 권한 부여 |
10. 윈도우 보안 🔑#
인증 구조#
| 구성요소 | 역할 |
|---|---|
| SAM | 계정·패스워드 해시 저장 (C:\Windows\System32\config\SAM) |
| LSA | 로컬 보안 정책·인증 처리, SRM에 SID 전달 |
| SRM | 접근 허용/거부 결정, SID 부여, 감사 로그 생성 |
인증 프로토콜 발전: LM → NTLM → NTLMv2 → Kerberos(Active Directory 기본)
SID 구조#
S-1-5-21-<도메인>-<RID>
| RID | 계정 |
|---|---|
| 500 | Administrator |
| 501 | Guest |
| 1000~ | 일반 사용자 |
레지스트리 5개 루트키#
| 키 | 내용 |
|---|---|
| HKCR (Classes Root) | 파일 확장자 연결 |
| HKCU (Current User) | 현재 로그인 사용자 설정 |
| HKLM (Local Machine) | 시스템 전역 설정 ← 악성코드 주 타겟 |
| HKU (Users) | 모든 사용자 프로필 |
| HKCC (Current Config) | 현재 하드웨어 프로파일 |
자동실행 등록 위치 🔑
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
파일시스템#
| FAT32 | NTFS | |
|---|---|---|
| 권한(ACL) | ❌ | ✅ |
| 암호화 | ❌ | ✅ EFS |
| 저널링 | ❌ | ✅ |
| 대용량 | 파일 4GB 제한 | ✅ |
- ADS (Alternate Data Stream) 🔑 — NTFS 대체 데이터 스트림.
file.txt:hidden.exe형태로 데이터 은닉에 악용. 탐지:dir /r,streams.exe - BitLocker — 볼륨 전체 암호화(TPM 연동) / EFS — 파일·폴더 단위 암호화
UAC (사용자 계정 컨트롤)#
관리자 권한이 필요한 작업 시 명시적 승인을 요구 → 악성코드의 무단 권한 상승 차단. 우회 기법(UAC Bypass)이 존재하므로 최고 수준 설정 권장.
이벤트 로그 🔑 (실기 단답 단골)#
로그 종류: 응용 프로그램 / 보안 / 시스템
| 이벤트 ID | 의미 |
|---|---|
| 4624 | 로그온 성공 |
| 4625 | 로그온 실패 |
| 4634 | 로그오프 |
| 4672 | 특수 권한 할당 (관리자 로그온) |
| 4720 | 사용자 계정 생성 |
| 4726 | 사용자 계정 삭제 |
| 4688 | 새 프로세스 생성 |
| 1102 | 감사 로그 삭제 ← 침해 흔적 |
로그온 유형
| 2 | 3 | 4 | 5 | 10 |
|---|---|---|---|---|
| 대화식 | 네트워크 | 배치 | 서비스 | 원격 대화식(RDP) |
공유 폴더#
- 기본(관리) 공유:
C$,ADMIN$,IPC$—$가 붙으면 숨김 공유 - NULL 세션 취약점: 익명으로
IPC$접속 → 계정·공유 정보 열람.RestrictAnonymous로 차단
윈도우 점검 명령 🔑#
netstat -ano :: 열린 포트 + PID
tasklist /svc :: 프로세스와 서비스 매핑
net user / net localgroup :: 계정·그룹 조회
net share :: 공유 폴더 조회
sc query :: 서비스 상태
reg query <키> :: 레지스트리 조회
wmic startup list full :: 자동 실행 항목
11. 모바일·IoT 단말 보안#
출제기준 1-2에 Android, iOS, Embedded OS가 명시되어 있다. 1문항 정도 나온다.
모바일 OS 보안 모델#
| 항목 | Android | iOS |
|---|---|---|
| 기반 | Linux 커널 | Darwin(UNIX 계열) |
| 앱 격리 | 샌드박스 + UID 분리 | 샌드박스 |
| 앱 배포 | 개방적(사이드로딩 가능) | 폐쇄적(App Store 심사) |
| 권한 모델 | 설치·실행 시 권한 승인 | 실행 시 권한 승인 |
| 무결성 훼손 | 루팅(Rooting) | 탈옥(Jailbreak) |
| 암호화 | FBE/FDE | Secure Enclave, 파일 단위 암호화 |
주요 위협: 악성 앱, 앱 위·변조(리패키징), 루팅·탈옥 단말, 스미싱, 공용 Wi-Fi 도청, 분실·도난 대응: MDM(모바일 단말 관리), 앱 무결성 검증, 코드 난독화, 루팅 탐지, 원격 잠금·초기화
IoT 보안#
| 위협 | 내용 |
|---|---|
| 기본 계정 방치 | admin/admin → Mirai 봇넷의 감염 경로 |
| 펌웨어 취약점 | 업데이트 부재, 하드코딩된 키 |
| 물리적 접근 | 디버그 포트(UART/JTAG) 노출 |
| 통신 평문 | 암호화 미적용 |
대응 원칙: 기본 패스워드 강제 변경, 펌웨어 서명·검증, 보안 부팅(Secure Boot), 최소 서비스, 네트워크 분리
12. 악성코드 🔑#
| 유형 | 숙주 | 자기복제 | 특징 |
|---|---|---|---|
| 바이러스 | 필요 | ✅ | 숙주 파일에 기생 |
| 웜 | 불필요 | ✅ | 네트워크로 스스로 전파 |
| 트로이목마 | — | ❌ | 정상 프로그램으로 위장 |
| 스파이웨어 | — | ❌ | 정보 수집·유출 |
| 랜섬웨어 | — | — | 파일 암호화 후 금전 요구 |
| 루트킷 | — | — | 관리자 권한 + 자신을 은닉 |
| 백도어 | — | — | 인증을 우회하는 통로 |
| 논리폭탄 | — | — | 특정 조건 충족 시 동작 |
| 애드웨어 | — | — | 광고 노출 |
바이러스 vs 웜의 핵심 차이 = 숙주 필요 여부 + 자가 전파 여부. 매년 나온다.
바이러스 세대#
원시형 → 암호화형 → 은폐형(스텔스) → 갑옷형 → 매크로
APT (지능형 지속 위협) 🔑#
특정 표적을 정해 장기간 잠복하며 단계적으로 침투.
공격 단계: 정보수집 → 침투(스피어피싱·워터링홀) → 거점 확보(백도어) → 권한 상승 → 내부 확산(측면 이동) → 정보 유출 → 흔적 삭제
탐지 기법#
| 기법 | 원리 | 한계 |
|---|---|---|
| 시그니처 기반 | 알려진 패턴 매칭 | 신종·변종 탐지 불가 |
| 휴리스틱 | 코드 구조 분석 | 오탐 |
| 행위 기반 | 실행 중 행동 감시 | 성능 부하 |
| 샌드박스 | 격리 환경에서 실행 | 우회 기법 존재 |
13. 시스템 공격 기법 🔑#
버퍼 오버플로우 (최빈출)#
원리: 버퍼 크기 검증 없이 데이터를 복사 → 인접 메모리 침범 → 스택의 리턴 주소(RET)를 셸코드 주소로 덮어씀 → 프로그램 흐름 탈취
| 종류 | 위치 |
|---|---|
| 스택 오버플로우 | 지역변수 영역 → RET 덮어쓰기 |
| 힙 오버플로우 | 동적 할당 영역 → 함수 포인터 변조 |
취약 함수 🔑 — strcpy strcat sprintf gets scanf
안전 함수 — strncpy strncat snprintf fgets
대응방안 🔑
| 대응 | 원리 |
|---|---|
| 스택가드(Canary) | RET 앞에 난수를 두고 변조 여부 검사 |
| 스택쉴드 | RET 복사본을 별도 저장 후 비교 |
| ASLR | 주소 공간 무작위 배치 → 주소 예측 불가 |
| DEP / NX bit | 데이터 영역 실행 권한 제거 |
| 안전한 함수 사용 | 길이 제한 함수로 대체 |
포맷 스트링#
printf(input) 처럼 포맷 지정자 없이 사용자 입력을 넘김 → %x로 메모리 읽기, %n으로 메모리 쓰기
대응: printf("%s", input) 형태로 포맷 문자열 명시
레이스 컨디션 (TOCTOU)#
원리: SUID 프로그램이 임시파일을 만드는 찰나에 심볼릭 링크로 교체 → 그 권한으로 원하는 파일 조작
대응: O_EXCL 플래그로 원자적 생성, 임시파일 권한 최소화, 검사와 사용 사이 간격 제거
SQL Injection (시스템 관점)#
출제기준 2-2에 시스템 공격기법으로 명시되어 있다. (상세는 3과목)
원리: 입력값이 SQL 구문으로 해석 → 인증 우회, 데이터 유출, DB 서버 명령 실행(xp_cmdshell)까지 확장
대응: Prepared Statement, 입력 검증, DB 계정 최소 권한, 에러 메시지 숨김
알려진 취약점 관리 🔑#
| 용어 | 의미 |
|---|---|
| CVE | 공개된 취약점에 부여하는 고유 식별번호 (예: CVE-2021-44228) |
| CWE | 취약점의 유형·분류 체계 |
| CVSS | 취약점 심각도 점수 (0.0~10.0) |
| 제로데이 | 패치가 없는 상태에서 악용되는 취약점 |
CVSS 등급: 0.13.9 낮음 / 4.06.9 중간 / 7.08.9 높음 / **9.010.0 심각**
패스워드 크래킹#
| 기법 | 내용 |
|---|---|
| 사전 공격 | 단어 목록 대입 |
| 무차별 대입 | 전수 조사 |
| 레인보우 테이블 | 미리 계산된 해시 표 |
대응: 솔트(salt) 추가 → 같은 패스워드도 다른 해시가 되어 레인보우 테이블 무력화. 반복 해싱(key stretching), 계정 잠금 정책.
14. 시스템 분석 도구 🔑#
📌 중요
출제기준 3-2에 독립 세부항목으로 잡혀 있다 — "기능"과 "특징 및 활용방안"으로 나뉘어 있어 최소 1~2문항이 배정된다.
Nmap (포트·서비스 스캐너)#
| 옵션 | 스캔 유형 | 특징 |
|---|---|---|
-sT |
TCP Connect | 3-way handshake 완성. 로그에 남음 |
-sS |
TCP SYN (Half-open) | SYN만 보내고 RST로 종료. 은밀 |
-sF -sN -sX |
FIN / NULL / XMAS | 플래그 조작. 열린 포트는 무응답 |
-sU |
UDP | 느림. 닫힘 시 ICMP Unreachable |
-sA |
ACK | 방화벽 룰셋 파악용 |
-O |
OS 탐지 | TCP/IP 스택 지문 |
-sV |
서비스 버전 탐지 | 배너 그래빙 |
-p / -A |
포트 지정 / 종합 스캔 |
스캔 결과 판정 🔑
| 스캔 | 열림 | 닫힘 |
|---|---|---|
| SYN | SYN+ACK | RST+ACK |
| FIN/NULL/XMAS | 무응답 | RST+ACK |
| UDP | 무응답 또는 응답 | ICMP Port Unreachable |
Kali Linux 주요 도구군#
| 분류 | 도구 |
|---|---|
| 정보 수집 | Nmap, theHarvester, dnsenum |
| 취약점 분석 | OpenVAS/Nessus, Nikto(웹 서버) |
| 웹 진단 | Burp Suite, OWASP ZAP, sqlmap |
| 패스워드 | John the Ripper, Hashcat, Hydra |
| 무선 | Aircrack-ng |
| 익스플로잇 | Metasploit Framework |
| 패킷 분석 | Wireshark, tcpdump |
| 포렌식 | Autopsy, Volatility(메모리) |
시스템 점검·무결성 도구#
| 도구 | 용도 |
|---|---|
| Tripwire / AIDE | 파일 무결성 검사 (해시 DB와 비교) |
| rkhunter / chkrootkit | 루트킷 탐지 |
| Nessus / OpenVAS | 취약점 스캐너 |
| Bastille | 리눅스 하드닝 자동화 |
| Volatility | 메모리 덤프 분석 |
15. 시스템 보안 솔루션 🔑#
출제기준 3-3. 약어와 "어떤 위협을 막는가" 매칭이 핵심.
| 솔루션 | 풀네임 | 역할 |
|---|---|---|
| HIDS | Host IDS | 호스트 내부 침입 탐지 (파일 변조, 로그 이상) — Tripwire, OSSEC |
| NIDS | Network IDS | 네트워크 트래픽 기반 탐지 — Snort |
| EDR | Endpoint Detection & Response | 단말 행위 탐지 + 대응·추적 |
| DLP | Data Loss Prevention | 정보 유출 방지 (매체 제어, 콘텐츠 필터링) |
| NAC | Network Access Control | 인가된 단말만 네트워크 접속 허용 |
| PMS | Patch Management System | 패치 배포·관리 |
| 백신 | Anti-Virus | 악성코드 탐지·치료 |
| 서버접근제어 | — | 서버 접속 계정·명령어 통제, 세션 기록 |
| SIEM | Security Info & Event Mgmt | 로그 통합 수집·상관분석 |
| SOAR | Security Orchestration, Automation & Response | 대응 자동화 |
| TPM | Trusted Platform Module | 하드웨어 기반 키 저장·무결성 검증 |
| SELinux / AppArmor | — | MAC(강제적 접근통제) 구현 |
💡 TIP
HIDS vs NIDS, DLP vs NAC, EDR vs 백신의 차이를 묻는 문제가 반복 출제된다. EDR = 백신(탐지·차단) + 행위 기록·추적·대응까지.
16. 클라우드·가상화 보안#
책임 공유 모델 🔑
| 모델 | 사용자 책임 범위 |
|---|---|
| IaaS | OS, 미들웨어, 앱, 데이터 (가장 넓음) |
| PaaS | 앱, 데이터 |
| SaaS | 데이터, 접근 관리 (가장 좁음) |
하이퍼바이저
| Type 1 (베어메탈) | Type 2 (호스트형) |
|---|---|
| 하드웨어 위에 직접 | 호스트 OS 위에서 동작 |
| ESXi, Hyper-V, Xen | VirtualBox, VMware Workstation |
주요 위협: VM Escape(게스트→호스트 탈출), VM 간 정보 유출, 스냅샷 유출, 컨테이너 이스케이프, 설정 오류로 인한 퍼블릭 노출
컨테이너 보안: 최소 베이스 이미지, 이미지 취약점 스캔, root 실행 금지, 시크릿 분리
솔루션 약어: CASB(클라우드 접근 보안 중개), CSPM(설정 오류 관리), CWPP(워크로드 보호)
17. 빈출 암기표#
출퇴근길 마지막 5분에 이것만 훑어도 된다.
숫자#
| 항목 | 값 |
|---|---|
| SUID / SGID / Sticky | 4000 / 2000 / 1000 |
| umask 기본 | 022 → 파일 644, 디렉토리 755 |
| 파일 기본 권한 계산 | 666 − umask |
| 디렉토리 기본 권한 계산 | 777 − umask |
| root UID | 0 |
| Administrator / Guest RID | 500 / 501 |
| syslog 우선순위 | emerg(0) ~ debug(7) |
| CVSS 심각 등급 | 9.0 이상 |
| RAID 5 / 6 최소 디스크 | 3 / 4 |
로그 매핑#
| 무엇을 볼 때 | 파일 | 명령 |
|---|---|---|
| 현재 접속자 | utmp | who, w |
| 로그인 성공 이력 | wtmp | last |
| 로그인 실패 이력 | btmp | lastb |
| 마지막 로그인 | lastlog | lastlog |
| 명령 실행 이력 | pacct | lastcomm |
| FTP 전송 | xferlog | — |
윈도우 이벤트 ID#
| 4624 | 4625 | 4672 | 4720 | 1102 |
|---|---|---|---|---|
| 로그온 성공 | 로그온 실패 | 특수권한 | 계정생성 | 로그삭제 |
설정 파일 → 무엇을 막는가 🔑#
| 파일 | 통제 대상 |
|---|---|
/etc/ssh/sshd_config |
root 원격 로그인(PermitRootLogin no) |
/etc/securetty |
root 콘솔 직접 로그인 |
/etc/pam.d/su |
su 사용 계정 제한(wheel 그룹) |
/etc/login.defs |
패스워드 최대·최소 사용일, 길이 |
/etc/hosts.allow / .deny |
호스트 기반 접속 허용·차단 |
/etc/cron.allow / .deny |
cron 사용 계정 |
/etc/hosts.equiv, ~/.rhosts |
r-command 신뢰 인증 |
/etc/fstab |
마운트 옵션(nosuid, noexec) |
Nmap 스캔 판정#
| 스캔 | 열림 | 닫힘 |
|---|---|---|
SYN(-sS) |
SYN+ACK | RST+ACK |
| FIN/NULL/XMAS | 무응답 | RST+ACK |
| UDP | 무응답 | ICMP Unreachable |
명령 한 줄#
find / -perm -4000 -type f 2>/dev/null # SUID 파일 탐색
chage -l username # 패스워드 만료 정책 확인
lastb | head -20 # 로그인 실패 이력
chattr +i /var/log/secure # 로그 파일 불변 설정
netstat -antp # 열린 포트 + 프로세스
nmap -sS -O 192.168.0.10 # SYN 스캔 + OS 탐지
✅ 이 과목 카드 후보 (목표 50장)#
| 서술형 카드 (15장) | 단답 카드 (35장) |
|---|---|
| 버퍼 오버플로우 + 대응 5가지 | passwd / shadow 각 필드 |
| 레이스 컨디션(TOCTOU) | SUID/SGID/Sticky 숫자·의미 |
| 루트킷 | umask 계산 |
| 랜섬웨어 | 로그 파일 6종 + 조회 명령 |
| APT 공격 단계 | 윈도우 이벤트 ID 5종 |
| SUID 권한상승 | 런레벨 0~6 |
| 포맷 스트링 | 레지스트리 루트키 5종 |
| 패스워드 크래킹·솔트 | SID / RID 500·501 |
| 무결성 검사(Tripwire) | inode 포함/미포함 항목 |
| TCP Wrapper 검사 순서 | PAM 모듈 유형 4종 |
| 접근통제 모델 DAC/MAC/RBAC | 취약 함수 5종 |
| SSH 보안 설정 항목 | sshd_config 주요 지시어 |
| HIDS/EDR/DLP/NAC 비교 | login.defs 4개 항목 |
| VM Escape·컨테이너 보안 | Nmap 스캔별 응답 판정 |
| 클라우드 책임 공유 모델 | CVE / CWE / CVSS |
| 교착상태 4조건 + 해결 | RAID 0/1/5/6/10 |
| 모바일 루팅·탈옥 대응 | 백업 방식 3종 |
문서 원본은
docs/ 폴더의 마크다운입니다.