📚 네트워크 · 패킷 분석 › 03. Wireshark 패킷 분석 — 123편
이전 글: 122. TCP Connection 종료 분석 · 다음 글: 124. SYN/ACK Packet 분석

1. 개념

SYN의 역할(연결 요청, 초기 시퀀스 번호 동기화)은 44. SYN, SYN/ACK, ACK에서 다뤘습니다. 이 글은 Wireshark에서 SYN 패킷 한 개를 펼쳤을 때 어떤 필드를 어떤 순서로 보는가에 집중합니다. SYN은 연결을 시작하는 쪽 OS나 도구의 "기본값"이 가장 많이 드러나는 패킷이어서, 출발지의 성격을 추정하는 단서가 됩니다.

확인 항목Wireshark 필드정상 OS SYN에서 흔한 모습
Flagtcp.flags == 0x002SYN만 설정 (ECN 협상 시 0x0c2)
ISNtcp.seq_raw무작위에 가까운 32비트 값, 상대값은 0
ACK 번호tcp.ack_raw보통 0 (ACK 비트가 없어 의미 없음)
데이터tcp.len0 (TCP Fast Open 사용 시 예외)
헤더 길이tcp.hdr_len옵션 때문에 20보다 큼 (Linux는 흔히 40)
옵션tcp.options.mss_val, tcp.options.wscale.shift, tcp.options.sack_perm, tcp.options.timestamp.tsvalMSS·SACK 허용·Timestamps·Window Scale 등
Windowtcp.window_size_valueOS별 기본값 (SYN에는 스케일 미적용)
TTLip.ttl초기값 64·128·255에서 경유 홉만큼 감소
출발지 포트tcp.srcportOS의 임시 포트 범위

2. 동작 원리

SYN 한 개를 Details 창에서 읽는 순서입니다.

Internet Protocol
   ip.ttl, ip.flags.df, ip.id          → 출발지 OS·거리 추정
   ↓
Transmission Control Protocol
   srcport / dstport                   → 임시 포트 → 서비스 포트인가
   ↓
   Flags 0x002 [SYN]                   → 다른 비트가 섞이지 않았는가
   ↓
   seq_raw, len = 0                    → ISN, 데이터 없음
   ↓
   Options (MSS, SACK_PERM, TS, NOP, WS) → 옵션 종류·순서·값
   ↓
[SEQ/ACK analysis], Expert Info        → 재전송(retransmission)인가

SYN 재전송: 응답이 없으면 클라이언트 OS는 같은 tcp.seq_raw의 SYN을 간격을 늘려 가며 다시 보냅니다. Linux는 초기 재전송 시간 1초에서 두 배씩 늘어나는 것이 일반적이며(net.ipv4.tcp_syn_retries 기본 6), Wireshark는 두 번째 SYN부터 tcp.analysis.retransmission을 붙입니다. 간격이 두 배씩 늘어나면 OS 스택이 보낸 것이고, 재전송 없이 한 번만 보내는 SYN이 다수 포트로 흩어지면 스캔 도구의 패턴에 가깝습니다.


3. 주요 특징

OS가 만든 SYN과 도구가 만든 SYN 비교 (일반적 경향)

항목일반 OS 연결스캔·패킷 생성 도구에서 자주 보이는 모습
옵션4~5종, OS 고유 순서없음 또는 MSS 하나 정도
헤더 길이28~44바이트20~24바이트
WindowOS 기본값 (예: 64240, 65535)도구 고정값, 비정상적으로 작은 값
재전송응답 없으면 간격 두고 반복대개 없음 또는 도구 설정대로
출발지 포트연결마다 증가·무작위여러 목적지에 같은 출발지 포트 반복 가능
페이로드없음드물게 데이터가 실린 SYN

SYN 관련 필터

목적Display Filter
연결 요청만tcp.flags.syn == 1 && tcp.flags.ack == 0
재전송된 SYNtcp.flags == 0x002 && tcp.analysis.retransmission
옵션 없는 SYNtcp.flags == 0x002 && tcp.hdr_len == 20
데이터가 실린 SYNtcp.flags.syn == 1 && tcp.len > 0
MSS 옵션 누락 (Expert Info)tcp.options.mss.absent

4. 예시

실습 예시 — 본인 VM에서 일반 접속 SYN의 필드를 추출합니다. 명령과 출력은 예시(값은 환경마다 다름)입니다.

sudo tshark -i ens33 -f "tcp[tcpflags] & tcp-syn != 0" -w /tmp/syn.pcapng &
curl -s -o /dev/null http://192.168.10.30/                 # 응답하는 서버
timeout 8 bash -c '</dev/tcp/192.168.10.99/80'              # 응답 없는(존재하지 않는) 사설 IP
sudo pkill -INT tshark

# SYN(ACK 없음)의 주요 필드
tshark -r /tmp/syn.pcapng -Y 'tcp.flags.syn == 1 && tcp.flags.ack == 0' -T fields -E header=y \
  -e frame.time_relative -e ip.dst -e ip.ttl -e tcp.srcport -e tcp.seq_raw -e tcp.hdr_len \
  -e tcp.window_size_value -e tcp.options.mss_val -e tcp.options.wscale.shift -e tcp.option_kind \
  -e tcp.analysis.retransmission

# 임시 포트 범위 확인 (Rocky/Ubuntu 공통)
sysctl net.ipv4.ip_local_port_range

형식 예시입니다.

time      ip.dst         ttl srcport seq_raw     hdr_len win    mss  ws option_kind  retrans
0.000000  192.168.10.30  64  51020   2984001100  40      64240  1460 7  2,4,8,1,3
0.012300  192.168.10.99  64  51022   1188200450  40      64240  1460 7  2,4,8,1,3
1.024500  192.168.10.99  64  51022   1188200450  40      64240  1460 7  2,4,8,1,3    1
3.072800  192.168.10.99  64  51022   1188200450  40      64240  1460 7  2,4,8,1,3    1
7.232900  192.168.10.99  64  51022   1188200450  40      64240  1460 7  2,4,8,1,3    1
확인 포인트읽는 법
option_kind 2,4,8,1,3MSS, SACK 허용, Timestamps, NOP, Window Scale — Linux에서 흔한 순서
192.168.10.99로 같은 seq_raw 반복같은 연결의 SYN 재전송. 간격 약 1→2→4초
TTL 64같은 호스트에서 나간 캡처라 감소 없음

같은 대역의 존재하지 않는 IP는 ARP 응답이 없어 SYN 자체가 나가지 않을 수 있으므로, 결과가 다르면 ARP 패킷도 함께 확인합니다(114. ARP 패킷 필드 분석 — opcode와 Sender·Target 필드로 IP-MAC 매핑 검증하기).

📷 [실습 화면 삽입 위치] SYN 패킷 Details에서 Flags와 Options(MSS, SACK permitted, Timestamps, Window scale)를 모두 펼친 화면

📷 [실습 화면 삽입 위치] 응답 없는 대상으로의 SYN 재전송이 [TCP Retransmission]으로 표시된 Packet List와 Time 열 간격


5. 보안 관점

관찰가능한 해석확인할 것
옵션 없는 짧은 SYN이 여러 포트로스캔 도구 가능성 (143. SYN Scan Packet 분석)응답 Flag 분포
같은 ISN·같은 출발지 포트의 SYN이 여러 목적지로패킷 생성 도구목적지 수, 시간 간격
출발지 IP는 다양한데 TTL·옵션 구성이 모두 같음출발지 위조 SYN Flood 가능성SYN/ACK 뒤 ACK 존재 여부
데이터가 실린 SYNTFO 또는 조작 패킷TFO 쿠키 옵션(Kind 34) 유무
내부 호스트가 외부 한 IP로 SYN 재전송 반복차단된 C2 접속 시도 가능성목적지 평판, 반복 주기 (147. 외부 비정상 통신 분석)

6. SOC 관점

흔적 위치확인할 수 있는 것
패킷 캡처옵션·TTL·Window로 본 출발지 성격, 재전송 간격
방화벽 로그SYN 기준 허용·차단(drop 시 응답 없음)
IDS/IPSSYN 스캔·SYN Flood 임계치 이벤트
서버SYN-RECV 수, SYN 쿠키 사용 카운터

관제자가 확인할 질문

  • 이 SYN은 OS 스택이 만든 모습인가, 도구가 만든 모습인가?
  • 재전송이 있다면 응답이 없었던 이유는 방화벽 drop인가, 대상 부재인가?
  • 같은 출발지가 짧은 시간에 몇 개의 목적지·포트로 SYN을 보냈는가?

오탐 주의: 옵션 구성은 OS 버전, 네트워크 장비(MSS 조정), VPN에 따라 바뀝니다. 옵션만으로 "도구"라고 단정하지 말고 목적지 분포·재전송·응답 패턴과 함께 판단합니다.


7. 핵심 정리

  • SYN은 tcp.flags == 0x002이며 데이터 없이 ISN(tcp.seq_raw)과 옵션을 싣고 갑니다.
  • 옵션 종류·순서, Window, TTL, 출발지 포트는 연결을 시작한 OS·도구의 기본값을 보여 줍니다.
  • 같은 seq의 SYN이 두 배 간격으로 반복되면 응답이 없는 상황이며, Wireshark는 이를 재전송으로 표시합니다.
  • 옵션 없는 짧은 SYN, 재전송 없는 다수 포트 SYN은 스캔 도구의 흔적일 수 있습니다.
  • 판단은 SYN 한 개가 아니라 응답(SYN/ACK·RST·무응답)과 목적지 분포까지 묶어서 합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글