📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 210편
이전 글: 209. UDP Scan · 다음 글: 211. Service Detection

1. 개념

Port Range Scan 은 대상 호스트의 정해진 포트 구간(예: 1~1024)을 확인하는 스캔입니다. 스캔을 탐지한 관제자에게 포트 범위가 중요한 이유는, 범위가 곧 상대가 무엇을 알아냈을 수 있는지와 어떤 서비스에 관심이 있는지를 알려주기 때문입니다.

이 글은 로그에서 스캔 범위를 복원하고 해석하는 방법을 다룹니다. 소수 포트만 노린 경우는 214. 특정 Port Scan, 0~65535 전체를 다룬 경우는 215. 전체 Port Scan에서 따로 다룹니다. 포트 번호 체계 자체는 02 영역(55. Dynamic Port 등)에서 다뤘습니다.

IANA 구간범위스캔 범위 해석
Well-known0~1023표준 서비스(SSH, HTTP, SMB 등) 존재 확인
Registered1024~49151DB, 원격관리, 애플리케이션 서버까지 확인
Dynamic/Private49152~65535비표준 포트에 숨긴 서비스, 백도어 포트까지 확인

2. 동작 원리

스캔 도구는 사용자가 지정한 범위나 도구의 기본 목록을 대상으로 포트를 순서대로 또는 섞어서 확인합니다. 방어자는 거꾸로 로그의 목적지 포트 집합으로 범위를 복원합니다.

방화벽·IDS 로그에서 한 출발지 → 한 목적지 이벤트 추출
        ↓
목적지 포트 집합 계산: 최소값, 최대값, 서로 다른 포트 수, 소요 시간
        ↓
분포 모양 판단
  ├─ 최소~최대가 촘촘히 채워짐           → 연속 범위 스캔 (예: 1~1024)
  ├─ 약 1,000개가 넓게 흩어짐, 잘 알려진 포트 위주 → 도구 기본 "자주 쓰는 포트" 목록
  ├─ 65,000개 이상                    → 전체 범위 스캔 (215편)
  └─ 수 개~수십 개의 특정 포트          → 특정 서비스 탐색 (214편)
        ↓
열림 응답(SYN/ACK, 허용 세션)이 있었던 포트 확인 → 노출 정보 평가

Nmap 같은 도구는 범위를 지정하지 않으면 프로토콜별로 자주 쓰이는 포트 1,000개를 확인합니다(203. Nmap이란 무엇인가). 그래서 실무 로그에서는 1~65535 중 약 1,000개가 비연속적으로 흩어진 모양이 자주 보이며, 이를 "1~1024 연속 범위"와 구분할 수 있어야 합니다.


3. 주요 특징

분포 모양로그 특징관심 대상 추정
1~1024 연속최소 1, 최대 1024 근처, 거의 빈틈 없음표준 서비스
상위 포트 목록개수 약 1,000, 최대값이 수만 대, 3389·5900·8080 등 포함일반적인 노출 서비스 전반
특정 구간예: 8000~8100, 3300~3400만웹 애플리케이션, 특정 DB
전체 범위서로 다른 포트 수가 65,000 이상비표준 포트 서비스까지 전수 조사
  • 소요 시간과 범위의 관계: 같은 속도라면 범위가 넓을수록 오래 걸립니다. 범위에 비해 소요 시간이 지나치게 길면 느린 스캔을 의심합니다(225. Slow Scan).
  • 로그 누락 가능성: 방화벽이 허용하는 포트는 차단 로그에 없고 허용 세션 로그에만 있습니다. 차단 로그만으로 범위를 계산하면 허용 포트가 빠져 실제 범위보다 작게 보일 수 있으므로 두 로그를 합쳐야 합니다.
  • 나눠서 진행되는 스캔: 범위를 여러 날·여러 출발지로 나누면 하루치·한 출발지 기준으로는 작은 범위처럼 보입니다. 같은 대상에 대한 여러 출발지의 포트 집합을 합쳐 보는 것이 필요합니다.

4. 예시

실습 예시 — 본인 소유 실습망의 방화벽(iptables LOG) 로그에서 한 출발지·목적지 쌍의 스캔 범위를 복원하는 방어 측 명령입니다. Rocky는 /var/log/messages, Ubuntu는 /var/log/kern.log에 기록되며, 값은 환경마다 다릅니다.

SRC=203.0.113.45; DST=192.168.10.20
sudo grep "SRC=$SRC DST=$DST" /var/log/kern.log \
  | grep -o 'DPT=[0-9]*' | cut -d= -f2 | sort -n | uniq \
  | awk 'NR==1{min=$1} {max=$1; n++} END {print "min="min, "max="max, "distinct="n}'

# 첫 이벤트와 마지막 이벤트 시각(소요 시간)
sudo grep "SRC=$SRC DST=$DST" /var/log/kern.log | sed -n '1p;$p' | awk '{print $1, $2, $3}'

결과 형식 예시 두 가지(값은 환경마다 다름):

[사례 A] min=1  max=1024   distinct=1019   소요 약 3초
[사례 B] min=1  max=65389  distinct=997    소요 약 5초
사례해석
A1~1024가 거의 빈틈없이 채워짐 → 연속 범위 스캔, 몇 개 포트는 허용 정책이라 차단 로그에서 빠졌을 가능성
B최대값이 크지만 개수는 약 1,000 → 전체 범위가 아니라 도구 기본의 자주 쓰는 포트 목록

사례 A에서 빠진 포트(1~1024 중 로그에 없는 번호)를 허용 세션 로그와 대조하면, 방화벽이 허용해서 대상까지 도달한 포트, 즉 상대가 open 여부를 확인할 수 있었던 포트를 찾을 수 있습니다.


5. 보안 관점

  • 범위가 넓을수록 상대가 얻은 정보도 많습니다. 특히 전체 범위 스캔은 비표준 포트로 옮겨 둔 관리 서비스까지 드러낼 수 있으므로, "포트 번호를 바꿔 숨기는 방식"은 보안 대책이 되지 않습니다.
  • 좁고 특정한 범위(예: DB 포트 구간만)는 이미 목표 서비스를 정한 상태일 수 있어, 넓은 무작위 스캔보다 표적성이 높을 수 있습니다.
  • 범위 복원 결과는 IOC·보고서에 "스캔 대상 포트 범위"로 기록해 이후 같은 행위자의 재방문과 비교합니다(246. IOC 추출).

6. SOC 관점

흔적 위치범위 복원에 쓰는 정보
방화벽 차단 로그차단된 목적지 포트 집합
방화벽 허용 세션 로그대상까지 도달한 포트 (차단 로그에서 빠진 부분)
IDS 스캔 Alert임계치 도달 시점과 대표 포트, 세부는 원본 로그로 확인
패킷 캡처SYN/ACK를 보낸 포트 = 열림으로 확인된 포트

관제자가 확인할 질문

  • 서로 다른 포트 수, 최소·최대값, 소요 시간은 얼마이며 어떤 분포 모양인가?
  • 차단 로그와 허용 로그를 합친 실제 범위는 어디까지인가?
  • 범위 안에서 열림으로 응답한 포트는 무엇이며, 그중 외부 노출이 의도되지 않은 포트가 있는가?
  • 같은 대상에 다른 출발지가 나머지 범위를 이어서 확인하지 않았는가?

오탐 주의: P2P·게임·VoIP 프로그램은 넓은 범위의 동적 포트로 연결을 시도해 범위 스캔처럼 보일 수 있습니다. 이 경우 목적지가 다수의 외부 주소이고 실제 데이터가 오간다는 점이 다릅니다. 방화벽 NAT 환경에서는 목적지가 아니라 출발지 포트가 넓게 분포하는 것이 정상이므로 필드를 혼동하지 않습니다.


7. 핵심 정리

  • Port Range Scan은 정해진 포트 구간을 확인하는 스캔이며, 범위가 곧 상대가 얻은 정보의 규모입니다.
  • 관제자는 목적지 포트의 최소·최대·개수·소요 시간으로 범위와 분포 모양을 복원합니다.
  • 약 1,000개가 넓게 흩어진 모양은 전체 범위가 아니라 도구 기본의 자주 쓰는 포트 목록일 가능성이 높습니다.
  • 차단 로그만 보면 허용 포트가 빠지므로 허용 세션 로그와 합쳐 실제 범위를 계산합니다.
  • 범위 안에서 열림 응답이 있었던 포트가 대응 우선순위를 정하는 핵심입니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글