如何使用nmap命令?

评论 0 浏览 0 2020-12-17

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

Nmap还可以检测Mac地址、操作系统类型、服务版本,以及更多信息。

本文解释了如何使用nmap命令来执行各种网络任务的基本知识。

装上Nmap

Nmap是一个多平台程序,可以安装在所有主要操作系统上。它最初只作为一个Linux工具发布,后来被移植到其他系统,如BSD、Windows和macOS。

如果您喜欢图形用户界面而不是命令行,Nmap也有一个图形用户界面,叫做Zenmap

官方二进制包可以从Nmap 下载页面下载。

安装程序很简单,根据你的操作系统不同而不同。

在Ubuntu和Debian上的Nmap安装

Nmap可以从默认的Ubuntu和Debian软件仓库获得。要安装它,请运行。

sudo apt updatesudo apt install nmap

在CentOS和Fedora上的Nmap安装

在CentOS和其他红帽的衍生产品上运行。

sudo dnf install nmap

在macOS系统上安装Nmap

macOS用户可以通过从Nmap网站下载".dmg "安装包或通过Homebrew来安装Nmap。

brew install nmap

在Windows系统上安装Nmap

Nmap的Windows版本有一些限制,而且它一般比UNIX版本慢一点。

在Windows上安装Nmap最简单的方法是下载并运行自带的exe文件。

您可以从命令行或通过启动Zenmap程序在Windows上运行Nmap。关于如何在Windows上使用Nmap的更多信息,请查看安装后使用说明

使用Nmap

Nmap通常用于审计网络安全、网络映射、识别开放的端口,以及搜索在线设备。

nmap命令的简化句法如下。

nmap [Options] [Target...]

使用Nmap的最基本的例子是以标准用户身份扫描一个目标,而不指定任何选项。

nmap scanme.nmap.org

当作为没有原始数据包权限的非root用户调用时,nmap运行TCP连接扫描。在非特权模式下,(-sT)默认开启。

输出结果将是这样的,包括关于扫描的基本信息和一个开放和过滤的TCP端口的列表。

输出

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
21/tcp   open     ftp
22/tcp   open     ssh
25/tcp   open     smtp
53/tcp   open     domain
80/tcp   open     http
110/tcp  open     pop3
143/tcp  open     imap
443/tcp  open     https
587/tcp  open     submission
993/tcp  open     imaps
995/tcp  open     pop3s
1025/tcp open     NFS-or-IIS
1080/tcp open     socks
8080/tcp open     http-proxy
8081/tcp open     blackice-icecap

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

最受欢迎的扫描选项是TCP SYN扫描(-sS),它比连接选项更快,并对所有符合要求的TCP栈起作用。

nmap以具有管理权限的用户身份被调用时,-sS被默认为打开。

sudo nmap 192.168.10.121

对于更详细的输出,可以用-v-vv来增加粗体字的输出。

sudo nmap -vv 192.168.10.121

要执行UDP扫描,请以root用户身份调用带有(-sU)选项的命令。

sudo nmap -sU 192.168.10.121

关于端口扫描方法的完整列表,请访问Nmap文档页面

Nmap也支持IPv6地址。要指定一个IPv6主机,使用-6选项。

sudo nmap -6 fd12:3456:789a:1::1

指明目标主机

Nmap把所有不是选项的参数都当作目标主机。

如果参数以单或双破折号(---)开头,则被认为是选项。

最简单的选择是传递一个或多个目标地址或域名。

nmap 192.168.10.121 host.to.scan

你可以使用CIDR符号来指定一个网络范围。

nmap 192.168.10.0/24

要指定一个八位数范围,请使用破折号字符。例如,要扫描192.168.10.1192.168.11.1192.168.12.1

nmap 192.168.10-12.1

另一个你可以用来指定目标的字符是逗号。下面的命令所针对的主机与上面的命令相同。

nmap 192.168.10,11,12.1

你可以把所有的形式结合起来。

nmap 10.8-10.10,11,12.0/28  192.168.1-2.100,101

为了确保你在扫描前指定了正确的主机,可以使用列表扫描选项(-sL),它只列出目标,而不运行扫描。

nmap -sL 10.8-10.10,11,12.0/28  192.168.1-2.100,101

如果你想排除包括在你指定的范围内的目标,请使用--exclude选项。

nmap 10.8-10.10,11,12.0/28 --exclude 10.10.12.12

指明和扫描端口

默认情况下,Nmap对1000个最常用的端口进行快速扫描。这些端口不是前1000个连续端口,而是从1到65389的1000个最常用的端口。

要扫描从1到65535的所有端口,请使用-p-选项。

nmap -p- 192.168.10.121

每个端口都可以处于以下状态之一。

  • 打开 - 在该端口上运行的程序,并且对请求作出回应。
  • 关闭 - 没有程序在该端口上运行,并且主机对请求作出回应。
  • 被过滤 - 主机没有回复请求。

端口和端口范围是用-p选项来指定的。

例如,如果只扫描443端口,你可以使用下面的命令。

nmap -p 443 192.168.10.121

要指定一个以上的端口,请用逗号将目标端口分开。

nmap -p 80,443 192.168.10.121

端口范围可以用破折号来指定。例如,要扫描所有UDP端口,范围从1到1024,你可以运行。

sudo nmap -sU -p 1-1024 192.168.10.121

所有这些都结合起来。

nmap -p 1-1024,8080,9000 192.168.10.121

端口也可以用端口名来指定。例如,要扫描端口22,即ssh,你可以使用。

nmap -p ssh 192.168.10.121

ping扫描

要执行PING扫描或主机发现,请调用带有-sn选项的nmap命令。

sudo nmap -sn 192.168.10.0/24

-sn选项告诉Nmap只发现在线主机而不做端口扫描。当您想快速确定哪些指定的主机在运行时,这很有用。

禁用DNS名称解析

Nmap的默认行为是为每个被发现的主机进行反向DNS解析,这增加了扫描时间。

当扫描大型网络时,禁用反向DNS解析并加快扫描速度是个好主意。要做到这一点,请用-n选项来调用该命令。

sudo nmap -n 192.168.10.0/16

操作系统、服务和版本的检测

Nmap可以用TCP/IP堆栈指纹检测远程主机的操作系统。要运行操作系统检测,用-O选项调用该命令。

sudo nmap -O scanme.nmap.org

如果Nmap能检测到主机操作系统,它将打印出类似下面的东西。

输出

...
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

通常情况下,系统服务监听的是众所周知并为其保留的标准端口。例如,如果对应于SSH服务的22号端口是开放的,你就会认为该主机上运行着一个SSH服务器。然而,你不能绝对肯定,因为人们可以在他们想要的任何端口上运行服务。

通过服务和版本检测,Nmap会告诉您什么程序在端口上监听,以及程序的版本。

要扫描服务和版本,请使用-sV选项。

sudo nmap -sV scanme.nmap.org

输出

...
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
...

你也可以使用-A选项在一个命令中扫描操作系统、版本和运行traceroute。

sudo nmap -A 192.168.10.121

Nmap的输出

默认情况下,Nmap把信息打印到标准输出端(stdout)。

如果你扫描一个大的网络或需要信息供以后使用,你可以把输出结果保存到一个文件中。

Nmap提供几种输出类型。要以正常格式保存输出,使用-oN选项,后面跟文件名。

sudo nmap -sU -p 1-1024 192.168.10.121 -oN output.txt

最受欢迎的选项是将输出保存为XML格式。要做到这一点,请使用-oX选项。

sudo nmap -sU -p 1-1024 192.168.10.121 -oX output.xml

另一种有用的格式是grepable输出,它可以用标准的Unix工具来解析,如grepawkcut 。grepable输出是用-oG选项指定的。

sudo nmap -sU -p 1-1024 192.168.10.121 -oG output

Nmap 脚本引擎

Nmap最强大的功能之一是它的脚本引擎。Nmap带有数百个脚本,而且您也可以用Lua语言写您自己的脚本。

你可以使用crips来检测恶意软件和后门,进行暴力攻击,以及更多。

例如,要检查一个给定的主机是否被破坏,你可以使用。

nmap -sV --script http-malware-host scanme.nmap.org

总结

Nmap是一个开源的工具,主要被网络管理员用来发现主机和扫描端口。

请注意,在一些国家,未经授权而扫描网络是不合法的。

如果你有任何问题或意见,请在下面留言。

最后更新2023-09-24
0 个评论
标签