原标题:ZMap扫描机制剖析
*本文作者:Murkfox,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
前言
随着企业内网的网络资产不断增加,对实时监控网络资产变化的要求不断提升。以 Nmap 为代表的一代端口扫描器的在扫描速率上已经无法满足日常需要。随之以 Zmap 为代表的全网级快速端口扫描器被大家所熟知并加以应用。本文主要通过分析 ZMap 的工作机制以及发包机制来探讨如何构造全网级快速端口扫描器。
Zmap介绍
首先我们看一下 Zmap 的系统结构图:
ZMap 将各个功能模块化,这增加了 ZMap 的灵活性,并可以轻松的集成其他的工具,以便构造自己的网络资产探测系统。
如图所示,扫描器的核心部分由命令、配置文件解析模块、目标 IP 列表生成模块、程序监控模块以及数据包发送接收模块共同组成。
ZMap针对于不同的通信协议,采用不同的探针模块去验证,目标设备的存活。我们也扩展探针模块可以针对不同类型的探针进行定制,同时负责生成探测包并解释传入的包是否是有效响应。
模块化输出处理程序允许将扫描结果通过管道传输到另一个进程,或直接添加到数据库,或传递给用户代码以进行进一步操作,例如 Zgrab。
在 ZMap 的设计理念中,最重要的一点是做到了发送和接收数据包的线程独立化。这尽可能的减少了带宽的共享损耗,同时提高了线程的效率。
通过