711. SYN Flood 공격 (TCP 3-way Handshake 약점 공격)
핵심 인사이트: 식당에 전화를 걸어 "짜장면 하나요!" 하고 끊어버리는 장난 전화를 상상해 보자. 주방장은 짜장면을 다 만들고 배달부를 세워둔 채 손님의 다음 전화를 하루 종일 기다리다 아무 일도 못 하고 쓰러진다. 이것이 SYN Flood 공격이다. TCP 연결의 필수 과정인 '3단계 인사(Handshake)' 중, 첫 인사만 던지고 도망가버려 서버의 기억력(Backlog Queue)을 100% 꽉 채워 진짜 손님을 못 받게 만드는 가장 악랄한 고전적 DDoS 공격이다.
Ⅰ. SYN Flood 공격의 개념
- 개념: TCP/IP의 연결 지향적인 특성(3-Way Handshake)을 교묘하게 악용하여, 타겟 서버에 수만 개의 가짜
[SYN]요청 패킷만 쏟아부은 뒤 마지막[ACK]응답을 고의로 생략함으로써, 서버의 연결 대기 큐(Backlog Queue)를 고갈시켜 시스템을 마비(DoS)시키는 자원 고갈 공격입니다.
Ⅱ. 공격의 원리 (TCP 3-Way Handshake의 맹점) 🌟
1. 정상적인 TCP 연결 과정 (3단계)
- [SYN]: 클라이언트가 서버에 "연결하자!" 요청을 보냅니다.
- [SYN+ACK]: 서버는 클라이언트의 요청을 자신의 메모리 장부인 **'Backlog Queue(연결 대기열)'**에 적어두고(Half-Open 상태), "알았어, 나도 준비 완료!"라고 응답을 보냅니다.
- [ACK]: 클라이언트가 최종적으로 "오케이!" 응답을 보내면 비로소 연결(Established)이 완성되고 대기열 장부에서 이름이 지워집니다.
2. 해커의 기만전술 (Half-Open 상태 방치)
- 해커는 출발지 IP 주소를 존재하지 않는 가짜 주소로 둔갑(IP 스푸핑)시켜 타겟 서버로
[SYN]폭탄을 수십만 개 쏩니다. - 서버는 이 가짜 요청들을 모두 진짜인 줄 알고 대기열 장부(Backlog Queue)에 빼곡히 적어둔 채, 가짜 IP 주소들을 향해
[SYN+ACK]를 날립니다. - 가짜 주소로 보냈으니 당연히 클라이언트의 최종
[ACK]답장은 영원히 오지 않습니다. - 마비(Denial of Service): 서버는 혹시나 답장이 늦게 올까 봐 일정 시간(보통 수십 초) 동안 대기열 장부에 이 가짜 요청들을 꽉 쥐고 버팁니다. 그 결과 대기열이 100% 꽉 차버려(Overflow), 나중에 도착한 '진짜 고객'의 정상적인
[SYN]요청은 장부에 적을 자리가 없어 가차 없이 버려지게 됩니다(접속 불가).
Ⅲ. 공격의 위력과 영향
- 대역폭 10G짜리 굵은 인터넷 선을 다 채우지 않아도(트래픽 고갈 공격이 아님), 초당 몇 MB 수준의 아주 적은 트래픽(가벼운 SYN 패킷)만으로도 거대한 서버의 메모리(큐)를 박살 낼 수 있는 극도의 고효율 공격입니다. 방화벽의 세션 테이블을 터뜨리는 주범이기도 합니다.
📢 섹션 요약 비유: SYN Flood는 유명 레스토랑의 '노쇼(No-Show) 테러'입니다. 해커가 대포폰 수천 대를 돌려 레스토랑(서버)에 전화를 걸어 "여기 VIP석 하나 예약이요(SYN)!"라고 말하고 끊어버립니다. 식당 주인은 예약 장부(대기 큐)에 이 가짜 손님들의 이름을 빽빽하게 다 적어놓고 빈자리를 싹 비워둡니다(Half-Open). 정작 진짜 밥을 먹으러 온 손님들은 "예약 꽉 찼습니다"라며 문전박대를 당하게 되는(가용성 파괴) 악질적인 헛수고 유발 공격입니다.