跳到正文
发现
subjack:DNS 接管扫描器
命令行工具开发者工具

subjack:DNS 接管扫描器

用 Go 编写的 DNS 接管扫描器,可并发批量检测域名是否存在可被劫持的解析配置,适合渗透测试与漏洞赏金场景。

admin
发布于 2026-10-28
浏览
6
访问
0
下载
0
版本
v3.1.0
平台
Windows、macOS、Linux
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

subjack 是一个用 Go 编写的 DNS 接管扫描器,可以并发扫描一份域名列表,找出其中可能被劫持的条目。借助 Go 的速度与并发能力,它在批量测试大量域名时表现突出。工具会尽量给出结果,但仍需人工复核以排除误报。

主要功能

subjack 可检测以下情况:

  • CNAME 接管:指向未被认领的第三方服务的悬空 CNAME
  • NS 委派接管:过期的域名服务器域名、以及悬空的云 DNS 托管区(Route 53、Google Cloud DNS、Azure DNS、DigitalOcean、Vultr、Linode)
  • 失效 A 记录:指向云厂商(AWS、GCP、Azure、DigitalOcean、Linode、Vultr、Oracle)上已释放 IP 的 A 记录
  • 区域传送(AXFR):配置不当、泄漏整份 zone 文件的域名服务器,并会暴力枚举常见 NS 主机名
  • SPF include 接管:SPF include: 指令中已过期、可被注册的域名,可能导致邮件伪造
  • MX 记录接管:过期的邮件服务器域名,可能导致邮件被拦截
  • CNAME 链接管:多级 CNAME 链中中间目标可被认领的情况
  • SRV 记录接管:指向过期或可注册域名的 SRV 记录
  • NXDOMAIN 注册:不存在的域名且可被注册(通过 available 以 RDAP 确认)

安装与使用

需要先安装 Go。

go install github.com/haccer/subjack@latest

releases 页面也提供 Linux、macOS、Windows 的预编译二进制,适合编译较慢的小型 VPS 使用。

基本用法:

subjack -w subdomains.txt -t 100 -timeout 30 -o results.txt -ssl
参数 说明 默认值
-d 只检查单个域名
-w 子域名字典文件路径
-t 并发线程数 10
-timeout 连接超时秒数 10
-o 结果输出到文件(使用 .json 扩展名输出 JSON)
-ssl 强制使用 HTTPS 连接(可提高准确率) false
-a 向所有 URL 发送请求,而不仅是识别出 CNAME 的 URL(推荐) false
-m 即使域名不可注册也标记失效的 CNAME 记录 false
-r DNS resolver 列表文件(每行一个 IP 或 host:port,失败时回落到 8.8.8.8)
-ns 检查 NS 接管(过期 NS 域名 + 悬空云 DNS 委派) false
-ar 检查指向失效 IP 的陈旧 A 记录(ICMP 可能需要 root) false
-axfr 检查区域传送(AXFR),包含 NS 暴力枚举 false
-mail 检查 SPF include 与 MX 记录接管 false
-srv 检查 SRV 记录接管(每域名约增加 28 次 DNS 查询) false
-v 显示每次请求的更多信息 false

从标准输入读取

subjack 可以从 stdin 读取域名,方便与其他工具串联:

subfinder -d example.com | subjack -ssl -o results.json
cat domains.txt | subjack -t 20 -o results.txt

域名服务器接管

subjack -w subdomains.txt -ns -o results.json

包含两类检查:过期的 NS 域名(攻击者注册该域名即可完全控制目标域名的 DNS),以及悬空的 NS 委派(NS 记录指向云 DNS 厂商但托管区已删除,subjack 会直接向每个域名服务器查询 SOA,若全部返回 SERVFAIL 或 REFUSED 则说明 zone 已不存在)。

陈旧 A 记录检测

sudo subjack -w subdomains.txt -ar -o results.json

检测使用 ICMP ping(需要 root),并以 80/443 端口的 TCP 作为回退。结果标记为 STALE A RECORD,需人工确认——IP 无响应并不一定意味着可被回收。

区域传送检测

subjack -d example.com -axfr -o results.json
subjack -w domains.txt -axfr -o results.json

除测试官方域名服务器外,还会暴力枚举常见主机名(ns1、dns-0、ns-backup 等)。结果标记为 ZONE TRANSFER,并给出存在问题的域名服务器与泄漏记录数。

邮件接管检测

subjack -w domains.txt -mail -o results.json

解析 SPF TXT 记录检查 include: 域名是否过期可注册,并检查 MX 记录目标是否过期可注册。

CNAME 链与 SRV 检测

CNAME 链接管在每次扫描时自动执行,会跟踪最多 10 层 CNAME 链;SRV 记录接管需手动开启 -srv:

subjack -w domains.txt -srv -o results.json

字典格式

字典每行一个子域名:

assets.xen.world
assets.github.com
b.xen.world
big.example.com
cdn.xen.world
dev.xen.world
dev2.twitter.com

测试

测试套件为离线运行,使用本地 DNS 与 HTTP 夹具,无需网络:

go test -race ./...

注意事项

  • 扫描结果请务必人工复核,以排除误报。
  • -ar 使用 ICMP 时可能需要 root 权限。
  • -srv 会为每个域名增加约 28 次 DNS 查询,默认关闭。
  • 该工具面向授权的安全测试与漏洞赏金场景,请负责任地使用。

更多背景资料可参考:Can I take over XYZ?、Can I take over DNS?。

项目基于 MIT License 发布。


本作品整理自 GitHub 开源项目 haccer/subjack,原作者 @haccer,许可证 MIT。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v3.1.0当前版本

    扫描速度大幅提升,修正 AXFR 检测与小型 VPS 安装内存溢出问题,可用性检查改用 RDAP;新增 69 项离线测试,-r 支持 host:port,许可证改为 MIT。

评论