📚 네트워크 · 패킷 분석 › 03. Wireshark 패킷 분석 — 143편
이전 글: 142. Port Scan Packet 분석 · 다음 글: 144. DNS 악용 유형 — 터널링·DGA·비정상 질의 탐지

1. 개념

SYN 스캔(Half-open 스캔)은 SYN을 보내고 응답만 확인한 뒤 연결을 완성하지 않는 방식입니다. 포트 스캔 전반의 패킷 모양은 142. Port Scan Packet 분석, SYN 스캔이 정찰에서 쓰이는 이유와 공격자 관점은 208. SYN Scan에서 다룹니다. 이 글은 SYN 스캔 패킷 자체의 모양과 식별 필드만 다룹니다.

구분SYN 스캔Connect 스캔
필요 권한Raw 패킷 생성 권한 (보통 root)일반 사용자
열린 포트에서SYN → SYN/ACK → RSTSYN → SYN/ACK → ACK → 곧바로 종료
연결 완료 여부미완료 (Half-open)완료
대상 서비스 로그대부분 남지 않음짧은 연결로 남을 수 있음

2. 동작 원리

열린 포트에서 SYN/ACK를 받은 스캐너 쪽 운영체제는 자신이 연 적 없는 연결에 대한 응답이므로 RST를 보냅니다. 그래서 Handshake의 세 번째 패킷 자리에 ACK 대신 RST가 옵니다.

[열림]    192.168.10.50:43210 ── SYN ─────────→ 192.168.10.30:22
          192.168.10.50:43210 ←── SYN/ACK ───── 192.168.10.30:22
          192.168.10.50:43210 ── RST ─────────→ 192.168.10.30:22   ← ACK 없이 RST
[닫힘]    192.168.10.50:43210 ── SYN ─────────→ 192.168.10.30:23
          192.168.10.50:43210 ←── RST/ACK ───── 192.168.10.30:23
[필터링]  192.168.10.50:43210 ── SYN ─────────→ 192.168.10.30:3389
          (응답 없음 → 같은 포트로 SYN 재전송)
        ↓
Wireshark: 연결마다 tcp.stream이 새로 부여되고, 각 stream은 2~3개 패킷으로 끝남
  • 스캐너는 여러 포트에 같은 출발지 포트를 반복 사용하는 경우가 많습니다. 일반 클라이언트는 연결마다 출발지 포트가 바뀌므로 이 점이 구분 단서가 됩니다(도구·옵션에 따라 다름).

3. 주요 특징

연결 완성도 필드 tcp.completeness (Wireshark 3.6 이후 계열에서 제공, 버전에 따라 표시 방식이 다를 수 있음)

비트 값의미
1SYN 보임
2SYN/ACK 보임
4ACK 보임
8데이터 보임
16FIN 보임
32RST 보임

합계로 연결의 모양을 판단합니다. SYN 스캔의 열린 포트는 1+2+32 = 35, 닫힌 포트는 1+32 = 33, 무응답은 1이 됩니다. Connect 스캔의 열린 포트는 ACK가 포함되므로 4 비트가 켜집니다.

스캔 도구가 만든 SYN의 특징 (일반적인 경향이며 도구·버전·옵션에 따라 다름)

필드운영체제가 만든 일반 SYN스캔 도구의 Raw SYN에서 흔한 모양
tcp.window_size_value64240, 65535 등 OS 기본값1024 같은 작은 고정값
TCP 옵션MSS, SACK_PERM, Timestamps, Window Scale 등 여러 개MSS 하나만 있거나 옵션이 거의 없음
tcp.srcport연결마다 바뀜여러 목적지 포트에 같은 값 반복
패킷 크기옵션 때문에 60~74바이트 전후옵션이 적어 더 작음

옵션 필드의 의미는 119. TCP 헤더와 Flag 분석 — 포트·시퀀스·Flag·옵션 필드 읽는 법을 참고합니다.


4. 예시

실습 예시 — ⚠️ 본인 소유 실습망의 본인 VM에만 수행합니다. 명령과 출력은 예시(값은 환경마다 다름)입니다. 스캐너 192.168.10.50, 대상 192.168.10.30입니다.

# 대상 VM에서 캡처 (Rocky/Ubuntu 공통)
sudo tcpdump -i ens33 -nn -w /tmp/synscan.pcapng 'host 192.168.10.50'

# 스캐너 VM: root 권한 SYN 스캔, 소수 포트만
sudo nmap -sS -p 21,22,23,80,443,3389 192.168.10.30

# 1) 연결별 완성도 값 분포
tshark -r /tmp/synscan.pcapng -2 -Y 'tcp.flags.syn == 1 && tcp.flags.ack == 0' \
  -T fields -e tcp.completeness | sort | uniq -c

# 2) 스캐너 SYN의 출발지 포트·Window·옵션 길이
tshark -r /tmp/synscan.pcapng -Y 'ip.src == 192.168.10.50 && tcp.flags.syn == 1 && tcp.flags.ack == 0' \
  -T fields -e tcp.srcport -e tcp.dstport -e tcp.window_size_value -e tcp.hdr_len

# 3) 비교용: 같은 VM에서 일반 접속 1회 (OS가 만든 SYN)
curl -s -o /dev/null http://192.168.10.30/

2)번 결과의 형식 예시입니다.

tcp.srcport  tcp.dstport  tcp.window_size_value  tcp.hdr_len
43210        22           1024                   24     ← 헤더 20 + MSS 옵션 4
43210        80           1024                   24
43210        3389         1024                   24
51544        80           64240                  40     ← curl: OS 기본 SYN (옵션 여러 개)

Display Filter로는 tcp.completeness == 35(열린 포트 SYN 스캔 흔적)처럼 바로 걸러 볼 수 있습니다. 완성도 값은 두 번 읽기(-2) 또는 GUI에서 전체 로딩 후 정확해집니다.

📷 [실습 화면 삽입 위치] 열린 포트 하나의 SYN → SYN/ACK → RST 세 패킷과 SYN의 Window·Options가 펼쳐진 Packet Details

📷 [실습 화면 삽입 위치] 스캔 SYN과 일반 curl SYN의 TCP 옵션 부분을 나란히 비교한 화면


5. 보안 관점

관찰해석
tcp.completeness 35 연결 다수SYN 스캔으로 열린 포트가 확인됨 → 해당 포트 노출 점검
33이 대부분닫힌 포트 대량 탐색
1만 대량 (무응답)방화벽이 차단 중이거나 캡처 지점이 한 방향만 봄
스캔 SYN 모양이 여러 출발지에서 동일같은 도구의 분산 스캔 가능성 (05 영역에서 다룸)

⚠️ Window 1024, 옵션 부족 같은 특징은 도구 식별의 보조 단서이지 확정 근거가 아닙니다. 옵션으로 쉽게 바꿀 수 있고, 일부 네트워크 장비도 비슷한 SYN을 만듭니다.


6. SOC 관점

흔적 위치확인할 수 있는 것
패킷 캡처Half-open 모양, SYN 필드 특징, 열린 포트
방화벽 로그완료되지 않은 세션, 다수 포트 차단
IDS/IPSSYN 스캔 임계치 이벤트 (291. Port Scan 탐지에서 규칙 다룸)
대상 서비스 로그대부분 남지 않음 → 패킷·네트워크 장비 로그가 핵심 근거

관제자가 확인할 질문

  • 열린 포트(완성도 35)는 무엇이며 외부 노출이 의도된 것인가?
  • 스캔 SYN의 출발지 포트·Window·옵션이 같은 다른 출발지가 있는가?
  • 스캔 이후 같은 출발지에서 완성된 연결(데이터 포함)이 생겼는가?

오탐 주의: 정상 연결도 캡처가 중간에 끊기거나 비대칭 경로면 완성도 값이 낮게 나옵니다. 클라이언트가 SYN/ACK 도착 전에 연결을 포기해도 RST가 생깁니다.


7. 핵심 정리

  • SYN 스캔의 열린 포트는 SYN → SYN/ACK → RST로, Handshake의 세 번째 자리에 ACK 대신 RST가 옵니다.
  • Connect 스캔은 연결을 완성하므로 ACK가 보이고 서비스 로그에 남을 수 있습니다.
  • tcp.completeness(35 = 열림, 33 = 닫힘, 1 = 무응답)로 연결 모양을 빠르게 분류합니다.
  • 고정 출발지 포트, 작은 Window, 옵션이 적은 SYN은 스캔 도구 패킷의 보조 단서입니다.
  • 공격 의도 해석과 탐지 규칙은 05·06 영역에서 다루며, 실습은 본인 소유 실습망에서만 합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글