端口扫描,是网络安全中非常常用的技术手段 。通过对于特定的IP范围和端口范围进行穷举扫描,发现网络中开放的端口,从而为进一步的探查提供基本信息 。端口扫描一般针对TCP端口进行,利用TCP的三次握手建立连接的原理,通过连接是否成功来判断端口是否开放 。端口扫描对于时间性能要求较高,耗时过长的扫描将大大降低扫描结果的可靠性 。Masscan,是一个互联网级别的高性能端口扫描工具,使用SYN包检测技术,号称能够在5分钟内完成对整个互联网所有的IP进行扫描 。
![Masscan - 五分钟扫描整个互联网](http://img.jiangsulong.com/220420/20124L620-0.jpg)
文章插图
masscan - 互联网级别的端口扫描
简介Masscan,是 robertdavidgraham 在 Github 上开源的端口扫描工具,项目代码位于 https://github.com/robertdavidgraham/masscan,目前版本为 1.0.5 。
【Masscan - 五分钟扫描整个互联网】Masscan 性能优越,极限速度可以从单机每秒发送1000万个数据包 。Masscan 使用了与另一个著名的扫描工具 —— nmap 类似的命令行参数,方便进行上手使用 。
Masscan 针对 TCP 端口进行扫描,使用 SYN 扫描的方式,不建立一个完全的 TCP 连接,而是首先发送一个 SYN 数据包到目标端口,然后等待接收 。如果接收到 SYN-ACK 包,则说明该端口是开放的,此时发送一个 RST 结束建立过程即可;否则,若目标返回 RST,则端口不开放 。
![Masscan - 五分钟扫描整个互联网](http://img.jiangsulong.com/220420/20124La5-1.jpg)
文章插图
TCP三次握手
Masscan 在其内部使用异步传输,更为灵活,允许任意的IP和端口范围,并使用了随机化的目标扫描,使得对于非连续段IP的扫描更加高效,解决了范围切分带来的性能损失问题,且降低了对于目标网络的负载压力,提高了自由度和性能 。
![Masscan - 五分钟扫描整个互联网](http://img.jiangsulong.com/220420/20124G509-2.jpg)
文章插图
Github项目
安装Masscan 可以从源码进行编译,在 Debian/Ubuntu 平台上,使用命令:
$ sudo apt-get install git gcc make libpcap-dev$ git clone https://github.com/robertdavidgraham/masscan$ cd masscan$ make
编译得到的二进制程序位于子文件夹 masscan/bin 。由于代码中包含了大量的小文件,可以开启多线程模式进行编译:$ make -j
在其他操作系统上,也可以进行相应的安装:- windows,Visual Studio:使用提供的 VS10 项目;
- Windows,MingGW:使用 make 编译;
- mac OS X,XCode,使用提供的 XCode4 项目;
- Mac OS X,cmd:使用 make 编译;
- FreeBSD:使用 gmake 编译
示例Masscan 的主体是一个命令行工具 masscan,可以指定IP网段和端口进行扫描:
masscan -p80,8000-8100 10.0.0.0/8
在这个命令中,指定对网段 10.0.0.0/8,也即是 10.x.x.x 共约1600万IP进行扫描,扫描它们的80端口,以及从8000到8100的端口,每个IP扫描102个端口 。Masscan 提供了echo选项,可以把当前命令的配置保存下来,然后在其他masscan命令直接引用:
# masscan -p80,8000-8100 10.0.0.0/8 --echo > xxx.conf# masscan -c xxx.conf --rate 1000
在这里,把指定的网段和端口等的配置参数使用echo进行保存,随后使用-c命令导入,方便了对于复杂参数配置的重复使用 。Masscan 提供了进一步的应用信息识别,也称banner信息,可以识别在各端口上运行的服务的类型 。可以使用--banners参数,并指定一个内网IP,来实现banner扫描:
masscan 10.0.0.0/8 -p80 --banners --source-ip 192.168.1.200
如果你哪一天心血来潮,想要对整个互联网,也即是所有IPv4的IP地址,以及所有65536个TCP端口进行扫描,masscan也是可以实现的:masscan 0.0.0.0/0 -p0-65535
当然,这并没有太大的意义,可能会产生性能问题,对你本地的网络产生难以承受的负荷,也可能会使你的IP被加入到某些网络的黑名单中 。我们可以使用参数--excludefile对某些我们不需要的网络进行排除:masscan 0.0.0.0/0 -p0-65535 --excludefile exclude.txt
当然,对于如此大量的数据输出,你不会想让程序输出到命令行的 。可以指定输出文件:masscan 0.0.0.0/0 -p0-65535 -oX scan.xml
这里我们使用-oX参数把结果输出到XML文件,也可以使用其他的文件格式,支持的文件格式包括:xml、grepable、json、简单列表和二进制等 。
推荐阅读
- 不花一分钱,轻松实现网站漏洞扫描,只需几分钟即可出具报告
- 网络扫描利器Fing之Linux版本使用教程
- 打印机怎么扫描
- 五分钟教你搞定wifi断网问题,从此wifi问题不求人
- 漏洞扫描工具整理
- 喝红茶后,五分钟以后,是否可以吞服鱼肝油?[红茶]
- 教你五分钟重装Win 10!再也不怕笔记本蓝屏了
- 你会买一体机么?五分钟告诉你,什么样的人适合购买一体机
- 软网推荐:禁止谷歌浏览器扫描清理
- 批量漏洞扫描器——Medusa