Masscan及Nmap实现对阿里云ECS的外网端口监控
作者:admin | 时间:2017-11-21 01:02:13 | 分类:黑客技术 隐藏侧边栏展开侧边栏
Nmap作为一个开源的互联网端口扫描及安全审计工具,大家并不陌生,许多系统及网络管理员利用它进行网络探测、端口扫描、端口服务管理等。但是在遇到大网段全端口范围的场景时,nmap的扫描能力就受到了限制,扫描周期长就成为了其弊端。
要实现外网端口监控,首先就要保证端口扫描的近实时性,对向外暴露的高危端口及时处理,那么如何解决大网段全端口扫描的场景呢?此时就需要用到Masscan,一个大网段全端口扫描神器。首先我们简单熟悉一下这款扫描神器。
Masscan采用了异步数据传输的方式,能够灵活的自定义任意地址范围和端口范围。
masscan端口扫描速度之所以能够如此之快,一是其基于无状态的急速扫描技术,无状态连接是指无关心TCP状态,不占用系统TCP/IP资源;二是其发包速度非常快,并可以灵活配置,在windows中,它的发包速度可以达到每秒30万包;在Linux中,速度可以达到每秒160万;默认情况下masscan的发包速度每秒100包,为了提高速度,可以通过参数–rate设置发包速度。尤其是在应对大网段全端口扫描的时候,这个参数就发挥了其快速的特点。
那么如何利用Masscan和nmap实现对阿里云ECS的外网端口监控呢?
大体思路是利用masscan对阿里云公网IP进行全IP 全端口定期进行快速扫描,同时针对扫描出的结果再结合nmap进行端口服务探测和安全扫描。
首先需要收集阿里云所有ECS外网地址,这里通过阿里云ECS API获取所有ECS外网IP并写入文件,此文件将作为masscan及nmap的扫描输入。贴出部分代码如下:
收集了阿里云ECS所有外网IP地址之后,接下来就该masscan出场了,将IP文件作为扫描输入,对1~65535的端口进行全端口扫描,输出结果保存的文件有多种形式,-oL 文本格式;-oX xml格式;-oJ json格式;执行命令运行msscan扫描:
masscan -iL ip.txt -p1-65535 -oL result–rate 1000
或者利用python的系统命令接口执行:
Import os
Os.system(“masscan -iL ip.txt-p1-65535 -oJ result –rate 1000″)
–rate参数指定发送扫描包的个数,扫描大网段全端口范围时,建议该值设置大一些,提高发包速率,能够提升扫描速度。
masscan执行结果如下(json格式):
masscan强大之处在于其端口扫描的速度快,但是针对扫描出的端口无法探测其对应的服务及主机操作系统类型,这个时候nmap就派上用场了,可以利用nmap对已经扫描出的IP和端口进行服务探测和安全检查,这里采用redis临时存储masscan的扫描结果,nmap对masscan的结果再次进行扫描,将最终开放的端口及服务探测结果写入文件保存。
总结
针对阿里云上的外网端口监控,采用masscan和nmap相结合的方式,进行功能互补,并实现半自动化端口监控,还有许多需要提升和优化的空间,例如如何实现全自动化,实现起来不难,这里只是抛砖引玉,同时如何提升监控实时性,针对危险端口实现报警预告,另外可以结合可视化,实现监控可视化,后续会不断优化,敬请期待。
*本文原创作者:yuegui_2004