본문으로 건너뛰기
페이지 목차
이 페이지에서 검색

EIS

이 페이지에 묻기

EIS · 현재 차시와 목차 본문에서만 찾아 답합니다. 답을 지어내지 않고 해당하는 대목을 그대로 보여 주며, 여기에 없으면 없다고 알려 드립니다.

생성형 AI가 아니라 이 페이지 본문을 찾아 그대로 보여 주는 방식입니다. 외부로 나가는 요청이 없습니다.

EIS · SECURITY

EIS

생성 수정

정보보안기사의 시스템·네트워크·애플리케이션 보안과 암호·관리·실기 내용을 개념의 경계와 실습으로 연결합니다.

29개 문서 · 1 · 시스템보안 · 4 / 29

03 · 시스템 보안위협과 공격기법

지도 위치 : 1과목 · README 4장의 ③ 영역(시스템) — 영역 층의 공격기법 쪽. 짝이 되는 대응기술은 04번 노트 | 출제기준: 2. 시스템 보안위협 및 공격기법 > 1. 시스템 보안위협, 2. 시스템 공격기법 | 이전: 02 시스템 정보와 로그 | 다음: 04 시스템 보안 대응기술 출제 빈도 : ⭐⭐⭐ (회당 약 5.5문항 — 출제분석.md) · 변화 ▲ (공격기법 S2.2가 4.5 → 5.8로 증가) · ⚠️ 신규 범위 포함 (Heap Spray, Dirty COW, 페이로드 트리거, RDP 터널링, RaaS, 공급망 공격, Log4j · Heartbleed · Shellshock) 세세항목 : 보안설정, 권한설정, 내부자 위협 등 관리적 보안위협 · 보안취약점에 의한 도청, 정보유출 · 변조, 비인가 접근 등 기술적 보안위협 · APT 공격, 알려진 취약점, 취약점 스캐너, SQL Injection, Buffer overflow 등 시스템 공격기법 정의 및 특징

이 노트를 다 읽으면

  1. 시스템 위협을 관리적 ↔ 기술적 으로 나누고, 널 세션이 어떤 설정 문제인지 말할 수 있다.
  2. 스택 버퍼 오버플로우가 복귀 주소 를 노려 실행 흐름을 빼앗는 원리를 말하고, 힙 오버플로우 · Heap Spray · RTL과 구별할 수 있다.
  3. 포맷 스트링 공격이 왜 생기는지, 서식 문자 %x와 %n의 역할을 말할 수 있다.
  4. Race condition이 성립하는 세 가지 전제 (SetUID · 임시 파일 · 심볼릭 링크)와 Dirty COW의 관계를 말할 수 있다.
  5. 악성코드를 자기복제 여부 · 숙주 필요 여부 로 분류하고, 루트킷 · 논리 폭탄 · 랜섬웨어(RaaS)의 특징을 말할 수 있다.
  6. APT의 특징과 사이버 킬체인 7단계, 공급망 공격, 대표적인 알려진 취약점(Heartbleed · Shellshock · Log4j · Dirty COW)을 짝지을 수 있다.

0. 이 노트의 판별 축

#축왼쪽 (0)오른쪽 (1)이 축으로 갈리는 것큰 축 (README 5장)
1사람 · 정책 문제인가, 기술 문제인가관리적 위협기술적 위협기본 패스워드 · 과도한 권한 · 내부자 ↔ 도청 · 변조 · 취약점 악용③ 관리적 ↔ 기술적
2위협이 어디서 오나내부자외부자권한 남용 · 퇴직자 계정 ↔ 원격 침투내부자 ↔ 외부자 (파생)
3스스로 복제하는가복제 안 함복제함트로이목마 · 루트킷 · 논리 폭탄 ↔ 바이러스 · 웜이 노트의 축
4숙주 파일이 필요한가독립 실행숙주에 기생웜 ↔ 바이러스이 노트의 축
5어느 메모리를 노리나스택힙스택 BOF ↔ 힙 오버플로우 · Heap Spray이 노트의 축
6누구를 노리나불특정 다수특정 표적일반 피싱 · 웜 ↔ APT · 스피어 피싱 · 워터링 홀이 노트의 축
7패치가 있는가알려진 취약점제로데이Heartbleed · Log4j(공개 후) ↔ 패치 전 공격알려진 취약점 ↔ 제로데이 (파생)

이 노트의 질문은 "공격자는 01번 노트의 무대(메모리 · 권한 · 파일)에서 무엇을 비틀어 권한을 얻고 숨는가" 입니다. 모든 공격은 README 5장 ① 축의 왼쪽(공격)에 놓이고, 짝이 되는 오른쪽(방어)은 04번 노트에 있습니다. 앞에서 배운 원격접속 공격 · 봇넷(09번 노트)이 "어떻게 들어오나"였다면, 이 노트는 들어온 뒤 시스템 안에서 무슨 일이 일어나나 입니다.


1. 시스템 보안위협 — 관리적 ↔ 기술적

구분예축
관리적 위협기본 계정 · 패스워드 방치, 불필요한 서비스 · 공유 방치, 과도한 권한(누구나 쓰기), 퇴직자 계정 미삭제, 내부자의 권한 남용사람 · 설정
기술적 위협평문 통신 도청 , 정보 유출 · 변조, 취약점을 이용한 비인가 접근 , 악성코드기술

널 세션 (Null Session) — [윈도우 설정 취약점]인데, [ 사용자 이름과 패스워드 없이 IPC$ 공유에 연결해 계정 · 공유 목록 같은 정보를 얻는다 ]는 점에서 패스워드를 맞히려 시도하는 무차별 대입과 구별된다. IPC$ 는 프로세스 간 통신용 기본 공유인데, 익명 연결이 허용되면 사용자 목록 · 공유 목록 · 정책 정보가 새어 나갑니다. 대응은 익명 접근 제한(RestrictAnonymous, 04번 노트)과 139 · 445 포트 차단입니다.

그 밖의 위협핵심
Telnet · FTP · rlogin패스워드까지 평문 전송 → 스니핑으로 탈취. SSH 는 암호화
루팅 · 탈옥모바일의 관리자(root) 권한 획득 → 샌드박스 · 앱 검증 · 보안 업데이트가 무력화
드론재밍 (전파 방해 → 가용성 ), GPS 스푸핑, 명령 재전송 (인증 · 무결성)

📝 기출 포인트 — "널 세션 취약점이 있는 기본 공유 = IPC$ "가 네 번, "널 세션으로 얻을 수 있는 정보"가 2025년에 나왔습니다. 드론 위협을 CIA로 분류하는 문제(재밍 = 가용성)도 나왔습니다.


2. 메모리를 노리는 공격 ⭐

01번 노트의 프로세스 주소 공간(코드 · 데이터 · 힙 · 스택)을 떠올리세요. 아래는 시험이 묻는 개념 수준 으로만 설명합니다(실제 공격 코드가 아니라 원리와 구별점).

2.1 버퍼 오버플로우 — 스택과 힙

스택 버퍼 오버플로우 — [메모리 공격]인데, [ 스택의 지역 버퍼가 받을 수 있는 크기보다 긴 입력을 넣어 그 뒤에 있는 복귀 주소(RET)까지 덮어쓴다 ]는 점에서 동적 할당 영역의 데이터 · 포인터를 덮는 힙 오버플로우와 구별된다.

원리를 한 줄씩 보면,

  1. 함수가 호출되면 스택에 지역 버퍼 → 저장된 프레임 포인터 → 복귀 주소 순서로 쌓입니다(01번 노트).
  2. 길이 검사 없이(strcpy·gets 같은 함수) 버퍼보다 긴 입력을 받으면, 넘친 바이트가 복귀 주소 를 덮습니다.
  3. 함수가 끝나 복귀하는 순간, CPU는 덮인 주소 로 실행을 옮깁니다.
  4. 그 프로그램이 SetUID root 였다면(01번 노트), 공격자가 얻는 권한도 root가 됩니다. 이것이 권한 상승 입니다.
짝노리는 곳덮어쓰는 목표
스택 BOF지역 변수 버퍼복귀 주소(RET)
힙 오버플로우malloc 등으로 잡은 동적 메모리인접 청크의 관리 정보 · 함수 포인터
  • 취약 함수(길이 검사 없음): strcpy · strcat · sprintf · gets · scanf. 안전한 대안은 길이를 받는 strncpy · strncat · snprintf · fgets입니다(04번 노트, 16번 노트의 시큐어 코딩).
  • ⚠️ 버퍼 오버플로우는 실행 흐름을 빼앗는 공격입니다. "가용성만 떨어뜨리는 공격"이라거나 "전역 변수가 스택에 저장된다"는 설명은 오답 입니다(전역 변수는 데이터 영역).

2.2 메모리 보호를 우회하는 변형 ⚠️ 신규 범위

04번 노트의 방어(DEP/NX · ASLR)가 생기자 공격도 진화했습니다.

기법한 줄겨냥하는 방어
RTL (Return-to-libc)넣은 코드를 실행하는 대신, 이미 메모리에 있는 라이브러리 함수 (system 등)로 복귀 주소를 돌림DEP/NX(데이터 영역 실행 금지)를 우회
ROP기존 코드의 조각(가젯)을 이어 붙여 원하는 동작을 구성DEP/NX 우회
Heap Spray힙 넓은 영역에 같은 값(실행 패드 + 목표)을 가득 채워 , 실행이 그 영역 어디로 튀어도 걸리게 함ASLR로 주소를 모를 때 적중 확률을 높임
  • ASLR (주소 공간 배치 무작위화)과 DEP/NX (데이터 영역 코드 실행 금지)는 04번 노트에서 자세히 봅니다. 시험은 "Heap Spray · RTL은 DEP · NX · ASLR과 관련된다"는 짝으로 냅니다.

📝 기출 포인트 — 버퍼 오버플로우는 6회, "복귀 주소를 조작해 코드를 실행", "취약 함수 구분(gets)", 스택 BOF 수행 단계 순서 가 반복됩니다. 2024~2025년에는 힙 오버플로우 vs 스택 , Heap Spray(신규) , RTL(신규) 이 새로 나왔습니다. "경쟁상태와 혼동하지 말 것"이라는 함정도 오래된 단골입니다.

2.3 포맷 스트링

포맷 스트링 공격 — [메모리 공격]인데, [ 사용자 입력이 printf류 함수의 서식 문자열 자리에 그대로 들어가, 서식 문자(%)가 메모리를 읽거나 쓰게 만든다 ]는 점에서 버퍼 길이를 넘기는 버퍼 오버플로우와 구별된다. 원인은 printf(user_input)처럼 서식 문자열을 사용자가 정하게 둔 코드입니다(올바른 코드는 printf("%s", user_input)).

서식 문자하는 일
%x · %p스택의 값을 읽어 출력 (메모리 열람 )
%s포인터가 가리키는 문자열을 읽음
%n지금까지 출력한 바이트 수를 메모리에 쓴다 → 메모리 변조 의 핵심

🔍 읽는 포인트 : 읽기(%x · %s)만으로는 정보 유출, %n이 있어야 메모리 변조 로 이어집니다. 포맷 스트링은 "가용성 공격"이 아니라 기밀성 · 무결성 · 권한 상승 공격입니다.

📝 기출 포인트 — 포맷 스트링 6회. " printf 취약점 ", "서식 지정자의 종류와 의미(특히 %n)", "가용성 공격이라는 설명은 틀림"이 반복됩니다.

2.4 Race Condition과 Dirty COW ⚠️ 신규 범위

경쟁 상태 (Race Condition) — [시간차 공격]인데, [ 프로그램이 '검사하는 시점'과 '사용하는 시점' 사이의 짧은 틈(TOCTOU)을 비집어 대상을 바꿔치기한다 ]는 점에서 입력 길이를 이용하는 버퍼 오버플로우와 구별된다.

고전적 형태는 세 가지가 함께 있을 때 성립합니다.

  1. SetUID root 프로그램이 (높은 권한으로 실행되고)
  2. 예측 가능한 이름의 임시 파일 을 만드는데
  3. "파일이 있는지 검사 → 연다" 사이의 틈에 공격자가 그 이름을 심볼릭 링크 로 /etc/passwd 같은 중요 파일에 걸어 둠 → 프로그램이 높은 권한으로 그 파일을 덮어씀.
  • 대응: 임시 파일을 예측 불가능한 이름 으로 안전하게 생성(mkstemp), 심볼릭 링크 따라가지 않기(O_NOFOLLOW), 검사와 사용을 원자적으로.
  • Dirty COW (CVE-2016-5195) — 리눅스 커널의 Copy-on-Write 메모리 처리에 있던 경쟁 상태 로, 일반 사용자가 읽기 전용 파일에 쓰기를 성공시켜 root 권한을 얻는 로컬 권한 상승 취약점입니다. 약 9년간 커널에 숨어 있었습니다. "커널의 경쟁 조건 기반 권한 상승"으로 출제됩니다.

📝 기출 포인트 — Race condition 4회 + Dirty COW(신규). "SetUID · 임시 파일 · 심볼릭 링크가 전제", "자원 경쟁 타이밍으로 권한 획득", 버퍼 오버플로우와의 혼동 구분 이 반복됩니다.


3. 악성코드 ⭐

3.1 분류 — 자기복제와 숙주

유형자기복제(축 3)숙주 필요(축 4)한 줄
바이러스⭕⭕ (파일 · 부트섹터에 기생)숙주 파일을 감염시켜 퍼짐
웜(Worm)⭕❌ (독립 실행)네트워크로 스스로 전파 . 숙주가 필요 없음
트로이목마❌— (정상 프로그램으로 위장)유용한 척하며 악성 기능 수행. 스스로 퍼지지 않음
루트킷❌—침입 후 은닉 + 권한 유지 도구 묶음
백도어❌—정상 인증을 우회하는 뒷문
스파이웨어 · 키로거❌—정보 · 키 입력을 몰래 수집
논리 폭탄❌—특정 조건 · 시점 이 되면 터짐
랜섬웨어변종마다 다름—파일 암호화 후 금전 요구

💡 가장 많이 틀리는 두 축 : ① 트로이목마와 루트킷은 자기복제를 하지 않습니다 ("자기 전파"가 특징이라는 보기는 오답). ② 웜은 숙주가 필요 없습니다 (바이러스와의 결정적 차이).

바이러스 세부종차
부트섹터 바이러스MBR · 부트섹터 감염 → 부팅 과정(BIOS → MBR)에 끼어듦
파일 감염 바이러스실행 파일에 기생
매크로 바이러스오피스 문서의 매크로 로 동작 → 문서 공유로 전파. 대응으로 CDR (콘텐츠 무해화, 05번 노트)
은폐형(스텔스)감염 사실 · 크기 변화를 숨겨 백신을 속임
다형성(폴리모픽)복제할 때마다 코드를 바꿔 시그니처 탐지 회피
  • 악성코드 치료 : 감염형(바이러스)은 숙주에서 악성 부분만 제거(치료), 독립형(웜 · 트로이목마)은 파일 자체 삭제 .
  • 전달자 역할: 다운로더 (추가 악성코드를 내려받음), 드로퍼 (자기 안에 악성코드를 품고 설치).

3.2 루트킷과 랜섬웨어

루트킷 (Rootkit) — [악성코드]인데, [ 시스템 명령 · 커널을 변조해 자신과 공격자의 활동을 숨기고 권한을 유지하는 도구 묶음 ]이라는 점에서 단순히 정상 프로그램으로 위장하는 트로이목마와 구별된다. 시스템 명령(ps · ls · netstat)을 변조하거나(사용자 모드), 커널의 시스템 콜 결과를 바꿔 (커널 모드) 프로세스 · 파일 · 연결을 목록에서 지웁니다. 그래서 감염된 시스템 안의 명령은 믿을 수 없고, 외부의 깨끗한 매체로 점검합니다(05번 노트의 안티 루트킷).

랜섬웨어 사례특징
WannaCrySMB 취약점(EternalBlue)으로 웜처럼 자가 전파
Petya / NotPetyaMBR을 감염 · 암호화 해 부팅 자체를 막음
CryptoLocker · Locky파일 암호화. Locky는 가짜 송장 첨부 메일로 유포
RaaS (서비스형 랜섬웨어) ⚠️ 신규제작자가 랜섬웨어를 서비스처럼 대여 → 기술이 없어도 공격 가능해 진입 장벽이 낮아짐
  • 랜섬웨어는 보통 파일을 암호화한 뒤 볼륨 섀도 복사본(복원 지점)을 삭제 해 복구를 막습니다. 그래서 오프라인 · 분리 백업 이 핵심 대응입니다.

📝 기출 포인트 — 랜섬웨어(8회) · 트로이목마(6회) · 루트킷(5회)이 상위입니다. 루트킷은 "자기복제 없음 ", 트로이목마는 "자기 전파 없음 "이 오답을 가르는 열쇠입니다. 사례별 구분(WannaCry ↔ Petya의 MBR), RaaS , 매크로 바이러스와 CDR이 최근 나왔습니다.

3.3 그 밖의 공격 기법

기법한 줄
무차별 대입 ↔ 사전 공격모든 조합 시도 ↔ 자주 쓰는 단어 목록 으로 시도. 도구: John the Ripper · Hydra · Hashcat
레인보우 테이블평문-해시 쌍을 미리 계산해 둔 표 로 역추적 → 솔트로 무력화 (02번 노트)
Credential Stuffing ⚠️다른 사이트에서 유출된 계정 을 그대로 재사용해 로그인
DLL 인젝션대상 프로세스의 메모리에 악성 DLL을 강제로 적재 해 그 프로세스 권한으로 동작
멜트다운 · 스펙터CPU 추측 실행 을 악용한 부채널 → 커널 메모리 유출(하드웨어 취약점)
Man-in-the-Browser ⚠️브라우저 확장 · 악성코드로 브라우저 안에서 거래 내용을 가로채 변조(13번 노트의 MITM과 구별)
스턱스넷(Stuxnet)PLC(산업제어, SCADA) 를 노린 악성코드. DoS 공격과 다른 범주
Atomic Stealer ⚠️macOS 정보 탈취 악성코드

4. 표적형 공격 · 공급망 · 알려진 취약점

4.1 APT와 사이버 킬체인

APT (Advanced Persistent Threat, 지능형 지속 위협) — [공격 방식]인데, [ 특정 표적을 정해 오랜 기간 은밀히 잠복하며 단계적으로 침투한다 ]는 점에서 불특정 다수를 노리고 빠르게 퍼지는 웜 · 일반 악성코드와 구별된다(축 6). ⚠️ " 불특정 다수 를 노린다"는 설명은 APT의 오답 보기입니다.

표적형 침투 기법한 줄
스피어 피싱특정 인물을 겨냥한 맞춤 피싱 메일(APT의 흔한 초기 침투)
워터링 홀표적이 자주 방문하는 정상 사이트 를 감염시켜 기다림
드라이브 바이 다운로드웹 페이지 접속만으로 취약점을 통해 감염

사이버 킬체인 (록히드마틴, 공격 7단계): ① 정찰 → ② 무기화 → ③ 전달 → ④ 취약점 공격(익스플로잇) → ⑤ 설치 → ⑥ 명령·제어(C2) → ⑦ 목표 행동 . 각 단계를 끊으면 공격을 막을 수 있다는 방어 관점의 모델입니다.

💡 용어 구분(2025년 신규): 익스플로잇 (취약점을 찌르는 코드) → 페이로드 (실제 수행되는 악성 동작) → 트리거 (페이로드가 활성화되는 조건 · 시점).

4.2 공급망 공격과 봇넷

공급망 공격 (Supply Chain Attack) — [침투 전략]인데, [ 최종 표적 대신, 그 표적이 신뢰하는 공급자(소프트웨어 개발사 · 업데이트 서버 · 라이브러리)를 먼저 장악해 정상 경로로 악성코드를 배포한다 ]는 점에서 표적을 직접 공격하는 방식과 구별된다. 개발사의 소스코드 · 빌드 · 업데이트에 악성코드를 심으면, 정상 서명된 업데이트를 받은 수많은 고객이 한꺼번에 감염됩니다.

봇넷(Botnet) — 감염된 좀비 PC 떼를 C&C(명령·제어) 서버 로 조종하는 것. 대표적으로 Mirai 는 IoT 기기의 기본 계정 (01번 노트)으로 감염해 대규모 DDoS를 일으켰습니다(08번 노트 DDoS와 연결). RDP 터널링 (신규)은 방화벽에 열린 포트로 RDP를 터널링 · 포워딩 해 차단을 우회하는 기법입니다(04번 노트).

4.3 알려진 취약점 ⚠️ 신규 범위

알려진 취약점 ↔ 제로데이 (축 7): 알려진 취약점은 패치가 나온 취약점이고, 제로데이는 패치가 나오기 전입니다. 아래 넷은 "오랫동안 널리 쓰이던 구성요소에 숨어 있다 공개된" 공통점이 있어, 공개 후에도 패치하지 않은 시스템이 오래 노출됩니다.

취약점대상한 줄
Heartbleed (CVE-2014-0160)OpenSSL 하트비트 확장범위를 넘겨 읽는 메모리 과다 읽기 → 서버 메모리의 키 · 세션 유출 (기밀성)
Shellshock (CVE-2014-6271)Bash 셸환경변수에 넣은 코드가 실행됨 → 웹 서버 · DHCP 등으로 원격 명령 실행
Log4Shell (CVE-2021-44228)Apache Log4j 로깅로그에 찍히는 문자열의 JNDI 조회 로 원격 코드 실행 (CVSS 10.0)
Dirty COW (CVE-2016-5195)리눅스 커널Copy-on-Write 경쟁 상태 로 로컬 권한 상승(2.4절)

📝 기출 포인트 — APT(6회)는 "장기간 특정 표적 잠복", 사이버 킬체인은 단계 순서 가 최근 매회 나옵니다. 워터링 홀, 공급망 공격, Heartbleed · Shellshock · Log4j · Dirty COW, Stuxnet(SCADA)이 모두 출제되었습니다.


5. 실기 연결

수행준거 2.1-1 "불필요한 계정 존재 및 악성코드 설치 여부 점검" , 3.2 "로그분석 및 대응" 과 연결됩니다. 공격기법은 침해 흔적을 해석하는 서술형 으로 나옵니다.

자주 나오는 형태

  1. 취약한 C 코드 한 조각을 주고 "어떤 공격에 취약하며 왜 위험한가" → 핵심어: 버퍼 오버플로우, 길이 검사 없는 strcpy/gets, 복귀 주소 변조, 안전한 함수(strncpy)로 대체
  2. printf(buf) 형태를 주고 취약점 이름과 수정 → 포맷 스트링, printf("%s", buf)로 수정
  3. 악성코드 유형의 특징을 주고 분류 → 자기복제 · 숙주 · 전파 방식으로 바이러스/웜/트로이목마 구분
  4. 침해 서버 상황을 주고 "루트킷이 의심되는 이유와 점검 방법" → 시스템 명령 변조 가능성, 외부 깨끗한 매체 · 무결성 점검 도구(Tripwire) · 안티 루트킷으로 점검
  5. 알려진 취약점의 이름 ↔ 설명 매칭

공격 ↔ 대응 짝 (04번 노트와 함께 외우기)

공격핵심 대응
버퍼 오버플로우 · Heap Spray · RTL안전한 함수, 스택 가드 · ASLR · DEP/NX
포맷 스트링서식 문자열을 사용자가 못 정하게, 컴파일러 경고
Race condition안전한 임시 파일 생성, 심볼릭 링크 검사
널 세션익명 접근 제한(RestrictAnonymous), 포트 차단
랜섬웨어오프라인 · 분리 백업 , 패치, 메일 필터
루트킷무결성 점검(Tripwire), 안티 루트킷, 재설치
알려진 취약점보안 패치 , 취약점 스캐너 정기 점검

💡 서술형 답안의 틀: "공격 원리 한 줄 → 왜 위험한가(권한 상승 · 유출 등) → 대응 한두 가지" .


6. 확인 문제

문제 1. 스택 버퍼 오버플로우 공격이 실행 흐름을 빼앗기 위해 최종적으로 덮어쓰려는 대상은? ① 전역 변수 ② 함수의 복귀 주소(RET) ③ 힙에 할당된 포인터 ④ 환경 변수

문제 2. 다음 중 자기복제를 하지 않는 악성코드로만 묶인 것은? ① 바이러스, 웜 ② 웜, 랜섬웨어 ③ 트로이목마, 루트킷 ④ 바이러스, 트로이목마

문제 3. 포맷 스트링 공격에서 메모리에 값을 쓰는 데 핵심적으로 쓰이는 서식 문자는? ① %x ② %s ③ %d ④ %n

문제 4. Race condition 공격이 성립하기 위한 전제로 보기 어려운 것은? ① SetUID가 설정된 프로그램 ② 예측 가능한 이름의 임시 파일 생성 ③ 심볼릭 링크를 걸 수 있는 환경 ④ 네트워크로 전파되는 자기복제 코드

문제 5. APT 공격에 대한 설명으로 옳지 않은 것은? ① 특정 표적을 겨냥한다 ② 장기간 은밀히 잠복한다 ③ 불특정 다수에게 무차별로 빠르게 퍼지는 것이 목적이다 ④ 스피어 피싱이 초기 침투에 쓰인다

문제 6. 웜(Worm)과 바이러스의 결정적 차이는? ① 웜은 암호화를 하고 바이러스는 하지 않는다 ② 웜은 숙주 파일 없이 독립적으로 네트워크를 통해 전파된다 ③ 웜은 자기복제를 하지 않는다 ④ 바이러스는 원격 코드 실행만 한다

문제 7. 다음 설명에 해당하는 알려진 취약점은? "OpenSSL의 하트비트 확장에서 범위를 넘겨 읽어 서버 메모리의 민감 정보가 유출된다." ① Shellshock ② Heartbleed ③ Log4Shell ④ Dirty COW

문제 8. 소프트웨어 개발사나 업데이트 서버를 먼저 장악해 정상 배포 경로로 악성코드를 퍼뜨리는 공격은? ① 워터링 홀 ② 공급망 공격 ③ 드라이브 바이 다운로드 ④ 무차별 대입

정답과 해설

#정답해설 (판별 축)
1②스택 BOF의 목표는 복귀 주소입니다(축 5의 스택 쪽). 힙 포인터는 힙 오버플로우, 전역 변수는 데이터 영역입니다.
2③축 3: 트로이목마 · 루트킷은 자기복제를 하지 않습니다. 바이러스 · 웜은 복제하므로 ①④는 제외됩니다.
3④%n은 출력한 바이트 수를 메모리에 씁니다 . %x · %s는 읽기(유출)입니다.
4④자기복제 · 네트워크 전파는 웜 의 특징입니다. Race condition은 SetUID · 임시 파일 · 심볼릭 링크의 시간차를 노립니다.
5③축 6: APT는 특정 표적 을 노립니다. 불특정 다수 무차별은 일반 웜 · 피싱의 성격입니다.
6②축 4: 웜은 숙주가 필요 없습니다. 암호화(①)나 자기복제 여부(③)는 틀린 기준입니다.
7②Heartbleed = OpenSSL 메모리 과다 읽기. Shellshock은 Bash 원격 명령, Log4Shell은 JNDI, Dirty COW는 커널 권한 상승입니다.
8②신뢰하는 공급자를 거쳐 정상 경로로 퍼지는 것이 공급망 공격입니다. 워터링 홀은 표적이 방문하는 사이트를 감염시킵니다.

부록 A. 스스로 확인하기

#질문답이 있는 곳
1관리적 위협과 기술적 위협의 예를 두 개씩 들면?1
2널 세션은 어떤 공유를 통해, 무엇을 얻는가?1
3스택 BOF가 복귀 주소를 덮으면 왜 위험한가? SetUID와 어떻게 만나는가?2.1
4스택 오버플로우와 힙 오버플로우는 무엇을 노리는가?2.1
5RTL · Heap Spray는 각각 어떤 방어를 우회하는가?2.2
6포맷 스트링에서 %x와 %n의 차이는?2.3
7Race condition의 세 가지 전제와 Dirty COW의 관계는?2.4
8바이러스 · 웜 · 트로이목마를 자기복제 · 숙주 축으로 구분하면?3.1
9루트킷이 자신을 숨기는 방식과, 그래서 어떻게 점검해야 하는가?3.2
10WannaCry와 Petya의 차이, RaaS가 뜻하는 것은?3.2
11APT의 특징과 사이버 킬체인 7단계는?4.1
12공급망 공격이 일반 공격과 다른 점은?4.2
13Heartbleed · Shellshock · Log4j · Dirty COW는 각각 무엇을 노리는가?4.3

부록 B. 자주 하는 실수 · 함정

실수바로잡기
"트로이목마는 자기복제로 퍼진다"❌ 자기복제 · 자기 전파 없음 . 스스로 퍼지면 웜
"웜도 숙주 파일이 있어야 한다"❌ 웜은 독립 실행 — 숙주 불필요
"루트킷은 복제하며 퍼진다"❌ 루트킷은 은닉 · 권한 유지 도구. 복제가 특징이 아님
"버퍼 오버플로우는 가용성만 떨어뜨린다"❌ 실행 흐름 탈취 → 권한 상승 이 핵심
"전역 변수는 스택에 저장된다"❌ 데이터 영역. 스택은 지역 변수 · 복귀 주소
"포맷 스트링은 가용성 공격이다"❌ 메모리 열람 · 변조 (%x·%n) — 기밀성 · 무결성
"포맷 스트링은 %s만 있으면 메모리를 쓴다"⚠️ 쓰기는 %n . %s·%x는 읽기
"Race condition은 버퍼 길이를 이용한다"❌ 그건 BOF. Race는 검사-사용 시간차(TOCTOU)
"APT는 불특정 다수를 노린다"❌ 특정 표적 , 장기 잠복
"Dirty COW는 네트워크 원격 공격이다"❌ 로컬 권한 상승(커널 경쟁 상태)
"Stuxnet은 DoS 공격의 일종"❌ PLC/SCADA 대상 악성코드

부록 C. AI · NotebookLM 복습 프롬프트

이 03번 노트만 근거로 4지선다 8문제를 내줘.
악성코드 분류(자기복제·숙주 축), 버퍼 오버플로우(스택/힙)와 복귀 주소, 포맷 스트링 %n, Race condition 전제, APT·공급망·알려진 취약점(Heartbleed/Shellshock/Log4j/Dirty COW)은 반드시 포함해줘.
내가 답하면 채점하고, 오답은 노트 0절의 판별 축과 절 번호를 근거로 설명해줘.
노트에 없는 공격 코드나 실제 익스플로잇은 만들지 말고, 개념 수준으로만 설명해줘.