
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 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 ,则端口不开放。如下图所示 :
图2 Masscan半开放TCP扫描流程
同时 ,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>