📚 네트워크 · 패킷 분석 › 03. Wireshark 패킷 분석 — 142편
이전 글: 141. SMB Traffic 이해 · 다음 글: 143. SYN Scan Packet 분석

1. 개념

포트 스캔은 여러 포트에 짧은 요청을 보내 응답의 모양으로 포트 상태를 판단하는 행위입니다. 이 글은 스캔 트래픽이 패킷 목록에서 어떤 모양으로 보이는지만 다룹니다. 공격자가 왜·어떻게 정찰하는지와 스캔 유형별 특징은 05 영역(201. 네트워크 스캔이란 무엇인가, 216. TCP Port Scan 특징), 보안장비의 탐지 규칙은 291. Port Scan 탐지에서 다룹니다.

스캔 트래픽의 기본 모양정상 접속과의 차이
한 출발지 → 한 목적지의 많은 포트 (수직형)정상 접속은 소수의 서비스 포트만 사용
한 출발지 → 많은 목적지의 같은 포트 (수평형)정상 접속은 정해진 서버만 대상
연결마다 패킷 2~3개로 끝남정상 접속은 데이터 교환이 이어짐

2. 동작 원리

TCP 포트 하나에 대한 요청과 응답은 대상 상태에 따라 세 가지 모양 중 하나가 됩니다.

[열림 open]      Scanner ── SYN ──→ Target:22
                 Scanner ←─ SYN/ACK ── Target        → 이후 ACK(연결 완료) 또는 RST(143편)
[닫힘 closed]    Scanner ── SYN ──→ Target:23
                 Scanner ←─ RST/ACK ── Target        → 포트에 서비스 없음
[필터링 filtered] Scanner ── SYN ──→ Target:3389
                          (응답 없음, SYN 재전송)
                 또는 ←─ ICMP Type 3 (Code 1/2/3/9/10/13) ── 방화벽·라우터
        ↓
패킷 목록 = 포트 번호만 바뀌는 SYN이 빠르게 반복 + RST/ACK가 대량

UDP 스캔은 응답 규칙이 다릅니다. 닫힌 포트는 대상이 ICMP Port Unreachable(Type 3, Code 3) 로 답하고, 열린 포트는 서비스가 요청을 이해한 경우에만 UDP로 응답합니다. 응답이 없으면 "열림 또는 필터링"으로 구분이 어렵습니다.


3. 주요 특징

상태별 확인 필터

확인 대상Display Filter
연결 시도(SYN만)tcp.flags.syn == 1 && tcp.flags.ack == 0
열린 포트 응답tcp.flags.syn == 1 && tcp.flags.ack == 1
닫힌 포트 응답tcp.flags.reset == 1 && tcp.flags.ack == 1
UDP 닫힌 포트icmp.type == 3 && icmp.code == 3
관리적으로 차단icmp.type == 3 && icmp.code == 13

스캔을 한눈에 보는 Wireshark 기능

기능메뉴스캔일 때 보이는 모양
Conversations (TCP 탭)Statistics → Conversations같은 주소 쌍에 포트만 다른 행이 수백 개, 각 행 패킷 2~3개
Endpoints (TCP 탭)Statistics → Endpoints대상 IP의 포트 목록이 연속 번호로 나열
I/O GraphsStatistics → I/O Graphs짧은 시간에 SYN·RST 수가 급증
Flow GraphStatistics → Flow Graph같은 두 주소 사이 SYN → RST 화살표 반복

TCP Connect 방식(운영체제의 연결 함수 사용)은 열린 포트에서 3-Way Handshake를 완료한 뒤 곧바로 종료하고, SYN 방식은 완료하지 않습니다. 이 차이는 143. SYN Scan Packet 분석에서 다룹니다.


4. 예시

실습 예시 — ⚠️ 스캔은 본인 소유 실습망의 본인 VM에만 수행합니다. 타인 시스템 스캔은 법적 문제가 될 수 있습니다. 명령과 출력은 예시(값은 환경마다 다름)입니다. Nmap 설치는 Rocky sudo dnf install nmap, Ubuntu sudo apt install nmap입니다.

# 대상 VM(192.168.10.30)에서 스캐너(192.168.10.50) 트래픽 캡처 (Rocky/Ubuntu 공통)
sudo tcpdump -i ens33 -nn -w /tmp/scan.pcapng 'host 192.168.10.50'

# 스캐너 VM: 일반 사용자 권한 기본 스캔(Connect 방식), 포트 1~1024
nmap -p 1-1024 192.168.10.30

# 1) 대상이 보낸 응답 종류 분포
tshark -r /tmp/scan.pcapng -Y 'ip.src == 192.168.10.30 && tcp' -T fields -e tcp.flags.str \
  | sort | uniq -c | sort -rn

# 2) 열린 포트 = 대상이 SYN/ACK를 보낸 출발지 포트
tshark -r /tmp/scan.pcapng -Y 'ip.src == 192.168.10.30 && tcp.flags.syn == 1 && tcp.flags.ack == 1' \
  -T fields -e tcp.srcport | sort -nu

# 3) 출발지가 SYN을 보낸 서로 다른 목적지 포트 수
tshark -r /tmp/scan.pcapng -Y 'tcp.flags.syn == 1 && tcp.flags.ack == 0' -T fields -e ip.src -e tcp.dstport \
  | sort -u | awk '{c[$1]++} END {for (s in c) print s, c[s]}'

1)번 결과의 형식 예시입니다. 닫힌 포트가 대부분이므로 RST/ACK가 압도적으로 많습니다.

   1020 ·······A·R··      ← RST/ACK (닫힌 포트)
      4 ·······A··S·      ← SYN/ACK (열린 포트)
      ...

Wireshark의 공개 샘플 모음(Wireshark Wiki SampleCaptures)에도 스캔 형태의 캡처가 있으므로, 직접 스캔하지 않고 모양만 확인하는 연습에 활용할 수 있습니다. 샘플마다 환경이 다르므로 위 수치와 같게 나오지는 않습니다.

📷 [실습 화면 삽입 위치] Statistics → Conversations의 TCP 탭에서 같은 주소 쌍의 포트별 행이 연속으로 나열되고 각 행 패킷 수가 2~3개인 화면

📷 [실습 화면 삽입 위치] 필터 tcp.flags.reset == 1 && tcp.flags.ack == 1 적용 후 목적지 포트만 바뀌며 반복되는 Packet List


5. 보안 관점

패킷 모양만으로 "공격"을 확정하지 않습니다. 이 글에서 얻는 것은 스캔 형태의 트래픽이 있었다는 사실과 대상·범위·결과(열린 포트)입니다.

패킷 모양정상일 수 있는 경우추가 확인이 필요한 경우
한 목적지 다수 포트승인된 취약점 점검점검 일정에 없는 출발지
다수 목적지 같은 포트자산 관리·모니터링일반 사용자 단말에서 발생
SYN/ACK를 받은 포트 존재—스캔 이후 그 포트로 실제 접속·공격 시도가 이어졌는가

6. SOC 관점

흔적 위치확인할 수 있는 것
패킷 캡처스캔 범위·순서·속도, 열린 포트(SYN/ACK)
방화벽 로그차단된 다수 포트 이벤트 (234. Firewall에서 Scan 흔적 찾기)
IDS/IPS스캔 임계치 Alert (235. IDS에서 Scan Alert 확인)
대상 호스트서비스 로그의 짧은 연결 기록 (Connect 방식일 때)

관제자가 확인할 질문

  • 출발지는 승인된 점검 시스템인가, 일반 단말·외부 주소인가?
  • 대상이 SYN/ACK로 답한 포트는 무엇이며, 노출이 의도된 서비스인가?
  • 스캔 직후 같은 출발지가 열린 포트로 접속했는가?

오탐 주의: 한쪽 방향만 보이는 캡처 지점에서는 정상 접속도 "응답 없는 SYN"처럼 보입니다. 로드밸런서 헬스체크, P2P 프로그램도 다수 포트·다수 대상 연결을 만듭니다.


7. 핵심 정리

  • 포트 스캔은 짧은 요청과 응답 모양으로 포트 상태를 판단하므로, 패킷 목록에서 포트만 바뀌는 SYN과 대량의 RST/ACK로 보입니다.
  • TCP 응답: SYN/ACK = 열림, RST/ACK = 닫힘, 무응답·ICMP Type 3 = 필터링입니다.
  • UDP는 닫힌 포트에서 ICMP Type 3 Code 3이 오고, 무응답은 열림과 필터링을 구분하기 어렵습니다.
  • Conversations·Endpoints·I/O Graphs로 스캔 범위와 속도를 빠르게 확인합니다.
  • 공격자 행동 해석은 05 영역, 탐지 규칙은 06 영역에서 다루며, 스캔은 본인 소유 실습망에서만 수행합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글