你驻足于春色中,于那独一无二的春色之中.
很早之前就读到过其他大大使用Zmap做测试的文章,自己也玩了一下这个快速的扫描工具,但是一直对于它的认识处在黑盒的状态,所以这次浏览了一遍Zmap的论文,对于论文里面提到的点进行记录。
一直以来,丈量日渐庞大的互联网就是研究者们的探索方向之一,和攻击者使用的探测手法,比如僵尸网络或者蠕虫相比,研究者能够利用的方法十分有限,于是,Zmap诞生了。
在此之前,除了每一位致力于此的研究者自己编写的程序外,最有效的工具应该是Nmap,这已经是十分优秀的探测工具,但是它还是不够快,如果打算利用Nmap去扫描整个网络空间,花费的时间单位将以天计。
官方给出的性能版本是:单台入门级服务器在千兆以太网速度下扫描整个IPv4空间需要45分钟。
在同等准确度的限制下,它是使用agressive default策略的Nmap扫描速度的1300倍。
Zmap能够将当前带宽的利用率提升到97%
为了提高扫描速度,Zmap采用以下策略进行扫描探测优化:
首先,Zmap跳过TCP/IP堆栈,直接在链路层使用以太网帧;
其次,对于目标列表的选取使用随机抽样,这样避免顺序扫描导致的对方网络负载过大。通过采用乘法循环群随机序列来保证生成稠密且唯一的随机数;
使用类似SYN cookies的方式来避免存储包交互时的序列状态确认;
使用根树,一种处理范围和使用频率的路由表来排除特殊的地址空间;
最后,在扫描过程中,允许丢失少量的扫描数据。
通过实验对比,Zmap的命中率与扫描速度无关,同时对于探测的覆盖率和扫描时刻的影响进行的比较。
在和Nmap的比较中我们可以看出,Nmap更适合单目标多端口的探测,而Zmap则侧重于多目标单端口的扫描环境。
如果你是出于善意的角度使用Zmap去测量网络空间,在使用工具时,应该注意以下几点:
这是论文里提到的未来Zmap的发展之路,不过这篇论文已经是3年前的了,其中提到的一些设想说不定已经实现。