渗透工具-masscan

  • ​​介绍​​
  • ​​0x00 常用参数​​
  • ​​0x01 选项​​
  • ​​0x03 配置文件格式​​
  • ​​windows 10 错误解决​​

介绍

masscan是一种Internet规模的端口扫描程序,可用于对

Internet或内部网络。虽然默认传输速率仅为100

数据包/秒,它可以可选地高达2500万个数据包/秒,速度

足以在3分钟内扫描Internet的一个端口。

0x00 常用参数

masscan <IP地址/范围> -p端口选项 


masscan --ports 1-10000 192.168.26.131 --adapter-ip 192.168.26.1
--adapter-ip 指定发包的ip地址

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

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

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

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

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

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

--wait 指定发包后的等待时间

0x01 选项

<ip / range>:假定命令行上没有前缀“-”的任何内容
是IP地址或范围。有三种有效格式。首先是
单个IPv4地址,例如“ 192.168.0.1”。第二个范围是
10.0.0.1-10.0.0.100”。第三个是CIDR地址,例如“ 0.0.0.0/0”。在
必须至少指定一个目标。可以指定多个目标。这个
可以指定为多个选项,以空格分隔,也可以分隔
以逗号作为单个选项,例如10.0.0.0/8,192.168.0.1

--range <ip / range>:与上述目标范围规格相同,不同之处在于
一个命名参数而不是一个未命名参数。

-p <端口,--ports <端口>:指定要扫描的端口。一个
可以指定端口,例如-p80。可以指定端口范围,例如-p
20-25。可以指定端口/范围的列表,例如-p80,20-25 UDP端口
也可以指定,例如--ports U:161,U:1024-1100

--banners:指定应抓取横幅,例如HTTP服务器版本
部分,HTML标题字段等。仅支持一些协议。

--rate <packets-per-second>:指定所需的传输速率
包。这可以是非常小的数字,例如0.1,用于在
每10秒1个速率,对于10000000这样的非常大的数字,
尝试以每秒1000万个数据包的速度进行传输。以我的经验,Windows
每秒可以处理25万个数据包,而最新版本的Linux可以
每秒可以处理250万个数据包需要PF_RING驱动程序达到25
百万个数据包/秒。

-c <文件名>-conf <文件名>:读取配置文件。格式
配置文件的说明如下。

--resume <文件名>:与--conf相同,只是一些选项是自动的-
临时设置,例如--append-output。配置文件格式
如下所述。

--echo:不运行,而是将当前配置转储到文件中。这个
然后,可以将文件与-c选项一起使用。此输出的格式为
在下面的“配置文件”下进行介绍。

-e <ifname>-adapter <ifname>:使用命名的原始网络接口,例如
eth0”或“ dna1”。如果未指定,则找到的第一个网络接口带有
将使用默认网关。

--adapter-ip <IP地址>:使用此IP地址发送数据包。如果没有指定
确定,则将使用绑定到网络接口的第一个IP地址。
可以指定一个范围,而不是一个IP地址。注意:的大小
范围必须是2的偶数幂,例如1、2、4、8、16、1024等。
礼服。

--adapter-port <端口>:使用此端口号作为源发送数据包。如果
如果未指定,则会在40000到60000范围内选择一个随机端口。
此端口应由主机防火墙(如iptables)过滤,以防止
主机网络堆栈不会干扰到达的数据包。代替
单端口,可以指定一个范围,例如40000-40003。注意:的大小
范围必须是2的偶数幂,例如上面的示例
总共4个地址。

--adapter-mac <mac-address>:使用此作为源MAC ad-发送数据包
连衣裙。如果未指定,则绑定到网络的第一个MAC地址位于-
将使用接口。

--router-mac <mac地址>:将数据包作为destina-发送到此MAC地址
tion。如果未指定,则为网络接口的网关地址
将被ARPed。

--ping:指示扫描应包括ICMP回显请求。这可能
包含在TCP和UDP扫描中。

--exclude <ip / range>:将IP地址或范围列入黑名单,以防止其
被扫描。这会覆盖任何目标规范,从而保证
该地址/范围不会被扫描。与普通格式相同
目标规范。

--excludefile <文件名>:在同一tar中读取排除范围列表
得到上面描述的格式。这些范围会覆盖所有目标,从而防止
他们被扫描。

--append-output:使输出追加到文件,而不是覆盖
文件。

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

--retries:每隔1秒发送一次的重试次数。注意
由于此扫描程序是无状态的,因此无论是否回复,都会发送重试
已经收到。

--nmap:打印帮助,而不是这些选项的nmap兼容性替代品。

--pcap-payloads:从libpcap文件中读取包含数据包的数据包,并
提取UDP有效负载,并将这些有效负载与目标相关联
港口。这些有效负载将在通过以下方式发送UDP数据包时使用
匹配目标端口。每个端口仅记住一个有效负载。 Sim‐
--nmap-payloads类似。

--nmap-payloads <文件名>:以与nmap相同的格式读取文件
文件nmap-payloads。它包含UDP有效负载,以便我们可以发送有用的UDP
包而不是空包。与--pcap-payloads类似。

--http-user-agent <user-agent>:将现有的user-agent字段替换为
执行HTTP请求时的指示值。

--open-only:仅报告打开的端口,不报告关闭的端口。

--pcap <文件名>:将收到的数据包(但不传输的数据包)保存到
libpcap格式的文件。

--packet-trace:打印发送和接收的那些数据包的摘要。这是
在低速率下很有用,例如每秒几个数据包,但会淹没
终端机率很高。

--pfring:强制使用PF_RING驱动程序。如果出现以下情况,程序将退出
PF_RING DNA漂移器不可用。

--resume-index:扫描中的暂停点。

--resume-count:退出前要发送的最大探测数。这是
--resume-index一起使用可将扫描切碎并分成多个
实例,尽管--shards选项可能更好。

--shards <x> / <y>:在实例之间拆分扫描。 x是此扫描的ID,
而y是实例总数。例如,--shards 1/2告诉
实例发送每个其他数据包,并从索引0开始。
--shards 2/2发送其他所有数据包,但从索引1开始,因此它
与第一个示例不重叠。

--rotate <时间>:旋转输出文件,将其重命名为当前时间
图章,将其移动到单独的目录中。时间以数量指定
秒,例如“ 3600”一个小时。或者,可以指定时间单位,例如
“每小时”,“或6小时”或“ 10分钟”。时间在均匀边界上对齐,因此
如果指定为“ daily”,则文件将每天在午夜旋转。

--rotate-offset <时间>:时间的偏移量。这是为了适应时间-
区域。

--rotate-dir <目录>:旋转文件时,这指定哪个目录
尝试将文件移动到。一个有用的目录是/ var / log / masscan。

--seed <integer>:整数作为种子随机数生成器的种子。用一个
不同的种子将导致数据包以不同的随机顺序发送。在-
可以指定字符串时间,而不是整数,使用
本地时间戳记,自动生成不同的随机扫描顺序。
如果未指定种子,则时间为默认值。

--regress:运行回归测试,成功返回“ 0”,失败返回“ 1”。

--ttl <num>:指定传出数据包的TTL,默认为255。

--wait <seconds>:指定发送完成后的秒数
在退出程序之前等待接收数据包。默认值为10秒
onds。可以将字符串永久指定为永不终止。

--offline:实际不传输数据包。这对低费率很有用
--packet-trace以查看可能传输了哪些数据包。要么,
它与--rate 100000000一起使用以比较快速传输的基准
会工作(假设零开销驱动程序)。 PF_RING慢20%
比离线模式下的基准测试结果要高。

-sL:不执行扫描,而是创建一个随机地址列表。
这对于导入其他工具很有用。选项--shard,--re
sume-index和--resume-count对于此功能很有用。

--interactive:在控制台上实时显示结果。没有效果
如果与--output-format--output-filename一起使用。

--output-format <fmt>:指示输出文件的格式,可以是
xml,二进制,grepable,列表或JSON。选项--output-filename必须
指定。

--output-filename <filename>:将结果保存到的文件。如果pa
rameter --output-format未指定,则默认为xml
用过的。

-oB <文件名>:将输出格式设置为二进制并将输出保存在
给定的文件名。这等效于使用--output-format--out-
put-filename参数。然后可以使用--readscan选项读取
二进制文件。二进制文件的大小比其XML等效项小,但是
需要一个单独的步骤才能转换回XML或其他可读格式。

-oX <文件名>:将输出格式设置为XML并将输出保存在
给定的文件名。这等效于使用--output-format xml和
--output-filename参数。

-oG <文件名>:将输出格式设置为grepable并将输出保存在
给定的文件名。这等效于使用--output-format grepable
--output-filename参数。

-oJ <文件名>:将输出格式设置为JSON并将输出保存在
给定的文件名。这等效于使用--output-format json和
--output-filename参数。

-oL <文件名>:将输出格式设置为简单列表格式并保存
以给定的文件名输出。这等效于使用--output-format
list--output-filename参数。

--readscan <binary-files>:从-oB选项中读取-oB选项创建的文件
扫描,然后根据其他格式以其他格式之一输出它们
需求线参数。换句话说,它可以采用
输出并将其转换为XML或JSON格式。

0x03 配置文件格式

配置文件使用与命令行上相同的参数名称,但是不带-前缀,并且名称和值之间带有=号。前任足够的配置文件可能是: 

# targets
range = 10.0.0.0/8,192.168.0.0/16
range = 172.16.0.0/14
ports = 20-25,80,U:53
ping = true

# adapter
adapter = eth0
adapter-ip = 192.168.0.1
router-mac = 66-55-44-33-22-11

# other
exclude-file = /etc/masscan/exludes.txt

默认情况下,程序将从文件/ etc / mass中读取默认配置
可以/masscan.conf。这对于系统特定的设置很有用,例如
--adapter-xxx选项。这对于排除的IP地址也很有用,这样您就可以
可以跳过整个危险的地址(例如那些危险的地址),扫描整个Internet
归国防部所有,不要犯任何意外错误。

CONTROL-C行为
当用户按下ctrl-c时,扫描将停止,并且当前的状态
扫描将保存在文件“ paused.conf”中。可以使用
--resume选项:

# masscan --resume paused.conf

该程序不会立即退出,但会等待默认的10秒
从Internet接收结果并保存结果,然后完全退出。
可以使用--wait选项更改此时间。

简单的例子
以下示例扫描所有专用网络以查找Web服务器,并打印所有
打开找到的端口。

# masscan 10.0.0.0/8 192.168.0.0/16 172.16.0.0/12 -p80 --open-only

下面的示例扫描整个Internet的DNS服务器,获取它们的
版本,然后将结果保存在XML文件中。

# masscan 0.0.0.0/0 --excludefile no-dod.txt -pU:53 --banners --output-filename dns.xml

您应该能够将XML导入数据库等。

以下示例读取名为bin-test.scan的二进制扫描结果文件并
将结果打印到控制台。

#masscan --readscan bin-test.scan

以下示例读取名为bin-test.scan的二进制扫描结果文件
创建一个名为bin-test.xml的XML输出文件。

#masscan --readscan bin-test.scan -oX bin-test.xml

高级示例
假设您要扫描整个Internet并在整个扫描范围内进行扫描
三台机器。 Masscan将使用以下命令在所有三台机器上启动
命令行:

# masscan 0.0.0.0/0 -p0-65535 --shard 1/3
# masscan 0.0.0.0/0 -p0-65535 --shard 2/3
# masscan 0.0.0.0/0 -p0-65535 --shard 3/3

另一种方法是使用“恢复”功能。扫描具有一个内部索引
从零到端口数乘以IP地址数。跟随
较低的示例显示了将扫描分为1000个项目的块:

# masscan 0.0.0.0/0 -p0-65535 --resume-index 0 --resume-count 1000
# masscan 0.0.0.0/0 -p0-65535 --resume-index 1000 --resume-count 1000
# masscan 0.0.0.0/0 -p0-65535 --resume-index 2000 --resume-count 1000
# masscan 0.0.0.0/0 -p0-65535 --resume-index 3000 --resume-count 1000

脚本可以使用它来在其他许多机器上拆分较小的任务,例如
亚马逊EC2实例。随着每个实例完成一项工作,脚本可能会发送一个
请求中央协调服务器进行更多工作。



意外重置
使用适配器的默认IP地址(内置)扫描TCP时
堆栈将生成RST数据包。这样可以防止横幅被抓住。有
有两种解决方法。第一种方法是创建防火墙规则以阻止
从堆栈看到的端口。工作方式取决于操作
系统,但在Linux上看起来像这样:

#iptables -A INPUT -p tcp -i eth0 –dport 61234 -j DROP

然后,在扫描时,必须使用相同的端口作为源:

# masscan 10.0.0.0/8 -p80 --banners --adapter-port 61234

另一种方法是“欺骗”另一个IP地址。该IP地址必须为
在本地网络范围内,但任何一个都不得使用
您自己的计算机或网络上的另一台计算机。一个例子
看起来像:

# masscan 10.0.0.0/8 -p80 --banners --adapter-ip 192.168.1.101

设置您的源IP地址是这种方式的首选方式
扫描器。
masscan的发包速度非常快,在windows中,它的发包速度可以达到每秒30万包;在Linux中,速度可以达到每秒160万。masscan在扫描时会随机选择目标IP,所以不会对远程的主机造成压力。默认情况下,masscan的发包速度为每秒100包,为了提高速度,可以设置为 --rate 100000

详细参数
与nmap兼容的参数不再赘述,接下来讲解一下masscan独有的使用方法。

IP地址范围,有三种有效格式,1、单独的IPv4地址 2、类似"10.0.0.1-10.0.0.233"的范围地址 3、CIDR地址 类似于"0.0.0.0/0",多个目标可以用都好隔开
-p <ports,--ports <ports>> 指定端口进行扫描
--banners 获取banner信息,支持少量的协议
--rate <packets-per-second> 指定发包的速率
-c <filename>, --conf <filename> 读取配置文件进行扫描
--echo 将当前的配置重定向到一个配置文件中
-e <ifname> , --adapter <ifname> 指定用来发包的网卡接口名称
--adapter-ip <ip-address> 指定发包的IP地址
--adapter-port <port> 指定发包的源端口
--adapter-mac <mac-address> 指定发包的源MAC地址
--router-mac <mac address> 指定网关的MAC地址
--exclude <ip/range> IP地址范围黑名单,防止masscan扫描
--excludefile <filename> 指定IP地址范围黑名单文件
--includefile,-iL <filename> 读取一个范围列表进行扫描
--ping 扫描应该包含ICMP回应请求
--append-output 以附加的形式输出到文件
--iflist 列出可用的网络接口,然后退出
--retries 发送重试的次数,以1秒为间隔
--nmap 打印与nmap兼容的相关信息
--http-user-agent <user-agent> 设置user-agent字段的值
--show [open,close] 告诉要显示的端口状态,默认是显示开放端口
--noshow [open,close] 禁用端口状态显示
--pcap <filename> 将接收到的数据包以libpcap格式存储
--regress 运行回归测试,测试扫描器是否正常运行
--ttl <num> 指定传出数据包的TTL值,默认为255
--wait <seconds> 指定发送完包之后的等待时间,默认为10秒
--offline 没有实际的发包,主要用来测试开销
-sL 不执行扫描,主要是生成一个随机地址列表
--readscan <binary-files> 读取从-oB生成的二进制文件,可以转化为XML或者JSON格式.
--connection-timeout <secs> 抓取banners时指定保持TCP连接的最大秒数,默认是30秒。
示例
1.扫描指定网段范围的指定端口
使用方法类似于nmap,扫描指定网段范围的指定端口

masscan -p80,8080-8100 10.0.0.0/8
这条命令将完成如下工作:

扫描10.x.x.x子网,大约有1600万个地址
扫描端口80和8000-8100范围的端口段
打印结果到标准输出,也可以重定向到一个文件
可以使用 --echo 将当前的配置输出到一个配置文件,利用 -c 来制定配置文件进行扫描:

masscan -p80,8000-8100 10.0.0.0/8 --echo > scan.conf

masscan -c scan.conf --rate 1000
2.获取Banner

masscan不仅仅只是测试端口是否开放,它还能在完成TCP连接的同时获取目标应用程序的Banner信息。

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 0.0.0.0/0 -p0-65535
我们可以通过设置--excludefile做为黑名单,来让扫描器扫描时忽略一些网段,并将扫描的结果输出到指定文件中。语法如下:

masscan 0.0.0.0/0 -p0-65535 --excludefile exclude.txt -oX scan.xml
扫描器使用的是默认的速率100包/秒,如果是扫描全网的话,需要提高速度。这条命令将以每秒10万包的速率进行扫描:

masscan 0.0.0.0/0 -p0-65535 --rate 100000
如果不想输入命令,可以通过创建配置文件,然后用加载配置文件的方式运行。配置文件的内容如下所示:

rate = 100000
output-format = xml
output-status = all
output-filename = scan.xml
ports = 0-65535
range = 0.0.0.0-255.255.255.255
excludefile = exclude.txt
扫描时,用 -c 加载配置文件 即可完成扫描。

结果输出
默认情况下,masscan会生成相当大的文本文件,但是很容易将它们转换为任何其他格式。支持五种输出格式:

xml:只需使用参数-oX。或者,使用参数--output-format xml和--output-filename <filename>
二进制:这是masscan内置格式。它产生的文件要小得多,因此,当我扫描Internet时,磁盘不会填满。但是,它们需要解析。命令行选项--readscan将读取二进制扫描文件。--readscan与该-oX选项一起使用将生成结果文件的XML版本。
grepable:这是Nmap -oG输出的实现,可以通过命令行工具轻松地对其进行解析。只需使用参数-oG。或者,使用参数--output-format grepable和 --output-filename <filename>
json:这会将结果保存为JSON格式。只需使用参数-oJ。或者,使用参数--output-format json和 --output-filename <filename>
list:这是一个简单的列表,每行一个主机和端口对。只需使用参数-oL。或者,使用参数 --output-format list--output-filename <filename>。格式为:
<port state> <protocol> <port number> <IP address> <POSIX timestamp>
open tcp 80 XXX.XXX.XXX.XXX 1390380064

windows 10 错误解决

渗透工具-masscan_ip地址

https://www.winpcap.org/install/bin/WinPcap_4_1_3.exe  下载解决