【导语】:Masscan 是一个批量端口扫描器,程序运行在单机上,每秒传输 1 千万个数据包,可以在 6 分钟之内扫完整个互联网。它是迄今为止,速度最快的端口扫描器。
简介
Masscan 的输入输出类似于 nmap,如果对工具的性能将信将疑,可以手动去尝试一把。
该工具使用异步传输,类似于scanrand、unicornscan 和 ZMap 等扫描器。并且它更加灵活,允许自定义端口和 IP 地址范围。
注意:masscan 使用它自己的 TCP/IP 栈,可能会和其他的端口扫描器冲突。这意味着,你要么使用 --src-ip 选项来配置一个与本地不同的 IP 地址 ,要么使用 --src-port 选项来配置 Massscan 使用的源端口。也可以配置内部防火墙(比如pf或者iptables)将操作系统的其他端口墙在外面。
这个工具免费,但是大家的爱心捐助可以帮助它更好的发展;比特钱包地址如下:
1MASSCANaHUiyTtR3bJ2sLGuMw5kDBaj4T
项目地址:
https://github.com/robertdavidgraham/masscan
构建
在Debian/Ubuntu,使用如下命令安装:
$ sudo apt-get install git gcc make libpcap-dev
$ git clone https://github.com/robertdavidgraham/masscan
$ cd masscan
$ make
Massscan程序默认在masscan/bin子目录下。如果你想把这个程序安装在系统的其他地方,例如/usr/local/bin,需要自己手动复制。
该项目由大量的小文件组成,可以使用多线程来完成快速构建:
$ make -j
虽然 Linux 是该工具的主要运行平台,但是它也可以在其他的操作系统上很好的运行。
下面是一些其他的构建信息:
Windows w/ Visual Studio: 使用 VS10
Windows w/ MingGW: 使用make
Windows w/ cygwin: 不支持
Mac OS X /w XCode: 使用 XCode4
Mac OS X /w cmdline: 使用make
FreeBSD: 使用gmake
其他系统: 尝试把所有的文件一起编译
PF_RING驱动安装
如果发包量要超过20万/秒,需要因特尔的网卡,网卡要求10Gbps。除此之外,还需要一个驱动,名字叫PF_RING ZC。
要想使用PF_RING ZC,还需要安装下面的组件:
libpfring.so (安装在/usr/lib/libpfring.so)
pf_ring.ko (PF-RING自己的内核驱动)
ixgbe.ko (因特尔10-gbps网卡驱动)
此外,还需要构建libpcap.so文件。当Masscan探测到网卡为zc:enp1s0时,就会自动切换到PF_RING ZC模式。
回归测试
这个工具内嵌自测组件,可以自己进行测试:
$ make regress
bin/masscan --regress
selftest: success!
以上的回归测试涵盖大量的复杂代码,你应该在构建后再尝试。
性能测试
为了测试工具性能,可以执行下面的命令:
$ bin/masscan 0.0.0.0/4 -p80 --rate 100000000 --router-mac 66-55-44-33-22-11
选项--router-mac虚拟出来一个假的路由mac地址,所以发送的数据包都在本地,不会跑到互联网上。
你也可以测试offline模式,看看在没有网络开销的情况下,这个程序能跑多快:
$ bin/masscan 0.0.0.0/4 -p80 --rate 100000000 --offline
在offline模式下,进行性能测试,这个程序就会使用PF_RING,几乎没有网络开销。
工