NMAP를 이용한 포트스캔

h_skill·2026년 5월 7일

핑(ICMP) 스캔

ICMP란 IP네트워크에서 사용되는 가장 기본적인 프로토콜이며,
전송계층에서 IP패킷을 처리할 때 주로 네트워크 장비 간 상태 및 오류 정보 전달을하며, 패킷이 정상적으로 도달하였는지를 알려주는 프로토콜 이다.

핑 스캔을 통하여 해당IP를 가진 장비에 접속이 가능한지 확인해 볼 수 있다.

#Nmap에서의 핑스캔 방법
sudo nmap -sn <ip주소>

#ping 명령어와 동일하다.
ping <ip주소>

일부 ICMP를 허용하지 않는 호스트나 방화벽이 있기 때문에 핑 스캔 결과로 호스트의 네트워크 연결 가능 여부를 판단하는 것은 섣부를 수 도 있다.

TCP CONNECT 스캔

기본적으로 플래그없이 ip주소만 입력한뒤 스캔을 진행하면 가장 유명한포트 1000개를 대상으로 TCP CONNECT 스캔이 진행된다.

#TCP CONNECT 스캔
nmap <ip주소>

#가장 많이 사용되는상위 n개의 포트 스캔 하는 방법
nmap <ip주소> --top-ports <n>

# 포트를 지정해서 스캔 하는 방법
nmap -p <port번호, 범위> <ip주소>

# 1번부터 65535번 까지 모든 TCP 포트를 스캔
nmap -p- <ip주소>

열려 있는포트를 찾을경우 wireshark를 통해 핸드쉐이크를 통해 연결이진행 되는 것을 볼 수 있다.

SYN -> SYN,ACK -> ACK

포트스캔의 결과는 아래와 같은 방식으로 나오는데,

PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp filtered https

OPEN / Closed / filtered 로 상태를 알 수 있다.

TCP SYN 스캔

TCP SYN 스캔은 핸드쉐이크의과정에서 마지막 ACK 신호를 보내지 않는 스캔 방식이다.

SYN -> SYN/ACK -> RST 

반만 연결 했다 라고 해서 Half-Open이라고도 불린다.

#root 권한 으로  명령어를 실행해야하며 -sS 옵션을 사용한다.
sudo nmap -sS <ip주소>

UDP 스캔

UDP는 연결 개념이 없기 때문에 응답이 없는 경우
open|filtered 상태로 표시되는 경우가 많다.

sudo nmap -sU <ip주소>

스캔 속도 조절

# Timing Template 
# 기본으로는 T3 가 사용됨, T5를 사용할시 매우 빠르지만 오탐가능성 높음
# 일반적으로 T4를 가장 많이 사용
nmap -T3 <ip주소>

# 초당 패킷속도 (--min-rate)
nmap --min-rate 1000 <IP주소>

# 패킷 간 딜레이 (--scan-delay)
nmap --scan-delay 1s <ip주소>

# 재시도 횟수 (--max-retries)
nmap --max-retries 1 <ip주소>

그외 플래그

# 열린 포트만 확인하고 싶을때 
nmap <ip주소> --open


# nmap은 포트스캔을 하기전에 핑으로 호스트가 살아있는지 확인하는 과정을 거친다.
# 위의 과정을 무시하고 바로 포트스캔을 위해서는 -Pn 플래그를 사용한다.
nmap -Pn <ip주소>

# 출력결과를 저장하고 싶을때 (.nmap, .xml, .gnmap 파일)
nmap <ip주소> -oA <file name> 

# 네트워크 서비스 정보
nmap -sV <ip주소>

# 기본 NSE(Nmap Scripting Engine) 스크립트 수행
# 서비스 정보 수집, 설정 확인등 수행
nmap -sC <ip주소>

# NSE 스크립트 활용
# Kali Linux'/usr/share/nmap/scripts' 디렉토리에서 사용가능한 스트립트 확인이 가능하다.
nmap --script <스크립트명> <ip주소>

https://nmap.org/

0개의 댓글