Skip to content

EZ Subdomain 是一个高效且多功能的子域名枚举工具,适合初学者和高级用户。它包含无状态枚举、有状态枚举、基于被动 API 的子域名收集以及搜索引擎枚举

Notifications You must be signed in to change notification settings

m-sec-org/subdomain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

EZ Subdomain - 面向 Agent 时代的强大子域名枚举工具

概述

EZ Subdomain 是一款高性能、可编排的子域名枚举工具,既支持传统命令行(CLI)模式,也支持 MCP(Model Context Protocol)服务模式,便于在各类 AI/Agent 系统中一键编排调用。核心能力覆盖无状态/有状态 DNS 枚举、被动 API 聚合、智能多级下探、结果去重与高可信校验等,助你在复杂网络环境下稳定、快速地获取高质量子域名结果。

亮点

  • CLI 与 MCP 双模式:即开即用的命令行,亦可作为 MCP Server 嵌入到 AI/Agent 流程中,拥抱 Agent 时代。
  • 无状态枚举极速稳定:支持 stateless|query|query-dot|query-doh 四种模式;在恶劣网络中可切换 DoT/DoH,对抗劣化与劫持。
  • 被动 API 接口齐全:内置诸多常见平台(Fofa、Quake、Hunter、VT、SecurityTrails、Shodan、ZoomEye、Censys、CIRCL、Bevigil 等),一键 gen 生成 passive_config.yaml,即填即用。
  • 内置免费被动API:内置免费被动API接口,无需配置 Key,直接使用。
  • 高可信策略:主动爆破前进行泛解析判断与过滤;被动 API 结果进入主动验证链路以二次确认,显著降低噪音。
  • 一键下探多级子域名--depth 控制递归深度,配合智能模式 --smart,优先扩展更「有价值」的分支。
  • 灵活强大的字典:内置 small|medium|large,并支持生成式字典 gN[_prefix](如 g3_api 生成前缀为 api、长度≤3 的组合)。
  • 工程化输出与去重:支持 csv|json|txt 输出格式;内置 Cuckoo Filter 去重;控制台进度条与简洁模式友好易读。
  • 可配置 DNS/DoH/专域 DNS--dns 自定义 DNS/DoH,--spec-dns 为特定后缀域设置专属 DNS/DoH,复杂网络更灵活。
  • 性能与稳定:QPS 速率控制、重试、精确模式(补查多类型)、丢弃无答案、断点/暂停(在 MCP 中)等细节打磨。

安装与构建

平台注意:

  • Windows 无状态模式需安装 npcaphttps://npcap.com)。

  • 建议在 Linux/Mac 下使用以获得更好性能;

  • 可使用 ez_subdomain debug 查看 RawSocket 支持与网卡信息。

快速开始

  1. 生成被动 API 配置模板(首次使用建议):
ez_subdomain gen -p passive_config.yaml

填写 passive_config.yaml 中各平台 Key 后,运行时可加 --passive-api 与被动聚合联动。

  1. 基本扫描(CLI):
ez_subdomain -t example.com -o result.csv
  1. 基本扫描(配合被动API):
ez_subdomain -t example.com --passive-api -o result.csv
  1. DoH/DoT 对抗恶劣网络:
ez_subdomain -t example.com -b query-doh \
  --dns https://1.1.1.1/dns-query,https://dns.google/dns-query

ez_subdomain -t example.com -b query-dot --dns 1.1.1.1,8.8.8.8
  1. 生成式字典(gN[_prefix]):
ez_subdomain -t example.com --dict g3        # 长度≤3 的组合
ez_subdomain -t example.com --dict g2_api    # 以 api 为前缀,长度≤2 的组合
  1. 专域 DNS(匹配后缀) 与智能/精确模式:
ez_subdomain -t example.com --spec-dns example.com=1.1.1.1@8.8.8.8 \
  --smart --exact --drop-no-answer --rate 800 --retry 3 --timeout 3s
  1. 输出与控制台:
ez_subdomain -t example.com -o out.json --simple=false --progress=true
  1. 枚举多级子域名(包括1级深度,也就是枚举先枚举x.example.com,再枚举y.x.example.com)
ez_subdomain -t example.com --depth 2
  1. 自定义子域名字典:
ez_subdomain -t example.com --dict ./dict.txt

MCP 模式(面向 Agent 的服务化使用)

启动 MCP Server(默认 Streamable 模式):

ez_subdomain mcp \
--mode streamable \
--listen 127.0.0.1:3000 \
--secret <TOKEN>

客户端(以 VSCode/Cursor MCP 为例)配置:

{
  "mcpServers": {
    "ez_subdomain": {
      "url": "http://127.0.0.1:3000",
      "headers": {
        "Authorization": "Bearer <TOKEN>"
      }
    }
  }
}

可用 MCP 工具(Tools):

  • subdomain brute:创建枚举任务(前台/后台)。参数:
    • target[] 必填
    • backendScan 可选(后台模式返回 taskId)
    • bruteModestateless|query|query-dot|query-doh
    • 其他同 CLI:enablePassiveApi|depth|timeout|retry|rate|dict|exact|smart|dropNoAnswer
  • getScanTask:分页/实时获取任务进度与结果。
  • listScanTasks:列出任务。
  • stopScanTask:停止任务。
  • resumeScanTask:恢复任务。
  • deleteScanTask:删除任务缓存。

鉴权:通过 Authorization: Bearer <TOKEN> 进行校验。

CLI 帮助(中文)

名称(NAME):
   ez subdomain - ezreal 团队出品的子域名工具

用法(USAGE):
   ez_subdomain [全局选项] [命令 [命令选项]]

命令(COMMANDS):
   gen      生成被动 API 配置模板(passive_config.yaml)
   debug    显示调试信息(网卡、RawSocket 支持等)
   mcp      启动 MCP 服务端
   help, h  显示命令列表或某个命令的帮助

全局选项(GLOBAL OPTIONS):
   --help, -h     显示帮助
   --version, -v  打印版本信息

   1. 目标(TARGET)

   --target string, -t string [ --target string, -t string ]  指定目标域名(可多次传入或用逗号分隔)
   --target-file string, -T string                            指定目标域名文件(按行或逗号分隔)

   2. 输出(OUTPUT)

   --output string, -o string  输出文件,支持:csv, json, txt(默认:"subdomain_result.csv")
   --progress, --pg            控制台显示进度条(默认:true)
   --simple, --sp              控制台简洁模式,仅输出域名(默认:false)

   3. 行为(BEHAVIOR)

   --passive-api, -p  启用被动 API(使用前请先生成 passive_config)(默认:true)

   高级 DNS 爆破配置(ADVANCED DNS BRUTER CONFIG)

   --brute-mode value, -b value                           爆破模式:stateless|query|query-dot|query-doh(默认:stateless)
   --depth int                                            子域名递归深度(例如 a.b.example.com 的深度为 2)(默认:1)
   --dict string, -d string                               爆破字典:内置 medium|small|large|gN[_prefix] 或自定义文件路径(默认:"medium")
   --dns string [ --dns string ]                          自定义 DNS/DoH 列表(例如:8.8.8.8,114.114.114.114,https://1.1.1.1/dns-query)
   --drop-no-answer                                       丢弃无 Answer 的域名结果(默认:false)
   --exact, -e                                            精确模式:提高 DNS 结果准确性(默认:false)
   --rate int, -r int                                     每秒最大查询数 QPS(默认:500)
   --retry int                                            失败重试次数(默认:2)
   --smart, --sm                                          智能模式:智能扩展与过滤(默认:true)
   --spec-dns string=string [ --spec-dns string=string ]  为特定后缀域名指定 DNS(例如:example.com=1.1.1.1@8.8.8.8)
   --timeout duration                                     单次 DNS 查询超时(例如:5s, 1m)(默认:2s)

   高级被动 API 配置(ADVANCED PASSIVE API CONFIG)

   --passive-config string     被动 API 配置文件(默认:"passive_config.yaml")
   --passive-proxy string      被动 API 代理地址(例如:http://127.0.0.1:7879)
   --passive-timeout duration  被动 API 请求超时(默认:5s)
   --passive-ua string         被动 API User-Agent

   全局配置(GLOBAL CONFIG)

   --lic string                       EZ 证书文件(默认:"ez.lic")
   --log-level string                 日志级别:debug, info, warning, error, success, disable(默认:"info")
   --network-iface string, -n string  原始套接字网卡:default、auto 或具体网卡名(默认:"default")

输出说明

  • 支持 csv|json|txt;默认 subdomain_result.csv
  • 控制台:--progress 进度条;--simple 仅输出域名。
  • 去重:基于 Cuckoo Filter,对同名结果高效去重。

实战建议 & 注意事项

  • 建议使用 --passive-api,由被动结果喂给主动验证链,再结合 --smart--depth 下探。
  • 受限网络中优先使用 DoH(--dns https://...)或 -b query-doh;对抗丢包可适当增大 --retry--timeout,调低/提高 --rate
  • 开启 --exact 可在返回 NoError 但无 Answer 时,补查多类记录(A/AAAA/MX/TXT/NS/PTR)。
  • 如使用 Clash/Tun 等,可能触发泛解析误判,扫描前请关闭相关模式或指定可靠 DNS。
  • Windows 需安装 npcap;使用 ez subdomain debug 快速自检。

本次更新

  • 优化 Passive API 模块与并发处理。
  • 增加扫描结束标识与运行时间提示(elapsed)。
  • 增加 MCP Server 支持。

规划(Next)

  • 扫描进度恢复。

About

EZ Subdomain 是一个高效且多功能的子域名枚举工具,适合初学者和高级用户。它包含无状态枚举、有状态枚举、基于被动 API 的子域名收集以及搜索引擎枚举

Resources

Stars

Watchers

Forks

Packages

No packages published