君は春の中にいる、かけがえのない春の中にいる.

你驻足于春色中,于那独一无二的春色之中.

Zmap论文简读

很早之前就读到过其他大大使用Zmap做测试的文章,自己也玩了一下这个快速的扫描工具,但是一直对于它的认识处在黑盒的状态,所以这次浏览了一遍Zmap的论文,对于论文里面提到的点进行记录。

0x01 诞生

一直以来,丈量日渐庞大的互联网就是研究者们的探索方向之一,和攻击者使用的探测手法,比如僵尸网络或者蠕虫相比,研究者能够利用的方法十分有限,于是,Zmap诞生了。

在此之前,除了每一位致力于此的研究者自己编写的程序外,最有效的工具应该是Nmap,这已经是十分优秀的探测工具,但是它还是不够快,如果打算利用Nmap去扫描整个网络空间,花费的时间单位将以天计。

0x02 性能

官方给出的性能版本是:单台入门级服务器在千兆以太网速度下扫描整个IPv4空间需要45分钟。

在同等准确度的限制下,它是使用agressive default策略的Nmap扫描速度的1300倍。

Zmap能够将当前带宽的利用率提升到97%

0x03 优化

为了提高扫描速度,Zmap采用以下策略进行扫描探测优化:

首先,Zmap跳过TCP/IP堆栈,直接在链路层使用以太网帧;
其次,对于目标列表的选取使用随机抽样,这样避免顺序扫描导致的对方网络负载过大。通过采用乘法循环群随机序列来保证生成稠密且唯一的随机数;
使用类似SYN cookies的方式来避免存储包交互时的序列状态确认;
使用根树,一种处理范围和使用频率的路由表来排除特殊的地址空间;
最后,在扫描过程中,允许丢失少量的扫描数据。

0x04 验证

通过实验对比,Zmap的命中率与扫描速度无关,同时对于探测的覆盖率和扫描时刻的影响进行的比较。

在和Nmap的比较中我们可以看出,Nmap更适合单目标多端口的探测,而Zmap则侧重于多目标单端口的扫描环境。

0x05 实际部署

如果你是出于善意的角度使用Zmap去测量网络空间,在使用工具时,应该注意以下几点:

  1. 保持与网络管理员的联系,注意Zmap对当前的网络带宽环境带来的影响。
  2. 在机器的源地址上放一个简单的网页声明,对于扫描源IP进行DNS解析,方便其他机构辨识。
  3. 适当减缓扫描速度,使用灵活的扫描策略,降低可能的影响。

0x06 发展

这是论文里提到的未来Zmap的发展之路,不过这篇论文已经是3年前的了,其中提到的一些设想说不定已经实现。

  1. IPv6空间扫描
  2. 单IP多域名多证书扫描
  3. 类似robot的扫描圈君子协定
  4. 更快的速度,甚至于实现建立某一时刻的网络地址空间快照