高速端口扫描利器Masscan使用指南

本文详细介绍了开源端口扫描工具Masscan的使用方法,包括编译安装、基础扫描命令、配置文件使用、输出格式设置等核心技术要点,帮助网络管理员快速掌握大规模网络扫描技巧。

如何使用Masscan进行高速端口扫描

端口扫描是管理员和安全人员(以及恶意攻击者)用来识别网络上开放和监听服务的重要工具,从而确定计算机的潜在入口点。

Masscan是一款流行的开源工具。与最流行的端口扫描器Nmap不同,Masscan是一款快速扫描器,能识别开放端口但提供的信息较少,使其特别适用于大型网络(包括互联网)。

让我们看看如何在渗透测试、网络审计和一般故障排除中使用Masscan。

端口扫描的重要性

端口扫描是系统管理和安全的关键部分。使用端口扫描器使IT专业人员能够确定以下内容:

  • 开放端口和可用服务
  • 与错误配置或过时策略相关的潜在漏洞
  • 网络设备和资产清单
  • 防火墙设置
  • 网络配置的更改

Masscan是众多可用端口扫描器之一,其他包括Nmap(在某些用例中可能更详细、更复杂、更慢)和Angry IP Scanner(一款快速、用户友好的端口扫描器,专为识别小型网络上的开放端口和活动主机而设计)。

Masscan在大型网络上的速度使其成为希望快速基本扫描可用主机和开放端口的管理员的有吸引力的选择。它避免了更深入的分析,如操作系统检测或扫描脚本,这使其能够实现基本扫描目标。

如何编译和运行Masscan

Masscan可在Linux、macOS和Windows上运行。根据您偏好的操作系统,您可能需要自行编译。在Linux上预期性能最佳,特别是对于非常大的扫描任务。根据供应商的说法,macOS和Windows每秒只能发送约30万个数据包,而Linux每秒可以发送150万个数据包。

您有几种获取Masscan的选择。如果您对自行编译没有信心,可以在网上找到预编译版本。请确保您信任来源并始终查找当前版本。

要在Linux系统上编译,请输入:

1
2
3
4
5
sudo apt-get --assume-yes install git make gcc
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
make install

在macOS和Windows上使用类似的过程。由于应用程序是用C语言编写的,因此具有可移植性。您还可以使用Kali Linux、ParrotOS或BlackArch来运行Masscan。

Masscan扫描示例

Masscan的简单性意味着没有太多选项或变体需要学习。在学习如何使用Masscan时,您会发现运行它主要需要指定目标地址和端口。您还可以将标准输出重定向到文件。

使用以下示例构建您自己的扫描。

如何扫描单个端口

通过输入以下命令扫描IPv4网段上的单个端口:

1
masscan -p80 10.0.0.0/8

结果会显示在屏幕上,但您可以将输出重定向到文件以供后续分析(更多内容见下文)。

如何扫描多个端口

通过使用-p选项并用逗号分隔所需端口号来定位多个端口。例如,要扫描Web服务,请输入-p80,443

1
masscan -p80,443 10.0.0.0/8

如何扫描端口范围

通过使用诸如-p6000-7000之类的值扫描端口范围,以覆盖6000到7000之间的所有端口。如果您有多个使用自定义或非标准端口的应用程序,此功能特别有用。

1
masscan -p6000-7000 10.0.0.0/8

如何使用配置文件进行可重复扫描

Masscan提供了几个基本选项来修改扫描能力。例如,设置--max-rate值以定义扫描中每秒发送的数据包数量。默认值仅为每秒100个数据包,因此可能值得将其修改为--max-rate 100000或更多。请记住,在这方面Windows和macOS比Linux更受限。

如果您需要进行非常具体的扫描或避免特定端口,也可以使用文本文件排除特定端口。如果您正在扫描互联网,请特别小心,因为您的扫描可能导致您被列入黑名单。

通过使用--excludefile标志指定一个exclude.txt文件。

1
masscan 0.0.0.0/0 -p-65365 --excludefile exclude.txt

再次强调,请仔细更新该文件以指定要避免的互联网区域。避免扫描互联网本身,而是在您自己网络边界内进行更有针对性的评估。

由于网络扫描在审计和漏洞检测中通常是重复性任务,您可能希望在配置文件中指定详细设置,然后在准备扫描时调用该文件。您甚至可以使用cron(类Unix操作系统中的基于时间的调度程序,使您能够在特定日期和时间调度命令运行)来调度该任务。

首先创建配置文件:

1
2
3
4
5
6
7
8
# 为我的内部网络扫描基本端口0-1023
rate = 100000
output-format = xml
output-status = all
output-filename = internal-scan.xml
ports = 0-1023
range = 0.0.0.0-255.255.255.255
excludefile = exclude-ports.txt

将文件命名为customscan.conf——或您喜欢的任何名称。

接下来,在您的masscan命令中指定配置文件:

1
masscan -c customscan.conf

IPv6兼容性

您可以使用Masscan扫描IPv6地址范围,无需任何额外标志,甚至可以在同一扫描中进行。请记住,IPv6网络可能非常庞大,因此请仔细规划并限制您的扫描。

如何定义输出格式

Masscan可以以几种常见格式输出结果。使用以下摘要确定哪个选项最适合您的需求:

  • 二进制:默认格式,可使用--readscan选项读取。
  • Grepable:使用-oG <filename.txt>选项以易于使用grep和类似工具搜索的格式呈现输出。
  • 列表:使用-oL <filename.txt>选项将输出呈现为包含主机和端口的逐行列表。
  • XML:使用-oX <filename.xml>选项以XML格式呈现输出。
  • JSON:使用-oJ <filename.json>选项以JSON格式呈现输出。

请记住,根据所选扫描选项,这些文件可能很大。

Masscan与Nmap对比

大多数网络和安全专业人员都使用过Nmap;Masscan有意模仿了这个无处不在的工具。Nmap有更多的选项和灵活性,但Masscan依赖许多并行设置和方法。考虑以下:

  • Nmap能够进行名称解析;Masscan不能。
  • Masscan需要-p<端口号>参数。
  • 输出选项,如-oX-oG,是相同的。

使用masscan --nmap命令查看两者之间共享的特定设置列表。

Masscan提供高速、简单的大型网络扫描。虽然像Nmap这样的工具提供了更多选项,但它们也更慢且使用更复杂。大多数网络和安全专业人员可能会同时使用这两种工具,最大化各自的优势。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计