masscan详解

一、masscan简单用法

 0x00 常用参数

示例:

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 指定发包后的等待时间

二、masscan详细用法

0x00 名称

masscan-互联网快速扫描 

0x01 概要 (简单用法)

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

0x02 描述

masscan是一种Internet规模的端口扫描程序,可用于对
       Internet或内部网络。虽然默认传输速率仅为100
       数据包/秒,它可以可选地高达2500万个数据包/秒,速度
       足以在3分钟内扫描Internet的一个端口。

0x03 选项

 •<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格式。
 

0x04 配置文件格式

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

    # 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地址是这种方式的首选方式
扫描器。

  • 15
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值