📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 244편
이전 글: 243. 시간대와 이벤트 빈도 분석 · 다음 글: 245. Scan과 공격의 연관성 분석

1. 개념

스캔 판단의 기본은 "평소와 다르다" 입니다. 그런데 "평소"를 모르면 모든 대량 연결이 스캔처럼 보이고, 반대로 스캔이 평범해 보이기도 합니다. 이 글은 정상 트래픽과 스캔 트래픽을 가르는 정량 지표와, 그 비교 기준이 되는 기준선(baseline) 을 다룹니다.

정상 통신은 대부분 목적을 달성합니다. 연결이 성립하고, 데이터가 오가고, 같은 서비스를 반복해서 씁니다. 스캔은 질문만 하고 대화하지 않습니다. 연결은 많지만 성립 비율이 낮고, 데이터는 거의 없으며, 대상은 넓게 퍼집니다.

지표정상 트래픽(일반적)스캔 트래픽(일반적)
연결 성립 비율높음낮음(RST·무응답 多)
흐름당 데이터량요청·응답 수 KB 이상0 또는 수십 바이트
고유 목적지 포트소수(쓰는 서비스만)다수
고유 목적지 호스트업무 대상 서버 몇 대대역 전체
흐름당 패킷 수수십 개 이상1~3개
목적지 포트 반복같은 포트 반복 사용포트당 1~2회

2. 동작 원리

비교는 같은 출발지(또는 같은 유형 자산)의 평소 값과 현재 값을 나란히 놓는 것입니다.

[기준선 작성] 평소 기간(예: 지난 2주)의 출발지·자산 유형별 지표
   │  - 시간당 고유 목적지 포트·호스트 수
   │  - 연결 성립 비율, 흐름당 평균 바이트
   ↓
[현재 값] 의심 구간의 같은 지표
   ↓
[비교] 기준선 대비 몇 배인가? 어떤 지표가 벗어났는가?
   ├─ 고유 포트·호스트 ↑ + 성립 비율 ↓ + 바이트 ↓ → 스캔
   ├─ 연결 수 ↑ + 성립 비율 유지 + 바이트 ↑        → 정상 부하 증가·대량 전송
   └─ 연결 수 ↑ + 한 포트 + 인증 실패 로그         → 대입 (233편 참고)
   ↓
판정 + 벗어난 지표를 근거로 기록

여러 지표를 함께 봐야 합니다. 연결 수 하나만 보면 이벤트 트래픽 증가와 스캔을 구분할 수 없지만, 성립 비율과 데이터량을 더하면 명확히 갈립니다. 대입과의 구분은 233. Brute Force와 Scan 구분에서 다뤘습니다.


3. 주요 특징

응답 플래그 비율은 패킷 수준의 좋은 지표입니다. 정상 TCP 연결 시도는 대부분 SYN/ACK를 받지만, 스캔은 닫힌 포트의 RST 응답이 대다수를 차지합니다.

패킷 지표정상스캔
SYN 대비 SYN/ACK 비율높음낮음
서버가 보낸 RST(닫힌 포트 응답)드묾많음
ICMP Port Unreachable(UDP)드묾많음(UDP 스캔)
한 출발지 포트의 목적지 포트 수1개여러 개인 경우 있음(도구에 따라)

스캔처럼 보이는 정상 트래픽도 알아 둬야 합니다.

  • 모니터링·헬스체크: 여러 서버 × 한 포트, 짧은 연결 → 수평 스캔과 비슷
  • 서비스 탐색(프린터·미디어 장치 검색): 브로드캐스트·멀티캐스트 대량 질의
  • P2P·영상회의: 넓은 범위의 높은 포트, 다수 상대 호스트
  • 서버 장애 시 클라이언트 재시도: 성립 비율 급락(단, 대상 포트는 하나)

4. 예시

실습 예시 — 본인 소유 실습망에서 캡처한 파일로 출발지별 SYN·SYN/ACK·RST 비율을 비교하는 방어 측 명령입니다(값은 환경마다 다름).

# 출발지별 SYN(연결 시도) 수
tshark -r lab.pcapng -Y 'tcp.flags.syn==1 && tcp.flags.ack==0' -T fields -e ip.src | sort | uniq -c | sort -rn

# 목적지별로 돌려준 SYN/ACK 수와 RST 수 (응답 쪽)
tshark -r lab.pcapng -Y 'tcp.flags.syn==1 && tcp.flags.ack==1' -T fields -e ip.dst | sort | uniq -c
tshark -r lab.pcapng -Y 'tcp.flags.reset==1 && tcp.flags.ack==1' -T fields -e ip.dst | sort | uniq -c

Wireshark에서는 Statistics → Conversations의 TCP 탭에서 출발지별 대화 수, 대화당 패킷·바이트를 정렬하면 "대화는 많은데 대화당 패킷이 2~3개"인 출발지가 바로 드러납니다(110. Conversations).

결과 비교 형식 예시(값은 환경마다 다름):

출발지SYN받은 SYN/ACK받은 RST대화당 평균 바이트판단
192.168.10.21(업무 PC)340336218 KB정상
192.168.10.60(모니터링)1,2001,20000.3 KB헬스체크(정상, 성립 100%)
192.168.10.772,000141,9600.06 KB스캔

분석 방법 — 모니터링 서버도 연결 수가 많고 데이터가 적지만 성립 비율이 100% 이고 대상 포트가 고정되어 있습니다. .77은 성립이 1% 미만이고 나머지는 RST 응답이므로 스캔입니다.


5. 보안 관점

  • 기준선이 없으면 임계치는 추측이 됩니다. 자산 유형별(서버·업무 PC·모니터링 서버) 기준선을 두면 같은 임계치로 생기는 오탐이 크게 줄어듭니다.
  • 공격자는 정상처럼 보이려고 속도를 낮추고 대상을 줄입니다. 그래도 성립 비율과 데이터량은 정찰의 본질상 정상과 달라지기 어렵습니다.
  • 기준선 기간에 이미 침해가 있었다면 비정상이 "정상"으로 학습됩니다. 기준선은 주기적으로 검토합니다.

6. SOC 관점

관제자가 확인할 질문

  • 이 출발지·자산 유형의 평소 값은 무엇이며, 지금 어떤 지표가 벗어났는가?
  • 연결 성립 비율과 흐름당 데이터량은?
  • 고유 포트·호스트 수의 증가가 업무 변경(새 서비스 배포, 모니터링 대상 추가)으로 설명되는가?
의심 출발지 → 기준선 조회 → 지표 비교
   ↓
성립 ↓·데이터 ↓·대상 분산 ↑ → 스캔 판정
성립 유지·데이터 ↑         → 정상 부하·전송 (다른 관점 검토)
설명되는 업무 변경         → 기준선 갱신

오탐 주의: 서버 장애 중에는 정상 클라이언트의 성립 비율이 떨어집니다. 이때는 대상 포트가 하나이고 같은 시각 여러 출발지에서 동시에 떨어진다는 점으로 구분합니다. 패킷 수준의 비정상 TCP 특징은 146. 비정상 TCP Traffic 분석을 참고합니다.


7. 핵심 정리

  • 정상 통신은 목적을 달성하고, 스캔은 질문만 하고 대화하지 않습니다.
  • 연결 성립 비율, 흐름당 데이터량, 고유 포트·호스트 수를 함께 봐야 구분됩니다.
  • 패킷 수준에서는 SYN 대비 SYN/ACK 비율과 RST 응답 비율이 좋은 지표입니다.
  • 모니터링, 서비스 탐색, P2P, 장애 시 재시도는 스캔처럼 보이는 대표적 정상 트래픽입니다.
  • 자산 유형별 기준선을 두고 주기적으로 검토하면 오탐이 줄어듭니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글