Nmap은 네트워크 탐색 및 보안 감사를 위해 전 세계적으로 가장 널리 사용되는 오픈소스 기반의 네트워크 스캐너입니다. 관리자나 보안 전문가가 네트워크에 연결된 기기(호스트), 제공 중인 서비스(포트), 운영체제(OS), 방화벽 상태 등을 파악하는 데 주로 활용됩니다.

1. 작동 원리
Nmap은 대상 네트워크나 호스트를 향해 특별하게 조작된 원시 IP 패킷(Raw IP Packets)을 전송합니다. 이후 대상으로부터 돌아오는 응답 패킷(예: TCP SYN/ACK, RST, ICMP 응답 등)의 패턴을 분석하여 네트워크 구조와 호스트의 상태를 역추적(추론)하는 방식으로 작동합니다. TCP/IP 프로토콜의 표준 규격과 각 운영체제별 네트워크 스택 구현의 미세한 차이를 이용해 정확한 정보를 수집합니다.
2. 주요 기능
- 호스트 탐지 (Host Discovery): 네트워크상에 현재 켜져 있고 통신이 가능한 기기(PC, 서버, 라우터 등)가 무엇인지 찾아냅니다. (흔히 '핑 스캔'이라고 부릅니다.)
- 포트 스캐닝 (Port Scanning): 특정 호스트에서 외부와 통신하기 위해 열어둔 포트 번호를 확인합니다. 이를 통해 어떤 서비스가 실행 중인지 유추할 수 있습니다.
- 서비스 및 버전 탐지 (Version Detection): 단순히 포트가 열려 있다는 것을 넘어, 해당 포트에서 동작 중인 애플리케이션의 정확한 이름과 버전 정보까지 알아냅니다. (예: 80번 포트에서 Apache 2.4.41 실행 중)
- 운영체제 탐지 (OS Detection): 수집된 패킷의 지문(Fingerprint)을 Nmap의 내부 데이터베이스와 대조하여 대상 기기의 운영체제 종류와 버전을 추정합니다.
- 스크립트 엔진 (NSE, Nmap Scripting Engine): 루아(Lua) 프로그래밍 언어로 작성된 스크립트를 이용하여, 네트워크 취약점 탐지, 백도어 확인, 고급 정보 수집 등의 복잡한 작업을 자동화합니다.
3. Nmap이 판별하는 포트의 상태
포트 스캐닝 결과, Nmap은 포트의 상태를 크게 다음 세 가지 주요 상태로 분류합니다.
| 상태 (State) | 설명 | 원인 및 의미 |
| Open (열림) | 애플리케이션이 해당 포트에서 연결(TCP)이나 패킷(UDP)을 적극적으로 수용하고 있는 상태입니다. | 보안 점검 시 가장 주의 깊게 살펴봐야 할 포트입니다. |
| Closed (닫힘) | 포트에 접근은 가능(응답이 옴)하지만, 현재 수신 대기 중인 애플리케이션이 없는 상태입니다. | 호스트가 살아있음을 증명하지만, 제공하는 서비스는 없습니다. |
| Filtered (필터링됨) | 방화벽, 라우터 규칙 등에 의해 패킷이 차단되어 Nmap이 포트의 개방 여부를 판단할 수 없는 상태입니다. | 대상 포트로 보낸 패킷이 버려지거나(Drop) 접근 제한 메시지를 받은 경우입니다. |
4. 구체적인 사용 예시
명령어 인터페이스(CLI)를 기준으로, 목적에 따른 대표적인 Nmap 사용 예시는 다음과 같습니다.
- 기본 스캔: nmap 192.168.0.1
- 가장 널리 쓰이는 상위 1,000개의 포트를 대상으로 대상 IP의 포트 상태를 확인합니다.
- 특정 포트 지정 스캔: nmap -p 80,443,8080 192.168.0.1
- 웹 서비스와 관련된 80(HTTP), 443(HTTPS), 8080 포트만 집중적으로 스캔하여 시간을 단축합니다.
- 대역 전체 호스트 탐지 (핑 스캔): nmap -sn 192.168.0.0/24
- C클래스 네트워크(192.168.0.0 ~ 192.168.0.255) 전체를 대상으로 포트 스캔 없이 활성화된 IP만 빠르게 찾아냅니다.
- 공격적/종합적 스캔 (Aggressive Scan): nmap -A 192.168.0.1
- OS 탐지, 버전 탐지, 기본 스크립트 스캔(NSE), 경로 추적(Traceroute) 기능을 한 번에 모두 실행합니다. 대상에 대한 가장 풍부한 정보를 얻을 수 있지만, 스캔 시간이 오래 걸리고 보안 장비에 탐지될 확률이 매우 높습니다.
'보안' 카테고리의 다른 글
| [보안점검도구] Burp Suite(버프 스위트) (0) | 2026.02.22 |
|---|---|
| [보안점검도구] Paros (Paros Proxy) (0) | 2026.02.22 |
| [보안점검도구] SpotBugs: 자바(Java) 정적 코드 분석 도구 (0) | 2026.02.22 |
| [보안점검도구] OWASP ZAP (Zed Attack Proxy) (0) | 2026.02.22 |
| [보안점검도구] 메타스플로잇(Metasploit) (0) | 2026.02.22 |