Nmap是用于安全审核和渗透测试的强大网络扫描工具。它是网络管理员用于解决网络连接问题和端口扫描的基本工具之一。

Nmap还可以检测Mac地址,操作系统类型,服务版本等。本教程介绍如何使用nmap命令执行各种网络任务的基础知识。

Nmap可以所有流行的操作系统上安装。Nmap是跨平台应用程序。它最初仅发布在Linux的发行版,后来又被移植到其他系统,例如BSD,Windows和macOS。

如果您更喜欢GUI而不是命令行,可以安装Nmap的GUI版本Zenmap。可从Nmap下载页面。下载官方二进制包。安装过程很简单,并且根据您的操作系统而有所不同。

安装Nmap

如果你的系统未安装nmap,命令将显示nmap: command not found,tio命令未找到。您可以使用发行版的软件包管理器轻松安装nmap。

如果你的计算机运行的是基于Debian的Linux发行版,例如Ubuntu,Linux mint。请运行命令sudo apt update && sudo apt install nmap安装nmap。

如果你的计算机运行的是基于RedHat的Linux发行版,例如CentOS,Fedora。请运行命令sudo dnf install nmap安装nmap。

如果你的计算机运行的是MacOS,请运行命令brew install nmap安装nmap。

sudo apt update && sudo apt install nmap
sudo dnf install nmap
brew install nmap

如果你的计算机运行的是Windows,Nmap在Windows上有一些限制,并且通常比UNIX版本要慢一些。

在Windows安装Nmap的最简单选择是下载并运行安装exe文件。您可以通过命令行或启动Zenmap在Windows运行Nmap。

有关如何在Windows使用Nmap的更多信息,请查看安装后使用说明

Nmap 命令选项

Nmap通常用于审核网络安全性,网络映射,扫描端口并搜索在线设备。nmap命令语法形式是nmap [Options] [Target...]

使用Nmap的最基本示例不指定任何选项,扫描指定的计算机。nmap命令默认运行TCP端口扫描。nmap命令的默认选项是-sT

输出的内容,包括扫描的基本信息以及已打开端口,服务名称,还有端口的状态信息。

nmap scanme.nmap.org
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-16 20:19 CET
Nmap scan report for cast.lan (192.168.10.121)
Host is up (0.048s latency).
Not shown: 981 closed ports
PORT     STATE    SERVICE
8080/tcp open     http-proxy
8081/tcp open     blackice-icecap

Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds

最受欢迎的扫描选项-sS ,也就是TCP SYN扫描,它比connect选项要快,并且可用于所有兼容的TCP的堆栈。

当以root用户运行nmap时,默认会打开-sS选项。要获得更详细的输出,请添加-v-vv 选项。

如果运行UDP扫描,请以root用户使用-sU选项运行nmap命令。Nmap也支持IPv6地址。要指定IPv6主机,请使用-6选项。

sudo nmap 192.168.10.121
sudo nmap -vv 192.168.10.121
sudo nmap -sU 192.168.10.121
sudo nmap -6 fd12:3456:789a:1::1

nmap 指定目标主机

Nmap将所有不是选项的参数视为目标主机。如果参数以单破折号或双破折号-/--开头,则视为选项。

在指定目标主机时最简单的方式传递一个或多个目标地址或域名,您也可以使用CIDR表示法指定网络范围,例如命令nmap 192.168.10.0/24

要指定八位字节范围,请使用破折号。 例如,要扫描IP地址是192.168.10.1192.168.11.1192.168.12.1的主机,请运行命令nmap 192.168.10-12.1

nmap 192.168.10.121 host.to.scan
nmap 192.168.10.0/24
nmap 192.168.10-12.1

您还可以使用逗号指定目标主机。 例如命令nmap 192.168.10,11,12.1 将会扫描IP地址是192.168.10.1192.168.11.1192.168.12.1的主机。

除了以上方式指定主机之外,也可以组合上述模式作为扫描的目标主机。

要确保在扫描前指定正确的主机的IP地址范围,请使用-sL选项运行nmap命令,该选项只是仅列出目标而不会运行真正的扫描。

如果要排除指定范围内的目标,请使用--exclude选项运行nmap命令。

nmap 192.168.10,11,12.1
nmap 10.8-10.10,11,12.0/28  192.168.1-2.100,101
nmap -sL 10.8-10.10,11,12.0/28  192.168.1-2.100,101
nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12

nmap 指定扫描端口

Nmap默认对前1000个最流行的端口执行快速扫描。这些端口不是前1000个连续的端口,而是1000个最常用的端口,范围从1到1000。

如果要扫描所有TCP端口,也就是1到65535的端口,请使用-p-选项运行nmap命令。例如命令nmap -p- 192.168.10.121

命令将会打印端口的状态和服务,每个端口可以处于状态open,close,filtered。

open表示端口运行的程序响应请求,close表示端口没有程序运行,但主机不复请求。filtered主机不回复请求。

nmap -p- 192.168.10.121

端口和端口范围由-p选项指定。例如,要仅扫描443端口,可以运行命令nmap -p 443 192.168.10.121。要指定多个端口,请用逗号分隔端口。

端口范围可以用破折号指定。例如要扫描端口范围从1到1024的所有UDP端口,可以运行命令sudo nmap -sU -p 1-1024 192.168.10.121

也可以组合两种模式指定端口的范围或者多个端口。命令nmap -p 1-1024,8080,9000 192.168.10.121组合使用逗号,端口范围。

nmap还允许你使用服务名称代替端口的数值。 例如要扫描端口22,可以使用ssh代替数字端口,例如命令nmap -p ssh 192.168.10.121

nmap -p 443 192.168.10.121
nmap -p 80,443 192.168.10.121
sudo nmap -sU -p 1-1024 192.168.10.121
nmap -p 1-1024,8080,9000 192.168.10.121
nmap -p ssh 192.168.10.121

结论

Nmap是用于安全审核和渗透测试的强大网络扫描工具,网络管理员主要使用它来发现主机和扫描端口。

请注意,在某些国家/地区,未经授权扫描网络是非法的。如果您有任何疑问或意见,请在下面发表评论。