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.1
,192.168.11.1
,192.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.1
,192.168.11.1
,192.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
namp 操作系统检测
Nmap可以使用TCP/IP堆栈指纹来检测远程主机操作系统。如需要运行操作系统检测,请使用-O
选项运行nmap命令。
如果Nmap可以检测到主机操作系统,它将打印操作系统的信息。
sudo nmap -O scanme.nmap.org
...
Device type: general purpose
Running: Linux 5.X
OS CPE: cpe:/o:linux:linux_kernel:5
OS details: Linux 5.0 - 5.4
Network Distance: 18 hops
OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 26.47 seconds
namp 服务和版本检测
通常,系统服务监听在众所周知端口。假设远程主机运行着SSH服务,并可能监听端口22。
但是您不能绝对确定,因为系统管理员可以指定在任何端口运行SSH服务。借助namp的服务和版本检测功能,nmap将在指定端口上检测程序和程序版本。
要使用nmap的服务和版本检测,使用-sV
选项运行namp命令。例如命令sudo nmap -sV scanme.nmap.org
将会检测scanme.nmap.org
主机运行服务和版本。
您还可以使用-A
选项在一个命令中扫描操作系统版本并运行traceroute。
sudo nmap -sV scanme.nmap.org
sudo nmap -A 192.168.10.121
...
PORT STATE SERVICE VERSION
19/tcp filtered chargen
22/tcp open ssh OpenSSH 6.6.1p1 Ubuntu 2ubuntu2.13 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.4.7 ((Ubuntu))
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
9929/tcp open nping-echo Nping echo
31337/tcp open tcpwrapped
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
...
Nmap 输出
Nmap默认将信息打印到标准输出。如果您扫描大型网络或需要保存信息,则可以将nmap命令输出保存到文件中。
Nmap提供几种输出类型。要以普通文本格式保存文件,请使用-oN
选项,后跟文件名。
最流行的选项是以XML格式保存输出,请使用-oX
选项运行nmap命令,后跟文件名。
另一种非常有用的格式是grepable,可以用标准Unix命令,例如grep
,awk
和cut
进行解析。如果需要使用此格式没,请使用-oG
选项运行nmap命令。
sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt
sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml
sudo nmap -sU -p 1-1024 192.168.10.121 -oG output
Nmap 脚本引擎
Nmap最强大的功能之一就是其脚本引擎。Nmap具有非常多脚本文件,您也可以使用Lua语言编写自己的脚本。
您可以使用脚本来检测恶意软件和后门程序,执行暴力攻击等。例如要检查指定主机是否受到攻击。
可以运行命令nmap -sV --script http-malware-host scanme.nmap.org
。
nmap -sV --script http-malware-host scanme.nmap.org
结论
Nmap是用于安全审核和渗透测试的强大网络扫描工具,网络管理员主要使用它来发现主机和扫描端口。
请注意,在某些国家/地区,未经授权扫描网络是非法的。如果您有任何疑问或意见,请在下面发表评论。