Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
PolarDNS — PolarDNS是一个专门用于渗透测试和漏洞研究的权威DNS服务器。 | Kitploit
工具/GitHubGitHub/oryxlabs/polardns
漏洞扫描器漏洞分析模糊测试网络安全渗透测试DNS 分析
GitHuboryxlabs/polardns

PolarDNS

PolarDNS是一个专门用于渗透测试和漏洞研究的权威DNS服务器。

查看仓库
249191年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站
PolarDNS 标志 PolarDNS 是一个专门的权威 DNS 服务器,使用 Python 3.x 编写,最初作为从服务器端对 DNS 递归解析器进行安全测试的工具而开发。

它允许操作员生成自定义 DNS 响应,适用于深入测试 DNS 协议。

_

PolarDNS 可用于测试:

  • DNS 解析器(服务器端)
  • DNS 客户端
  • DNS 库
  • DNS 解析器和分析器
  • 任何处理 DNS 信息的软件

它支持 UDP 和 TCP 协议,使操作员能够完全控制 DNS 协议层。

PolarDNS 服务器可以生成各种非标准和不兼容的 DNS 响应,违反 RFC 规范,包括高度异常和格式错误的 DNS 响应。

这对于以下方面很有用:

  • 功能测试
  • RFC 合规性
  • 漏洞研究

安装

PolarDNS 需要 Python 3.11 或更新版本,并且没有额外的依赖项。

方法 1:通过 Pip 安装

这是安装和运行 PolarDNS 最简单的方式:

root@kitploit:~
pip install polardns
polardns

方法 2:传统安装

您也可以克隆仓库并直接运行 PolarDNS:

root@kitploit:~
git clone https://github.com/oryxlabs/PolarDNS.git
cd PolarDNS
python polardns.py

如果您计划调试或修改代码,或添加新功能,建议使用此方法。

方法 3:在 Docker 中运行 PolarDNS

您也可以在 Docker 容器中运行 PolarDNS:

root@kitploit:~
docker run -p 53:53/tcp -p 53:53/udp oryxlabs/polardns

运行 PolarDNS

PolarDNS 服务器可通过 polardns/polardns.toml 配置文件进行配置。

  • 为了测试目的,默认配置在本地运行应该没问题。
  • 但是,您可能需要调整配置,添加您的域名和 nameserver IP 地址。

启动 PolarDNS 后,您应该看到类似以下的输出:

root@kitploit:~
python polardns.py
1741599804.9039893 | PolarDNS v1.6.1 server starting up
1741599804.9039893 | Using '/path/to/your/polardns/polardns.toml' config file
1741599804.9039893 | Starting listener at tcp://0.0.0.0:53
1741599804.9039893 | Starting listener at udp://0.0.0.0:53

这表明服务器已启动并运行。

使用 PolarDNS

默认情况下,服务器在所有接口的 UDP 和 TCP 端口 53 (0.0.0.0:53) 上监听,准备回答 DNS 查询。

您可以通过发送以下示例查询在本地测试它,该查询应该始终解析到某个地址。

以 UDP 模式查询:

root@kitploit:~
dig always.yourdomain.com @127.0.0.1

以 TCP 模式查询:

root@kitploit:~
dig always.yourdomain.com @127.0.0.1 +tcp

您应该收到一个 A 记录,IP 地址为 2.3.4.5,类似于这个截图:

PolarDNS 示例用法

这表明服务器工作正常。

主要概念

通过让 PolarDNS 服务器解析某个域名,您实际上是在指示它应该如何响应您。这意味着您(客户端)告诉 PolarDNS 服务器它应该为您生成什么样的响应。

例如,考虑以下查询:

root@kitploit:~
dig always.ttl2000000000.slp1500.yourdomain.com @127.0.0.1

您应该再次收到一个 A 记录,IP 地址为 2.3.4.5,但这次 TTL 值为 2,000,000,000(63.4 年),并且在 1.5 秒延迟后返回:

PolarDNS 自定义 TTL 和延迟

在上面的例子中,我们使用了 always 基本功能(始终解析到某个地址),并结合了 ttl 修饰符来调整 TTL 值,以及 slp 修饰符在发送响应前等待一段时间。

PolarDNS 功能

PolarDNS 具有以下主要功能:

  1. 功能:可以生成各种 DNS 响应。大多数功能都有参数,意味着可以调整它们的行为来生成各种不同的 DNS 响应。
  2. 响应修饰符:可以进一步修改 PolarDNS 服务器输出的 DNS 响应。修饰符独立于所选功能,可以自由组合。

目前实现了 70 多种不同的功能和 19 种响应修饰符。通过使用不同的功能并结合不同的响应修饰符,可以生成给定响应的无数变体。

请参阅附带的 目录,其中列出了所有实现的功能和响应修饰符。

这使 PolarDNS 能够生成极其异常、不正常甚至格式错误的 DNS 响应,使操作员能够了解接收端如何处理此类情况,以及接收端在技术上是否健壮和成熟。

PolarDNS 可以生成的一些 DNS 响应示例包括:

  • 别名 (CNAME) 链和别名循环
  • DNS 头部异常(ID、标志、节数)
  • 注入未经请求的记录(缓存投毒)
  • 注入任意长度的任意字节
  • 不完整/空/NULL 字节响应
  • 压缩问题(循环、无效指针)
  • 缓慢传输的分块响应
  • 非法的标签或域名长度
  • 任意数量的任意大小的 TXT 记录
  • 包长度操纵(TCP)
  • 等。

这些可以导致发现各种漏洞,例如:

  • 懒惰域名攻击
  • 幽灵域名攻击
  • 域名锁死攻击
  • 缓存投毒
  • 资源耗尽
  • 崩溃、拒绝服务

请参阅 BlackHat MEA 2023 的演示文稿(包括 BONUS 幻灯片)以获取更多详细信息、更多示例和用例。

测试递归 DNS 解析器

以下是开始测试递归 DNS 服务器所需的高层概述。

  1. 使用您喜欢的域名注册商购买一个域名,例如 example123.com。
  2. 获取两个具有公共静态 IP 地址的 Linux VPS 实例——它们将成为您的 nameserver。
  3. 在两个实例上部署 PolarDNS 服务器。
  4. 在每个实例上编辑 polardns/polardns.toml 配置文件,并相应更改您的域名和 nameserver IP 地址——两个实例配置相同。
  5. 在域名注册商处,选择使用您自己的 nameserver 管理域名。您需要指定主 NS 和辅助 NS——提供您实例的 IP 地址。

现在您的基础设施应该准备好测试您选择的任何递归 DNS 解析器了。

测试过程分解

要开始测试目标 DNS 递归解析器,您需要将查询定向到目标 DNS 解析器,例如:

root@kitploit:~
dig always.example123.com @<TARGET-RESOLVER-IP>

例如,要测试 CloudFlare 公共 DNS:

root@kitploit:~
dig always.example123.com @1.1.1.1

在解析过程中,目标 DNS 解析器将联系您的权威 PolarDNS nameserver(管理您的 example123.com 测试域名)来解析查询。

您的其中一个 PolarDNS 服务器将响应目标 DNS 解析器。解析器将接收、解析和处理来自 PolarDNS 的响应。然后,它会将最终答案返回给您(客户端)。

以下是测试过程的视觉概览: 使用 PolarDNS 测试 DNS 解析器

通过指示 DNS 解析器解析您 example123.com 域名下的各种子域,您可以有效地测试 DNS 解析器的行为,并查看它如何处理各种意外情况(响应)。

例如,当它获得格式错误的 DNS 响应、带有注入记录的响应或包含非法字符的记录时,它如何处理?它最终会向您(客户端)发送什么样的答案?

使用 GitHub Actions 进行自动化端到端测试

PolarDNS 可以与各种 DNS 解析器集成,以运行一套全面的端到端 (E2E) DNS 服务器测试套件。

此集成由 GitHub Actions 驱动,参考模板(工作流)目前可用于以下六个 DNS 解析器:

  • BIND9 (e2e-bind9.yaml)
  • CoreDNS (e2e-coredns.yaml)
  • Dnsmasq (e2e-dnsmasq.yaml)
  • Knot Resolver (e2e-knot-v5.yaml, e2e-knot-v6.yaml)
  • PowerDNS (e2e-powerdns.yaml)
  • Unbound (e2e-unbound.yaml)

当 GitHub Action 被触发时(例如,在提交或手动触发时),工作流会执行以下步骤:

  1. 在 Docker 容器中启动选定的 DNS 解析器
  2. 在单独的 Docker 容器中启动 PolarDNS
  3. 将选定的解析器连接到 PolarDNS
  4. 针对选定的 DNS 解析器运行 E2E 测试套件

要添加您自己的 E2E 测试,只需将它们放在 test-e2e/ 目录中。

正在寻找功能完整的 DNS 服务器 E2E 测试套件?请联系 [email protected]。

添加新功能

向 PolarDNS 添加新功能对于发现真正新颖的 DNS 问题至关重要。使用 PolarDNS,您可以相对轻松地做到这一点。

PolarDNS 允许您快速添加新功能、尝试您的想法或开发 PoC,而无需构建自己的 DNS 服务器。您只需要理解 Python 代码的能力和对实验 DNS 协议的好奇心。

有一个详细的、循序渐进的 贡献指南 可以帮助您入门。在那里,您不仅可以了解如何添加新功能,还可以了解如何调试 PolarDNS、提交问题、分享想法等。

链接

以下是一些在使用 PolarDNS 时非常有用的优秀资源。

DNS 协议相关链接:

  • https://en.wikipedia.org/wiki/List_of_DNS_record_types
  • https://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml

DNS 服务器:

  • https://en.wikipedia.org/wiki/Comparison_of_DNS_server_software
  • https://www.lifewire.com/free-and-public-dns-servers-2626062

致谢

感谢所有为 PolarDNS 做出贡献的人!❤️

下载工具