1.1 Masscan简介
1) nmap是端口扫描仪的合法王位,而今天仍然是最通用的选择。但对于纯粹的速度也有一些已经超越了它,包括scanrand,unicornscan,zmap,和现在的masscan(https://github.com/robertdavidgraham/masscan)。
2) masscan相比nmap之所以快很多,masscan采用了异步传输方式,无状态的扫描方式。nmap需要记录tcp/ip的状态,os能够处理的TCP/IP连接最多为1500左右。
3) masscan是为了尽可能快地扫描整个互联网而创建的,根据其作者robert graham,这可以在不到6分钟内完成,每秒大约1000万个数据包。
1.2 Masscan的基本功能
1) 端口扫描(Port Scanning):采用了无状态的扫描技术,没有进行完整的TCP三次握手,因此扫描速度极大提升。基本功能是扫描发现主机的开放端口
1.3 Massca的扫描原理
1) Masscan不建立完整的TCP连接,收到SYN/ACK之后,发送RST结束连接(类似于nmap的TCP SYN scanning,选项--banners除外。)
2 Masscan安装2.1 Linux下Masscan安装:(kali系统已自带Masscan)
1) 在Debian/Ubuntu系统中安装方法如下:
# sudo apt-get install git gcc make libpcap-dev
# git clone
https://github.com/robertdavidgraham/masscan
# cd masscan
# make
2) Windows下安装请参考:
https://www.4hou.com/penetration/6173.html
https://github.com/robertdavidgraham/masscan/
3Masscan基本扫描命令3.1.命令参数
-p [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秒 |
注:[options] 括号内为可选参数 |
3.2使用示例
3.2.1使用方法
1) 使用方法类似于nmap,扫描指定网段范围的指定端口
# masscan -p80 192.168.1.0/24
2) 这条命令将完成如下工作:
a) 扫描192.168.1.0子网
b) 扫描端口80(也可以指定端口段,例如8000-8100)
c) 打印结果到标准输出,也可以重定向到一个文件
3) 使用 --echo 可以将当前的配置输出到配置文件,也可使用 -c 来制定配置文件进行扫描
# masscan -p80 192.168.1.0/24 --echo > xxx.conf
# masscan -c xxx.conf --rate 1000
3.2.2 Banner获取
1) masscan不仅仅只是测试端口是否开放,它还能在完成TCP连接的同时获取目标应用程序的Banner信息。
# masscan -p80 192.168.1.0/24 --banners
这条命令的意思是扫描192.168.1.0网段80端口的开放信息,并且获取banner信息。
2) 您可以通过配置防火墙来防止masscan的返回不了信息的情况。
a) Linux的配置如下
# iptables -A INPUT -p tcp --dport 60000 -j DROP
# masscan 192.168.1.0/24 -p80 --banners --source-port 60000
b) MAC OS X和BSD的配置如下
# sudo ipfw add 1 deny tcp from any to any 60000 in
# masscan 192.168.1.0/24 -p80 --banners --source-port 60000(source-port指源端口)
3) 您也可以检查其他类型的信息,例如心脏滴血漏洞--heartbleed,方法和获取banner是一样的。
3.2.3扫描全网
1) Masscan号称可以在三分钟内扫描整个互联网的所有端口,您当然可以做一下测试。使用的命令如下:
# masscan 0.0.0.0/0 -p0-65535
2) 但是有时候扫描一些网段,可能会让你获得被请去喝茶的机会。所以,我们可以通过设置排除名单,来让扫描器扫描时忽略一些网段。使用的命令如下:
#masscan 0.0.0.0/0 -p0-65535 --excludefile exclude.txt
3) 你也可以把扫描的结果不输出到命令行,-oX可以将结果输出到指定文件中:
# masscan 0.0.0.0/0 -p0-65535 -oX scan.xml
4) 扫描器使用的默认速率是100包/秒,如果扫描全网的话,需要提高速度:
# masscan 0.0.0.0/0 -p0-65535 --max-rate 100000
这条命令将以每秒10万包的速率进行扫描
5) 当然在命令一条条的敲命令显得有点麻烦,我们可以通过创建配置文件,并用加载配置文件的方式运行。配置文件的内容如下所示:
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 参数加载配置文件,这样,你进行重复扫描会省很多的力气。
3.2.4 结果输出
1) 主要有5种输出的格式:
a) XML 默认格式 使用-oX 或者使用 –output-format xml 和 –output-filename 进行指定;
b) binary masscan内置格式;
c) grepable nmap格式 使用 -oG 或者 –output-format grepable 和 –output-filename 进行指定;
d) json 使用 -oJ 或者 –output-format json 和 –output-filename 进行指定;
e) list 简单的列表,每行一个主机端口对。使用-oL 或者 –output-format list 和 –output-filename 进行指定;
3.2.5传输速度
1) 在机器性能和宽带性能较高的前提下,masscan的发包速度非常快,在windows中,它的发包速度可以达到每秒30万包;在Linux中,速度可以达到每秒160万。masscan在扫描时会随机选择目标IP,所以不会对远程的主机造成压力。
2) 默认情况下,masscan的发包速度为每秒100包,为了提高速度,可以设置为 –rate 100000。
4结语masscan的扫描结果类似于nmap,在内部,它更像scanrand, unicornscan, and ZMap,采用了异步传输的方式。它和这些扫描器最主要的区别是,它比这些扫描器更快。而且,masscan更加灵活,它允许自定义任意的地址范和端口范围。