DNS Reaper 是又一款子域名接管检测工具,但它的重点在于准确性、速度以及我们拥有的签名数量!
我们每秒可扫描约50个子域名,每个域名使用超过50条接管签名进行测试。 这意味着大多数组织可以在10秒内扫描完其整个DNS资产。
为了方便上手,我们还构建了一个轻量级Web版本,它可以扫描DNS区域文件、逗号分隔列表,或者从ProjectDiscovery获取的最多100个子域名。
查看它:dnsreaper web
当然,CLI工具要强大得多,而且速度更快。

你可以通过提供文件中的域名列表,或者在命令行中提供单个域名来运行它。然后,DNS Reaper 将使用所有签名扫描这些域名,并生成CSV文件。
你可以让它为你获取DNS记录!是的,你可以使用凭据运行它,快速轻松地测试所有域名配置。DNS Reaper 将连接到DNS提供商,获取所有记录,然后进行测试。
目前我们支持AWS Route53、Cloudflare和Azure。关于如何添加自己的提供商的文档可以在这里找到。
Punk Security 是一家DevSecOps公司,DNS Reaper 根植于现代安全最佳实践。
你可以在流水线中运行 DNS Reaper,向其提供你打算配置的域名列表,如果检测到可能存在接管,它将退出非零状态。你可以在接管甚至成为可能之前就阻止它们!
要运行 DNS Reaper,你可以使用Docker镜像,或者使用Python 3.11运行。
结果会在输出中返回,更多详细信息保存在本地的 "results.csv" 文件中。我们还支持JSON输出作为选项。
docker run punksecurity/dnsreaper --help
[!IMPORTANT] dnsReaper 支持的最低 Python 版本是3.9,但建议使用3.11。我们尝试维护对尚未终止支持的稳定 Python 版本的支持。 我们将不为影响已终止支持的 Python 版本的问题提供支持或接受拉取请求。更多信息请参阅 Python 版本状态。
在本地运行时,我们建议使用虚拟环境 (venv) 来避免依赖冲突。 说明请见此处。
pip install -r requirements.txt
python main.py --help
扫描 AWS 账户:
docker run punksecurity/dnsreaper aws --aws-access-key-id <key> --aws-access-key-secret <secret>
更多信息,请参见 aws 提供商的文档
从文件扫描所有域名:
docker run -it --rm -v $(pwd):/etc/dnsreaper punksecurity/dnsreaper file --filename /etc/dnsreaper/<filename>
扫描单个域名
docker run -it --rm punksecurity/dnsreaper single --domain <domain>
扫描单个域名并将输出打印到标准输出:
你应该将stderr输出重定向,或者使用 > 保存stdout输出
docker run -it --rm punksecurity/dnsreaper single --domain <domain> --out stdout --out-format=json > output
____ __ _____ _ __
/ __ \__ ______ / /__/ ___/___ _______ _______(_) /___ __
/ /_/ / / / / __ \/ //_/\__ \/ _ \/ ___/ / / / ___/ / __/ / / /
/ ____/ /_/ / / / / ,< ___/ / __/ /__/ /_/ / / / / /_/ /_/ /
/_/ \__,_/_/ /_/_/|_|/____/\___/\___/\__,_/_/ /_/\__/\__, /
PRESENTS /____/
DNS Reaper ☠️
扫描你所有的DNS记录,查找子域名接管!
使用方法:
main.py provider [选项]
输出:
结果输出到屏幕,并(默认)保存到 results.csv
帮助:
main.py --help
提供商:
> aws - 通过从 AWS Route53 获取域名来扫描多个域名
> azure - 通过从 Azure DNS 服务获取域名来扫描多个域名
> bind - 从 DNS BIND 区域文件或路径读取域名(支持多个)
> cloudflare - 通过从 Cloudflare 获取域名来扫描多个域名
> digitalocean - 通过从 Digital Ocean 获取域名来扫描多个域名
> file - 从文件(或文件夹中的多个文件)读取域名,每行一个
> godaddy - 通过从 GoDaddy 获取域名来扫描多个域名
> googlecloud - 通过从 Google Cloud 获取域名来扫描多个域名。需要 GOOGLE_APPLICATION_CREDENTIALS 环境变量。
> projectdiscovery - 通过从 ProjectDiscovery 获取域名来扫描多个域名
> securitytrails - 通过从 Security Trails 获取域名来扫描多个域名
> single - 通过在命令行提供域名来扫描单个域名
> zonetransfer - 通过 DNS 区域传输获取记录来扫描多个域名
位置参数:
{aws,azure,bind,cloudflare,digitalocean,file,godaddy,googlecloud,projectdiscovery,securitytrails,single,zonetransfer}
选项:
-h, --help 显示此帮助信息并退出
--out OUT 输出文件(默认:results)- 使用 'stdout' 进行流式输出
--out-format {csv,json}
--resolver RESOLVER 提供自定义DNS解析器
--parallelism PARALLELISM
并行测试的域名数量 - 设置过高可能导致DNS结果异常(默认:30)
--disable-probable 不检查可能存在的条件
--enable-unlikely 检查更多条件,但误报率较高
--signature SIGNATURE
仅使用此签名进行扫描(可多次指定)
--exclude-signature EXCLUDE_SIGNATURE
不使用此签名进行扫描(可多次指定)
--pipeline 检测到接管时退出非零状态(用于流水线失败)
-v, --verbose -v 显示详细信息,-vv 显示更详细信息
--nocolour 关闭彩色文本
aws:
通过从 AWS Route53 获取域名来扫描多个域名
--aws-access-key-id AWS_ACCESS_KEY_ID
可选
--aws-access-key-secret AWS_ACCESS_KEY_SECRET
可选
--aws-session-token AWS_SESSION_TOKEN
可选
azure:
通过从 Azure DNS 服务获取域名来扫描多个域名
--az-subscription-id AZ_SUBSCRIPTION_ID
必需
--az-tenant-id AZ_TENANT_ID
必需
--az-client-id AZ_CLIENT_ID
必需
--az-client-secret AZ_CLIENT_SECRET
必需
bind:
从 DNS BIND 区域文件或路径读取域名(支持多个)
--bind-zone-file BIND_ZONE_FILE
必需
cloudflare:
通过从 Cloudflare 获取域名来扫描多个域名
--cloudflare-token CLOUDFLARE_TOKEN
必需
digitalocean:
通过从 Digital Ocean 获取域名来扫描多个域名
--do-api-key DO_API_KEY
必需
--do-domains DO_DOMAINS
可选
file:
从文件(或文件夹中的多个文件)读取域名,每行一个
--filename FILENAME 必需
projectdiscovery:
通过从 ProjectDiscovery 获取域名来扫描多个域名
--pd-api-key PD_API_KEY
必需
--pd-domains PD_DOMAINS
必需
godaddy:
通过从 GoDaddy 获取域名来扫描多个域名
--gd-api-key GD_API_KEY
必需
--gd-api-secret GD_API_SECRET
必需
--gd-domains GD_DOMAINS
可选
googlecloud:
通过从 Google Cloud 获取域名来扫描多个域名。需要 GOOGLE_APPLICATION_CREDENTIALS 环境变量。
--project-id PROJECT_ID
必需
projectdiscovery:
通过从 ProjectDiscovery 获取域名来扫描多个域名
--pd-api-key PD_API_KEY
必需
--pd-domains PD_DOMAINS
必需
securitytrails:
通过从 Security Trails 获取域名来扫描多个域名
--st-api-key ST_API_KEY
必需
--st-domains ST_DOMAINS
必需
googlecloud:
通过从 Google Cloud 获取域名来扫描多个域名
--project-id PROJECT_ID
必需
projectdiscovery:
通过从 ProjectDiscovery 获取域名来扫描多个域名
--pd-api-key PD_API_KEY
必需
--pd-domains PD_DOMAINS
可选
securitytrails:
通过从 Security Trails 获取域名来扫描多个域名
--st-api-key ST_API_KEY
必需
--st-domains ST_DOMAINS
可选
single:
通过在命令行提供域名来扫描单个域名
--domain DOMAIN 必需
zonetransfer:
通过 DNS 区域传输获取记录来扫描多个域名
--zonetransfer-nameserver ZONETRANSFER_NAMESERVER
必需
--zonetransfer-domain ZONETRANSFER_DOMAIN
必需