📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 204편
이전 글: 203. Nmap이란 무엇인가 · 다음 글: 205. Host Discovery
이 글의 "사용법"은 명령 옵션을 익히는 것이 아니라, 관리자가 자기 네트워크를 점검할 때의 기본 흐름과 결과를 읽는 방법입니다. 관제자 입장에서도 같은 내용이 필요합니다. 인가된 점검 결과를 받아 노출 현황을 확인하거나, 스캔 흔적을 볼 때 "상대가 무엇을 알아냈을까"를 추정하려면 결과의 의미를 알아야 하기 때문입니다.
도구 소개와 처리 단계는 203. Nmap이란 무엇인가에서 다뤘습니다.
| 점검 흐름 단계 | 관리자가 결정하는 것 | 관제와의 연관 |
|---|---|---|
| 범위 정의 | 점검할 IP 대역, 제외 대상, 허가 문서 | 점검 서버 IP·시간을 관제에 사전 공유 |
| 호스트 확인 | 살아 있는 호스트만 추릴지 | ICMP·ARP 흔적 발생 |
| 포트 범위 | 자주 쓰는 포트만인지 전체인지 | 방화벽 로그 건수 규모 결정 |
| 서비스 확인 | 버전까지 확인할지 | 서비스 로그에 요청 흔적 |
| 결과 저장 | 사람이 읽는 형식, XML 등 | 이전 결과와 비교해 변화 추적 |
인가된 점검은 다음 흐름으로 진행하는 것이 일반적입니다.
[허가 확보] 점검 범위·기간·수행자 문서화
↓
[관제 공유] 점검 서버 IP, 대상 대역, 시간대 → SOC 예외 등록(기간 한정)
↓
[점검 실행] 본인 소유·허가 범위에서만
↓
[결과 해석] 포트 상태별 의미 확인 → 의도하지 않은 open 포트 식별
↓
[조치·기록] 불필요 서비스 중지, 방화벽 정책 수정, 결과 보관 → 다음 점검과 비교
결과의 핵심은 포트 상태입니다. Nmap은 대상의 응답 모양을 기준으로 여섯 가지 상태를 표시합니다.
| 상태 | 의미 | 판단 근거가 된 응답(TCP 기준) |
|---|---|---|
| open | 서비스가 연결을 받고 있음 | SYN에 SYN/ACK |
| closed | 호스트는 응답하지만 서비스 없음 | SYN에 RST |
| filtered | 필터링 장비 때문에 판단 불가 | 무응답 또는 ICMP Unreachable(Code 1, 2, 3, 9, 10, 13) |
| unfiltered | 도달은 하지만 open/closed 판단 불가 | ACK 방식 점검에서 RST 수신 |
| open|filtered | 열림과 필터링을 구분 못 함 | 무응답(주로 UDP 등) |
| closed|filtered | 닫힘과 필터링을 구분 못 함 | 일부 특수 방식에서만 |
| 결과 | 관리자 조치 | 관제 확인 |
|---|---|---|
| 의도하지 않은 open | 서비스 중지 또는 접근 제한 | 해당 포트의 과거 접속 기록 확인 |
| 외부에서 closed 다수 | 방화벽 기본 차단 정책 점검 | 외부 스캔에 RST가 나가는지 확인 |
| 기대한 서비스가 filtered | 정책 누락·장애 여부 점검 | 방화벽 차단 로그 확인 |
예시(값은 환경마다 다름) — 본인 소유 실습망의 서버 1대를 관리자 권한으로 점검한 결과 화면의 형식입니다.
Nmap scan report for 192.168.10.20
Host is up (0.00041s latency).
Not shown: 996 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
8080/tcp filtered http-proxy
MAC Address: 00:0C:29:AA:BB:CC (VMware)
| 항목 | 해석 |
|---|---|
| Host is up | 호스트 확인 단계에서 응답을 받음 |
| Not shown: 996 closed (reset) | 나머지 포트는 RST로 응답해 목록에서 생략 |
| 3306/tcp open | DB 포트가 점검 위치에서 도달 가능 → 의도 여부 확인 필요 |
| 8080/tcp filtered | 호스트 방화벽 등이 이 포트만 차단 |
| MAC Address | 같은 브로드캐스트 도메인에서 점검했을 때만 표시 |
같은 시점에 대상 서버 쪽에서 점검 트래픽을 확인하는 방어 측 명령은 다음과 같습니다(실습 예시, Rocky/Ubuntu 공통, 인터페이스명은 환경마다 다름).
# 점검 서버(192.168.10.50)에서 온 SYN과 서버가 보낸 RST만 관찰
sudo tcpdump -nn -i ens33 'host 192.168.10.50 and tcp[tcpflags] & (tcp-syn|tcp-rst) != 0'
📷 [실습 화면 삽입 위치] 점검 결과 화면과 같은 시간대 대상 서버의 tcpdump 출력(SYN 다수, RST 다수)을 나란히 배치한 화면
| 흔적 위치 | 인가 점검일 때 기대되는 모습 |
|---|---|
| 방화벽 | 등록된 점검 IP, 공유된 시간대, 공유된 대역 |
| IDS | 스캔 Alert 발생 → 예외 목록과 대조 후 종결 |
| 서버 패킷 | 결과 화면의 open/closed와 SYN/ACK·RST 응답이 일치 |
관제자가 확인할 질문
오탐 주의: 인가 점검이라도 공유 범위를 벗어났다면 예외로 처리하지 않고 확인 요청합니다. 점검 IP를 영구 예외로 등록하면, 그 서버가 장악되었을 때 탐지가 불가능해집니다.