네트워크 보안 - IP 단편화 · 패킷 스니핑 · Wireshark 완전 정리
Phase 2 | Network Security
IP 단편화 · 패킷 스니핑 · Wireshark 완전 정리
Fragmentation 구조 · 스니핑 환경 구성 · SPAN/TAP · Wireshark 필터 실무 패턴까지
01
IP Fragmentation (IP 단편화)
전송할 데이터가 네트워크 경로의 MTU(Maximum Transmission Unit)를 초과하면 IP 계층에서 패킷을 여러 조각으로 분할해 전송한다. 재조립은 반드시 수신 측 종단에서만 수행된다.
단편화 조건 및 핵심 필드
| 필드 | 역할 | 값 해석 |
|---|---|---|
| Identification (ID) | 같은 원본 패킷 조각임을 식별 | 동일 ID = 같은 데이터그램 |
| MF (More Fragments) | 뒤에 조각이 더 있는지 표시 | MF=1 : 더 있음 / MF=0 : 마지막 |
| Fragment Offset | 원본 데이터 내 이 조각의 위치 | 8 bytes 단위 (×8 = 실제 바이트 위치) |
| DF (Don't Fragment) | 단편화 금지 플래그 | DF=1이면 MTU 초과 시 패킷 폐기 + ICMP 반환 |
UDP vs TCP 단편화 주체
UDP — IP가 단편화
- UDP는 자체 분할 기능 없음
- 4000 bytes 전송 시 IP에서 MTU 기준 분할
- IP Header(20B) + UDP Header(8B) + Data
- 재조립 실패 시 전체 데이터 손실
TCP — TCP가 먼저 분할 (MSS)
- TCP가 MSS 기준으로 먼저 Segment 분할
- MSS 올바르면 IP 단편화 불필요
- MSS 협상 실패 시 IP 단편화 발생
- SN 기반 순서 보장 → 재조립 신뢰성 있음
4000 bytes 전송 시 단편화 예시 (MTU=1500)
# UDP 4000 bytes → IP 단편화 (MTU=1500)
Packet 1 : IP(20) + UDP(8) + Data[0~1471] MF=1, Offset=0
Packet 2 : IP(20) + Data[1472~2959] MF=1, Offset=185 (1480/8)
Packet 3 : IP(20) + Data[2960~3999] MF=0, Offset=370 (마지막)
# TCP 4000 bytes → MSS 기반 Segment 분할 (MSS=1460)
Segment 1 : SN=1, Data[0~1459] (1460 bytes)
Segment 2 : SN=1461, Data[1460~2919] (1460 bytes)
Segment 3 : SN=2921, Data[2920~3999] (1080 bytes) 마지막
| 구분 | UDP | TCP |
|---|---|---|
| 분할 주체 | IP 계층 | TCP 계층 → (필요 시) IP |
| 분할 기준 | MTU | MSS |
| 신뢰성 | 없음 (조각 유실 = 전체 손실) | 있음 (재전송 보장) |
| 재조립 위치 | 수신 종단 | 수신 종단 (TCP 레벨) |
02
단편화 기반 보안 공격 및 탐지
Teardrop Attack
- Fragment Offset 값을 의도적으로 중첩되게 조작
- 재조립 과정에서 버퍼 오버플로우 또는 커널 크래시 유발
- 구형 OS(Windows 95, NT) 대상 구현 존재
- 대응: OS 패치, 단편화 재조립 검증 로직
IDS/IPS 우회 — Fragmentation
- 공격 페이로드를 작은 조각으로 분산 전송
- IDS가 개별 조각만 검사 시 탐지 불가
- 재조립 후 검사(Full Reassembly) 필수
- 대응: Stateful 패킷 검사, 재조립 기반 IDS
단편화 분석 포인트
- Fragment ID 동일 여부 — 같은 ID면 같은 원본 패킷 조각. 비정상적으로 다수의 ID 조합은 공격 의심
- Offset 값 증가 패턴 — 순차 증가가 정상. 중첩(Overlap)이면 Teardrop 의심
- MF 비트 확인 — 마지막 조각(MF=0) 이후에도 같은 ID 패킷 수신되면 이상
- 재조립 실패 여부 — 타임아웃 내 모든 조각 미수신 시 전체 폐기, ICMP Time Exceeded 발생
03
패킷 스니핑 환경 구성
스니핑의 핵심은 "트래픽을 볼 수 있는 위치 확보"다. 아무리 좋은 도구도 트래픽이 지나가지 않는 위치에서는 무용지물이다.
스니핑 기본 구성 요소
| 구성 요소 | 역할 | 비고 |
|---|---|---|
| NIC (Promiscuous Mode) | 자기 MAC이 아닌 패킷도 수신 | 드라이버 수준 지원 필요 |
| pcap 라이브러리 | OS 커널에서 패킷 캡처 | Linux: libpcap / Windows: Npcap |
| 캡처 도구 | 패킷 시각화 및 저장 | Wireshark, tcpdump, tshark |
| 트래픽 복제 장치 | 스위치 환경에서 미러 트래픽 생성 | SPAN Port, Network TAP |
스위치 환경의 한계 | 스위치는 MAC Table 기반으로 목적지 포트에만 프레임을 전달한다. 따라서 일반 PC를 스위치에 연결해도 자기 트래픽만 수신 가능. 타인 트래픽 캡처를 위해서는 반드시 미러링 구조가 필요하다.
04
스위치 환경 스니핑 방법 비교
| 방법 | 원리 | 장점 | 단점 / 한계 |
|---|---|---|---|
| Port Mirroring (SPAN) |
스위치가 특정 포트 트래픽을 다른 포트로 복제 | 구성 간단, 추가 비용 없음, 가장 범용적 | 고속 트래픽에서 패킷 유실 가능, CPU 부하 |
| Network TAP | 링크에 물리적으로 삽입, 트래픽 무손실 복제 | 패킷 손실 최소, 네트워크 영향 없음 | 물리적 설치 필요, 장비 비용 발생 |
| Aggregated TAP | 여러 링크를 하나의 포트로 집계 | 고성능, 데이터센터 IDS/IPS 연동 최적 | 집계 과정에서 대역폭 초과 시 유실 가능 |
| Hubbing Out | 스위치 대신 허브 사용 → 전체 브로드캐스트 | 모든 트래픽 수집 가능 | 성능 저하, 보안 취약, 현재 거의 미사용 |
| ARP Spoofing | ARP Cache 오염으로 트래픽 자신 경유 | 추가 장비 불필요 | 공격적 기법, 보안 테스트 목적 한정 |
SPAN 종류
Local SPAN
- 같은 스위치 내 포트 간 미러링
- 가장 기본적인 구성
- 실무 가장 많이 사용
RSPAN
- Remote SPAN
- 다른 스위치로 미러 트래픽 전달
- VLAN을 통해 원격 전송
ERSPAN
- Encapsulated RSPAN
- GRE 터널로 L3 네트워크 경유
- 원격 데이터센터 분석 가능
05
트래픽 수집 위치 전략
"어디서 캡처하느냐"가 분석 결과를 결정한다. 목적에 맞는 위치를 선택해야 의미 있는 패킷을 수집할 수 있다.
Endpoint
특정 호스트의 송수신 트래픽 분석. 악성코드 감염 단말 포렌식
Access Switch
사용자 그룹 단위 트래픽. 내부 사용자 행위 분석
Core Switch
전체 네트워크 트래픽. 대규모 이상 탐지
Firewall 외부
인터넷에서 들어오는 원본 공격 트래픽. 필터링 전 데이터
Firewall 내부
방화벽 통과 후 내부 진입 트래픽. 차단 규칙 유효성 검증
실무 핵심 | 침해사고 분석 시 Firewall 앞/뒤 패킷을 반드시 비교해야 한다. 앞에서 보이던 공격 트래픽이 뒤에도 있다면 방화벽 정책 미적용 또는 우회 성공을 의미한다.
06
Wireshark — 필터 종류 및 사용법
Capture Filter
- 캡처 시작 전 적용
- 지정 조건 외 패킷은 저장 자체 안 됨
- BPF(Berkeley Packet Filter) 문법
- 목적: 성능 최적화, 저장 공간 절약
- 예:
host 192.168.0.1
Display Filter
- 캡처된 패킷을 필터링해 표시
- 원본 캡처 파일은 유지됨
- Wireshark 전용 문법
- 목적: 분석 편의성, 조건 변경 자유로움
- 예:
ip.addr == 192.168.0.1
Display Filter 실무 필수 패턴
IP 주소 필터
ip.addr == 192.168.0.1 # 송수신 모두 포함
ip.src == 192.168.0.1 # 출발지만
ip.dst == 192.168.0.2 # 목적지만
포트 / 프로토콜 필터
tcp.port == 80 # TCP 80 포트
udp.port == 53 # DNS (UDP 53)
http # HTTP 프로토콜 전체
dns # DNS 프로토콜 전체
icmp # ICMP 전체
논리 연산자 조합
ip.addr == 192.168.0.1 && tcp.port == 80 # AND
http || dns # OR
!arp # NOT (ARP 제외)
특정 세션 추적
ip.addr == 10.0.0.1 && ip.addr == 10.0.0.2 # 두 호스트 간 세션
보안 분석 — 공격 탐지 패턴
# SYN Flood 탐지 (ACK 없는 SYN만 필터)
tcp.flags.syn == 1 && tcp.flags.ack == 0
# RST 대량 발생 (포트 스캔 결과)
tcp.flags.reset == 1
# 비정상 단편화 패킷
ip.flags.mf == 1
# DNS 응답 크기 이상 (DNS Amplification 의심)
dns && frame.len > 512
# ICMP Flood
icmp.type == 8 # Echo Request만 필터
분석 팁 | Statistics → Conversations로 IP/TCP 세션 목록 확인, Follow TCP Stream으로 세션 내용 재구성, Export Objects → HTTP로 전송된 파일 추출 가능. 공격 패킷 발견 시 Export Specified Packets로 증거 보존 필수.
07
보안 관점 핵심 정리
- Teardrop Attack : Fragment Offset 중첩 조작 → 재조립 과정 커널 크래시. 대응: OS 패치, 단편화 검증 로직
- IDS 우회 (Fragmentation) : 공격 페이로드를 조각으로 분산. 대응: Full Reassembly 기반 IDS/IPS
- OS Fingerprinting via TTL : 수신 TTL로 OS 종류 추정. 대응: TTL 표준화
- ARP Spoofing 스니핑 : Cache 오염으로 트래픽 자신 경유. 대응: 정적 ARP, DAI
- 스위치 환경 스니핑 방어 : SPAN 포트 접근 권한 제한, 불필요한 미러링 포트 비활성화
- Wireshark 증거 수집 : pcapng 형식으로 저장, SHA256 해시 기록 → 포렌식 무결성 확보
'보안 공부' 카테고리의 다른 글
| 네트워크 보안 - Spoofing · Sniffing · DoS/DDoS · 네트워크 구조 완전 정리 (0) | 2026.05.29 |
|---|---|
| 네트워크 보안 - Port Scan · Nmap 완전 정리 (0) | 2026.05.29 |
| 네트워크 보안 - TCP 심화 · IP Header · ICMP 완전 정리 (0) | 2026.05.29 |
| 네트워크 보안 - OSI 모델 · TCP/IP · 프로토콜 완전 정리 (0) | 2026.05.29 |
| 네트워크 보안 - 네트워크 기초 완전 정리 (0) | 2026.05.29 |