보안 위협과 대응
보안 위협과 대응¶
개요¶
네트워크 보안 위협은 지속적으로 진화하고 있습니다. 이 장에서는 주요 네트워크 공격 유형, 동작 원리, 그리고 효과적인 대응 방안을 학습합니다.
난이도: ⭐⭐⭐⭐
학습 목표: - 주요 네트워크 공격 유형과 원리 이해 - 스니핑, 스푸핑, DoS/DDoS 공격 식별 - 웹 보안 위협 (SQL Injection, XSS) 개념 파악 - 침입 탐지/방지 시스템(IDS/IPS) 이해 - 효과적인 보안 대응 방안 수립
목차¶
1. 네트워크 보안 위협 유형¶
위협 분류 체계¶
┌─────────────────────────────────────────────────────────────────┐
│ 보안 위협 분류 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 공격 유형 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 수동적 공격 (Passive Attack) │ │
│ │ └─ 도청, 스니핑, 트래픽 분석 │ │
│ │ (데이터 변조 없이 정보 수집) │ │
│ │ │ │
│ │ 능동적 공격 (Active Attack) │ │
│ │ └─ 변조, 위조, 서비스 거부 │ │
│ │ (데이터나 시스템에 직접 영향) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 공격 대상별 분류 │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 네트워크 계층 공격 │ │
│ │ └─ IP 스푸핑, ICMP 플러딩, 라우팅 공격 │ │
│ │ │ │
│ │ 전송 계층 공격 │ │
│ │ └─ TCP SYN Flood, UDP Flood, 세션 하이재킹 │ │
│ │ │ │
│ │ 애플리케이션 계층 공격 │ │
│ │ └─ SQL Injection, XSS, CSRF │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
주요 공격 유형 요약¶
| 공격 유형 | 목표 | CIA 위협 | 계층 |
|---|---|---|---|
| 스니핑 | 정보 수집 | 기밀성 | L2-L7 |
| 스푸핑 | 신뢰 악용 | 무결성, 인증 | L2-L4 |
| DoS/DDoS | 서비스 마비 | 가용성 | L3-L7 |
| MITM | 가로채기 | 기밀성, 무결성 | L2-L7 |
| SQL Injection | 데이터 탈취 | 기밀성, 무결성 | L7 |
| XSS | 사용자 공격 | 기밀성 | L7 |
2. 스니핑¶
스니핑 개요¶
스니핑(Sniffing)은 네트워크 트래픽을 가로채어 정보를 수집하는 수동적 공격입니다.
┌─────────────────────────────────────────────────────────────────┐
│ 스니핑 공격 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 정상 통신: │
│ │
│ [클라이언트] ────────────────────────────────▶ [서버] │
│ "사용자: admin, 비밀번호: 1234" │
│ │
│ 스니핑 공격: │
│ │
│ [클라이언트] ────────────────────────────────▶ [서버] │
│ "사용자: admin, 비밀번호: 1234" │
│ │ │
│ │ 도청 │
│ ▼ │
│ [공격자] │
│ "자격 증명 획득!" │
│ │
│ 탈취 가능한 정보: │
│ - 사용자 계정 정보 │
│ - 이메일 내용 │
│ - 금융 정보 │
│ - 세션 토큰 │
│ │
└─────────────────────────────────────────────────────────────────┘
스니핑 유형¶
1. 패시브 스니핑 (허브 환경)¶
┌─────────────────────────────────────────────────────────────────┐
│ 허브 환경 스니핑 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 허브(Hub)는 모든 포트에 패킷을 브로드캐스트 │
│ │
│ ┌────────────────────────────────┐ │
│ │ 허브 │ │
│ │ (모든 포트에 패킷 전송) │ │
│ └─┬──────┬──────┬──────┬────────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌──┐ ┌──┐ ┌──┐ ┌──┐ │
│ │PC│ │PC│ │PC│ │공격자│ │
│ │A │ │B │ │C │ │ D │ │
│ └──┘ └──┘ └──┘ └──┘ │
│ ↑ │
│ 모든 트래픽 │
│ 수신 가능 │
│ │
│ * 현재 허브는 거의 사용되지 않음 │
│ │
└─────────────────────────────────────────────────────────────────┘
2. 액티브 스니핑 (스위치 환경)¶
┌─────────────────────────────────────────────────────────────────┐
│ 스위치 환경 스니핑 기법 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 스위치는 MAC 주소 테이블로 목적지 포트로만 전송 │
│ → 추가 기법이 필요 │
│ │
│ 1. ARP 스푸핑/포이즈닝 │
│ - 가짜 ARP 응답으로 MAC 테이블 조작 │
│ - 트래픽이 공격자를 경유하도록 유도 │
│ │
│ 2. MAC Flooding │
│ - 대량의 가짜 MAC 주소로 스위치 테이블 넘침 │
│ - 스위치가 허브처럼 동작 │
│ │
│ 3. SPAN/Mirror Port │
│ - 스위치의 모니터링 포트 악용 (내부자 위협) │
│ │
│ 4. DHCP 스푸핑 │
│ - 가짜 DHCP 서버로 게이트웨이 조작 │
│ │
└─────────────────────────────────────────────────────────────────┘
ARP 스푸핑 상세¶
┌─────────────────────────────────────────────────────────────────┐
│ ARP 스푸핑 공격 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 정상 상태: │
│ │
│ [피해자 PC] [게이트웨이] │
│ IP: 192.168.1.10 IP: 192.168.1.1 │
│ MAC: AA:AA:AA MAC: BB:BB:BB │
│ │ │ │
│ │◀─────── 정상 통신 ──────▶│ │
│ │
│ ARP 스푸핑 후: │
│ │
│ [피해자 PC] [공격자] [게이트웨이] │
│ 192.168.1.10 192.168.1.100 192.168.1.1 │
│ AA:AA:AA CC:CC:CC BB:BB:BB │
│ │ │ │ │
│ │ │ │ │
│ ARP 테이블: 가짜 ARP 전송: ARP 테이블: │
│ ┌───────────┐ "192.168.1.1의 ┌───────────┐ │
│ │192.168.1.1│ MAC은 CC:CC:CC" │192.168.1.10│ │
│ │→ CC:CC:CC │ "192.168.1.10의 │→ CC:CC:CC │ │
│ └───────────┘ MAC은 CC:CC:CC" └───────────┘ │
│ │ │ │ │
│ │ │ │ │
│ └───────▶ 공격자 ◀────────────────┘ │
│ (중계 및 도청) │
│ │
└─────────────────────────────────────────────────────────────────┘
스니핑 대응 방안¶
| 대응 방법 | 설명 |
|---|---|
| 암호화 사용 | HTTPS, SSH, VPN 등 암호화 통신 |
| 동적 ARP 검사 (DAI) | 스위치에서 ARP 패킷 검증 |
| 정적 ARP 테이블 | 중요 서버의 ARP 항목 고정 |
| 802.1X | 포트 기반 네트워크 접근 제어 |
| 네트워크 분리 | VLAN으로 민감 트래픽 격리 |
| IDS/IPS | 비정상 ARP 트래픽 탐지 |
3. 스푸핑¶
스푸핑 개요¶
스푸핑(Spoofing)은 신원을 위조하여 신뢰를 악용하는 공격입니다.
┌─────────────────────────────────────────────────────────────────┐
│ 스푸핑 유형 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ 스푸핑 공격 │ │
│ ├───────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ IP 스푸핑 │ │
│ │ └─ 출발지 IP 주소 위조 │ │
│ │ │ │
│ │ MAC 스푸핑 │ │
│ │ └─ 출발지 MAC 주소 위조 │ │
│ │ │ │
│ │ ARP 스푸핑 │ │
│ │ └─ ARP 응답 위조로 IP-MAC 매핑 조작 │ │
│ │ │ │
│ │ DNS 스푸핑 │ │
│ │ └─ DNS 응답 위조로 악성 서버로 유도 │ │
│ │ │ │
│ │ 이메일 스푸핑 │ │
│ │ └─ 발신자 주소 위조 │ │
│ │ │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
IP 스푸핑¶
┌─────────────────────────────────────────────────────────────────┐
│ IP 스푸핑 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ [공격자] [서버] │
│ 실제 IP: 10.0.0.100 192.168.1.1 │
│ │ │ │
│ │ 위조된 패킷 │ │
│ │ ┌─────────────────────────┐ │ │
│ │ │ 출발지: 192.168.1.50 │ │ │
│ │ │ (위조, 신뢰 IP) │ │ │
│ │ │ 목적지: 192.168.1.1 │ │ │
│ │ └─────────────────────────┘ │ │
│ │ │ │
│ └───────────────────────────────────────────▶ │
│ │ │
│ 응답은 위조된 IP로 │ │
│ [피해자]◀────────────────────────────────────────┘ │
│ 192.168.1.50 │
│ │
│ 용도: │
│ - DoS 공격 (반사 공격) │
│ - 접근 제어 우회 │
│ - 로깅 회피 │
│ │
│ 한계: │
│ - TCP 연결 수립 어려움 (3-way handshake) │
│ - 응답 수신 불가 │
│ │
└─────────────────────────────────────────────────────────────────┘
DNS 스푸핑¶
┌─────────────────────────────────────────────────────────────────┐
│ DNS 스푸핑 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 정상 DNS 조회: │
│ │
│ [사용자] [DNS 서버] [bank.com] │
│ │ │ IP: 1.2.3.4 │
│ │──"bank.com?"───▶│ │ │
│ │ │──── 조회 ──────────▶│ │
│ │◀─"1.2.3.4"──────│ │ │
│ │ │ │
│ │───────── 정상 접속 ───────────────────▶│ │
│ │
│ DNS 스푸핑 공격: │
│ │
│ [사용자] [공격자] [DNS 서버] [bank.com] [악성 서버] │
│ │ │ │ │ IP:9.9.9.9 │
│ │──"bank.com?"─────────▶│ │ │ │
│ │ │ │ │ │ │
│ │◀─"9.9.9.9"─┘ │ │ │ │
│ │ (가짜 응답) │ │ │ │
│ │ (더 빠르게 응답) │ │
│ │ │ │
│ │───────────────── 악성 서버 접속 ─────────────────▶│ │
│ (피싱 사이트) │
│ │
│ 공격 방법: │
│ 1. ARP 스푸핑 후 DNS 응답 조작 │
│ 2. DNS 캐시 포이즈닝 │
│ 3. 로컬 hosts 파일 변조 │
│ 4. Rogue DNS 서버 (DHCP 스푸핑과 결합) │
│ │
└─────────────────────────────────────────────────────────────────┘
스푸핑 대응 방안¶
| 스푸핑 유형 | 대응 방법 |
|---|---|
| IP 스푸핑 | 인그레스/이그레스 필터링, BCP38 |
| MAC 스푸핑 | 802.1X, 포트 보안 |
| ARP 스푸핑 | DAI, 정적 ARP, ARP 워치 |
| DNS 스푸핑 | DNSSEC, DoH/DoT, DNS 모니터링 |
| 이메일 스푸핑 | SPF, DKIM, DMARC |
4. DoS/DDoS 공격¶
DoS 개요¶
DoS(Denial of Service)는 시스템이나 네트워크 자원을 고갈시켜 정상 서비스를 방해하는 공격입니다.
┌─────────────────────────────────────────────────────────────────┐
│ DoS vs DDoS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ DoS (단일 출처) DDoS (분산 출처) │
│ │
│ [공격자] [공격자] │
│ │ │ │
│ │ ┌──────┼──────┐ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ [대상] [봇] [봇] [봇] [봇] │
│ │ │ │ │
│ └──────┼──────┘ │
│ │ │
│ ▼ │
│ [대상] │
│ │
│ 특징: 특징: │
│ - 단일 IP 차단으로 방어 가능 - 다수의 출처로 차단 어려움 │
│ - 대역폭 한계 - 봇넷 활용 │
│ - 대규모 트래픽 생성 │
│ │
└─────────────────────────────────────────────────────────────────┘
DoS 공격 유형¶
1. TCP SYN Flood¶
┌─────────────────────────────────────────────────────────────────┐
│ TCP SYN Flood │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 정상 TCP 3-way Handshake: │
│ │
│ [클라이언트] [서버] │
│ │ │ │
│ │──── SYN ────────────────────────────▶ │ │
│ │ │ 연결 대기 │
│ │◀─── SYN-ACK ──────────────────────── │ (리소스 할당) │
│ │ │ │
│ │──── ACK ────────────────────────────▶ │ │
│ │ │ 연결 완료 │
│ │
│ SYN Flood 공격: │
│ │
│ [공격자] [서버] │
│ │ │ │
│ │──── SYN (위조 IP) ──────────────────▶ │ │
│ │──── SYN (위조 IP) ──────────────────▶ │ Half-open │
│ │──── SYN (위조 IP) ──────────────────▶ │ 연결 누적 │
│ │──── SYN (위조 IP) ──────────────────▶ │ │
│ : ×1000 │ 리소스 고갈 │
│ │ │
│ ┌─────┴─────┐ │
│ │ 연결 테이블 │ │
│ │ 가득 참 │ │
│ │ │ │
│ │ 정상 연결 │ │
│ │ 불가능 │ │
│ └───────────┘ │
│ │
│ 대응: SYN Cookies, 연결 제한, 방화벽 필터링 │
│ │
└─────────────────────────────────────────────────────────────────┘
2. UDP Flood¶
┌─────────────────────────────────────────────────────────────────┐
│ UDP Flood │
├─────────────────────────────────────────────────────────────────┤
│ │
│ [공격자/봇넷] │
│ │ │
│ │ 대량의 UDP 패킷 │
│ │ (무작위 포트) │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 대상 서버 │ │
│ │ │ │
│ │ UDP 포트 확인 → 서비스 없음 → ICMP 응답 생성 │ │
│ │ │ │
│ │ 반복 처리로 CPU/대역폭 소진 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 특징: │
│ - 비연결형 프로토콜 악용 │
│ - 대역폭 포화 │
│ - 출발지 IP 스푸핑 용이 │
│ │
│ 대응: Rate Limiting, 블랙홀 라우팅, UDP 서비스 최소화 │
│ │
└─────────────────────────────────────────────────────────────────┘
3. Amplification Attack (증폭 공격)¶
┌─────────────────────────────────────────────────────────────────┐
│ 증폭 공격 (DNS, NTP) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ DNS Amplification: │
│ │
│ [공격자] │
│ │ │
│ │ 작은 요청 (60 bytes) │
│ │ 출발지: 피해자 IP (스푸핑) │
│ ▼ │
│ ┌─────────┐ │
│ │ 오픈 │ 큰 응답 (3000 bytes) │
│ │ DNS │──────────────────────────────▶ [피해자] │
│ │ 서버 │ 증폭 비율: 50배 │
│ └─────────┘ │
│ │
│ ┌────────────────────────────────────────────────────────────┐│
│ │ 프로토콜 │ 증폭 비율 │ 사용 포트 ││
│ ├────────────────────────────────────────────────────────────┤│
│ │ DNS │ 28-54x │ UDP 53 ││
│ │ NTP │ 556x │ UDP 123 ││
│ │ SSDP │ 30x │ UDP 1900 ││
│ │ Memcached │ 51,000x │ UDP 11211 ││
│ └────────────────────────────────────────────────────────────┘│
│ │
│ 대응: │
│ - 오픈 리졸버 차단 │
│ - BCP38 (인그레스 필터링) │
│ - Response Rate Limiting (RRL) │
│ │
└─────────────────────────────────────────────────────────────────┘
DDoS 공격 대응¶
┌─────────────────────────────────────────────────────────────────┐
│ DDoS 방어 전략 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 계층별 방어: │
│ │
│ [인터넷] │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 1. CDN/클라우드 기반 보호 │ │
│ │ - Cloudflare, AWS Shield, Akamai │ │
│ │ - 분산 처리, 대역폭 흡수 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 2. ISP 레벨 필터링 │ │
│ │ - 블랙홀 라우팅 │ │
│ │ - 업스트림 필터링 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 3. 온프레미스 장비 │ │
│ │ - DDoS 방어 장비 │ │
│ │ - 방화벽/IPS │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 4. 애플리케이션 레벨 │ │
│ │ - Rate Limiting │ │
│ │ - CAPTCHA │ │
│ │ - WAF │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
5. MITM 공격¶
MITM 개요¶
MITM(Man-in-the-Middle)은 두 당사자 간의 통신을 가로채어 도청하거나 변조하는 공격입니다.
┌─────────────────────────────────────────────────────────────────┐
│ MITM 공격 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 정상 통신: │
│ │
│ [클라이언트] ◀═══════════════════════════════▶ [서버] │
│ 직접 통신 │
│ │
│ MITM 공격: │
│ │
│ [클라이언트] [공격자] [서버] │
│ │ │ │ │
│ │════════════════│════════════════│ │
│ │ 가짜 연결 │ 가짜 연결 │ │
│ │ │ │ │
│ │──"계좌이체"───▶│ │ │
│ │ │──"계좌이체"───▶│ │
│ │ │(내용 변조 가능) │ │
│ │ │ │ │
│ │ │◀──"완료"──────│ │
│ │◀──"완료"──────│ │ │
│ │
│ 공격자 능력: │
│ - 모든 통신 내용 도청 │
│ - 데이터 변조 │
│ - 세션 하이재킹 │
│ │
└─────────────────────────────────────────────────────────────────┘
MITM 공격 기법¶
1. SSL Stripping¶
┌─────────────────────────────────────────────────────────────────┐
│ SSL Stripping │
├─────────────────────────────────────────────────────────────────┤
│ │
│ HTTPS 연결을 HTTP로 다운그레이드 │
│ │
│ [클라이언트] [공격자] [서버] │
│ │ │ │ │
│ │──HTTP 요청───▶│ │ │
│ │ │══HTTPS═══════▶│ │
│ │ │ │ │
│ │◀──HTTP 응답───│◀══HTTPS════════│ │
│ │ (평문) │ (암호화) │ │
│ │ │ │ │
│ │ 암호화 없이 │ 양쪽 연결 유지 │ │
│ │ 통신 │ 중계 및 도청 │ │
│ │
│ 대응: │
│ - HSTS (HTTP Strict Transport Security) │
│ - HTTPS Everywhere │
│ - 주소창의 자물쇠 확인 │
│ │
└─────────────────────────────────────────────────────────────────┘
2. Wi-Fi MITM (Evil Twin)¶
┌─────────────────────────────────────────────────────────────────┐
│ Evil Twin 공격 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ [정상 AP] [Evil Twin] [피해자] │
│ SSID: CafeWiFi SSID: CafeWiFi 스마트폰 │
│ 신호: 약함 신호: 강함 │ │
│ │ │ │ │
│ │ │◀══════════════════│ │
│ │ │ 강한 신호에 연결 │ │
│ │ │ │ │
│ │ ┌──────────┼──────────┐ │ │
│ │ │ 공격자 노트북 │ │ │
│ │ │ - 패킷 캡처 │ │ │
│ │ │ - DNS 스푸핑 │ │ │
│ │ │ - 피싱 페이지 │ │ │
│ │ └──────────┼──────────┘ │ │
│ │ │ │ │
│ │◀═════════════════════│ │ │
│ 인터넷 연결 │
│ │
│ 대응: │
│ - VPN 사용 │
│ - 공개 Wi-Fi 주의 │
│ - 802.1X 인증 │
│ │
└─────────────────────────────────────────────────────────────────┘
MITM 대응 방안¶
| 대응 방법 | 설명 |
|---|---|
| TLS/SSL 사용 | 종단간 암호화로 도청 방지 |
| 인증서 검증 | 서버 인증서 유효성 확인 |
| HSTS | HTTPS 강제 사용 |
| Certificate Pinning | 특정 인증서만 허용 |
| VPN | 공개 네트워크에서 터널 사용 |
| 2FA | 자격 증명 도용 방지 |
6. 웹 보안 위협¶
SQL Injection¶
┌─────────────────────────────────────────────────────────────────┐
│ SQL Injection │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 취약한 코드 예시: │
│ │
│ query = "SELECT * FROM users WHERE id = '" + user_input + "'" │
│ │
│ 정상 입력: │
│ user_input = "123" │
│ query = "SELECT * FROM users WHERE id = '123'" │
│ │
│ 악의적 입력: │
│ user_input = "' OR '1'='1" │
│ query = "SELECT * FROM users WHERE id = '' OR '1'='1'" │
│ → 모든 사용자 정보 노출 │
│ │
│ 더 위험한 공격: │
│ user_input = "'; DROP TABLE users;--" │
│ query = "SELECT * FROM users WHERE id = ''; DROP TABLE users;--"
│ → 테이블 삭제 │
│ │
│ ┌────────────────────────────────────────────────────────────┐│
│ │ 공격 유형 ││
│ ├────────────────────────────────────────────────────────────┤│
│ │ In-band SQLi : 결과가 직접 화면에 표시 ││
│ │ Blind SQLi : 참/거짓 응답으로 정보 추출 ││
│ │ Out-of-band SQLi: 다른 채널로 결과 전송 ││
│ └────────────────────────────────────────────────────────────┘│
│ │
│ 대응: │
│ - Prepared Statement (매개변수화된 쿼리) 사용 │
│ - 입력 검증 및 이스케이프 │
│ - 최소 권한 DB 계정 │
│ - WAF 사용 │
│ │
└─────────────────────────────────────────────────────────────────┘
안전한 코드 예시¶
# 취약한 코드 (Python)
cursor.execute("SELECT * FROM users WHERE id = '%s'" % user_id)
# 안전한 코드 (Prepared Statement)
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))
// 취약한 코드 (Java)
String query = "SELECT * FROM users WHERE id = '" + userId + "'";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
// 안전한 코드 (PreparedStatement)
String query = "SELECT * FROM users WHERE id = ?";
PreparedStatement pstmt = conn.prepareStatement(query);
pstmt.setString(1, userId);
ResultSet rs = pstmt.executeQuery();
XSS (Cross-Site Scripting)¶
┌─────────────────────────────────────────────────────────────────┐
│ XSS 공격 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Stored XSS (저장형) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 1. [공격자] ──악성 스크립트 게시──▶ [웹 서버 DB] │ │
│ │ 게시글: <script>악성코드</script> │ │
│ │ │ │
│ │ 2. [피해자] ──페이지 요청──▶ [웹 서버] │ │
│ │ │ │
│ │ 3. [피해자] ◀──악성 스크립트 포함 응답── │ │
│ │ 브라우저에서 스크립트 실행 │ │
│ │ → 쿠키 탈취, 세션 하이재킹 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Reflected XSS (반사형) │ │
│ ├─────────────────────────────────────────────────────────┤ │
│ │ │ │
│ │ 공격 URL: │ │
│ │ http://example.com/search?q=<script>악성코드</script> │ │
│ │ │ │
│ │ 1. [공격자] ──악성 URL 전송──▶ [피해자] │ │
│ │ 2. [피해자] ──URL 클릭──▶ [웹 서버] │ │
│ │ 3. [웹 서버] ──검색어 그대로 반환──▶ [피해자] │ │
│ │ 브라우저에서 스크립트 실행 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 대응: │
│ - 출력 인코딩 (HTML Entity) │
│ - 입력 검증 │
│ - CSP (Content Security Policy) │
│ - HttpOnly 쿠키 │
│ │
└─────────────────────────────────────────────────────────────────┘
CSRF (Cross-Site Request Forgery)¶
┌─────────────────────────────────────────────────────────────────┐
│ CSRF 공격 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 사용자가 로그인된 상태를 악용하여 원치 않는 요청 실행 │
│ │
│ [피해자] [악성 사이트] [은행] │
│ (은행 로그인 상태) │ bank.com │
│ │ │ │ │
│ │──악성 페이지 방문──▶│ │ │
│ │ │ │ │
│ │ 숨겨진 요청 발생: │ │
│ │ <img src="http://bank.com/transfer?to=attacker& │
│ │ amount=10000"> │ │
│ │ │ │ │
│ │──────────────────────────────────────▶│ │
│ │ 세션 쿠키 포함된 요청 │ │
│ │ (은행은 정상 요청으로 인식) │ │
│ │ │ │ │
│ │ │ ┌──────────┴───────────┐ │
│ │ │ │ 공격자 계좌로 송금 │ │
│ │ │ │ 완료 │ │
│ │ │ └──────────────────────┘ │
│ │
│ 대응: │
│ - CSRF 토큰 │
│ - SameSite 쿠키 │
│ - Referer 검증 │
│ - 중요 작업에 재인증 │
│ │
└─────────────────────────────────────────────────────────────────┘
7. 침입 탐지 시스템¶
IDS/IPS 개요¶
┌─────────────────────────────────────────────────────────────────┐
│ IDS vs IPS │
├─────────────────────────────────────────────────────────────────┤
│ │
│ IDS (Intrusion Detection System) - 탐지 │
│ ───────────────────────────────────── │
│ │
│ [인터넷] ──────────────▶ [방화벽] ──────────────▶ [내부망] │
│ │ │
│ │ 미러링 │
│ ▼ │
│ [IDS] │
│ 탐지 및 경고 │
│ │
│ IPS (Intrusion Prevention System) - 탐지 + 차단 │
│ ─────────────────────────────────────────── │
│ │
│ [인터넷] ────▶ [방화벽] ────▶ [IPS] ────▶ [내부망] │
│ │ │
│ 인라인 배치 │
│ 탐지 및 차단 │
│ │
└─────────────────────────────────────────────────────────────────┘
IDS 유형¶
| 유형 | 설명 | 장점 | 단점 |
|---|---|---|---|
| NIDS | 네트워크 트래픽 분석 | 전체 트래픽 모니터링 | 암호화 트래픽 분석 어려움 |
| HIDS | 호스트 활동 분석 | 상세한 분석 가능 | 호스트별 설치 필요 |
| 시그니처 기반 | 알려진 패턴 매칭 | 알려진 공격 정확 탐지 | 제로데이 탐지 불가 |
| 이상 탐지 | 정상 패턴 벗어나면 탐지 | 새로운 공격 탐지 가능 | 오탐(False Positive) 높음 |
IDS/IPS 시그니처 예시 (Snort)¶
┌─────────────────────────────────────────────────────────────────┐
│ Snort 규칙 예시 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ # SQL Injection 탐지 │
│ alert tcp any any -> any 80 ( │
│ msg:"SQL Injection Attempt"; │
│ content:"SELECT"; nocase; │
│ content:"FROM"; nocase; │
│ content:"WHERE"; nocase; │
│ sid:1000001; │
│ ) │
│ │
│ # XSS 공격 탐지 │
│ alert tcp any any -> any 80 ( │
│ msg:"XSS Attack Attempt"; │
│ content:"<script>"; nocase; │
│ sid:1000002; │
│ ) │
│ │
│ # 포트 스캔 탐지 │
│ alert tcp any any -> any any ( │
│ msg:"Possible Port Scan"; │
│ flags:S; │
│ threshold:type threshold, track by_src, count 5, seconds 60; │
│ sid:1000003; │
│ ) │
│ │
│ 규칙 구조: │
│ [동작] [프로토콜] [출발지] [포트] -> [목적지] [포트] (옵션) │
│ │
└─────────────────────────────────────────────────────────────────┘
SIEM (Security Information and Event Management)¶
┌─────────────────────────────────────────────────────────────────┐
│ SIEM 시스템 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 로그 수집 │ │
│ │ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │ │
│ │ │방화벽│ │IDS │ │서버│ │ DB │ │ 앱 │ │ AD │ │ │
│ │ └──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ └──┬──┘ │ │
│ │ └───────┴───────┴───────┴───────┴───────┘ │ │
│ └─────────────────────────────┬───────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ SIEM 엔진 │ │
│ │ ┌───────────────────────────────────────────────────┐ │ │
│ │ │ 정규화 → 상관분석 → 이상탐지 → 알림/대시보드 │ │ │
│ │ └───────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 보안 대응 │ │
│ │ - 실시간 알림 │ │
│ │ - 사고 조사 │ │
│ │ - 규정 준수 보고서 │ │
│ │ - 포렌식 분석 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ 주요 SIEM 제품: │
│ - Splunk │
│ - IBM QRadar │
│ - Elastic SIEM │
│ - Microsoft Sentinel │
│ │
└─────────────────────────────────────────────────────────────────┘
8. 보안 대응 방안¶
보안 운영 체계¶
┌─────────────────────────────────────────────────────────────────┐
│ 보안 운영 사이클 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ │
│ │ 식별 │ │
│ │ (Identify) │ │
│ └──────┬──────┘ │
│ │ │
│ ┌─────────────────┼─────────────────┐ │
│ │ │ │ │
│ ▼ │ ▼ │
│ ┌─────────────┐ │ ┌─────────────┐ │
│ │ 보호 │ │ │ 복구 │ │
│ │ (Protect) │ │ │ (Recover) │ │
│ └──────┬──────┘ │ └──────┬──────┘ │
│ │ │ │ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 탐지 │ │ 분석 │ │ 대응 │ │
│ │ (Detect) │──▶│ (Analyze) │──▶│ (Respond) │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ NIST Cybersecurity Framework 기반 │
│ │
└─────────────────────────────────────────────────────────────────┘
예방 (Prevention)¶
| 영역 | 대응 방법 |
|---|---|
| 네트워크 | 방화벽, VLAN, 네트워크 분리 |
| 시스템 | 패치 관리, 보안 설정, 최소 권한 |
| 애플리케이션 | 시큐어 코딩, 입력 검증, WAF |
| 사용자 | 보안 교육, 피싱 훈련, MFA |
탐지 (Detection)¶
┌─────────────────────────────────────────────────────────────────┐
│ 탐지 체계 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 네트워크 모니터링 │ │
│ │ - IDS/IPS │ │
│ │ - 네트워크 트래픽 분석 (NTA) │ │
│ │ - NetFlow 분석 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 엔드포인트 모니터링 │ │
│ │ - EDR (Endpoint Detection and Response) │ │
│ │ - 안티바이러스 │ │
│ │ - 호스트 기반 IDS (HIDS) │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 로그 분석 │ │
│ │ - SIEM │ │
│ │ - 중앙 집중식 로그 관리 │ │
│ │ - 이상 탐지 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ 위협 인텔리전스 │ │
│ │ - IOC (Indicators of Compromise) │ │
│ │ - 위협 피드 │ │
│ │ - 취약점 정보 │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
대응 (Response)¶
┌─────────────────────────────────────────────────────────────────┐
│ 사고 대응 절차 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. 준비 (Preparation) │
│ └─ 대응 계획 수립, 팀 구성, 도구 준비 │
│ │
│ 2. 식별 (Identification) │
│ └─ 사고 감지, 범위 파악, 심각도 평가 │
│ │
│ 3. 봉쇄 (Containment) │
│ └─ 단기: 즉각 격리 │
│ └─ 장기: 임시 수정 적용 │
│ │
│ 4. 제거 (Eradication) │
│ └─ 악성코드 제거, 취약점 패치 │
│ │
│ 5. 복구 (Recovery) │
│ └─ 시스템 복원, 정상 운영 재개 │
│ │
│ 6. 교훈 (Lessons Learned) │
│ └─ 사후 분석, 개선 사항 도출 │
│ │
└─────────────────────────────────────────────────────────────────┘
보안 체크리스트¶
┌─────────────────────────────────────────────────────────────────┐
│ 기본 보안 체크리스트 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 네트워크 보안 │
│ ☐ 방화벽 규칙 검토 및 최소화 │
│ ☐ 네트워크 세분화 (VLAN) │
│ ☐ 불필요한 포트/서비스 차단 │
│ ☐ VPN 암호화 통신 │
│ ☐ IDS/IPS 운영 │
│ │
│ 시스템 보안 │
│ ☐ 정기적인 보안 패치 적용 │
│ ☐ 불필요한 서비스 비활성화 │
│ ☐ 강력한 비밀번호 정책 │
│ ☐ SSH 키 기반 인증 │
│ ☐ 로그 수집 및 모니터링 │
│ │
│ 애플리케이션 보안 │
│ ☐ 입력값 검증 │
│ ☐ Prepared Statement 사용 │
│ ☐ 출력 인코딩 │
│ ☐ HTTPS 적용 │
│ ☐ 보안 헤더 설정 │
│ │
│ 데이터 보안 │
│ ☐ 중요 데이터 암호화 │
│ ☐ 정기적인 백업 │
│ ☐ 접근 권한 최소화 │
│ ☐ 로그 보관 │
│ │
└─────────────────────────────────────────────────────────────────┘
9. 연습 문제¶
기초 문제¶
- 스니핑/스푸핑
- 스니핑과 스푸핑의 차이를 설명하세요.
-
ARP 스푸핑의 동작 원리를 설명하세요.
-
DoS/DDoS
- DoS와 DDoS의 차이는?
-
SYN Flood 공격의 원리와 대응 방법을 설명하세요.
-
웹 보안
- SQL Injection을 방지하는 가장 효과적인 방법은?
- Stored XSS와 Reflected XSS의 차이는?
중급 문제¶
- MITM
- SSL Stripping 공격을 설명하세요.
-
HSTS가 이 공격을 방지하는 원리는?
-
IDS/IPS
- 시그니처 기반과 이상 탐지의 장단점을 비교하세요.
-
IDS와 IPS의 배치 위치가 다른 이유는?
-
시나리오 분석 다음 상황에서 발생할 수 있는 공격과 대응 방안을 제시하세요: ```
- 회사 네트워크에서 ARP 테이블이 비정상적으로 변경됨
- 웹 서버 접속 시 브라우저에 자물쇠가 없음
- 데이터베이스에서 대량의 SELECT 쿼리가 실행됨 ```
고급 문제¶
- 종합 보안
-
다음 아키텍처의 보안 취약점을 식별하세요:
인터넷 ─── 웹 서버 ─── DB 서버 (같은 네트워크) -
사고 대응
- 랜섬웨어 감염 시 대응 절차를 순서대로 나열하세요.
10. 다음 단계¶
17_Practical_Network_Tools.md에서 ping, traceroute, Wireshark 등 실무 네트워크 도구 사용법을 배워봅시다!
11. 참고 자료¶
보안 프레임워크¶
도구¶
- Snort/Suricata - 오픈소스 IDS/IPS
- Wireshark - 패킷 분석
- Burp Suite - 웹 보안 테스트
- Nmap - 네트워크 스캐닝