📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 225편
이전 글: 224. Random Scan · 다음 글: 226. 단일 IP에 대한 다중 Port 접근
Slow Scan(저속 스캔) 은 요청 사이 간격을 길게 두어 몇 시간~며칠에 걸쳐 진행되는 스캔입니다. 한 번에 보면 몇 건의 차단 로그뿐이라 잡음처럼 보이지만, 긴 기간을 합치면 수백 개 포트나 대역 전체를 확인한 흔적이 드러납니다.
관제자에게 Slow Scan은 탐지 설계의 시간 창 문제입니다. 대부분의 스캔 탐지는 "짧은 시간에 많은 대상"을 기준으로 하므로, 같은 규모라도 오랜 시간에 흩어지면 기준에 걸리지 않습니다. 이 글은 이런 패턴이 로그에서 어떻게 보이고 어떤 분석으로 찾는지만 다룹니다.
| 비교 | 일반 스캔 | Slow Scan |
|---|---|---|
| 지속 시간 | 수 초~수 분 | 수 시간~수 일 |
| 시간 창당 이벤트 | 많음 | 적음(잡음 수준) |
| 짧은 시간 창 임계치 탐지 | 잘 걸림 | 잘 걸리지 않음 |
| 긴 시간 창 집계 | 걸림 | 걸림 |
스캔 탐지 규칙은 보통 "시간 창 T 안에 서로 다른 포트(또는 IP)가 N개 이상"의 형태입니다. 같은 전체 규모라도 시간 창이 짧으면 창 하나에 들어오는 수가 N보다 작아집니다.
같은 출발지, 같은 대상, 전체 500개 포트 확인
↓
[짧은 창: 1분] 창마다 0~1개 포트 → 임계치 미달 → Alert 없음
[중간 창: 1시간] 창마다 수 개~수십 개 → 경계선
[긴 창: 24시간] 500개 → 스캔으로 판단 가능
↓
방어 측 대응 방향
├─ 긴 시간 창 집계 규칙 추가 (SIEM 예약 검색)
├─ 출발지별 누적 지표(서로 다른 대상 수, 활동 일수) 추적
├─ 평소 기준선과 비교
└─ 긴 기간 로그 보존 (창보다 짧게 보존하면 분석 불가)
| 탐지 접근 | 방법 | 한계 |
|---|---|---|
| 긴 시간 창 집계 | 24시간·7일 단위 출발지별 distinct 포트·IP | 계산량 증가, 실시간성 낮음 |
| 누적 추적 | 출발지별 처음 본 시각, 활동 일수, 누적 대상 수 | 출발지가 바뀌면 분산됨 |
| 기준선 비교 | 이 대상이 평소 받는 출발지·포트 분포와 비교 | 기준선 학습 기간 필요 |
| 대상 중심 집계 | 한 대상 기준 여러 출발지 합산 | 인터넷 배경 소음과 섞임 |
실습 예시 — 본인 소유 실습망에서 여러 날의 방화벽 로그를 합쳐 출발지별 활동 일수와 누적 목적지 포트 수를 계산하는 방어 측 명령입니다(Ubuntu 기준 경로, Rocky는 /var/log/messages*, 압축 로그는 zgrep, 값은 환경마다 다름).
# 여러 날 로그에서 (날짜, 출발지, 목적지 포트) 추출 → 출발지별 활동 일수·누적 포트 수
sudo zgrep -h 'DPT=' /var/log/kern.log* \
| awk '{d=$1" "$2; match($0,/SRC=[0-9.]+/); s=substr($0,RSTART,RLENGTH);
match($0,/DPT=[0-9]+/); p=substr($0,RSTART,RLENGTH);
days[s" "d]=1; ports[s" "p]=1}
END {for (k in days) {split(k,a," "); nd[a[1]]++}
for (k in ports) {split(k,a," "); np[a[1]]++}
for (s in np) print np[s], nd[s], s}' \
| sort -rn | head
결과 형식 예시(누적 포트 수, 활동 일수, 출발지 / 값은 환경마다 다름):
512 6 SRC=203.0.113.88
40 1 SRC=198.51.100.7
3 7 SRC=192.168.10.15
| 관찰 | 해석 |
|---|---|
| 203.0.113.88: 6일간 512개 포트 | 하루 약 80~90개씩 누적 → 저속 스캔 형태 |
| 198.51.100.7: 하루 40개 | 짧은 기간 소규모 → 일반 임계치로 판단 |
| 192.168.10.15: 7일간 3개 포트 | 매일 같은 소수 포트 → 정상 업무 가능성, 기준선 확인 |
같은 출발지의 시간 간격 분포는 이벤트 시각을 정렬해 인접 차이를 구하면 확인할 수 있습니다.
| 흔적 위치 | 확인 내용 |
|---|---|
| 방화벽(장기 보존) | 출발지별 누적 대상 수, 활동 일수 |
| SIEM 예약 검색 | 24시간·7일 창 distinct 집계 결과 |
| IDS | 짧은 창 Alert 부재 자체(탐지 공백 확인) |
| 위협 인텔리전스 | 출발지 평판, 다른 조직 관찰 정보 |
관제자가 확인할 질문
오탐 주의: 모니터링 시스템의 주기 점검, 소프트웨어 업데이트 확인, 장시간 유지되는 정상 서비스 연결의 재시도는 "긴 기간·일정 간격" 모양을 만듭니다. 이들은 매번 같은 소수 포트를 반복한다는 점이 누적 대상이 늘어나는 저속 스캔과 다릅니다.