보안 공격 유형

🔥 매회 출제 (priority 3)

🌱 왜 배우나

웹사이트 로그인 창에 아이디 대신 특수한 명령어를 적어 넣으면 어떻게 될까? 사이트가 입력값을 검사 없이 그대로 받는다면 회원 정보 전체가 빠져나갈 수 있다. 건물로 치면 현관문을 잠그지 않아 누구나 서류함을 뒤지는 상황, 혹은 남의 사원증을 복제해서 쓰는 상황과 같다. 공격마다 노리는 약점(입력값, 세션, 네트워크)이 다르다. 방어책을 세우려면 먼저 공격의 종류와 원리를 알아야 한다. 그래서 이런 분류 체계가 만들어졌다.

📖 핵심 개념

보안 공격은 시스템의 세 가지 핵심 성질을 위협하는 행위다. 그 세 가지는 기밀성(허락된 사람만 정보 열람), 무결성(정보가 몰래 바뀌지 않음), 가용성(필요할 때 서비스 사용 가능)이다.

공격 유형은 크게 네 갈래로 나뉜다.

  • 서비스 거부(DoS/DDoS): 서버에 대량의 요청을 퍼부어 정상 사용을 막는다.
  • 인젝션(주입): 입력란에 악성 코드를 끼워 넣어 서버나 DB(DataBase, 데이터 저장소)를 조작한다.
  • 세션 탈취: 이미 로그인한 사용자의 인증 정보를 가로채 그 사람 행세를 한다.
  • 네트워크 도청(스니핑): 오가는 데이터를 몰래 엿본다.

🔍 시각화

  공격 유형 분류

  ┌─────────────────────────────────────────┐
  │            보안 공격                     │
  ├──────────┬──────────┬─────────┬─────────┤
  │ 서비스   │ 인젝션   │ 세션    │ 네트워크│
  │ 거부     │ (주입)   │ 탈취    │ 도청    │
  ├──────────┼──────────┼─────────┼─────────┤
  │ DoS      │ SQL      │ CSRF    │ 스니핑  │
  │ DDoS     │ Injection│         │         │
  │          │ XSS      │         │         │
  ├──────────┼──────────┼─────────┼─────────┤
  │ 가용성↓  │ 기밀성↓  │ 무결성↓ │ 기밀성↓ │
  │          │ 무결성↓  │         │         │
  └──────────┴──────────┴─────────┴─────────┘

  노리는 대상:
  SQL Injection → 서버의 DB
  XSS           → 다른 사용자의 브라우저
  CSRF          → 인증된 사용자의 권한

↔️ 이웃 개념 구분

  • XSS vs CSRF: XSS는 악성 스크립트가 “다른 사용자의 브라우저”에서 실행되어 정보를 빼낸다. CSRF는 로그인한 사용자가 “자기도 모르게” 공격자가 원하는 요청을 서버에 보내도록 만든다. XSS는 스크립트 실행, CSRF는 위조 요청이 핵심이다.
  • DoS vs DDoS: DoS는 공격자 한 명이 직접 공격한다. DDoS는 감염된 컴퓨터 여러 대(봇넷)를 동원해 한꺼번에 공격한다.

🔑 핵심 용어

  • DoS/DDoS (Denial of Service / Distributed DoS, 서비스 거부 / 분산 서비스 거부): 서버에 대량의 요청을 보내 정상 서비스를 마비시킨다. DoS는 한 명, DDoS는 감염된 좀비 PC 묶음(봇넷)을 동원한다. 세부: SYN Flood, Smurf, Land Attack, Ping of Death
  • SQL Injection (SQL 주입): 웹 입력란에 악의적인 SQL(데이터베이스 질의 언어) 구문을 끼워 넣어 DB를 조작한다. 대응: PreparedStatement(입력값을 코드가 아닌 데이터로 처리하는 매개변수화 쿼리), 입력값 검증
  • XSS (Cross-Site Scripting, 교차 사이트 스크립팅): 웹 페이지에 악성 스크립트를 심어 다른 사용자의 브라우저에서 실행시킨다. 쿠키(로그인 정보 조각)나 세션(로그인 상태)을 훔칠 수 있다. 대응: 입출력 이스케이프(특수문자 무력화), CSP(Content Security Policy, 콘텐츠 보안 정책) 헤더
  • CSRF (Cross-Site Request Forgery, 교차 사이트 요청 위조): 로그인한 사용자가 모르는 사이 공격자가 만든 요청을 서버에 보내게 만든다. 대응: CSRF 토큰(일회용 인증 코드), Referer(요청 출처) 검증
  • 스니핑(Sniffing, 도청): 네트워크에 오가는 패킷을 몰래 들여다본다. 대응: 암호화 통신(HTTPS, VPN — Virtual Private Network, 가상 사설 네트워크)

✅ 스스로 가르쳐보기

친구에게 설명한다고 생각하고, SQL Injection·XSS·CSRF가 각각 “누구를” 노리는 공격인지 본인 말로 정리해 보세요. 그다음 각 공격의 대응책을 한 줄씩 이어 붙여 보면 됩니다.

체크포인트:

  • SQL Injection은 서버 DB, XSS는 다른 사용자의 브라우저, CSRF는 인증된 사용자의 권한을 노린다고 구분할 수 있나요?
  • DoS와 DDoS의 차이를 “공격자 수”로 한 줄 설명할 수 있나요?
  • 스니핑의 기본 방어가 “암호화 통신”이라는 점을 말할 수 있나요?

🎯 기출 포인트

공격의 정의를 주고 이름을 묻는 문제가 매회 나온다. 특히 SQL InjectionXSS의 차이(DB 조작 vs 브라우저 스크립트 실행), DoSDDoS의 차이(단일 vs 분산)를 분명히 구분하자. DDoS 세부 공격인 SYN Flood(TCP 3-Way Handshake 악용, 대량 SYN 패킷 전송)와 Smurf Attack(ICMP 브로드캐스트 악용)은 서술형에도 출제된다.

🔗 연결 개념