20201103
目录
主动扫描系列文章(1):nmap的基础使用
主动扫描系列文章(2):masscan/zmap扫描主机与端口
主动扫描系列文章(3):nmap与masscan的配合使用
0. 引言
注:本篇文章中的工具并未实际测试,只是前期工作需要所进行的调研,如果报错请自行查找原因。
前面文章中,已经介绍了nmap的初步使用方法,基本上对于扫描个服务器来说,没有任何压力了,识别端口,识别服务器操作系统等等;还有文章(2)中关于masscan的使用方法。但是,为什么masscan比nmap快呢?这个暂时不是很理解。毕竟nmap也是单syn包扫描,在不使用网卡驱动的形式下,两者应该都是使用了raw_socket来进行发包,不过在收包部分有一个区别,masscan是单开了一个线程来进行收包。不过我觉得,如果是考虑到了这种驱动然后加上收包的过程的话,他自然是要比他快,所以还是要看具体配置,看看是不是都是使用的syn扫描方式,如果都是一样的,按说速度不该差太多。特别是加上驱动之后,有了带宽和机器的支撑,masscan所号称的几分钟扫遍全网当然是可以是实现的,那肯定比nmap快。
不过我觉得肯定也跟内在的设计逻辑有关,两者的侧重点不一样。而且我在百度和谷歌上都搜索了一些内容,大部分都是直接说masscan快,而没有说明为什么快,还有一些测评。这里贴一个测评[1],他的结果我没有具体看,而且感觉他也没有具体说明到底为什么masscan快,不过他的测评倒是挺完整的。那么这里姑且就认定masscan在扫描端口方面比nmap快。本篇文章主要总结一下,使用nmap和masscan的组合使用方法。
(后续有时间,还是好好看看这部分,对比对比他们的优劣,如果仅仅是网卡驱动的加持,那么就没有深入了解的意义)
而且,我觉得也有一定的可能性就是扫描大型网络段的时候,这种性能差别会更明显。
github上有很多开源的,这里简单记录一下,后续使用的时候,怎么方便怎么来。
1. 组合masscan和nmap
1.1 各个脚本独立运行(maurosoria/masscan-to-nmap)
该脚本通过三个不同的脚本,最终形成一个端口的信息,主要步骤如下:
- 创建IP及端口列表,利用masscan进行扫描,并生成xml结果
- 通过脚本输出相应的信息
- 使用脚本来运行nmap输出结果
1.2 单独一个脚本运行两个东西(CitrusIce/masmap_script)
单个脚本来运行nmap和masscan,他也给出了自己的注释:
# 首先运行2或3个并发的Masscan任务,所有的65535个端口分为4-5个更小的范围;
# 获取主机列表以及Masscan扫描出的开放端口的组合列表;
# 使用这些列表作为Nmap的扫描目标并执行常规Nmap扫描。
另外一个跟这个差不多,单仅仅是直接调用的(devyzr/MassChannel)
1.3 图形界面的massmap (NargenPargen/MassMap)
组合masscan和nmap,解释的比较清楚,还有安装部分,而且他有qt5的界面,不过没有在github上提出来图片。
1.4 shell运行生成htmlcapt-meelo/MassMap
通过shell来运行两个工具,然后最终将结果渲染成html,来看看这个最终的效果:
效果图来自文章[2],这个工具就是文章[1]的作者写的。
1.5 IVRE的单独nmap(IVRE)
这个部分实际上不该放在这里,他并不是masscan与nmap共同使用的方式,而是通过多线程来运行nmap的方式。而且这个脚本可能无法单独运行,很多库都是IVRE自己的。
参考
[1]Finding the Balance Between Speed & Accuracy During an Internet-wide Port Scanning
[2]MassMap: Combined port scanning w/ Masscan’s speed & Nmap’s scanning features