📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 201편
이전 글: 200. SOC 관점의 네트워크 장비 이벤트 분석 · 다음 글: 202. 정찰(Reconnaissance)의 개념
네트워크 스캔(Network Scan) 은 어떤 호스트가 살아 있는지, 어떤 포트가 열려 있는지, 그 포트에서 어떤 서비스가 동작하는지를 확인하기 위해 여러 대상에 짧은 요청을 보내고 응답의 모양을 관찰하는 행위입니다.
같은 행위가 목적에 따라 전혀 다르게 해석됩니다. 관리자는 자기 네트워크의 자산 목록과 노출 포트를 점검하기 위해 스캔을 사용하고, 공격자는 침투할 대상을 고르기 위해 스캔을 사용합니다. 05 영역은 "공격자가 어떻게 탐색하고 어떤 흔적을 남기는가" 를 방어자(관제자) 입장에서 다루며, 이 글은 그 출발점으로 스캔의 정의와 기본 형태만 정리합니다. 포트 관점의 정상 접속과 스캔 구분은 95. Firewall Log의 Port에서 다뤘습니다.
| 탐색 단위 | 알아내려는 것 | 흔히 보이는 트래픽 | 관련 글 |
|---|---|---|---|
| 호스트 | 살아 있는 IP | ICMP Echo, ARP 요청, 특정 포트 SYN | 205. Host Discovery, 206. Ping Scan |
| 포트 | 열린 포트 | 다수 포트로 SYN·UDP | 207. TCP Connect Scan~210. Port Range Scan |
| 서비스·버전 | 포트에서 동작하는 프로그램 | 연결 후 배너·프로브 교환 | 211편, 213편 |
| 운영체제 | OS 종류 | 비정상 조합의 TCP·ICMP 프로브 | 212편 |
스캔은 "요청 → 응답 유형 → 상태 판단"의 반복입니다. 방어자에게 중요한 것은 이 반복이 여러 장비에 흔적을 남긴다는 점입니다.
[스캔 출발지] ── 요청(ICMP / SYN / UDP) ──→ [방화벽] ──→ [대상 호스트]
│ │
허용/차단 로그 기록 응답 생성
│ (SYN/ACK, RST, ICMP, 무응답)
↓ ↓
[IDS/IPS] 임계치·시그니처 비교 → Alert
↓
[SIEM] 출발지별 목적지 IP·포트 수 집계
↓
관제자: 누가, 무엇을, 얼마나, 결과는?
스캔은 대상 배치에 따라 세 가지 형태로 나눠 볼 수 있습니다.
| 형태 | 모양 | 로그에서 보이는 특징 |
|---|---|---|
| 수직 스캔(Vertical) | 한 IP의 여러 포트 | 같은 출발지·목적지 쌍에서 목적지 포트만 계속 바뀜 |
| 수평 스캔(Horizontal) | 여러 IP의 같은 포트 | 같은 목적지 포트, 목적지 IP만 계속 바뀜 |
| 블록 스캔(Block) | 여러 IP의 여러 포트 | 출발지 하나에 목적지 IP·포트 조합이 대량 |
수직·수평 패턴의 세부 분석은 226. 단일 IP에 대한 다중 Port 접근, 227. 다수 IP에 대한 Port 접근에서 다룹니다.
| 기준 | 일반 사용자 트래픽 | 스캔 트래픽 |
|---|---|---|
| 목적지 포트 수 | 서비스에 필요한 소수 | 수십~수천 개 |
| 연결당 바이트 | 서비스에 맞는 양 | 0 또는 매우 적음 |
| 차단·거부 비율 | 낮음 | 높음 |
| 시간 분포 | 사람 행동에 따라 불규칙 | 짧은 시간 집중 또는 일정 간격 |
실습 예시 — 본인 소유 실습망에서 방화벽(iptables/nftables LOG 규칙) 로그를 확인하는 방어 측 명령입니다. 값은 환경마다 다릅니다.
# 커널 방화벽 로그 위치: Rocky는 /var/log/messages, Ubuntu는 /var/log/kern.log (공통: journalctl -k)
# 출발지별로 시도한 서로 다른 목적지 포트 수 집계
sudo journalctl -k --since "1 hour ago" \
| grep -o 'SRC=[0-9.]* .*DPT=[0-9]*' \
| awk '{print $1, $NF}' | sort -u \
| awk '{c[$1]++} END {for (s in c) print c[s], s}' | sort -rn | head
방화벽 로그 형식 예시(값은 환경마다 다름, 일부 필드 생략):
kernel: DROP IN=ens33 SRC=203.0.113.45 DST=192.168.10.20 PROTO=TCP SPT=51234 DPT=21 SYN
kernel: DROP IN=ens33 SRC=203.0.113.45 DST=192.168.10.20 PROTO=TCP SPT=51234 DPT=22 SYN
kernel: DROP IN=ens33 SRC=203.0.113.45 DST=192.168.10.20 PROTO=TCP SPT=51234 DPT=23 SYN
kernel: DROP IN=ens33 SRC=203.0.113.45 DST=192.168.10.20 PROTO=TCP SPT=51234 DPT=25 SYN
집계 결과 형식 예시:
812 SRC=203.0.113.45
3 SRC=192.168.10.15
한 출발지가 같은 목적지에 대해 출발지 포트를 고정한 채 목적지 포트만 바꾸며 SYN을 보내고, 모두 차단되었다는 점에서 수직 스캔 형태로 판단할 수 있습니다.
| 흔적 위치 | 확인할 수 있는 것 |
|---|---|
| 방화벽 로그 | 출발지별 차단 건수, 목적지 IP·포트 분포 |
| IDS/IPS | 스캔 탐지 룰(임계치 기반) Alert (235. IDS에서 Scan Alert 확인) |
| 패킷 캡처 | 응답 종류(SYN/ACK, RST, ICMP), 스캔 순서·속도 |
| 호스트·서비스 로그 | 데이터 없이 끊긴 짧은 연결 기록 |
관제자가 확인할 질문
오탐 주의: 모니터링 헬스체크, 자산관리·NAC 솔루션, 취약점 점검, P2P 프로그램은 스캔과 비슷한 1:N 패턴을 만듭니다. 판단 전에 출발지가 예외 목록에 있는지 먼저 확인합니다.