Masscan常用命令详解

一、工具介绍

Masscan是一款开源、高速的网络端口扫描工具,设计目标是实现最快的扫描速度。它能够在极短的时间内完成大规模的网络扫描,适用于互联网级别的扫描任务。它采用异步传输和自定义TCP/IP协议栈技术,最快可实现每秒160万数据包的扫描速率,支持TCP、UDP、ICMP等多种协议,并兼容部分Nmap参数,具备高度的可定制性。

二、技术原理‌

1‌.异步传输机制‌

通过多线程并发发送SYN数据包,并异步接收响应,避免传统扫描工具的三次握手延迟。‌‌

‌2.自定义协议栈‌

绕过操作系统网络堆栈限制,直接操作网络接口卡,减少系统调用开销,提升扫描效率。‌‌

3‌.半开放扫描‌

仅发送SYN包,通过接收SYN-ACK或RST判断端口状态,无需建立完整TCP连接。‌‌

三、主要功能

1.超高速度:支持每秒百万级数据包扫描,6分钟可完成互联网全端口扫描。‌‌‌‌

默认情况下,masscan的发包速率是100每秒,可以通过 ‘–rate’ 命令设置发包速率。

常见参数
--top-port 100:扫描100个常⻅端⼝
--adapter-ip:指定发包的ip地址
-S:欺骗源IP
-v interface : 详细输出
-vv interface : 使⽤⾮常冗⻓的输出
-e interface : 使⽤指定的接⼝
--adapter-port : 指定发包源端⼝
--adapter-mac : 指定发包的源MAC地址
--router-mac : 指定⽹关MAC地址
--exclude : IP地址范围⿊名单,防⽌masscan扫描
--excludefile : 指定IP地址范围⿊名单⽂件
--includefile,-iL : 读取⼀个范围列表进⾏扫描
--wait : 指定发包后的等待时间

2.灵活配置:支持自定义扫描参数,如扫描速率、端口范围、协议类型等。

自定义扫描速率(--rate参数调整发包速度)。
批量扫描IP段(如192.168.1.0/24)和端口范围(-p1-65535)。

3.广泛协议支持:支持TCP、UDP、ICMP等多种扫描协议。

4.异步发送:利用异步网络I/O,实现高效的数据包发送和接收。

5.结果导出:支持多种输出格式,便于后续分析和集成。

支持文本、XML、JSON等格式,便于结果分析(-oX/-oG参数)。

-oX filename :输出到filename的XML。  

-oG filename :输出到filename在的grepable格式。  

 -oJ filename :输出到filename在JSON格式。

扫描特定IP段的80/443端口(速率10万包/秒)
masscan 192.168.1.0/24 -p80,443 --rate 100000

全端口扫描并获取服务版本信息
masscan 10.0.0.0/8 -p0-65535 --banners -oX result.xml

可以使用 --echo 将当前的配置输出到一个配置文件

masscan -p80,8000-8100 10.0.0.0/8 --echo > xxx.conf

利用 -c 来制定配置文件进行扫描

masscan -c xxx.conf --rate 1000


masscan的常用命令记录-CSDN博客

masscan详解_nex1less-2048 AI社区

四、安装部署及使用方法

    使用教程第一步:环境准备

    1. 操作系统选择

      1. Masscan 主要在 Linux 系统上运行,推荐使用 Ubuntu 或 Kali Linux。
      2. 也可以在 macOS 和 Windows 上通过 Cygwin 或 WSL(Windows Subsystem for Linux)进行安装和使用。
    2. 更新系统

      sudo apt update && sudo apt upgrade -y

      1. 在安装 Masscan 前,确保系统是最新的。

    第二步:安装 Masscan

    1. 通过包管理器安装

      sudo apt install masscan

      1. 在 Debian 或 Ubuntu 系统上,可以直接使用 apt 进行安装。

    2. 从源码编译(可选)

      sudo apt install git build-essentialgit clone https://github.com/robertdavidgraham/masscancd masscanmakesudo make install

      1. 如果需要最新版本或自定义配置,可以从源码编译。

    第三步:基本扫描操作

    1. 验证安装

      masscan --version

      1. 应输出 Masscan 的版本信息。
      2. 运行以下命令检查 Masscan 是否安装成功。
    2. 基本端口扫描

      sudo masscan 192.168.1.1 -p80

      1. 192.168.1.1:目标IP地址。
      2. -p80:扫描目标端口80。
      3. 使用 Masscan 扫描指定IP地址上的特定端口(例如扫描 192.168.1.1 的80端口)。
    3. 扫描速率限制

      sudo masscan 192.168.1.1 -p80 --rate=1000

      1. --rate=1000:设置扫描速率为每秒1000个包。
      2. 为避免网络拥堵,可以限制扫描速率(例如每秒发送1000个包)。

    -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秒
    --offline 没有实际的发包,主要用来测试开销

    masscan -sL 10.0.0.0/24 > c段.txt
            masscan -sL 10.0.0.0/16 > b段.txt
            masscan -sL 10.0.0.0/8  > a段.txt 随机生成ip

    sL :显示扫描的所有主机的列表
    xx.txt :把终端命令行中的结果保存在 xx.txt 文件中

    masscan的常用命令记录-CSDN博客

    要扫描的目标IP地址或地址范围,可以使用CIDR表示法,如192.168.1.0/24,也可以使用逗号分隔的列表,如192.168.1.1,192.168.1.2,或者使用连字符表示的范围,如192.168.1.1-192.168.1.10。也可以使用0.0.0.0/0来表示整个互联网,但是这需要自己确认并排除一些特殊的地址,如255.255.255.255。

    port是要扫描的目标端口或端口范围,可以使用逗号分隔的列表,如22,80,443,或者使用连字符表示的范围,如1-65535。也可以使用0-65535来表示所有的端口,但是这会花费更多的时间和资源。

    [options]可以设置的一些可选参数,用来控制Masscan的行为和输出。Masscan有很多可选参数,可以使用--help或--nmap来查看它们的说明和用法。

    以下是一些常用的参数:

    --rate:设置扫描的速率,单位是每秒发送的数据包数,如--rate=10000表示每秒发送10000个数据包。Masscan的默认速率是100个数据包每秒,我们可以根据您的网络环境和需求来调整这个参数,但是请注意不要超过网络带宽或目标的容忍度,以免造成网络拥塞或目标崩溃。

    --banners:获取目标端口的banner信息,以识别服务的类型和版本,如--banners。Masscan默认不获取banner信息,我们可以开启这个参数来获取更多的信息,但是请注意这会增加扫描的时间和资源。

    --source--ip:设置源IP地址,用来伪装我们的真实IP地址,如--source-ip=192.168.1.100。Masscan默认使用您的真实IP地址作为源IP地址,您可以使用这个参数来隐藏您的身份,但是请注意您必须使用您可以控制的IP地址,否则您将无法接收到目标的回应。

    --exclude:排除一些不想扫描的目标地址或地址范围,如--exclude=192.168.1.1,192.168.1.10-192.168.1.20。Masscan默认扫描您指定的所有目标地址,您可以使用这个参数来排除一些特殊的地址,如广播地址、多播地址、回环地址等,或者一些您不感兴趣的地址。

    --output-format:设置输出的格式,如--output-format=list。Masscan支持多种输出格式,如list(列表格式)、binary(二进制格式)、xml(XML格式)、json(JSON格式)等。您可以根据您的需求和喜好来选择合适的输出格式。

    --output-filename:设置输出的文件名,如--output-filename=scan.txt。Masscan默认将输出打印到标准输出,您可以使用这个参数来将输出保存到一个文件中,以便于后续的分析和处理。

    Masscan工具使用指南-CSDN博客

    第四步:高级扫描配置

    1. 扫描多个端口

      sudo masscan 192.168.1.1 -p80,443,22

      扫描多个端口(例如80,443,22)。
    2. 扫描端口范围

      sudo masscan 192.168.1.1 -p1-1000

      扫描端口范围(例如1到1000)。
    3. 扫描整个子网

      sudo masscan 192.168.1.0/24 -p80,443,22

      扫描整个子网中的所有IP地址(例如扫描 192.168.1.0/24 网络)。
    4. 指定输出文件

      sudo masscan 192.168.1.0/24 -p80,443,22 -oL results.txt

      1. -oL results.txt:将结果以列表形式输出到 results.txt 文件。
      2. 将扫描结果输出到文件(例如 results.txt)。
    5. 选择扫描协议

      sudo masscan 192.168.1.0/24 -p80,443,22 --scan-type syn

      1. 选择不同的扫描协议(例如TCP SYN扫描)。

    Masscan的输出取决于您选择的输出格式和文件名,如果您没有指定输出格式和文件名,Masscan将以列表格式将输出打印到标准输出,每一行表示发现了一个开放的端口,包括端口号、协议类型和IP地址。

    如果您开启了--banners参数,Masscan还会输出目标端口的banner信息,如下所示:

    1 Banner on port 22/tcp on 192.168.1.1: SSH-2.0-OpenSSH_7.9p1 Debian-10+deb10u2  

    2 Banner on port 80/tcp on 192.168.1.2: HTTP/1.1 200 OK\r\nServer: nginx/1.14.2\r\nDate: Sat, 22 May 2021 08:23:45 GMT\r\nContent-Type: text/html\r\nContent-Length: 612\r\nLast-Modified: Tue, 19 Feb 2019 09:38:21 GMT\r\nConnection: close\r\nETag: "5c6bf9cd-264"\r\nAccept-Ranges: bytes\r\n\r\n  

    3 Banner on port 443/tcp on 192.168.1.3: TLS: Server Hello   

    每一行表示获取到了一个端口的banner信息,包括端口号、协议类型、IP地址和banner内容。

    根据这些信息来判断目标的操作系统、服务类型和版本等信息,以便于后续的渗透测试和漏洞利用。

    如果指定了输出格式和文件名,Masscan将以相应的格式将输出保存到相应的文件中,您可以使用其他的工具或程序来读取和分析这些文件,如nmap、metasploit等。

    Masscan还支持一些特殊的输出格式,如grepable(可用grep命令过滤的格式)、redis(可存储到redis数据库的格式)、certs(可获取目标证书的格式)等,可以根据需求和喜好来选择合适的输出格式。

    第五步:结果分析与可视化

    1. 查看扫描结果

      cat results.txt

      1. 打开输出文件查看扫描结果。

    2. 使用 Nmap 进行进一步分析

      sudo nmap -sV -p80,443,22 192.168.1.1

      1. 根据 Masscan 的结果,使用 Nmap 进行更详细的端口扫描和服务识别。

    3. 数据可视化

      import matplotlib.pyplot as pltimport pandas as pd# 假设 results.txt 是逗号分隔的文件data = pd.read_csv('results.txt', delimiter=': ', names=['IP', 'Port'])plt.hist(data['Port'], bins=range(1, 65535, 100))plt.title('开放端口分布')plt.xlabel('端口号')plt.ylabel('开放次数')plt.show()

      1. 利用工具(如 Excel、Python 的 Matplotlib、Seaborn)对扫描结果进行图表展示。例如,使用 Python 统计开放端口的分布情况。

    第六步:优化与最佳实践

    1. 避免扫描被检测

      sudo masscan 192.168.1.0/24 -p80,443,22 --rate=500 --wait=0 --randomize-hosts

      使用随机化源端口、调整扫描速率、添加延迟等方式,减少被目标网络检测为扫描行为的风险。
    2. 分布式扫描

      1. 对于大规模扫描任务,可以利用多台机器协同工作,分担扫描负载。

      2. 使用 Masscan 的接口参数(如指定IP地址和速率)进行分段扫描,再合并结果。

    3. 定期扫描与监控

      定期进行网络扫描,监控网络状态变化,及时发现潜在的安全威胁,并采取相应的防护措施。

    五、安全与合规性提示

    1.合法授权:确保在进行任何网络扫描之前,已获得相关网络所有者的明确授权。

    2.负责任使用:避免高频率、长时间的扫描,以减少对目标网络的影响和被检测为恶意行为的风险。

    3.数据隐私:妥善处理扫描过程中收集到的敏感数据,遵守数据保护法规。

    4.了解法规:不同国家和地区对网络扫描有不同的法律规定,务必熟悉并遵守适用法规。

    六、总结

    Masscan 以其无与伦比的扫描速度和高效性,成为大规模网络扫描的首选工具。无论是网络安全评估、渗透测试,还是学术研究,Masscan 都能提供强大的支持。

    合理使用 Masscan,您将能够深入了解网络环境中的安全漏洞,采取必要的防护措施,构建更加安全可靠的网络体系。利用 Masscan 的强大功能,您可以高效地完成大规模网络扫描任务,快速识别潜在的开放端口和服务,助力网络安全防护工作迈上新的台阶。

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
    如若转载,请注明出处:http://www.pswp.cn/news/910363.shtml
    繁体地址,请注明出处:http://hk.pswp.cn/news/910363.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    STM32的内部RC与外部晶振电路

    内部RC是“能用”&#xff0c;外部晶振是“用得准”。 一、STM32芯片内部的“晶振电路”是什么&#xff1f; STM32内部确实集成了两个RC&#xff08;电阻-电容&#xff09;振荡器&#xff1a; HSI&#xff08;高速内部振荡器&#xff09;&#xff1a;通常8MHz&#xff0c;精…

    为OneCode 开发TRea 开发插件,从环境搭建到生态融合

    作为 AI 原生开发环境&#xff0c;TRea 的插件体系支持开发者基于其核心能力&#xff08;如自然语言代码生成、AI 代码分析&#xff09;进行功能扩展。本文以开发一个 "OneCode 组件生成插件" 为例&#xff0c;详解如何通过 TRea 开放接口实现自定义功能&#xff0c;…

    Spring JDBC配置与讲解

    目录 一、Spring JDBC概述1、Spring JDBC需要配置的依赖2、Spring配置项文件配置 二、Spring JDBC的使用1、Spring JDBC的增加操作2、Spring JDBC的修改操作3、Spring JDBC的删除操作4、Spring JDBC的查询操作 三、Spring JDBC的事务1、xml的形式进行事务2、Transactional注解 …

    【AI智能体】Spring AI MCP 服务常用开发模式实战详解

    目录 一、前言 二、MCP 介绍 2.1 MCP是什么 2.2 MCP 核心特点 2.3 Spring AI MCP 介绍 2.3.1 Spring AI MCP架构 2.3.2 Spring AI MCP分层说明 2.4 两种模式介绍 三、本地开发SSE模式 3.1 搭建mcp-server 3.1.1 导入工程核心依赖 3.1.2 添加配置文件 3.1.3 提供两个…

    OpenStack 入门与实践

    一、云计算概述 1.1 云计算的定义与本质 云计算&#xff08;Cloud Computing&#xff09;是一种基于网络的超级计算模式&#xff0c;它能够根据用户的不同需求&#xff0c;动态提供所需的计算资源、存储资源和网络资源等。这种模式就像我们日常生活中使用水电煤气一样&#x…

    AntV L7入门教程

    以下教程将系统地介绍 AntV L7 的核心 Scene 类用法&#xff0c;涵盖实例化、地图配置、视图操作、图层管理、事件监听及资源销毁等常用 API&#xff0c;并为每个方法给出完整示例代码。所有示例均基于官方 API 文档 ([l7.antv.antgroup.com][1])。 一、安装与引入 # 安装 L7…

    【边缘计算】场景

    工业互联网 对现场采集的数据进行数据预处理&#xff0c;将现场有用的信息提取出来实时上传给平台&#xff0c;为平台大大减轻了处理的工作量。 汇聚现场数据统一接口上传数据到云端&#xff0c;大大提高系统多样部署的安全性&#xff0c;解决现场数据跨域访问的问题。制造企业…

    【FPGA学习】DDS信号发生器设计

    目录 一、设计原理与准备​ 1.1 DDS 原理​ 1.2 IP 核学习与准备​&#xff1a;FPGA开发中常用IP核——ROM/RAM/FIFO 2、ROM文件的设置 1.3 开发环境搭建​ 二、DDS 信号发生器设计实现 2.1 系统架构设计​ 2.2 代码编写与模块实现​ 三、测试结果与总结​ 参考文献&…

    pyqt 简单条码系统

    生产数据管理系统说明 系统概述 这是一个基于PyQt5和pyodbc开发的生产数据管理系统&#xff0c;主要用于管理生产过程中的物料绑定和查询操作。系统提供了上料绑定和下料查询功能&#xff0c;支持与SQL Server数据库交互&#xff0c;实现数据的插入、查询、更新和删除操作。界…

    【unitrix】 4.1 类型级加一操作(Add1.rs)

    一、原码 这段代码实现了一个类型级的加一操作(Add1 trait)&#xff0c;用于在Rust的类型系统中进行数值加一运算。 //! 加一操作特质实现 / Increment operation trait implementation //! //! 说明&#xff1a; //! 1. Z0、P1,、N1 1&#xff0c;常规计算 //! 2. …

    git工作中常用

    1.管理本地文件 git init//初始化生成一个本地仓库 git add * //添加到暂存区 git commit–m “message” //提交到本地仓库 2.删除本地分支 git branch -d local_branch_name3.隐藏及解除隐藏 git stashgit stash pop4.远程新建分支&#xff0c;在本地签出时候怎么看到 …

    Golang 中接口嵌套的详细说明和使用示例

    在 Go 语言中&#xff0c;接口嵌套&#xff08;也称为接口组合&#xff09;是一种强大的特性&#xff0c;它允许你通过组合现有接口来创建新的接口。这种方式遵循了 Go 的组合优于继承的设计哲学。 接口嵌套的基本概念 接口嵌套是指在一个接口中嵌入其他接口&#xff0c;从而…

    数智管理学(二十四)

    第二章 数智化重塑管理的核心 第三节 动态资源配置与实时优化 在当今数智化浪潮的席卷下&#xff0c;企业管理面临着前所未有的变革与挑战。资源配置作为企业管理的核心环节之一&#xff0c;其方式和效率直接影响着企业的运营成本、生产效率和市场竞争力。传统的静态资源配置…

    Redis 各版本差异及性能测试指标对比

    Redis 各版本差异及性能测试指标对比 Redis 主要版本差异 Redis 2.x 系列 主要特性&#xff1a; 支持主从复制支持简单的持久化(RDB和AOF)发布/订阅功能事务支持 局限性&#xff1a; 单线程模型集群功能有限 Redis 3.x 系列 重大改进&#xff1a; 引入Redis Cluster(官方…

    Python图形化秒表:使用Turtle打造精确计时工具

    ⏱️ 编程基础第一期《6-30》–简易计时器/秒表&#xff0c;这是一个使用Python的turtle和time模块实现的简易计时器/秒表程序&#xff0c;提供简洁的数字时间显示。 目录 &#x1f31f; 功能特点&#x1f680; 使用方法&#x1f9e9; 程序架构设计&#x1f4bb; 代码详解窗口和…

    【轨物方案】轨物科技|LoRaWAN 赋能智能光伏清扫,解锁电站高效运维新时代

    在大型集中式光伏电站的广袤土地上&#xff0c;清扫机器人的高效运行是保障发电效率的关键。然而&#xff0c;传统的无线通信方式在这些偏远、无4G/5G信号覆盖的区域&#xff0c;往往步履维艰。作为专注于工业物联网解决方案的轨物科技&#xff0c;我们深知这些痛点&#xff0c…

    Python函数实战:从基础到高级应用

    Python-函数 Python 中可以使用def关键字来定义函数。 函数定义规则&#xff1a; 函数代码块以 def 关键词开头&#xff0c;后接函数标识符名称和圆括号 ()。任何传入参数和自变量必须放在圆括号中间&#xff0c;圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使…

    Mac在局域网中突然很慢(包括SMB、NFS、SCP、SSH、Ping等场景均很慢)

    今天 SMB 又突然好慢&#xff0c;大概只有 8-9 MB/s&#xff0c;而苹果 SMB 很容易突然很慢是出了名的。我就想装 NFS&#xff0c;但是 NFS 弄好之后还是很慢&#xff0c;我服了&#xff0c;我就检查了scp等场景&#xff0c;都很慢&#xff0c;但是互联网下载速度还是很快的。 …

    UMAP:用于降维的均匀流形近似和投影实验

    关键词&#xff1a; Uniform Manifold Approximation and Projection (UMAP)&#xff1a;均匀流形近似与投影 一、说明 对于降维&#xff0c;首先看数据集是否线性&#xff0c;如果是线性的用pca降维&#xff1b;如果是非线性数据&#xff0c;t-SNE或者UMAP&#xff0c;本文针…

    【Datawhale组队学习202506】YOLO-Master task03 IOU总结

    系列文章目录 task01 导学课程 task02 YOLO系列发展线 文章目录 系列文章目录前言1 功能分块1.1 骨干网络 Backbone1.2 颈部网络 Neck1.3 头部网络 Head1.3.1 边界框回归头1.3.2 分类头 2 关键概念3 典型算法3.1 NMS3.2 IoU 总结 前言 Datawhale是一个专注于AI与数据科学的开…