nmap是网络扫描和安全审计中常用的工具,通过命令行参数控制扫描行为,掌握nmap命令的输入方式需要理解其基本语法、选项组合及目标指定方法,以下从核心结构、常用选项、目标格式、综合示例及注意事项等方面详细说明。
nmap命令的基本输入结构
nmap命令的基本语法为:nmap [选项] [目标]
,选项”用于定义扫描类型、参数和行为,“目标”指定要扫描的主机、端口或网络范围,选项可以单独使用(如-sS
),也可以组合使用(如-sV -O
),多个选项之间无顺序要求;目标可以是单个IP、域名、IP范围或文件列表,具体格式多样,需根据扫描场景选择。
目标指定:多种格式灵活定义
nmap支持通过多种格式指定扫描目标,以下为常见目标类型及示例(可通过表格对比):
目标类型 | 示例 | 说明 |
---|---|---|
单个IP地址 | 168.1.1 |
扫描指定IP的所有默认端口(1-1000及常见高端口) |
域名 | www.example.com |
自动解析域名为IP后进行扫描 |
IP地址范围 | 168.1.1-10 |
扫描192.168.1.1到192.168.1.10共10个主机 |
CIDR网络段 | 168.1.0/24 |
扫描192.168.1.0网段下所有254个主机(/24表示子网掩码255.255.255.0) |
多个目标(逗号分隔) | 168.1.1,192.168.1.5 |
同时扫描指定的多个IP,目标间用英文逗号分隔 |
从文件读取目标 | @targets.txt |
文件targets.txt 中每行一个目标(IP/域名/范围),批量扫描时使用 |
排除特定目标 | 168.1.0/24 --exclude 192.168.1.1,192.168.1.5 |
扫描网段时排除指定IP,适用于跳过网关或关键服务器 |
常用选项:控制扫描行为的核心参数
nmap的选项丰富,以下按功能分类介绍最常用的参数,并结合场景说明用法:
扫描类型选项(定义如何探测端口)
-sS
:TCP SYN扫描(半开放扫描),仅发送SYN包,不完成三次握手,隐蔽性高,需root权限。
示例:nmap -sS 192.168.1.1
(对192.168.1.1进行SYN扫描)。-sT
:TCP connect扫描(全连接扫描),通过系统调用connect()
完成三次握手,无需root权限,但会在目标主机留下连接记录。
示例:nmap -sT example.com
(对域名进行全连接扫描)。-sU
:UDP扫描,发送UDP包探测开放端口,扫描速度较慢,常用于DNS、SNMP等UDP服务。
示例:nmap -sU -p 53,161 192.168.1.1
(扫描192.168.1.1的53(DNS)和161(SNMP)UDP端口)。-sA
:TCP ACK扫描,发送ACK包判断端口是否被过滤(防火墙规则),辅助判断网络状态。
示例:nmap -sA 192.168.1.0/24
(扫描网段内主机的ACK响应状态)。
端口选项(指定扫描范围)
-p
:指定端口,可单个、多个或范围,默认扫描1-1000及常见高端口(如3389、8080等)。
示例:nmap -p 22,80,443 192.168.1.1
(仅扫描22、80、443端口);nmap -p 1-1024 192.168.1.1
(扫描1-1024端口)。-p-
:扫描所有65535个端口,适用于全面探测。
示例:nmap -p- 192.168.1.1
(全端口扫描,耗时较长)。-F
:快速扫描,仅扫描top 1000端口,适合快速判断常见服务。
示例:nmap -F example.com
(快速扫描目标常见端口)。
主机发现选项(确定目标是否存活)
-sn
:Ping扫描(跳过端口扫描),仅通过ICMP、ARP等方式发现主机,适用于快速探测网段存活主机。
示例:nmap -sn 192.168.1.0/24
(扫描网段内存活主机,输出IP和MAC信息)。-PE
:ICMP Echo Request Ping,发送标准ICMP回显请求(类似ping命令),需目标主机响应ICMP。
示例:nmap -PE 192.168.1.1
(通过ICMP探测主机是否存活)。-Pn
:跳过主机发现,直接对所有目标进行端口扫描,适用于禁用ICMP或防火墙阻止Ping的主机。
示例:nmap -Pn 192.168.1.1
(强制扫描目标,即使无Ping响应也尝试端口探测)。
服务与版本探测选项(识别端口运行的服务)
-sV
:探测开放端口运行的服务版本(如Apache 2.4.41、SSH 7.4),通过发送探测包分析响应。
示例:nmap -sV 192.168.1.1
(扫描端口并识别服务版本)。-sC
:默认脚本扫描,运行nmap默认的NSE脚本(如http-title
、ssl-cert
),快速收集服务信息。
示例:nmap -sC 192.168.1.1
(执行默认脚本扫描,获取服务指纹)。-A
: aggressive模式,启用-sV
、-O
(操作系统检测)、--script=default
等高级功能,适合深度扫描。
示例:nmap -A 192.168.1.1
( aggressive扫描,包含服务版本、系统类型、脚本信息)。
输出选项(保存扫描结果)
-oN
:正常格式输出,保存为可读文本文件。
示例:nmap -oN scan.txt 192.168.1.1
(将扫描结果保存到scan.txt)。-oX
:XML格式输出,适合工具解析(如Nessus、OpenVAS)。
示例:nmap -oX scan.xml 192.168.1.1
(保存为XML格式)。-oG
:Grepable格式输出,便于用grep、awk等工具处理。
示例:nmap -oG scan.grep 192.168.1.1
(保存为可grep格式)。-oA
:所有格式输出,同时生成.nmap
(正常)、.xml
、.gnmap
(Grepable)三种文件。
示例:nmap -oA full_scan 192.168.1.1
(生成完整的多格式结果文件)。
其他实用选项
-T<0-5>
:调整扫描速度(T0最慢,T5最快),默认T4,T0适用于隐蔽扫描,T5可能被防火墙拦截。
示例:nmap -T4 192.168.1.0/24
(以较快速度扫描网段)。--open
:仅显示开放端口,过滤掉关闭、过滤状态的结果,简化输出。
示例:nmap --open -p 80,443 192.168.1.0/24
(扫描网段并仅输出开放80/443端口的主机)。
综合示例:组合选项实现复杂扫描
场景1:快速扫描网段存活主机及开放端口
nmap -sn -T4 192.168.1.0/24 | grep "Nmap scan report" | awk '{print $5}'
解释:-sn
发现存活主机,-T4
加速扫描,通过管道过滤出IP地址。
场景2:深度扫描目标主机(全端口+服务版本+系统检测+脚本)
sudo nmap -p- -sV -O -sC -A -oA deep_scan 192.168.1.1
解释:sudo
获取root权限(-sV
、-A
可能需要),-p-
全端口扫描,-sV
服务版本探测,-O
系统检测,-sC
默认脚本,-A
aggressive模式,结果保存为deep_scan.nmap/.xml/.gnmap
。
场景3:扫描特定UDP服务并保存XML结果
nmap -sU -p 53,123,161 --script "dns-query,snmp-sysdescr" -oX udp_scan.xml 192.168.1.1
解释:-sU
扫描UDP端口,-p
指定53(DNS)、123(NTP)、161(SNMP),--script
指定DNS和SNMP相关脚本,结果保存为XML格式。
注意事项
- 权限问题:部分扫描(如
-sS
、-sA
、-O
)需要root权限,普通用户会提示“requires root privileges”,可通过sudo
执行。 - 法律合规:仅扫描授权目标(如自有网络、授权测试项目),未经授权扫描他人主机可能违反法律。
- 网络影响:全端口扫描(
-p-
)或UDP扫描可能对目标网络造成负载,建议在非业务时段进行,或使用-T
选项调整速度。 - 错误处理:若目标无响应(显示“down”),可尝试
-Pn
跳过Ping检测;若端口显示“filtered”,可能是防火墙阻拦,可结合-sA
或-sV
进一步确认。
相关问答FAQs
Q1: nmap扫描提示“requires root privileges”,怎么办?
A: 部分扫描技术(如TCP SYN扫描-sS
、TCP ACK扫描-sA
、操作系统检测-O
)需要root权限,因为它们需要直接操作原始网络数据包,解决方法:在命令前加sudo
(Linux/macOS)或以管理员身份运行(Windows)。sudo nmap -sS 192.168.1.1
,若无法获取root权限,可改用-sT
(TCP connect扫描),该选项普通用户即可使用,但会留下完整连接记录。
Q2: 如何扫描指定UDP端口,并识别服务版本?
A: 扫描UDP端口需使用-sU
选项,结合-p
指定端口,-sV
探测服务版本。nmap -sV -p 53,161,500 192.168.1.1
,其中-sU
指定UDP扫描,-p 53,161,500
扫描DNS(53)、SNMP(161)、IKE(500)端口,-sV
尝试识别各端口运行的服务版本(如BIND、net-snmp),由于UDP是无连接协议,扫描速度较慢,可添加-T3
或-T4
调整速度(nmap -sU -sV -T4 -p 53,161 192.168.1.1
)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/20568.html