Nmap 도구의 핵심 기능과 활용 전략
Nmap(Network Mapper) 은 오픈 소스 기반의 네트워크 탐지 및 보안 감사 전문 유틸리티입니다. 대용량 네트워크 환경을 신속하게 마핑하고 개별 호스트의 세부 정보를 분석하는 데 주로 사용됩니다. 원시 IP 패킷을 통해 목표 시스템의 존재 여부, 서비스 포트 상태, 운영체제 버전, 방화벽 구성 등을 식별할 수 있는 기능을 제공합니다. 시스템 관리자나 보안 전문가가 자산을 인벤토리하거나 취약점을 사전에 파악하는 데 필수적인 도구로 활용됩니다.
주요 스캔 옵션 및 플래그 설정
Nmap 의 명령어 구조는 기본적으로 [스캔 타입] [옵션] {타겟} 형태로 구성됩니다. 각 상황에 맞는 파라미터를 선택하여 효율성을 높일 수 있습니다.
| 옵션 | 기능 설명 |
|---|---|
| -sn | 호스트 발견 전용 모드 (Ping Sweep). 포트로 진행하지 않고 살아있는 장비만 식별합니다. |
| -p {port} | 특정 포트만 대상 지정. 예: -p 22,80. 지정 시 기본값인 1000 개 주요 포트를 넘어서 모든 포트(1~65535) 를 확인할 수 있습니다. |
| -iL {file} | 파일 내 IP 목록을 읽어서 순차적으로 스캔 수행합니다. 여러 대의 장비를 한꺼번에 처리할 때 유용합니다. |
| -Pn | 호스트가 응답하지 않아도(PING 실패) 강제 스캔 진행. 방화벽으로 ICMP 가 차단된 환경에 유용합니다. |
| -sU | UDP 프로토콜 기반 스캔. TCP 보다 느리지만 DNS, DHCP 등 UDP 서비스를 확인时需 필요합니다. |
| -F | 빠른 속도 스캔. 가장 일반적으로 사용되는 약 100 개의 포트만 대상으로 합니다. |
| -T{0-5} | 타임아웃 템플릿 설정. T0(Timid) 부터 T5(Insane) 까지 속도를 조절하며, 숫자가 클수록 공격적이나 정확도가 다소 떨어질 수 있습니다. |
| -A | 자동화된 고급 스캔. OS 판별, 버전 감지, 스크립트 스캔, traceroute 를 모두 포함합니다. |
| --script {name} | NSE(Nmap Scripting Engine) 스크립트 실행. 취약점 점검 또는 정보 수집을 위해 커스터마이징 가능합니다. |
포트 스캔 유형별 동작 원리
TCP 통신 방식은 포트 상태 확인 방식에 따라 몇 가지 하위 유형으로 나뉩니다.
- TCP SYN 스캔 (-sS): 가장 일반적인 방법입니다. 연결 요청(SYN) 만 보내고 응답을 기다립니다. 연결이 완료되지 않기 때문에 로그 남김 위험이 적으며 'Half-open' 스캔으로 불립니다.
- TCP Connect 스캔 (-sT): 완전한 3-way handshaking 을 수행합니다. 권한이 낮은 사용자도 사용 가능하지만, 상대방 서버에 연결 기록이 남습니다.
- TCP FIN/NULL/Xmas 스캔 (-sF, -sN, -sX): 특정 TCP Flag 만 켜거나 끄는 방식으로, 일부 방화벽을 우회할 수 있습니다. 하지만 Windows 기반에서는 정확도가 낮아 Unix 계열 대상에 권장됩니다.
실전 적용 사례
1. 네트워크 세그먼트 전체 탐지
자신들의 서브넷 내에 온라인 된 장비를 찾아내는 작업입니다.
$ nmap -sn 10.10.10.0/24
Starting Nmap 7.92 at Wed Oct 25 10:00 EDT
Nmap scan report for 10.10.10.1 (Gateway)
Host is up (0.00012s latency).
MAC Address: AA:BB:CC:DD:EE:FF
2. 특정 서비스 포트 집중 조사
전체 포트를 돌기보다 웹 서버와 SSH 관리를 위한 포트를 중심으로 확인합니다.
$ nmap -sS -p 22,80,443 192.168.10.50
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open ssl/http
3. 서비스 버전 및 OS 판별 (Aggressive Scan)
여러 검출기를 조합하여 해당 장비의 상세 정보를 최대한 확보하는 시나리오입니다.
$ nmap -A -T4 192.168.10.50
Host is up (0.00040s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
443/tcp open ssl/http OpenSSL/1.1.1f
Device type: general purpose
Running: Linux 3.X|4.X
4. 스크립트 엔진을 활용한 취약점 탐색
안전한 스크립트 집합을 사용하여 웹 애플리케이션 관련 메타데이터를 추출합니다.
$ nmap --script=http-title,ssl-cert 10.20.30.40 -p 80,443
| http-title: Company Intranet Portal
| ssl-cert: Subject: commonName=internal.corp.local
|_ Not valid before: 2022-01-01
5. 방화벽 우회를 위한 타이밍 조절
방어 메커니즘에 탐지되지 않도록 패킷 발사 속도를 제한하거나 조정하는 경우입니다.
$ nmap --min-rate 5000 -v 10.20.30.40
Initiating SYN Stealth Scan at 09:15
Completed SYN Stealth Scan at 09:16
Nmap done: 1 IP address scanned in 60.0 seconds
결과 상태 코드 해석
스캔 결과에서 포트 상태는 다음과 같이 분류됩니다.
- open: 애플리케이션이 해당 포트에서 수신 대기 중임을 의미합니다.
- closed: 포트는 열려있으나 아무런 서비스가 듣지 않는 상태입니다.
- filtered: 파이어월이나 필터링 장치로 인해 스캔 패킷이 차단되었습니다.
- open|filtered: 응답이 없어서 정확한 상태를 판단할 수 없으며, UDP 스캔에서 자주 나타납니다.
효율적인 네트워킹 관리를 위해서는 스캔 목적에 맞춰 옵션을 조합해야 하며, 특히 production 환경에서는 스캔 속도와 부하를 고려하여 신중하게 실행해야 합니다.