使用 nmap 扫描端口

Nmap 是用于网络发现和安全审计的开源实用程序。 您可以将其用于渗透测试、网络分析等。

它是一个具有大量选项的实用程序,但本教程的目标是向您展示扫描端口的各种方法。

✍?注意:本教程大部分时间,我会使用提供的 Nmap scanme.nmap.org 网站作为我们的扫描目标。

开放端口的基本扫描

随着 -sT 参数,nmap 可以做一个简单的 TCP 扫描来寻找开放的端口:

nmap -sT scanme.nmap.org

可以看到目标上有两个重要的开放端口—— 2280.

这些端口分别由 SSH 和 HTTP 服务使用。 如果这些端口之前未处于活动状态,则应检查目标系统的系统日志以了解可能的安全漏洞。

如果您正在寻找在 UDP 端口上运行的服务器的 UDP 端口扫描,请使用:

sudo nmap -sU scanme.nmap.org

另外,需要注意的是,与 TCP 不同,要扫描 UDP 端口,您需要具有 root 权限。

扫描特定端口

最基本的,Nmap 可以通过指定目标端口号来扫描单个端口 -p 选项。

让我们看一些流行的端口扫描示例:

Apache 港口 80443: 港口 80 是 HTTP 请求的默认端口号 Apache. 您可以使用 Nmap 将其扫描为:

nmap -p 80 scanme.nmap.org

同样,对于端口上的 https 流量 443 (默认端口号),您可以使用 Nmap 扫描为:

nmap -p 443 scanme.nmap.org
扫描特定端口号 443

SSH 连接的默认端口号是 22,因此在这种情况下,Nmap 扫描命令将是:

nmap -p 22 scanme.nmap.org

这里要注意的一件事是,您还可以使用端口的名称而不是其编号; 为了 example,对于 SSH 扫描,您可以使用:

nmap -p ssh scanme.nmap.org
扫描 SSH 端口

这些只是向您展示 Nmap 扫描如何在具有给定协议号的协议上工作的两个示例。 您可以以相同的方式使用其他协议号。

下面给出了一些常用端口和协议的简要列表:

  • 20:FTP数据
  • 21:FTP控制端口
  • 22: SSH
  • 23:Telnet(不安全,不推荐用于大多数用途)
  • 25: SMTP
  • 53:DNS服务
  • 67:DHCP 服务器端口
  • 68:DHCP 客户端端口
  • 80:HTTP – 未加密的 Web 流量
  • 143:IMAP 邮件端口
  • 161: SNMP
  • 443:HTTPS – 安全的网络流量
  • 587: SMTP – 邮件提交端口

扫描多个端口

要扫描多个端口,您需要用逗号分隔它们,如下所示:

nmap -p 22,25,80 scanme.nmap.org
使用 nmap 扫描多个端口

指定多个范围。

nmap -p 80-85,130-140,22 scanme.nmap.org
使用 nmap 扫描多个端口

您可以对端口范围进行进一步自定义。 为了 example,您可以删除起始端口以从端口一开始扫描:

nmap -p -22 scanme.nmap.org
端口扫描范围

同样,您可以排除最后一个端口以扫描到最后一个可能的端口:

nmap -p 65255- scanme.nmap.org
nmap 扫描端口从 65525 到最后

在 Nmap 中使用通配符

使用通配符还可以简化扫描任务。 假设您要扫描所有与 http 相关的端口:

nmap -p http* scanme.nmap.org
在使用 nmap 进行端口扫描时使用通配符

扫描顶部端口

扫描每个协议的所有 65,536 个端口是一项耗时的任务。 但是,这些端口中的大多数几乎都没有打开。 Nmap 开发人员 Fyodor 为他的出色工具赢得了热烈的掌声,减少了扫描如此庞大的端口范围的头痛。

他通过研究数百万个 IP 地址和探索许多企业网络,掌握了最流行的 TCP 和 UDP 端口。

简而言之,根据他的研究,要覆盖 90% 的开放端口,您只需要定位 576 个 TCP 端口和 11,307 个 UDP 端口。 这 --top-ports 选项仅扫描最常见的端口。

nmap --top-ports 1000 scanme.nmap.org
使用 nmap 扫描前 1000 个端口

-F 选项仅扫描前 100 个端口。

使用 Nmap 执行端口扫描的方法有多种。 最常用的是这些:

对于扫描 TCP 连接,您可以使用 -sT 旗帜:

sudo nmap -sT scanme.nmap.org

对于扫描 UDP 连接,您可以使用 -sU 旗帜:

sudo nmap -sU scanme.nmap.org

要扫描 TCP 和 UDP 开放端口,您可以使用:

sudo nmap -n -PN -sT -sU -p- scanme.nmap.org

对于扫描 SYN 数据包,您可以使用 -sS 旗帜:

sudo nmap -sS scanme.nmap.org

结论

在本文中,我向您展示了如何使用 Nmap 扫描服务器上的端口。 你也可以使用 netstatps 与 Nmap 并行的命令来识别使用扫描端口的服务。