masscan号称是世界上最快的扫描软件,传输速度可以达到2500万个数据包/秒,足以在不到5分钟的时间内扫描整个互联网。实现的这样的系统只需要一台4核sever,双端口10g网卡。

masscan传输原理

masscan使用自定义tcp / ip堆栈,除简单端口扫描之外的任何其他操作都将导致与本地tcp / ip堆栈冲突。因此masscan不建立完整的tcp连接,收到syn/ack之后,发送rst结束连接。

备注:banners除外。

masscan是一种典型的“async / syn-cookie”扫描仪,它的扫描结果类似于nmap,在内部结构上,它更像unicornscan和zmap,都采用了异步传输的方式。对比unicornscan和zmap,masscan的优势在于:

  • 速度快,在使用双端口卡的情况下,masscan能够达到每秒3000万个数据包。
  • 灵活性强,“加密的单调递增索引”,它允许自定义任意的地址范和端口范围,大大的增加了masscan的灵活性。
  • 兼容性强,支持运行在windows,macintosh,linux,openbsd各类系统。

masscan安装

在debian/ubuntu系统中,安装方法如下:

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

安装完成后的可执行程序在masscan/bin中,因为源包含许多小文件,建议使用多线程加快地构建:

$ make -j

pf_ring

如果你也想获得超过两百万每秒的速度,首先你需要一个英特尔10-gbps网卡和一个被称为pf_ring dna(
http://www.ntop.org/products/pf_ring/)的特殊驱动程序。masscan使用pf_ring不要进行重建,你只需要建立以下组件即可:

libpfring.so (安装于 /usr/lib/libpfring.so)
pf_ring.ko (pf_ring自己的内核驱动)
ixgbe.ko (英特尔10-gbps网卡驱动)

你不要建立自己的libpcap.so

当masscan检测到网卡为dna0时,将自动切换为pf_ring模式

使用示例

扫描给定再往中的某个端口,比如(192.168.1.0/24)中的(-p22,80,445 )

root@kali:~# masscan -p22,80,445 192.168.1.0/24
starting masscan 1.0.3 (http://bit.ly/14gzzct) at 2014-05-13 21:35:12 gmt
 -- forced options: -ss -pn -n --randomize-hosts -v --send-eth
initiating syn stealth scan
scanning 256 hosts [3 ports/host]
discovered open port 22/tcp on 192.168.1.217
discovered open port 445/tcp on 192.168.1.220
discovered open port 80/tcp on 192.168.1.230