Masscan号称是最快的互联网端口扫描器,最快可以在六分钟内扫遍互联网。

https://github.com/robertdavidgraham/masscan

安装masscan

sudo apt-get install git gcc make libpcap-dev
git clone https://github.com/robertdavidgraham/masscan
cd masscan
make
cp bin/masscan /bin/

使用方法

masscan -h 可以看到 masscan的具体用法,其中 masscan与上文讲到的nmap是部分兼容的,通过masscan --nmap方式,列举出兼容的参数,可以与nmap无缝衔接。

masscan相对于nmap没有这么大而全,但是依然是比较流行的端口扫描工具。它比nmap这些扫描器更快,而且masscan更加灵活,它允许自定义任意的地址范围和端口范围。

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

root@QiaoShen:~# masscan -h
usage: masscan [options] [<IP|RANGE>... -pPORT[,PORT...]]

examples:
    masscan -p80,8000-8100 10.0.0.0/8 --rate=10000
        scan some web ports on 10.x.x.x at 10kpps

    masscan --nmap
        list those options that are compatible with nmap

    masscan -p80 10.0.0.0/8 --banners -oB <filename>
        save results of scan in binary format to <filename>

    masscan --open --banners --readscan <filename> -oX <savefile>
        read binary scan results in <filename> and save them as xml in <savefile>

参数详解

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.扫描指定网段范围的指定端口

masscan -p 80,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 10.0.0.0/8 -p 80 --banners --source-ip x.x.x.x

masscan不仅仅只是测试端口是否开放,它还能在完成TCP连接的同时获取目标应用程序的Banner信息。
含义是扫描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

4.设置扫描速率

masscan 10.0.0.0/8 -p 0-65535 --rate 100000

扫描器使用的是默认的速率100包/秒,如果是扫描全网的话,需要提高速度。这条命令将以每秒10万包的速率进行扫描

5.设置扫描目标为一个文件

在 Masscan 中,你可以直接用 -iL <文件名>(或者同义的 --includefile <文件名>)来指定一个包含目标 IP/CIDR 列表的文件;Masscan 会逐行读取文件里的条目并作为扫描目标。

masscan -iL asn2CIDR.txt --rate 100000 -p 53 -oX DNS_pku.edu.cn

使用配置文件代替命令

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

masscan.conf
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

masscan -c masscan.conf

输出结果

默认情况下,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
文章作者: QiaoShen
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 QiaoShen-World
工具 实景渗透基础 工具 信息收集 渗透 基础
喜欢就支持一下吧