📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 226편
이전 글: 225. Slow Scan · 다음 글: 227. 다수 IP에 대한 Port 접근
단일 IP에 대한 다중 Port 접근 은 한 출발지가 한 대상 호스트의 여러 포트에 접근하는 패턴으로, 201. 네트워크 스캔이란 무엇인가에서 소개한 수직 스캔(Vertical Scan)의 모양입니다. 상대가 특정 서버 하나에 관심을 두고 그 서버의 노출 서비스를 조사할 때 나타납니다.
이 글은 이 패턴을 발견했을 때 스캔인지 정상 사용인지 판단하고, 상대가 무엇을 알아냈는지 평가하는 분석 절차를 다룹니다. 포트 범위 복원은 210. Port Range Scan, 여러 대상으로 퍼지는 수평형은 227. 다수 IP에 대한 Port 접근에서 다룹니다.
| 분석 요소 | 확인 내용 |
|---|---|
| 출발지 | 내부·외부, 역할, 예외 목록 여부 |
| 대상 | 서버 역할, 중요도, 외부 노출 여부 |
| 포트 | 서로 다른 포트 수, 범위, 서비스군 |
| 결과 | 허용·차단, 응답 종류, 연결 성립 여부 |
| 후속 | 열린 포트로의 인증·요청 시도 |
수직형 접근은 대상 하나에 대해 포트를 바꿔 가며 요청하므로, 로그에서 출발지·목적지 쌍은 고정되고 목적지 포트만 계속 바뀌는 모양이 됩니다. 분석은 다음 순서로 진행합니다.
Alert 또는 이상 징후 (출발지 A → 대상 B, 다수 포트)
↓
① 출발지 확인: 예외 목록(점검·자산관리 서버)인가? 내부인가 외부인가?
↓
② 쌍 단위 집계: distinct DPT, 기간, 허용/차단 비율
↓
③ 정상 다중 포트 사용 가능성 배제 (아래 표 기준)
↓
④ 결과 평가: 허용 세션·SYN/ACK·서비스 응답이 있었던 포트 = 상대가 확인한 열린 포트
↓
⑤ 후속 행위: 열린 포트로 인증 시도·공격 요청이 이어졌는가?
↓
판단: 종결(정상·인가) / 모니터링 / 대응(차단·에스컬레이션)
정상적인 서비스 사용도 한 서버의 여러 포트를 쓸 수 있으므로, 포트 수만으로 판단하지 않습니다.
| 기준 | 정상 다중 포트 사용 | 수직 스캔 |
|---|---|---|
| 포트 구성 | 서비스가 정의한 포트 묶음(예: 웹 80·443) | 서비스와 무관한 다양한 포트 |
| 연결 결과 | 대부분 성립, 데이터 교환 | 대부분 차단·RST, 데이터 없음 |
| 반복성 | 매일 같은 포트 조합 | 한 번 넓게 훑고 끝남 |
| 동적 포트 | 협상된 포트만 사용(FTP 패시브, RPC 동적 포트) | 협상 없이 무작위 높은 포트 |
실습 예시 — 본인 소유 실습망의 Zeek conn.log에서 한 출발지·대상 쌍을 요약하는 방어 측 명령입니다(값은 환경마다 다름).
A=203.0.113.45; B=192.168.10.30
# 쌍의 distinct 포트 수와 연결 상태 분포
zeek-cut id.orig_h id.resp_h id.resp_p conn_state < conn.log \
| awk -v a=$A -v b=$B '$1==a && $2==b {p[$3]=1; s[$4]++}
END {n=0; for (k in p) n++; print "distinct_ports="n; for (k in s) print k, s[k]}'
# 데이터가 오간 연결(상대가 서비스 응답을 받은 포트)
zeek-cut id.orig_h id.resp_h id.resp_p service resp_bytes < conn.log \
| awk -v a=$A -v b=$B '$1==a && $2==b && $5>0'
결과 형식 예시(값은 환경마다 다름):
distinct_ports=1000
REJ 996
S0 1
SF 3
203.0.113.45 192.168.10.30 22 ssh 41
203.0.113.45 192.168.10.30 80 http 612
203.0.113.45 192.168.10.30 3306 - 95
| 관찰 | 해석 |
|---|---|
| distinct 1,000, 대부분 REJ | 수직 스캔, 닫힌 포트는 RST로 응답 |
| 22·80·3306에서 응답 데이터 | 상대가 세 포트의 서비스 존재를 확인 |
| 3306 응답 | DB 포트가 외부 출발지에 응답 → 노출 의도 즉시 확인 |
| 흔적 위치 | 확인 내용 |
|---|---|
| 방화벽 | 쌍 단위 distinct DPT, 허용·차단 비율 |
| Zeek·NDR | conn_state 분포, 응답 데이터가 있는 포트 |
| 서비스 로그 | 열린 포트의 인증 시도·요청 |
| 자산 정보 | 대상 서버 역할·중요도 |
관제자가 확인할 질문
오탐 주의: 인가된 점검, 모니터링 시스템의 다중 서비스 점검, 동적 포트를 쓰는 정상 서비스가 같은 모양을 만듭니다. 포트 구성·연결 결과·반복성을 위 표 기준으로 먼저 확인합니다.