简介
masscan是一个快速端口扫描器,号称是世界上最快的扫描软件,可以在几分钟内扫描整个互联网端口。(受限于硬件设施、网络带宽等因素,所以并不是说个人电脑几分钟扫描整个互联网,同时扫描整个Imternet的权限归国防部所有,不要轻易扫描互联网,不然请喝茶。)
massan的扫描结果与nmap(扫描神器-众神之眼)非常相似,之所以扫描速度比nmap快很多是因为它采用了异步传输、无状态扫描方式(异步传输意味着扫描器在发送探测数据包之后不必等待回复)。在Windows系统中,masscan的发包速率可达30W每秒;而在Linux系统中更是达到了惊人的160W每秒。同时masscan在扫描时会随机选择目标IP,所以不会对远程主机造成压力。网络通信
默认情况下,masscan的发包速率是100每秒,可以通过 ‘–rate’ 命令设置发包速率。受限于个人电脑与带宽,特别高的发包速率的情况下,存在一定的准确率误差。
nmap需要记录tcp/ip的状态,而OS能处理的tcp/ip的最大链接数只有1500左右;masscan采用的是不建立完整的tcp链接方式,在收到SYN/ACK之后,直接发送RST结束链接(RST表示复位,用来结束关闭异常的链接)。 附:–banner除外
相较于nmap来说,masscan更加的灵活,同时它允许自定义的地址范围和端口范围。
参数详解
-p <ports,--ports <ports>> 指定端口进行扫描
--banners 获取banner信息,支持少量的协议
--rate <packets-per-second> 指定发包的速率
-c <filename>, --conf <filename> 读取配置文件进行扫描
--echo 将当前的配置重定向到一个配置文件中
-e <ifname> , --adapter <ifname> 指定用来发包的网卡接口名称
--adapter-ip <ip-address> 指定发包的IP地址
--adapter-port <port> 指定发包的源端口
--adapter-mac <mac-address> 指定发包的源MAC地址
--router-mac <mac address> 指定网关的MAC地址
--exclude <ip/range> IP地址范围黑名单,防止masscan扫描
--excludefile <filename> 指定IP地址范围黑名单文件
--includefile,-iL <filename> 读取一个范围列表进行扫描
--ping 扫描应该包含ICMP回应请求
--append-output 以附加的形式输出到文件,而不是覆盖文健
--iflist 列出可用的网络接口,然后退出
--retries 发送重试的次数,以1秒为间隔
--nmap 打印与nmap兼容的相关信息
--http-user-agent <user-agent> 设置user-agent字段的值
--show [open,close] 告诉要显示的端口状态,默认是显示开放端口
--noshow [open,close] 禁用端口状态显示
--pcap <filename> 将接收到的数据包以libpcap格式存储
--regress 运行回归测试,测试扫描器是否正常运行
--ttl <num> 指定传出数据包的TTL值,默认为255
--wait <seconds> 指定发送完包之后的等待时间,默认为10秒
--packet-trace 打印发送和接收的数据包摘要,在低速率下使用(每秒几个数据包,否则会淹没终端数据)
--offline 实际不传输数据包,和“--packet-trace”配合可查看传输了哪些数据包
-sL 不执行扫描,主要是生成一个随机地址列表
--interactive 在控制台终端显示实时效果
--output-format <fmt> 指示输出文件的格式,可以是xml,二进制,grepable,列表或JSON。选项“--output-filename”必须指定。
--output-filename <filename> 将结果保存到的文件。如果“--output-format”未指定,则默认为xml。
-oB <文件名> 将输出格式设置为二进制并将输出保存在设置的文件名。
-oX <文件名> 将输出格式设置为XML并将输出保存在设定的xml文件名。
-oG <文件名> 将输出格式设置为grepable并将输出保存在设定的grepable格式文件名。
-oJ <文件名> 将输出格式设置为JSON并将输出保存在设置JSON格式的文件名。
-oL <文件名> 将输出格式设置为简单列表格式并保存以list列表输出的文件名。
--readscan <binary-files> 读取从-oB生成的二进制文件,可以转化为XML或者JSON格式.
--connection-timeout <secs> 抓取banners时指定保持TCP连接的最大秒数,默认是30秒。
使用实例
masscan -p 0-65535 23.248.163.21 --rate=2000 # 扫描全部端口
masscan -p 1-100,443,600-900 23.248.163.21 --rate=2000 # 扫描指定端口
masscan与nmap比较
工具 | 速度 | 不同 | 相同 |
---|---|---|---|
nmap | 较慢 | 可以扫描操作系统、端口服务和版本信息等详情 | 骚端口 |
masscan | 很快 | 只能扫描端口 | 扫端口 |
附:为了提高扫描的效率,我们可以先通过masscan扫描端口,在通过nmap针对端口进行进一步的详细扫描。