Sudomy 是一个子域名枚举工具,用于收集子域名并对域进行高级自动化侦查(框架)。该工具也可用于 OSINT(开源情报)活动。
主动方法
被动方法
通过评估和选择优质第三方站点/资源,枚举过程可以得到优化。用更少的时间获得更多结果。Sudomy 可以从以下精心挑选的 22 个第三方站点收集数据:
https://censys.io
https://developer.shodan.io
https://dns.bufferover.run
https://index.commoncrawl.org
https://riddler.io
https://api.certspotter.com
https://api.hackertarget.com
https://api.threatminer.org
https://community.riskiq.com
https://crt.sh
https://dnsdumpster.com
https://docs.binaryedge.io
https://securitytrails.com
https://graph.facebook.com
https://otx.alienvault.com
https://rapiddns.io
https://spyse.com
https://urlscan.io
https://www.dnsdb.info
https://www.virustotal.com
https://threatcrowd.org
https://web.archive.org
当您使用最佳参数收集子域名并通过自动侦查进行分析时,sudomy 的工作原理或侦查流程如下。
root@maland: ./sudomy -d bugcrowd.com -dP -eP -rS -cF -pS -tO -gW --httpx --dnsprobe -aI webanalyze -sS
这是 Sudomy v1.1.8#dev 的侦查工作流。

文件侦查与有吸引力的数据详细信息
------------------------------------------------------------------------------------------------------
- subdomain.txt -- 子域名列表 < $DOMAIN (目标)
- httprobe_subdomain.txt -- 验证子域名 < subdomain.txt
- webanalyzes.txt -- 识别技术扫描 < httprobe_subdomain.txt
- httpx_status_title.txt -- 标题+状态码+长度 < httprobe_subdomain.txt
- dnsprobe_subdomain.txt -- 子域名解析 < subdomain.txt
- Subdomain_Resolver.txt -- 子域名解析 (备用) < subdomain.txt
- cf-ipresolv.txt -- Cloudflare 扫描 < ip_resolver.txt
- Live_hosts_pingsweep.txt -- 活跃主机检测 < ip_resolver.txt
- ip_resolver.txt -- IP 解析列表 < Subdomain_Resolver::dnsprobe
- ip_dbasn.txt -- ASN 编号检查 < ip_resolver.txt
- vHost_subdomain.txt -- 虚拟主机 (按 IP 分组) < Subdomain_Resolver.txt
- nmap_top_ports.txt -- 活跃端口扫描 < cf-ipresolv.txt
- ip_dbport.txt -- 被动端口扫描 < cf-ipresolv.txt
------------------------------------------------------------------------------------------------------
- Passive_Collect_URL_Full.txt -- 所有完整 URL 爬取 (WebArchive, CommonCrawl, UrlScanIO)
------------------------------------------------------------------------------------------------------
- ./screenshots/report-0.html -- 截图报告 < httprobe_subdomain.txt
- ./screenshots/gowitness/gowitness.sqlite3 -- 截图数据库 < httprobe_subdomain.txt
------------------------------------------------------------------------------------------------------
- ./interest/interesturi-allpath.out -- 感兴趣路径 (/api,/git,等) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-doc.out -- 感兴趣文档 (doc,pdf,xls) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-otherfile.out -- 其他文件 (.json,.env,等) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-js.out -- 所有 JavaScript 文件 (*.js) < Passive_Collect_URL_Full.txt
- ./interest/interesturi-nodemodule.out -- 来自 /node_modules/ 的文件 < Passive_Collect_URL_Full.txt
- ./interest/interesturi-param-full.out -- 完整参数列表 < Passive_Collect_URL_Full.txt
- ./interest/interesturi-paramsuniq.out -- 唯一参数列表 < Passive_Collect_URL_Full.txt
- 注意:您可以使用 urlprobe 或 httpx 验证有吸引力的/感兴趣的 URL/参数,以避免误报。
------------------------------------------------------------------------------------------------------
- ./takeover/CNAME-resolv.txt -- CNAME 解析器 < subdomain.txt
- ./takeover/TakeOver-Lookup.txt -- DNSLookup < CNAME-resolv.txt
- ./takeover/TakeOver-nxdomain.txt -- 其他第三方服务平台 < TakeOver-Lookup.txt
- ./takeover/TakeOver.txt -- 检查漏洞 < CNAME-resolv.txt
------------------------------------------------------------------------------------------------------
- ./wordlist/wordlist-parameter.lst -- 生成参数字典 < Passive_Collect_URL_Full.txt
- ./wordlist/wordlist-pathurl.lst -- 生成路径字典 < Passive_Collect_URL_Full.txt
- 注意:此字典基于域和子域名信息(路径、文件、查询字符串和参数)。
------------------------------------------------------------------------------------------------------
Sudomy 在使用资源(第三方站点)时最大限度地减少了资源消耗。通过评估和选择良好的第三方站点/资源,枚举过程可以得到优化。本次比较中使用的域是 tiket.com。
以下是对 Sublist3r v1.1.0、Subfinder v2.4.5 和 Sudomy v1.2.0 进行被动枚举 DNS 测试的结果。
在此,subfinder 在收集子域名方面仍然非常快速,它利用了相当多的资源。特别是在资源已被优化的情况下(?)。
编译结果和视频可以在此查看:
当我有空的时候,也许将来 sudomy 会使用 golang。如果您想贡献,欢迎提交 pull request。
Sudomy 目前已扩展了以下工具。安装和使用应用程序的说明如下。
# 克隆此仓库
git clone --recursive https://github.com/screetsec/Sudomy.git
$ python3 -m pip install -r requirements.txt
Sudomy 需要 jq 和 GNU grep 来运行和解析。如何下载和安装 jq 的信息可以访问 这里。
# Linux
apt-get update
apt-get install jq nmap phantomjs npm chromium parallel
npm i -g wappalyzer wscat
# Mac
brew cask install phantomjs
brew install jq nmap npm parallel grep
npm i -g wappalyzer wscat
# 注意
您需要安装最新版的 Google Chrome 或 Chromium
在 rc 文件中设置路径以更改 GNU grep
# 从 DockerHub 拉取镜像
docker pull screetsec/sudomy:v1.2.1-dev
# 创建输出目录
mkdir output
# 运行镜像,您可以在自定义目录中运行镜像,但必须将 sudomy.api 配置复制/下载到当前目录
docker run -v "${PWD}/output:/usr/lib/sudomy/output" -v "${PWD}/sudomy.api:/usr/lib/sudomy/sudomy.api" -t --rm screetsec/sudomy:v1.1.9-dev [参数]
# 或者在执行镜像时定义 API 变量。
docker run -v "${PWD}/output:/usr/lib/sudomy/output" -e "SHODAN_API=xxxx" -e "VIRUSTOTAL=xxxx" -t --rm screetsec/sudomy:v1.1.9-dev [参数]
在查询第三方站点(如 Shodan、Censys、SecurityTrails、Virustotal 和 BinaryEdge)之前需要 API 密钥。
# Shodan
# URL : http://developer.shodan.io
# 示例 :
# - SHODAN_API="VGhpc1M0bXBsZWwKVGhmcGxlbAo"
SHODAN_API=""
# Censys
# URL : https://search.censys.io/register
CENSYS_API=""
CENSYS_SECRET=""
# Virustotal
# URL : https://www.virustotal.com/gui/
VIRUSTOTAL=""
# Binaryedge
# URL : https://app.binaryedge.io/login
BINARYEDGE=""
# SecurityTrails
# URL : https://securitytrails.com/
SECURITY_TRAILS=""
在使用 Slack 通知之前需要 YOUR_WEBHOOK_URL。
# Slack 告警配置
# 关于获取 webhook URL 的配置/教程,请访问以下站点
# - https://api.slack.com/messaging/webhooks
# 示例:
# - YOUR_WEBHOOK_URL="https://hooks.slack.com/services/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"
YOUR_WEBHOOK_URL="https://hooks.slack.com/services/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"
___ _ _ _
/ __|_ _ __| (_)(_)_ __ _ _
\__ \ || / _ / __ \ ' \ || |
|___/\_,_\__,_\____/_|_|_\_, |
|__/ v{1.2.1#dev} by @screetsec
Sud⍥my - 快速子域名枚举与分析
http://github.com/screetsec/sudomy
用法: sud⍥my.sh [-h [--help]] [-s[--source]][-d[--domain=]]
示例: sud⍥my.sh -d example.com
sud⍥my.sh -s Shodan,VirusTotal -d example.com
最佳参数:
sudomy -d domain.com -dP -eP -rS -cF -pS -tO -gW --httpx --dnsprobe -aI webanalyze --slack -sS
可选参数:
-a, --all 运行所有枚举(不包括 nmap 和 gobuster)
-b, --bruteforce 使用 Gobuster 暴力破解子域名(字典:所有顶级 SecList DNS)
-d, --domain 要扫描的网站域名
-h, --help 显示此帮助信息
-o, --outfile 完成后指定输出文件
-s, --source 用于枚举子域名的来源
-aI, --apps-identifier 识别网站技术(例如:-aI webanalyze)
-dP, --db-port 从第三方收集端口(默认=shodan)
-eP, --extract-params 从引擎收集 URL 参数
-tO, --takeover 子域名接管漏洞扫描器
-wS, --websocket WebSocket 连接检查
-cF, --cloudfare 检查 IP 是否由 Cloudflare 拥有
-pS, --ping-sweep 使用 Ping Sweep 方法检查活跃主机
-rS, --resolver 将域名列表转换为去重后的 IP 列表
-sC, --status-code 从域名列表获取状态码和响应
-nT, --nmap-top 使用 nmap 从域名列表进行顶部端口扫描
-sS, --screenshot 截取网站列表截图(默认:gowitness)
-nP, --no-passive 不执行被动子域名枚举
-gW, --gwordlist 基于收集的 URL 资源(被动)生成字典
--httpx 使用 retryablehttp 执行多次 httpx 探测
--dnsprobe 执行多次 DNS 查询(dnsprobe)
--no-probe 不执行 httprobe
--html 将报告输出为 HTML 格式
--graph 网络图可视化
使用所有 22 个来源并探测可用的 http 或 https 服务器(验证):
$ sudomy -d hackerone.com
使用一个或多个来源:
$ sudomy -s shodan,dnsdumpster,webarchive -d hackerone.com
使用所有来源但不进行验证:
$ sudomy -d hackerone.com --no-probe
使用一个或多个插件:
$ sudomy -pS -sC -sS -d hackerone.com
使用所有插件:测试主机状态、http/https 状态码、子域名接管和截图。
不包括 Nmap、Gobuster、wappalyzer 和 wscat。
$ sudomy -d hackerone.com --all
创建 HTML 格式的报告:
$ sudomy -d hackerone.com --html --all
HTML 报告示例:
| 仪表盘 | 报告 |
|---|---|
![]() | ![]() |
生成子域名和虚拟主机的网络图可视化:
$ sudomy -d hackerone.com -rS --graph
图可视化 示例:
| nGraph |
|---|
![]() |
使用最佳参数收集子域名、通过自动侦查进行分析并发送 Slack 通知:
./sudomy -d ngesec.id -dP -eP -rS -cF -pS -tO -gW --httpx --dnsprobe --graph -aI webanalyze --slack -sS
Slack 通知示例:
| Slack |
|---|
![]() |
所有重大更改将记录在此 文件 中。