从一次对话中学到的东西(Masscan 学习)

本文介绍了在有限时间内进行大规模IP端口扫描的挑战,传统的nmap可能无法满足时间要求。作者通过前辈的推荐了解到Masscan,一个能快速扫描大量IP端口的工具。Masscan以其高速度著称,但准确性稍逊于nmap。通过调整参数如--rate和扫描范围,可以找到速度与准确性的平衡。最后,提出了结合使用Masscan初步扫描和nmap精确探测的解决方案,以解决时间限制下的端口扫描问题。

第一次听说 Masscan ,是在闲聊的时候知道的。

前辈:你知道 nmap 吗?

我: 知道啊,前几天根据实践写了笔记,除了常规的端口扫描和存活主机探测,必要时也可以得到详细的系统信息或者利用里面强大的脚本探测漏洞等等。

前辈: 如果说有一个企业或者一个学校有大量的 IP ,而且正好在一个范围内。而你的任务是这些 IP 有哪些端口开放,运行着什么服务等等,你会怎么做?

我:我可能会用 nmap 在 IP 范围内进行一次全端口扫描。

前辈:如果我加上时间限制呢?只有半天,甚至不到一小时呢?

我当时意识到事情似乎不太对劲,因为我在自己实践 nmap 各种指令的时候曾经输过这么一句话

nmap -p 0-65535 -v 192.168.31.77

等了将近10分钟,如果像是在一定范围内的 IP ,上百个上千个,那不得让它扫上好几天.

然后直接了当的说:我做不到,这些时间不够吗.难不成有什么工具比 nmap 扫描的更快?

然后前辈就给我说了个 Masscan ,这个号称6分钟可以扫描整个互联网(前提是网够快,设备够强大, 试试可能逝世!!)

然后又给我说,你可以去了解一下,然后想一下怎么做达到我问的问题的要求.

然后恶补了一课,知道了这个工具的强大.

Masscan 学习

看一眼帮助就很好理解

masscan -h

usage:
masscan -p80,8000-8100 10.0.0.0/8 --rate=10000
 scan some web ports on 10.x.x.x at 10kpps
masscan --nmap
 list those options that are compatible with nmap
masscan -p80 10.0.0.0/8 --banners -oB <filename>
 save results of scan in binary format to <filename>
masscan --open --banners --readscan <filename> -oX <savefile>
 read binary scan results in <filename> and save them as xml in <savefile>

实际上 mascan 上也可以使用 nmap 的部分指令,也是非常容易上手的

简单的单 IP 全端口扫描:

masscan -p 0-65535 192.168.31.77 --rate=1000 //同时发的包的数目

在这里讲一下 masscan 独有的用法

选项说明
–banner获取 banner 信息,支持少量信息
–rate指定发包的速率
-c;–conf <filename>读取配置文件进行扫描
–echo当前配置重定向一个文件中
-e;–adapter <ifname>指定用来发包的网卡接口名称
–adapter-ip <ip-address>指定发包的 IP 地址
–adapter-port <port>指定发包的源端口
–adapter-mac <mac-address>指定发包的 MAC 地址
–router-mac <mac-address>指定网关的 MAC 地址
–exclude <ip>IP地址范围黑名单,防止masscan扫描
–excludeflile <filename>指定范围黑名单的文件
–includefile;-iL <filename>读取一个范围扫描
–ping扫描应该包含 ICMP 回应请求
–append-output以附加的形式输出到文件
–iflist列出可用的网络端口,然后退出
–retries发送重试的次数,以1S为间隔
–nmap打印与 nmap 兼容的数据
–http-user-agent设置 user-agent字段的值
–show <open;close>告诉要显示端口的状态,默认是显示开放端口
–noshow <open;close>禁用端口显示状态
–pcap <filename>将接收的数据包以 libpcap 格式存储
–regress运行回归模式,测试扫描机器是否正常运行
–ttl <num>指定发送完包之后的等待时间,默认为10秒
–wait <second>指定发送完包后,等待的时间
–offline没有实际的发包,用来测试开销
-sL不执行扫描,主要是生成一个随机地址列表
–readscan <binary-file>读取 -oB 生成的二进制文件,可转化为 XML 或者 JSON 格式
–connection-timeout <secs>抓取 banners 时保持 TCP 连接的最大秒数,默认是30S.

关于检测结果不准确说明

当使用 masscan 我发现了一个问题,masscan 扫描的速度虽然快,但是并不准确,就拿我上面执行的单 IP 全端口扫描的例子来说(并不是这个 IP,是拿另一个 IP 进行测试),只是扫描出了一个可用端口,实际上我开的端口多达10个

然后我爬 GitHub 去寻找又没有人提出相关问题,结果还真有人说出了这个问题,在Issues 365里有人谈过这个问题

然后激发我极大的好奇心

可以判断端口数目和 rate 设置线程的数目有关系,如果端口多,设置的线程也多,那么结果有很大的误差.但是如果端口少,设置的线程的多少对于结果的影响不大.

然后我改成了以下语句

masscan -p 0-10000 192.168.31.77 --rate=1000

结果不但快,经过对比也是准确的,我在0-10000 里面确实开了这些端口

然后在寻找资料的时候,发现也确实有人进行了对比,可以点击下面的连接

在互联网端口扫描过程中寻找速度和准确度之间的平衡点

回到开头

对于前面的问题,看到这里也许有一定的想法了, masscan 扫描快, nmap 扫描准,那么让 masscan 扫描可用端口,让 nmap 对masscan 扫到的可用端口进行扫描不就可以了?

是的,答案就是这么简单.当然还得有工具才可以.让 namp 会自己对 masscan 的数据进行处理.

突然觉得得抽空学学 python 了,对以后写点小工具啥的也方便.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值