Masscan是端口一款高速端口扫描工具 ,具备出色的扫描扫描效率和大规模扫描的能力 ,支持TCP和UDP协议的工具扫描,并能够根据用户的文解需求指定多个目标和端口。同时
,端口Masscan还采用了网络性能优化技术,扫描充分利用操作系统的工具资源和多核处理能力,实现了卓越的文解扫描效率和吞吐量 。使用Masscan能够帮助用户快速了解目标主机的云计算端口服务和漏洞情况,并提供灵活的扫描输出格式和报告,方便进一步的工具分析和处理 。 Masscan的文解特点
: 1)高速扫描 :Masscan以其高速的扫描能力而著称,号称可以在5分钟内扫描整个互联网,端口从一台机器每秒传输1000万个数据包。扫描 2)绕过限制
:Masscan绕过操作系统的网络堆栈限制
,直接发送原始数据包,提高扫描效率,并允许更多的自定义扫描选项。模板下载 3)异步发送:通过异步发送数据包,Masscan能够同时发送多个数据包,实现并发扫描
,进一步加快扫描速度
。 4)灵活的输出格式:Masscan支持多种输出格式,包括文本 、XML和JSON
,方便结果分析和后续处理。 Masscan是由Robert David Graham开发的网络端口扫描工具,其技术原理基于异步传输和自定义的TCP/IP协议栈。香港云服务器相比传统的端口扫描工具,Masscan采用并行异步传输的方式,充分利用现代计算机的多核处理能力和高速网络接口,使得扫描速度大幅提升。 为了实现更高的扫描性能,Masscan采用了自定义的TCP/IP协议栈
。相比使用操作系统提供的标准套接字接口,自定义协议栈允许更直接的数据包处理和更灵活的配置 ,服务器租用Masscan可直接操作底层网络层,绕过操作系统的限制和缺陷,从而显著减少了系统调用的开销,并提高了扫描效率。 为了更好的理解
,首先先来复习下正常的TCP三次握手建立链接的过程: 1)客户端发送SYN标志位为1,seq为x的包给服务器端
,发送完毕之后客户端进入SYN_SEND状态。 2)服务器端发回确认包ACK应答,建站模板回应一个SYN(seq=y)ACK(ack=x+1)报文,发送完毕,服务器端进入SYN_RCVD状态
。 3)客户端收到道服务器端回应的SYN报文
,回应一个ACK(ack=y+1)报文,发送完毕后,客户端进入ESTABLISHED状态
,当服务器端接收到这个包时,也进入ESTABLISHED状态,开始数据传输。 与传统的TCP三次握手相比,Masscan自定义TCP握手过程只需要两个数据包 ,不建立一个完全的TCP连接,源码库而是首先发送SYN数据包到目标端口,然后等待接收。如果接收到SYN-ACK包,则说明该端口是开放的,此时发送一个RST结束建立过程即可,否则,若目标返回RST,则端口不开放 。如下图所示
: 同时 ,Masscan的自定义协议栈使用了特定的数据包格式。为了实现快速扫描
,Masscan使用了非常紧凑的数据包格式,减少了数据包的大小和数量,从而减少了网络传输的开销。这样可以在单位时间内发送更多的数据包,提高扫描速度。 Masscan使用异步传输技术 ,允许同时发送多个数据包而无需等待前一个数据包的响应 。这种并发传输方式极大地提高了扫描效率 ,使得Masscan能够以惊人的速度处理大量目标主机。 一般情况下进行端口扫描,通过传统的TCP握手过程,需要进行三次握手来建立连接
:客户端发送SYN数据包
,服务器返回SYN+ACK数据包,最后客户端发送ACK数据包。这样的握手过程相对较慢,一台机器就算把65536个端口全部用来扫描速度也不快
,不适合高速扫描
。 Masscan的半开放扫描方式,不需要等待建立链接,通过驱动不断对目标发包
,服务器返回包经过驱动被接受 ,Masscan根据返回包携带的信息判断来源的IP和端口,不需要通过端口到端口建立完整的链接
,这样发出请求后
,不再阻塞等待
,而是接受到包之后 ,通知另外的程序判断来源,充分利用计算机多核处理能力和高速网络接口。 同时Masscan的自定义协议栈允许并行处理多个数据包的响应。使用多线程的方式来实现异步扫描
。它将扫描任务划分为多个子任务,并由多个线程并行执行这些子任务。每个线程负责发送和接收数据包,并在数据包返回时进行处理。通过多线程的方式
,Masscan能够同时发送和处理大量数据包
,从而极大地提高了扫描效率。 Masscan以惊人的速度进行扫描,能够在数分钟内扫描大量ip和端口。这使得Masscan成为大规模网络扫描和漏洞探测的理想选择。但是需要注意的是,如果发包量要超过20万/秒,网卡要求10Gbps 。除此之外
,还需要PF_RING ZC驱动
。 通过--rate可以设置扫描速度在虚拟机上测试环境中 ,不到1Gbps的带宽条件下 ,扫描速度为16万/秒的发包率。 Masscan支持多种扫描模式,包括TCP和UDP端口扫描 ,以及SCTP和ICMP扫描。用户可以根据需要选择合适的扫描模式进行目标主机的扫描 。 1)扫描TCP端口
: 使用 -p 参数指定要扫描的TCP端口范围
,例如 : Masscan -p1-65535 192.168.0.0/16 #扫描192.168.0.0/16网段内所有的TCP端口。 2)扫描UDP端口: 使用 -pU 参数指定要扫描的UDP端口范围
,例如: Masscan -pU:1-65535 192.168.0.0/16 #扫描192.168.0.0/16网段内所有的UDP端口 。 3)扫描SCTP端口: 使用 -pS 参数指定要扫描的SCTP端口范围,例如
: Masscan -pS:1-65535 192.168.0.0/16 #扫描192.168.0.0/16网段内所有的SCTP端口 。 4)扫描ICMP: 使用 -pI 参数指定要扫描的ICMP类型范围,例如: Masscan -pI:8-0 192.168.0.0/16 #扫描192.168.0.0/16网段内所有的ICMP类型。 5)扫描ACK 、SYN、FIN等标志位: 使用 -pA 参数指定要扫描的标志位类型范围,例如: Masscan -pA:SAF 192.168.0.0/16 #扫描192.168.0.0/16网段内所有带有SYN 、ACK和FIN标志位的数据包 。 6)扫描指定端口和协议
: 可以同时指定多个协议和端口
,例如
: Masscan -p80,443,8080 -pU:53 192.168.0.0/16 #同时扫描TCP端口80、443和8080 ,以及UDP端口53 。 Masscan默认情况下只会扫描TCP端口
,如果需要扫描其他协议的端口,则需要使用相应的参数进行指定。同时,使用Masscan进行端口扫描可能会对网络造成一定的负载。 Masscan允许用户灵活地配置扫描参数,包括目标端口范围、扫描速率
、数据包大小等
。用户可以根据具体情况进行优化,以获得最佳的扫描性能和效果。 常见的扫描参数配置 : 1)扫描目标设置: -iL <file>:从文件中读取要扫描的目标列表。 <IP range>:直接指定要扫描的IP地址范围
。 2)速率和超时设置: --rate <packets per second>:设置扫描速率 ,即每秒发送的数据包数量
。 --timeout <time>:设置每个端口的扫描超时时间 。 3)IP和端口过滤: --exclude <IP range>:排除特定的IP地址范围
,不进行扫描。 --excludefile <file>:从文件中读取要排除的IP地址列表。 --banners
:获取开放端口的服务banner信息 。 4)输出格式 -oX filename :输出到filename的XML
。 -oG filename :输出到filename在的grepable格式
。 -oJ filename :输出到filename在JSON格式 。 5)其他设置: randomize-hosts:随机扫描目标IP,增加扫描的随机性
。 --nmap
:生成与Nmap相似的输出格式
。 --rotate:使用多个源IP地址进行扫描
。 --shard <total shards>/<this shard>
一
、文解Masscan介绍
二 、Masscan的技术原理
2.1 自定义TCP/IP协议栈
图1 TCP的三路握手
图2 Masscan半开放TCP扫描流程2.2 异步传输
三、Masscan使用
3.1 高速扫描

3.2 支持多种协议
3.3 灵活的配置