一、命令简介
nmap
(Network Mapper)是一个开放源代码的网络探测和安全审核的工具。它最初由Fyodor Vaskovich开发,用于快速地扫描大型网络,尽管它同样适用于单个主机。
nmap
的功能包括:
- 发现主机上的开放端口
- 确定目标主机上运行的服务和版本信息
- 探测操作系统、防火墙规则和设备类型
- 执行详细的TCP/IP栈指纹识别
在线示例
curl cheat.sh/nmap
二、命令参数
nmap [扫描类型] [选项] {目标}
参数
-
-sP
或-sn
:仅进行ping扫描,不进行端口扫描。 -
-sS
:TCP SYN扫描(半开放扫描),不完成TCP握手过程。 -
-sT
:TCP全连接扫描,完成TCP握手过程。 -
-p
:指定要扫描的端口,可以是单个端口或端口范围(如-p 80
或-p 1-1000
)。 -
-Pn
:不进行ping扫描,直接进行端口扫描。 -
-O
:启用操作系统检测。 -
-A
:启用操作系统检测、版本检测、脚本扫描和traceroute。 -
-oN
:将结果以普通格式保存到文件。 -
-oX
:将结果以XML格式保存到文件。 -
-oG
:将结果以Grep格式保存到文件。 -
-v
:提高输出信息的详细程度。 -
-T<0-5>
:设置扫描的计时模板(0=慢速扫描,5=快速扫描)。
三、命令示例
扫描一个特定子网内的所有主机
-
基本扫描:扫描目标主机上开放的端口。
% nmap 192.168.10.104 PORT STATE SERVICE 22/tcp open ssh 111/tcp open rpcbind 3128/tcp open squid-http
-
扫描指定端口:扫描目标主机上指定的端口或端口范围。
nmap -p 80,443 192.168.10.104 # 扫描80和443端口 nmap -p 1-1000 192.168.10.104 # 扫描1到1000号端口
-
识别操作系统:尝试识别目标主机上运行的操作系统。
sudo nmap -O 192.168.10.104
-
服务版本检测:扫描目标主机上开放端口上运行的服务版本。貌似扫描不到Windows主机。
% nmap -A 192.168.10.104 PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u1 (protocol 2.0)
-
综合扫描:执行操作系统检测、服务版本检测、脚本扫描和路由跟踪。貌似扫描不到Windows主机。
nmap -A 192.168.10.111
-
隐藏扫描:尝试不被目标主机的防火墙检测到。
sudo nmap -sS 192.168.10.111
-
扫描整个子网:扫描一个特定子网内的所有主机。
nmap 192.168.10.0/24
-
进行详细扫描并保存结果
nmap -A -oN scan_results.txt 192.168.10.111
-
扫描排除特定端口:扫描目标主机,但排除一些特定的端口。
nmap 192.168.10.111 --exclude-ports 22,25
-
扫描列表中的目标:从一个文件中读取多个目标,并扫描它们。
nmap -iL target_list.txt
注意事项:
- 未经授权对网络进行扫描可能会被视为非法行为。