端口扫描神器 Masscan

Masscan 是一款极高速的开源端口扫描工具,支持大规模网络资产发现,适用于安全测试和渗透测试场景。

端口扫描神器:Masscan

一、介绍

Masscan 是一款快速、高性能的开源端口扫描工具,旨在以极高的速度扫描整个互联网的 IPv4 地址空 间。它的设计目标是快速、灵活且适用于大规模的端口扫描任务。以下是 Masscan 的一些主要特点和功 能:

  • 极高的扫描速度: Masscan 被设计为一种非常快速的端口扫描工具。它能够在极短的时间内扫描 大量的目标。
  • 支持多种扫描模式: Masscan 支持多种扫描模式,包括 TCP 扫描、UDP 扫描、SCTP 扫描等。用 户可以根据需要选择不同的扫描模式。
  • 多线程处理: 工具使用多线程技术,可以同时处理多个目标,提高扫描效率。
  • 灵活的配置选项: Masscan 提供丰富的配置选项,用户可以灵活配置扫描参数,包括端口范围、 速率限制、输出格式等。
  • 异步扫描: Masscan 使用异步扫描技术,能够同时发送和接收多个扫描请求,提高并行处理能 力。
  • 原始输出格式: 扫描结果以原始文本格式输出,可以方便地进行后续处理或集成到其他工具中。
  • IPv6 支持: Masscan 支持 IPv6 地址空间的扫描。
  • 免费开源: Masscan 是一款免费开源的工具,用户可以根据需要查看和修改其源代码。

请注意:

在进行端口扫描任务时,应当遵循法律和道德规范,仅在有授权的范围内使用该工具。非法和未授权的 端口扫描活动是违法的,并可能导致法律责任。

二、基础使用

语法

1
2
3
4
masscan IP或网段 -p端口号或端口范围 --rate 每秒发送数据包数量(十万或一百万)
masscan 10.0.0.27 -p80
masscan 10.0.0.27 -10-10000
masscan 10.0.0.27 -10-10000 --rate 100000

其他参数详解:

  • --excludefile filename:排除文件中的选项
  • -oX filename:输出到filename的XML
  • -oG filename:输出到filename在的grepable格式
  • -oJ filename:输出到filename在JSON格式。

三、使用详解

1、扫描指定网段范围的指定端口

1
masscan -p80,8080-8100 10.0.0.0/8

这条命令将完成以下工作:

  • 扫描10.x.x.x 子网,大约有1600万个地址
  • 扫描顿口80和8000 - 8100范围的端口段
  • 打印结果到标准输出,也可以重定向到一个文件

可以 -echo 将当前的配置输出到一个配置文件,利用 -c 来制定配置文件进行扫描

1
2
masscan -p80,8000-8100 10.0.0.0/8 --echo > xxx.conf
masscan -c xxx.conf --rate 1000

2、Banner 信息获取

Banner 信息 是网页或数字界面中用于展示信息、吸引用户注意的横幅广告或宣传栏,常见于网站首页顶 部,通过图文结合传递关键信息并引导交互。

1
masscan 10.0.0.0/8 -p80 --banners --source-ip x.x.x.x

这条命令的意思是扫描 10.x.x.x 网段 80 端口的开放信息,并且获取 banner 信息。 -source-ip 是指源 IP,这个 IP 必须指定独立有效的 IP 地址。

3、配置防火墙

可以通过配置防火墙防止 masscan 返回不了信息

linux 配置

1
2
iptables -A INPUT -p tcp --dport 60000 -j DROP
masscan 10.0.0.0/8 -p80 --banners --source-port 60000

MAC OS X 和 B SD 配置

1
2
sudo ipfw add 1 deny tcp from any to any 60000 in
masscan 10.0.0.0/8 -p80 --banners --source-port 60000

4、扫描全网

可以对整个互联网发起扫描,使用的命令如下:

1
masscan 0.0.0.0/0 -p0-65535

该命令慎用,会扫到敏感网段。可以设置黑名单让扫描器忽略一部分网段,语法如下:

1
masscan 0.0.0.0/0 -p0-65535 --excludefile exclude.txt

可以把扫描结果输出到指定文件:

1
masscan 0.0.0.0/0 -p0-65535 -oX scan.xml

该命令将扫描结果保存在一个 .xml 文件中

当前的扫描器使用的是默认的速率100包/秒,如果是扫描全网的话,需要提高速度。

1
masscan 0.0.0.0/0 -p0-65535 --max-rate 100000

该命令将以10万包的速率进行扫描

上述命令输入比较麻烦,可以通过创建配置文件,使用加载配置文件的方式运行。配置文件内容如下:

1
2
3
4
5
6
7
rate = 100000
output - format = xxx
output - status = all
output - filename = xxx.xxx
ports = 0 - 65535
range = 0.0.0.0 - 255.255.255.255
excludefile = exclude.txt

扫描时,用 -c 加载配置文件,避免重复扫描时重复输入同样的参数。

结果输出:

主要有5种输出格式

  • XML 默认格式,使用 -oX 或者使用 -output - format xml-output - filename 进行指定
  • binary masscan 内置格式
  • grepable nmap 格式,使用 -oG 或者 -output - filename 进行指定
  • json 使用 -oJ 或者 -output - format json-outuput - filename 进行指定
  • list 简单的列表,每行一个主机端口对。使用 -oL 或者 -output - format list-output - filename

传输速度

masscan 的发包速度非常快,在 windows 中,它的发包速度可以达到每秒30万宝;在linux中,速度可 以达到每秒 160 玩。masscan 在扫描时会随机选择目标 IP ,所以不会对远程的主机造成压力。 默认情况下,masscan 的发包速度每秒 100 包,为了提高速度,可以设置为 -rate 10000

四、详细参数

IP 地址范围,有三种有效格式

  • 单独的 IPv4 地址
  • 类似 10.0.0.1 - 10.0.0.223 的范围地址
  • CIDR地址,类似于 0.0.0.0/0 多个目标可以用逗号隔开

-p:指定端口进行扫描

--banners:获取banner信息,支持少量的协议

--rate:指定发包的速率

-c, --conf:读取配置文件进行扫描

--echo:将当前的配置重定向到一个配置文件中

-e, --adapter:指定用来发包的网卡接口名称

--adapter - ip:指定发包的IP地址

--adapter - port:指定发包的源端口

--adapter - mac:指定发包的源MAC地址

--router - mac:指定网关的MAC地址

--exclude IP:地址范围黑名单,防止masscan扫描

--excludefile:指定IP地址范围黑名单文件

--includefile, -iL:读取一个范围列表进行扫描

--ping:扫描应该包含ICMP回应请求

--append - output:以附加的形式输出到文件

--iflist:列出可用的网络接口,然后退出

--retries:发送重试的次数,以1秒为间隔

--nmap:打印与nmap兼容的相关信息

--http - user - agent:设置user - agent字段的值

--show [open,close]:告诉要显示的端口状态,默认是显示开放端口

--noshow [open,close]:禁用端口状态显示

--pcap:将接收到的数据包以libpcap格式存储

--regress:运行回归测试,测试扫描器是否正常运行

--ttl:指定传出数据包的TTL值,默认为255

--wait:指定发送完包之后的等待时间,默认为10秒

--offline:没有实际的发包,主要用来测试开销

-sL:不执行扫描,主要是生成一个随机地址列表

--readscan:读取从 -oB 生成的二进制文件,可以转化为XML或者JSON格式.

--connection - timeout:抓取banners时指定保持TCP连接的最大秒数,默认是30秒。