본문 바로가기
Infra & Security Eng/Network & Security

서버 주요 포트 번호와 포트 스캔(Scan) 유형 총정리

by 엔지니어 E 2026. 3. 9.
반응형

1. 서버(Server) 주요 서비스 및 포트 번호

서버는 클라이언트의 접속을 기다리기 위해 아래와 같이 약속된 포트를 열어둔

분류 포트 번호 서비스명 서버에서의 역할 (서비스 내용)
파일 전송 21 FTP 파일 전송 시 인증과 컨트롤을 담당하는 문
  69 TFTP 인증 없이 단순하게 파일을 전송할 때 사용
원격 제어 23 Telnet 원격지 서버의 **실행 창(터미널)**을 얻어낼 때 사용
  111 RPC 원격에서 서버의 프로세스를 실행할 수 있게 함
메일 서비스 25 SMTP 메일을 보낼 때(발신) 사용하는 서비스
  110 POP3 서버의 메일을 읽어올 때 사용 (읽으면 서버에서 삭제 가능)
  143 IMAP 메일을 읽어도 서버에 남겨두는(* POP3과 다름) 방식의 수신 서비스
웹/이름 해석 80 HTTP 일반적인 웹 서비스 제공
  53 DNS 도메인 이름을 IP 주소로 해석해 주는 서비스
관리/공유 138 NetBIOS 윈도우 환경에서 파일/프린터를 공유하기 위한 서비스
  161 SNMP 네트워크 장비 관리 및 모니터링 서비스

* 클라이언트는 죽을 수도 있기 때문에 포트번호가 중요하지 않음

2. 스캔(Scan)의 종류와 특징

스캔은 어떤 IP가 살아있고, 어떤 서버 포트(데몬)가(어떤 포트에서 서비스 하고 있는지) 열려 있는지 확인하는 과정

1) 호스트 생존 확인 (ICMP Scan)

  • Ping 활용: 응답 여부로 컴퓨터가 살아있는지 확인
  • OS 판별: 응답 패킷의 TTL 값을 보고 운영체제 추측
    • TTL=64: 리눅스 (Linux)
    • TTL=128: 윈도우 (Windows)
  • 네트워크 거리: ms(응답 시간) 단위로 물리적 거리 파악

* ms 단위가 짧다면 나랑 가까운 네트워크 라는것을 알 수 있음

 

2) TCP 포트 스캔 (데몬 확인)

TCP나 UDP를 이용한 Scan은 호스트를 대상으로 하는 것이 아니라 포트를 대상으로 한다 

스캔 방식 원리 및 특징
TCP Open Scan (표준 연결)

이 방식은 일반적인 3-Way Handshaking 과정을 끝까지 완료하여 포트 상태를 확인

1. 포트가 열려 있을 경우

서버에 해당 서비스 데몬이 메모리에 떠 있어 접속이 가능한 상태

1)공격자 → 대상 (SYN): 공격자가 특정 포트로 접속을 요청하는 SYN 패킷을 보냄
2) 대상 → 공격자 (SYN + ACK): 포트가 열려 있으므로, 대상은 요청을 수락한다는 SYN+ACK 패킷으로 응답함 (로그 남음)
3) 공격자 → 대상 (ACK): 공격자가 최종적으로 확인 응답인 ACK 패킷을 보냄

결과: 세션이 완전히 성립(Established)되며, 공격자는 이 포트가 **'열려 있음'**을 확신하게 됨

2. 포트가 닫혀 있을 경우 
서버에 해당 서비스 데몬이 작동하지 않아 문이 닫혀 있는 상태

1) 공격자 → 대상 (SYN): 공격자가 접속 요청인 SYN 패킷을 보냄
2) 대상 → 공격자 (RST + ACK): 대상 서버는 해당 포트에서 서비스를 하지 않으므로, 연결을 강제로 거부/종료하겠다는 의미의 RST(Reset) + ACK 패킷을 즉시 반송함

결과: 공격자는 이 응답을 보고 해당 포트가 **'닫혀 있음'**을 알게됨

Stealth Scan -
TCP Half Open


이 방식은 세션을 완전히 확정(Connect)하지 않고 포트 여부만 확인한 뒤 강제로 끊어버림

1) 공격자 → 대상 (SYN): 공격자가 특정 포트로 접속 요청 패킷을 보냄
2) 대상 → 공격자 (SYN + ACK): 대상이 요청 수락 패킷을 보내 포트가 열려 있음을 알림
3) 공격자 → 대상 (RST): 공격자가 세션을 확정하지 않기 위해 강제 종료 패킷을 보냄

결과: 세션이 성립되지 않아 로그 정보가 남지 않음

2. 포트가 닫혀 있을 경우 
1) 공격자 → 대상 (SYN): 공격자가 접속 요청 패킷을 보냄
2) 대상 → 공격자 (RST + ACK): 대상이 연결 거부 패킷을 반송함

결과: 포트가 닫혀 있음을 알리며 종료됨
Stealth Scan -
FIN, NULL, XMAS 패킷을 이용한 scan


이 방식은 TCP 연결 수립 과정(3-way handshaking)을 아예 무시하고 특수한 패킷을 먼저 던져서 서버의 반응을 살핌


1. 포트가 열려 있을 경우
1)공격자 → 대상 (FIN, NULL, XMAS): 공격자가 비정상적인 플래그(FIN, NULL, 또는 XMAS)를 담은 패킷을 보냄
2) 대상 → 공격자 (응답 없음): 포트가 열려 있으므로, 대상 서버는 이 비정상적인 요청에 대해 응답할 필요가 없다고 판단하여 아무런 패킷도 보내지 않음

공격자는 아무런 응답이 오지 않는 것을 보고 이 포트가 **'열려 있음'**을 확신하게 됨 (세션을 맺지 않아 로그가 안 남음)

2. 포트가 닫혀 있을 경우 
1) 공격자 → 대상 (FIN, NULL, XMAS): 공격자가 동일하게 비정상적인 패킷을 보냄
2) 대상 → 공격자 (RST): 대상 포트의 데몬이 죽어있으므로, 서버는 규정에 따라 연결할 수 없다는 의미의 RST(Reset) 패킷을 즉시 반송함

결과: 공격자는 RST 응답을 받는 즉시 이 포트가 **'닫혀 있음'**을 알게 됨
Stealth Scan – ACK 패킷을 이용한 스캔
(현재까지 매우 유용한 방법)

모든 포트에 ACK 패킷을 보내 돌아오는 RST 패킷의 TTL과 Window Size를 분석하는 방식

1. 포트가 열려 있을 경우
1) 공격자 → 대상 (ACK): 모든 포트에 ACK 패킷을 전송함
2) 대상 → 공격자 (RST): 대상은 TTL 값이 64 이하이고, Rwin size가 0보다 큰 RST 패킷으로 응답함

결과: 공격자는 해당 조건을 만족하는 응답을 보고 포트가 열려 있음을 판단함

2. 포트가 닫혀 있을 경우 
1) 공격자 → 대상 (ACK): 동일하게 ACK 패킷을 전송함
2) 대상 → 공격자 (RST): 대상은 **TTL 값이 큰 값(OS별 상이)**이고, Rwin size가 0인 RST 패킷으로 응답함

결과: 공격자는 해당 조건의 응답을 통해 포트가 닫혀 있음을 판단함
UDP 스캔 (UDP Scan)

U
DP는 비연결형 프로토콜이라 패킷을 보냈을 때 상대방이 응답할 의무가 없다.  그래서 '응답이 없는 것'이 오히려 포트가 열려 있다는 신호가 되기도 한다

1. 포트가 열려 있을 경우
1) 공격자 → 대상 (UDP 패킷): 특정 포트로 데이터 패킷을 보냄
2) 대상 → 공격자 (응답 없음): 포트가 열려 있다면 대상은 패킷을 받고 자신의 일을 할 뿐, 아무런 응답을 보내지 않음

결과: 공격자는 아무런 응답(무응답)이 오는 것을 보고 이 포트가 **'열려 있음'**을 추측

2. 포트가 닫혀 있을 경우
1) 공격자 → 대상 (UDP 패킷): 동일하게 데이터 패킷을 보냄
2) 대상 → 공격자 (ICMP unreachable): 포트가 닫혀 있으면 서버는 "여기로는 연결할 수 없다"는 의미의 ICMP unreachable 패킷을 반송함

결과: 공격자는 ICMP unreachable 패킷을 받는 즉시 이 포트가 **'닫혀 있음'**을 확신하게 됨 

참고사항
FIN 패킷: 접속을 끊읍시다 라고 보내는 패킷
NULL 패킷: 모든 플래그가 0(비어있음) - 아무것도 없는 패킷 (비정상 패킷)
XMAS 패킷: FIN, PSH, URG 플래그를 모두 설정 (비표준 패킷)