페이지 목차
이 페이지에서 검색
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 등 시스템 공격기법 정의 및 특징
이 노트를 다 읽으면
- 시스템 위협을 관리적 ↔ 기술적 으로 나누고, 널 세션이 어떤 설정 문제인지 말할 수 있다.
- 스택 버퍼 오버플로우가 복귀 주소 를 노려 실행 흐름을 빼앗는 원리를 말하고, 힙 오버플로우 · Heap Spray · RTL과 구별할 수 있다.
- 포맷 스트링 공격이 왜 생기는지, 서식 문자
%x와%n의 역할을 말할 수 있다. - Race condition이 성립하는 세 가지 전제 (SetUID · 임시 파일 · 심볼릭 링크)와 Dirty COW의 관계를 말할 수 있다.
- 악성코드를 자기복제 여부 · 숙주 필요 여부 로 분류하고, 루트킷 · 논리 폭탄 · 랜섬웨어(RaaS)의 특징을 말할 수 있다.
- 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)까지 덮어쓴다 ]는 점에서 동적 할당 영역의 데이터 · 포인터를 덮는 힙 오버플로우와 구별된다.
원리를 한 줄씩 보면,
- 함수가 호출되면 스택에 지역 버퍼 → 저장된 프레임 포인터 → 복귀 주소 순서로 쌓입니다(01번 노트).
- 길이 검사 없이(
strcpy·gets같은 함수) 버퍼보다 긴 입력을 받으면, 넘친 바이트가 복귀 주소 를 덮습니다. - 함수가 끝나 복귀하는 순간, CPU는 덮인 주소 로 실행을 옮깁니다.
- 그 프로그램이 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)을 비집어 대상을 바꿔치기한다 ]는 점에서 입력 길이를 이용하는 버퍼 오버플로우와 구별된다.
고전적 형태는 세 가지가 함께 있을 때 성립합니다.
- SetUID root 프로그램이 (높은 권한으로 실행되고)
- 예측 가능한 이름의 임시 파일 을 만드는데
- "파일이 있는지 검사 → 연다" 사이의 틈에 공격자가 그 이름을 심볼릭 링크 로
/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번 노트의 안티 루트킷).
| 랜섬웨어 사례 | 특징 |
|---|---|
| WannaCry | SMB 취약점(EternalBlue)으로 웜처럼 자가 전파 |
| Petya / NotPetya | MBR을 감염 · 암호화 해 부팅 자체를 막음 |
| 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 "로그분석 및 대응" 과 연결됩니다. 공격기법은 침해 흔적을 해석하는 서술형 으로 나옵니다.
자주 나오는 형태
- 취약한 C 코드 한 조각을 주고 "어떤 공격에 취약하며 왜 위험한가" → 핵심어: 버퍼 오버플로우, 길이 검사 없는 strcpy/gets, 복귀 주소 변조, 안전한 함수(strncpy)로 대체
printf(buf)형태를 주고 취약점 이름과 수정 → 포맷 스트링,printf("%s", buf)로 수정- 악성코드 유형의 특징을 주고 분류 → 자기복제 · 숙주 · 전파 방식으로 바이러스/웜/트로이목마 구분
- 침해 서버 상황을 주고 "루트킷이 의심되는 이유와 점검 방법" → 시스템 명령 변조 가능성, 외부 깨끗한 매체 · 무결성 점검 도구(Tripwire) · 안티 루트킷으로 점검
- 알려진 취약점의 이름 ↔ 설명 매칭
공격 ↔ 대응 짝 (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 |
| 5 | RTL · Heap Spray는 각각 어떤 방어를 우회하는가? | 2.2 |
| 6 | 포맷 스트링에서 %x와 %n의 차이는? | 2.3 |
| 7 | Race condition의 세 가지 전제와 Dirty COW의 관계는? | 2.4 |
| 8 | 바이러스 · 웜 · 트로이목마를 자기복제 · 숙주 축으로 구분하면? | 3.1 |
| 9 | 루트킷이 자신을 숨기는 방식과, 그래서 어떻게 점검해야 하는가? | 3.2 |
| 10 | WannaCry와 Petya의 차이, RaaS가 뜻하는 것은? | 3.2 |
| 11 | APT의 특징과 사이버 킬체인 7단계는? | 4.1 |
| 12 | 공급망 공격이 일반 공격과 다른 점은? | 4.2 |
| 13 | Heartbleed · 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절의 판별 축과 절 번호를 근거로 설명해줘.
노트에 없는 공격 코드나 실제 익스플로잇은 만들지 말고, 개념 수준으로만 설명해줘.
LangTailor