nmap是网络安全领域最常用的端口扫描和网络探测工具之一,由Gordon Lyon(化名Fyodor)开发,功能强大且灵活,它不仅可以扫描目标主机的开放端口,还能检测操作系统类型、服务版本、防火墙状态等信息,广泛应用于网络管理、安全审计和渗透测试,以下是nmap命令的详细使用指南,涵盖常用参数、扫描类型及实际应用场景。

基础扫描命令
nmap的基本语法为nmap [选项] 目标,目标可以是IP地址、域名或IP范围。
-
单主机扫描:
nmap 192.168.1.1:扫描目标主机的所有TCP端口(默认1000个常见端口)。nmap -p 1-65535 192.168.1.1:扫描所有TCP和UDP端口(需加-sU参数)。
-
多主机扫描:
nmap 192.168.1.1-10:扫描192.168.1.1到192.168.1.10的主机。nmap 192.168.1.0/24:扫描整个C类网段。
-
域名扫描:
(图片来源网络,侵删)nmap example.com:扫描域名的默认端口。
常用参数详解
端口扫描选项
| 参数 | 说明 | 示例 |
|---|---|---|
-p |
指定端口范围 | nmap -p 80,443 192.168.1.1 |
-F |
快速扫描(仅扫描100个常见端口) | nmap -F 192.168.1.1 |
-sS |
TCP SYN扫描(半开放扫描,隐蔽性强) | nmap -sS 192.168.1.1 |
-sT |
TCP连接扫描(完整三次握手,易被检测) | nmap -sT 192.168.1.1 |
-sU |
UDP扫描 | nmap -sU 192.168.1.1 |
-sA |
TCP ACK扫描(用于检测防火墙状态) | nmap -sA 192.168.1.1 |
主机发现选项
| 参数 | 说明 | 示例 |
|---|---|---|
-sn |
Ping扫描(仅发现主机,不扫描端口) | nmap -sn 192.168.1.0/24 |
-Pn |
跳过主机发现,直接扫描所有主机 | nmap -Pn 192.168.1.1 |
-PE |
使用ICMP Echo请求 | nmap -PE 192.168.1.1 |
扫描技术选项
| 参数 | 说明 | 示例 |
|---|---|---|
-O |
启用操作系统检测 | nmap -O 192.168.1.1 |
-sV |
服务版本检测 | nmap -sV 192.168.1.1 |
--script |
使用Nmap脚本引擎 | nmap --script vuln 192.168.1.1 |
输出格式选项
| 参数 | 说明 | 示例 |
|---|---|---|
-oN |
标准输出格式 | nmap -oN result.txt 192.168.1.1 |
-oX |
XML格式输出(适合工具解析) | nmap -oX result.xml 192.168.1.1 |
-oG |
Grepable格式 | nmap -oG result.gnmap 192.168.1.1 |
其他实用选项
| 参数 | 说明 | 示例 |
|---|---|---|
-T<0-5> |
扫描速度(0最慢,5最快) | nmap -T4 192.168.1.1 |
-v |
详细输出 | nmap -v 192.168.1.1 |
-A |
全面扫描(包含OS检测、版本探测等) | nmap -A 192.168.1.1 |
高级扫描技巧
-
防火墙/IDS规避:
-f:使用分片数据包绕过检测。-D RND:10:随机 decoy 扫描,隐藏真实IP。--source-port 53:指定源端口为53(DNS端口)。
-
扫描延迟与超时:
--host-timeout 60s:主机扫描超时时间。--max-retries 3:最大重试次数。
-
脚本扫描:
nmap --script http-title 192.168.1.1:获取网页标题。nmap --script smb-enum-shares:枚举SMB共享资源。
实际应用场景
-
网络资产盘点:
使用nmap -sn 192.168.1.0/24快速发现网内存活主机,结合-oG生成资产清单。
(图片来源网络,侵删) -
漏洞扫描:
通过nmap --script vuln检测目标是否存在已知漏洞(如Heartbleed、Shellshock等)。 -
服务枚举:
对开放端口的服务版本进行探测(如nmap -sV -p 80,443 192.168.1.1),识别潜在风险服务。
相关问答FAQs
问题1:nmap扫描被目标防火墙拦截怎么办?
解答:可尝试以下方法规避检测:
- 使用
-sS(SYN扫描)代替-sT(TCP连接扫描),减少握手痕迹。 - 添加
-f参数分片数据包,或使用--source-port指定非常用端口。 - 降低扫描速度(
-T0或-T1)避免触发频率限制。
问题2:如何通过nmap检测Web服务器是否支持HTTPS?
解答:使用-sV和--script ssl-enum-ciphers组合命令:
nmap -sV -p 443 --script ssl-enum-ciphers example.com
该命令会检测HTTPS服务版本及支持的加密套件,判断是否存在协议漏洞(如POODLE、BEAST)。
通过灵活运用nmap的参数和脚本,可以高效完成网络探测与安全评估,是安全从业者的必备工具。
