络扫描是信息收集的重要手段。通过扫描可以发现存活主机、开放端口,进而发现其运行的服务、操作系统等信息,为下一步的工作奠定基础。扫描工具的选取尤为重要。目前,有不少扫描工具可供选择,且各有特色。其中,Nmap以其强大而丰富的功能被绝大部分人所使用。除此之外,号称“45分钟扫描全网”的Zmap以及“6分钟扫描全网”的Masscan也有着较高的使用率。接下来,本文将对Nmap、Zmap、Masscan这三种扫描工具进行一些比较。

一、使用环境

Nmap可以在Linux、Windows、Mac OS下运行,并且有图形化界面Zenmap;

Zmap、Masscan可以在Linux、Mac OS下运行,同时也可以在Windows下使用,不过要借助Cygwin等工具。

二、功能

Zmap

Zmap采用了无状态的扫描技术,没有进行完整的TCP三次握手,因此扫描速度极大提升。Zmap的基本功能是扫描发现主机的开放端口。

l  一次扫描支持单端口,不支持在命令里设置目标IP。

l  设置黑白名单,由于Zmap设计为在全网范围内寻找主机,若想对特定网段进行扫描,可以利用白名单的方式;

l  设置扫描数量和扫描时间;

l  设置扫描速率,由于Zmap会以网络适配器支持的最快速率进行扫描,不会根据上游流量提供商自动调整发送速率,需要手动调整,来减少丢包和不正确的结果。可以通过设置每秒发包数量或带宽进行调整;

l  设置扫描源端口、源IP,伪造网关MAC地址进行伪装。

l  结果输出默认csv格式,经过额外的配置可输出redis和JSON;用户也可以用官方提供的API自己编写输出模块。

l  扫描模式,支持TCPSYN、ICMP echo、UDP三种扫描模式,用户也可以用官方提供的API自己编写探测模块。

l  Banner获取,Zmap并不直接提供Banner获取功能,需要编写扩展模块,不过开发者已经为我们提供了一个样本。详情见后文。

Masscan

Masscan与Zmap类似,同样采用了无状态的扫描技术。

l  允许自定义任意的地址范围和端口范围;

l  设置黑白名单;

l  设置扫描速率;

l  指定发包的源IP地址、源端口和源MAC地址进行伪装。

l  结果输出支持xml、binary、JSON、list等多种格式。

l  为了配合用户的各种扫描需求,Masscan提供了重试次数、UA字段值、发出数据包的TTL值、发包后的等待时间等扫描设置。

l  Banner获取直接在扫描命令里使用—banners即可。

Nmap

Nmap的功能非常强大,而且作为一个广泛使用的开源工具,全球的开发者都为其功能的丰富贡献了力量。因此,本文仅对其功能进行简单的描述。

基本功能:主机发现,开放端口扫描,支持多端口、多网段,可对目标域名进行扫描;

识别功能:识别端口服务类型及版本、操作系统、设备类型等;

扫描模式:TCP SYN scan、TCP connectscan、UDP scan、No Ping scan等;

规避检测:分片、IP伪装、MAC伪装。

三、扩展性

Zmap

Zmap的扩展模块需使用C语言编写,官方提供了两个扩展模块用于获取Banner。

1.      banner-grab-tcp

原理是向扫描发现的IP进行二次发包抓取Banner,二次发包的内容需要自定义。

2.      forge-socket

功能与前者一样,但需要先安装驱动。该模块以底层驱动方式,效率更高。

除了以上两个扩展模块,用户也可以结合需求自行编写。

Nmap

Nmap有强大的脚本引擎框架,用户可以使用Lua语言编写扩展。目前官方提供了400多个扩展脚本,用于增强基础功能和扩展更多功能,如漏洞检测、口令爆破等。在扫描命令中使用—script=scriptname调用即可。

四、速度和效率

三种扫描工具在功能上各有长短,本文针对其最基本的端口扫描、主机发现功能进行了实验对比。

实验环境

操作系统:CentOS 6.5
         网络带宽:2000Kbps左右

实验过程

本文分别编写了三个Python脚本,执行扫描命令。选取来自美欧中非的几个网段,在一次扫描中,针对相同网段和15个常用端口进行扫描,并将结果最后转存到数据库中,对比Zmap、Masscan、Nmap三种工具在相同环境下执行扫描的速度和结果数量。

实验结果

网段   Zmap Masscan Nmap
144.76.183.0/24 时间 11min43s 1min27s 7min39s
结果数量 323 315 317
125.56.212.0/24 时间 11min34s 54s 7min53s
结果数量 496 496 496
129.232.174.0/24 时间 11min24s 53s 15min55s
结果数量 416 427 429
125.71.28.0/24 时间 11min437s 50s 5min42s
结果数量 47 47 47
125.65.110.0/24 时间 11min39s 56s 4min55s
结果数量 275 254 275
134.213.61.0/24 时间 11min46s 56s 37min50s
结果数量 167 168 168
138.186.177.0/24 105.198.227.0/24    时间 22min34s 1min29s 2h18min47s
结果数量 363 183 368 

时间方面,Zmap和Masscan扫描耗时与到扫描目标数量成正比,Zmap由于每次只能针对一个端口进行扫描,对于15个端口的情况需要在脚本中发起15次扫描,因此耗时高于Masscan;Nmap的耗时情况并不稳定,怀疑与目标网段网络环境有关。

结果数量方面,在对一个C段进行扫描的时候,三种工具的主机发现数量差距不大;而在对两个C段进行扫描的实验中,Masscan出现了明显的遗漏。

五、延伸工具

Masscan

【Masscan Web Interface】可以导入XML文件,让用户方便地搜索扫描结果。

Nmap

【Rainmap Lite】Web版Nmap,仅需安装Django,就可以建立新的扫描服务器,允许用户从他们的手机/平板电脑/网络浏览器启动Nmap扫描。

【Dracnmap】将Nmap复杂的命令进行一定程度的集成与简化,使新用户更加容易上手。

【LazyMap】可以自动进行Nmap扫描,并且能自动生成定制的Nessus策略。

【DNmap】Nmap的分布式版本,采用C/S结构,由服务器接受命令分发到客户端执行扫描。

六、总结

以上三种扫描工具各有利弊,工具的选取应该结合具体情况决定。Zmap和Masscan采用了无状态的扫描技术,扫描速度非常可观。在信息收集的初级阶段,可以使用Zmap或Masscan进行目标的情势了解,扫描单一端口的情况考虑使用Zmap,而多端口的情况下Masscan则更为快速。在做完初步了解之后,则应该使用功能更加丰富的Nmap进行进一步的详细扫描。

比一比Nmap、Zmap、Masscan三种扫描工具相关推荐

  1. 比一比Nmap、Zmap、Masscan三种扫描工具区别

    络扫描是信息收集的重要手段.通过扫描可以发现存活主机.开放端口,进而发现其运行的服务.操作系统等信息,为下一步的工作奠定基础.扫描工具的选取尤为重要.目前,有不少扫描工具可供选择,且各有特色.其中,N ...

  2. 必get!建模中的对称美 | 3D MAX中三种对齐工具

    其实大家有时候会不会觉得学习建模实在是太难,主要是哪些地方做错了或者哪里卡住了,可能花很长时间都不知道哪里做错了想解决问题也解决不了,我觉得自学最纳闷就是这点,而且教程里也不一定会提到,不知道有没有这 ...

  3. Nmap配合Masscan实现高效率扫描资产

            之前看过不少大佬的文章,提到nmap扫描准确,并且显示信息详细,但是速度太慢:masscan扫描快但是不会显示端口服务的相关信息,二者结合起来使用会有很不错的效果.后来经@罐罐大神邀请 ...

  4. SoapUI、Jmeter、Postman三种接口测试工具的比较分析

    前段时间忙于接口测试,也看了几款接口测试工具,简单从几个角度做了个比较,拿出来与诸位分享一下.本文从多个方面对接口测试的三款常用工具进行比较分析,以便于在特定的情况下选择最合适的工具,或者使用自己编写 ...

  5. 高级语言到机器语言的过程、三种翻译工具的辨析

    源程序:用源语言写的,有待翻译的程序.比如C语言.C++语言.JAVA等 目标程序:.obj文件,源程序通过翻译程序加工以后,生成的机器语言程序,内容是二进制代码. 程序库:程序库中放着一些程序常用的 ...

  6. 助你查找恶意软件、病毒和rootkit的三款扫描工具

    连接到互联网的服务器整天都看到不断的攻击和扫描.虽然防火墙和定期的系统更新是确保系统安全的第一道防线,但你还是应该定期检查,确保没有攻击者闯入进来.本教程中介绍的几款工具就是为这种完整性检查而开发的, ...

  7. ipa在线安装搭建_三种越狱工具安装方法

    从 iOS 9.2 开始,苹果越狱进入了半越狱时代,也就是重启手机之后需要重新进入越狱工具激活越狱环境,以下是三种常用的越狱工具安装方法: 方法一:自签名 下载大胡子签名工具:Cydia Impact ...

  8. 关键词提取(三种免费工具)

    一.jieba分词 二.哈工大LTP 三.中科院张华平博士的NLPIR

  9. 三种扫描局域网ip方案

    from: http://wooden-baby.javaeye.com/blog/351912 使用java线程扫描局域网ip简单方案 java 快速扫描局域网 ip 之二级嵌套类 方案一 : im ...

最新文章

  1. .NET连接SAP系统专题:C#调用RFC代码(三)
  2. centos 安装cacti监控
  3. Struts2漏洞导致的反弹shell——青藤云安全使用的是agent进程采集器进行检测
  4. 关于css的一些特别用法
  5. Oracle 10g数据库基础之基本查询语句-中-函数
  6. 为了不让代码“作恶”,能否将道德条款纳入开源许可证?
  7. 将方孔分段的lisp_AutoLisp编写工程地质剖面图小工具
  8. 31-- 二叉搜索树的范围和
  9. java实现人字拼,人字拼地板拼法大全
  10. 20200814:力扣201周周赛题解记录上
  11. flutter屏幕适配
  12. atitit.农历的公式与原理以及农历日期运算
  13. 某TS流视频文字识别系统
  14. 2016年中国未来的新兴行业推荐
  15. 问题 G: LZY的计算器
  16. 复合赋值运算符“+=、-=、*=、/=、%=”详解
  17. 使用TabLayout+ViewPager+Fragment实现切页展示
  18. AOT(超前编译)实例分析
  19. 多线程的40个面试题总结(上)
  20. Linux 上如何让任意普通用户执行拥有root权限的特定脚本或者程序

热门文章

  1. iOS 使用Instruments优化内存性能
  2. Spring Mybatis实例SqlSessionDaoSupport混用xml配置和注解
  3. 个人易遗忘的代码记录
  4. 自顶向下的语法分析(修改)
  5. 阿里面试题:Mybatis中的Dao接口和XML文件里的SQL是如何建立关系的?
  6. 安装GCC-8.3.0及其依赖
  7. 没有 4.21 ,Linus Torvalds 宣布 Linux 进入 5.0 时代
  8. 【总结整理】关于切图
  9. 如何让squid实现动态缓存
  10. 阿里云全球布局逾200个数据中心,成立海外孵化中心深耕本地市场