933. 패킷 단편화 오프셋 중첩 공격 (Teardrop / Fragment Overlap) 탐지
⚠️ 이 문서는 해커가 침입 탐지 시스템(IDS)이나 방화벽의 시그니처 매칭 검사를 속이거나 시스템을 마비시키기 위해, 네트워크 패킷을 잘게 쪼개면서(단편화) 고의로 순서(Offset)를 꼬아버리거나 겹치게 조작하는 교묘한 공격을 어떻게 검증하고 파싱하여 잡아내는지를 다룹니다.
핵심 인사이트 (3줄 요약)
- 본질: 해커는 악성코드("MALWARE")가 담긴 패킷을 IDS가 한눈에 읽지 못하게 잘게 쪼갠 뒤(Fragment), 쪼개진 조각들의 **결합 순서표(Offset)를 교묘하게 겹치게 조작(Overlap)**하여 방화벽을 우회하거나 OS 커널을 다운시키는 공격을 시도한다. (대표적: Teardrop 공격)
- 가치: IDS/IPS나 방화벽의 검증 모니터는 단순히 흘러가는 패킷을 하나하나 보는 것(Stateless)을 넘어, 쪼개진 패킷 조각들을 메모리에 모아 원래의 거대한 조각으로 재조립(Reassembly)하는 복잡한 파싱(Parsing) 및 정규표현식 매칭 능력을 갖춰야 방어가 가능하다.
- 기술 체계: 이를 막기 위해 현대의 보안 장비는 패킷의 IP 헤더에 있는 Fragment Offset 값의 수학적 연속성을 철저히 계산하고, 오프셋이 뒤로 후진하거나 겹치면 즉시 '비정상 패턴(Anomaly)'으로 간주하여 폐기(Drop)한다.
Ⅰ. 개요: 찢어진 퍼즐의 속임수 (Context & Necessity)
인터넷(IP망)은 도로(MTU, 보통 1500바이트)보다 큰 트럭(데이터)이 지나갈 수 없어서 데이터를 여러 조각으로 쪼갠다. 이것이 **IP 단편화(Fragmentation)**다. 각 조각에는 번호표(Fragment Offset)가 붙어 있어서 목적지 OS가 번호표를 보고 다시 하나의 데이터로 조립한다.
- 조각 1: 0번부터 100번까지 데이터
- 조각 2: 101번부터 200번까지 데이터
[해커의 속임수 1: 방화벽 우회 (IDS Evasion)]
해커가 악성코드 "ATTACK"을 보낼 때, 방화벽 시그니처 룰에 "ATTACK"이 등록되어 있으면 걸린다.
그래서 해커는 조각1에 "AT", 조각2에 "TA", 조각3에 "CK"를 담아 쪼개 보낸다. 멍청한 방화벽은 각 조각을 따로따로 검사하므로 "ATTACK"이라는 단어를 발견하지 못하고 무사통과시킨다.
[해커의 속임수 2: OS 파괴 (Teardrop Attack / Overlap)] 더 악질적인 것은 오프셋(번호표)을 고의로 겹치게 조작하는 것이다.
- 조각 1: 0번부터 100번까지
- 조각 2: 50번부터 150번까지 (겹침!) 목적지 서버의 OS(구버전 윈도우 등)는 조립 과정에서 "어? 이미 50번부터 100번까지 자리가 찼는데 또 들어오네?" 하며 메모리 계산에 랙이 걸리고 결국 **블루스크린(버그)을 띄우며 다운(DDoS 효과)**된다.
📢 섹션 요약 비유: 해커가 조립식 폭탄을 부품별로 우편으로 보냅니다. 우체국(방화벽) 엑스레이 검사대는 부품 하나하나는 폭탄이 아닌 것 같아서 그냥 통과시킵니다. 심지어 해커는 설명서 2페이지 내용 위에 3페이지 내용을 겹쳐서 풀칠을 해두어, 폭탄 조립자가 설명서를 읽다가 미쳐버리게(서버 다운) 만듭니다.
Ⅱ. 방화벽/IDS의 모니터링 검증 룰 메커니즘
이 교묘한 퍼즐 조작을 막기 위해 현대의 보안 시스템(Snort, Suricata, 차세대 방화벽)은 강력한 검증 엔진을 돌린다.
1. 패킷 재조립 엔진 (Reassembly / De-fragmentation)
- IDS는 쪼개진 패킷을 지나가는 대로 검사하지 않는다 (Stateless 방식 폐기).
- 메모리 버퍼에 쪼개진 조각들을 모두 모아두고, 자신이 직접 OS처럼 퍼즐을 완벽한 원본 1장으로 조립해 본다 (Stateful / Stream Reassembly).
- 조립이 끝난 거대한 덩어리 데이터를 대상으로 정규표현식 패턴 매치(Signature Matching)를 돌려서, 쪼개져 숨어있던
"ATTACK"문자를 정확히 적발해 낸다.
2. 오프셋 중첩(Overlap) 검증 룰
- 조립 과정에서 IP 헤더의 수학적 정합성을 깐깐하게 검증한다.
[이전 조각의 오프셋 + 이전 조각의 길이]값이[다음 조각의 시작 오프셋]과 정확히 일치해야 한다.- 만약 값이 후진하거나 겹친다면(Overlap), "어? 퍼즐 조각이 이상하게 겹치네? 티어드롭 공격이다!" 하고 즉시 조립을 중단하고 패킷을 전부 쓰레기통에 버린다 (Drop).
┌───────────────────────────────────────────────────────────────────────────────────┐
│ 패킷 단편화 오프셋 중첩(Overlap) 공격 및 IDS 방어 시각화 │
├───────────────────────────────────────────────────────────────────────────────────┤
│ │
│ 💣 [ 해커의 Teardrop 조작 패킷 발송 ] │
│ 조각 1: 데이터 0 ~ 100 │
│ 조각 2: 데이터 50 ~ 150 (← 고의로 앞부분 50을 겹치게 만듦) │
│ │
│ 🛡️ [ 방화벽 / IDS의 모니터 검증 엔진 동작 ] │
│ │
│ 1단계 파싱: 패킷 헤더 추출 "조각 1의 끝은 100번이군." │
│ 2단계 비교: "조각 2의 시작은 무조건 101번이어야 해." │
│ 3단계 검증: "어? 조각 2가 50번부터 시작해? 이건 100% 공격 패턴이다!" │
│ │
│ 🚨 [ 비정상 시그니처 룰 매칭 ] ──▶ 즉시 경고 알람 & 패킷 폐기 (Drop) │
│ │
│ * 결과: 서버 OS로 악성 퍼즐이 넘어가지 않아 시스템 마비(블루스크린) 방어 성공. │
└───────────────────────────────────────────────────────────────────────────────────┘
Ⅲ. PCAP 기반 망 분석 및 페이로드 파싱 지표
보안 분석가는 PCAP(Packet Capture) 파일을 Wireshark 같은 도구로 까서 네트워크에 무슨 짓을 했는지 사후 분석을 진행한다.
- PCAP 망 추출의 핵심 지표:
- IP 헤더의
MF(More Fragments) 플래그: 1이면 아직 뒤에 조각이 더 남았다는 뜻이다. 해커가MF=1인데 뒤에 조각을 안 보내서 서버 메모리를 말라 죽게 하는 공격(Fragment 버퍼 오버플로우)도 찾을 수 있다. Fragment Offset필드 값: 이 값들을 엑셀로 뽑아서 수직으로 나열해 보면 중첩 여부를 한눈에 찾을 수 있다.
- IP 헤더의
- 페이로드 정규표현식 탐지 (Regex Matching):
- 조립된 페이로드(Payload, 실제 데이터) 덩어리를 대상으로 PCRE(Perl Compatible Regular Expressions) 같은 빠르고 강력한 정규표현식 엔진을 돌려, 쪼개진 틈새에 숨겨둔 쉘코드(Shellcode)나 SQL 인젝션 구문(
1=1등)을 잡아낸다.
- 조립된 페이로드(Payload, 실제 데이터) 덩어리를 대상으로 PCRE(Perl Compatible Regular Expressions) 같은 빠르고 강력한 정규표현식 엔진을 돌려, 쪼개진 틈새에 숨겨둔 쉘코드(Shellcode)나 SQL 인젝션 구문(
Ⅳ. 결론
"네트워크 방어는 단순히 문지기가 되는 것을 넘어, 찢어진 편지를 완벽히 이어 붙이는 복원가가 되어야 한다." 초창기 방화벽이 패킷을 겉모습(IP, Port)만 보고 통과시키던 단순한 문지기였다면, 현대의 IDS/IPS는 해커가 갈기갈기 찢어 던진 패킷 조각(Fragment)들을 공중에 띄워놓고 원래의 설계도(Offset)대로 한 치의 오차 없이 복원(Reassembly)해 내는 고도의 수학적 파싱 기계다. 오프셋의 미세한 중첩(Overlap)을 잡아내는 이 검증 룰은, 속임수와 편법으로 OS의 틈새를 무너뜨리려는 해커의 가장 기만적인 공격(Teardrop)을 완벽하게 무력화시키는 네트워크 방어의 금자탑이다.
📌 관련 개념 맵
- 관련 공격 기법: Teardrop 공격, Ping of Death, IP Fragmentation Evasion
- 핵심 IP 헤더 필드: Identification(식별자), Flags(DF, MF), Fragment Offset
- 방어 장비/기술: IDS/IPS(침입 탐지/방지 시스템), Stateful Packet Inspection(상태 기반 검사)
- 분석 도구: Wireshark, tcpdump, PCAP 파일 파싱, Snort 시그니처 룰
👶 어린이를 위한 3줄 비유 설명
- 해커가 경찰(방화벽) 몰래 무기 설계도를 보내려고, 종이를 10조각으로 아주 잘게 찢어서(단편화) 편지 봉투 10개에 나눠서 보냈어요.
- 멍청한 경찰은 편지 조각 하나하나만 보고는 뭔지 몰라서 다 통과시켰지만, 똑똑한 경찰(IDS)은 편지 10개를 뺏어서 테이프로 완벽하게 이어 붙여본 뒤 무기 설계도인 걸 알아챘어요 (재조립 및 파싱)!
- 게다가 해커가 경찰을 골탕 먹이려고 퍼즐 조각이 안 맞게 일부러 겹치게(오프셋 중첩) 그렸는데, 똑똑한 경찰은 "어? 퍼즐 모양이 이상하네! 이거 나쁜 놈이다!" 하고 바로 쓰레기통에 버려버렸답니다.