whonow的演进与未来:DNS重绑定工具的CHANGELOG解读、现有局限与AAAA支持路线图

📅 2026/8/19 15:34:29
whonow的演进与未来:DNS重绑定工具的CHANGELOG解读、现有局限与AAAA支持路线图
whonow的演进与未来DNS重绑定工具的CHANGELOG解读、现有局限与AAAA支持路线图【免费下载链接】whonowA malicious DNS server for executing DNS Rebinding attacks on the fly (public instance running on rebind.network:53)项目地址: https://gitcode.com/gh_mirrors/wh/whonow提到DNS 重绑定DNS Rebinding攻击就绕不开whonow这款开源项目——一个用域名请求本身来现场编程的恶意 DNS 服务器。任何人都可以直接使用它运行在rebind.network:53的公共实例无需自建服务器就能零门槛体验完整的 DNS 重绑定攻击过程。这篇文章将带你从 CHANGELOG 版本演进、现有局限到 AAAA 支持路线图完整看懂 whonow 的过去、现在与未来。whonow是什么用域名写程序的DNS重绑定工具DNS 重绑定攻击的核心是让同一个域名在不同时刻解析到不同的 IP 地址。浏览器第一次访问时拿到公网地址随后域名悄然重绑定到内网地址从而绕过同源策略、直取内网资源。whonow 最酷的地方在于规则即域名。你不需要配置任何 DNS 记录文件把规则直接写进要查询的域名里就行A.34.192.228.43.1time.192.168.1.1.forever.rebind.network上面这条规则表示第一次解析返回34.192.228.43之后永远返回192.168.1.1。整个 DSL 只有三个关键词——ntimes回答 N 次、forever永远回答、repeat循环重来组合起来却足以表达非常复杂的响应行为具体解析逻辑见 src/DomainRebind.js。从v1.0.0到v1.2.0whonow CHANGELOG版本演进全解读打开项目的 CHANGELOG.md可以清楚看到 whonow 的成长轨迹版本关键变化v1.0.0初始发布v1.0.1支持npm install -g whonow全局安装v1.1.0改进全局安装体验v1.1.1修复 A 规则程序状态被错误影响的 bug并补充测试v1.1.2域名与程序状态改为大小写不敏感v1.2.0新增 CSV 日志--logfile与详细日志--verbose其中 v1.1.1 修复的 bug 值得一提此前所有类型的域名查询都会错误推进 A 记录重绑定规则的程序状态导致计数器错乱修复后只有真正的 A 请求才会影响状态。而 v1.2.0 引入的 CSV 日志输出timestamp,src_ip,question_type,question,answer字段让安全研究者可以方便地离线分析每一次查询非常实用。whonow现有局限使用前必须了解的5个限制作为一款专注而克制的工具whonow 也有不少边界了解它们能避免踩坑。1. 仅支持 A 记录其他查询被静默忽略目前只有 AIPv4查询会被处理其他类型包括 AAAA一律返回空响应。在 index.js 中可以看到只有 A 查询才会进入响应生成流程。2. 域名长度存在物理上限DNS 协议规定单个 label 最长 63 字符整个域名最长 253 字符最多 127 个 label。规则越长留给 UUID 和域名的空间就越少这是所有规则即域名工具的共同约束。3. 内存状态与--max-ram-domains淘汰机制每个唯一域名都会在服务器内存中保存一份程序状态默认上限 1000 万条超出后按先进先出FIFO淘汰。被淘汰的域名下次查询时状态会重置这一点在多用户共享公共实例时需要留意。4. UUID 隔离是硬性要求两个用户如果使用了完全相同的域名会共享同一份程序状态导致彼此的计数器互相打架。所以官方文档强烈建议在规则后追加一个永不复用的 UUID 子域名例如A.127.0.0.1.1time.10.0.0.1.1time.repeat.8f058b82-...rebind.network。5. 端口 53 需要特权错误处理需留意在 Linux 上以普通用户启动 53 端口会触发 EACCES 权限错误通常需要 root 或使用更高端口自建实验环境。whonow AAAA支持路线图IPv6时代的技术挑战与展望README 中已经明确预告 AAAA should be coming soon但截至目前仍未落地。想真正支持 IPv6主要卡在三个技术点。挑战一查询类型与应答构造index.js 目前只处理A查询类型未来需要扩展 AAAA 类型的判断并构造对应的 AAAA 应答记录——这还取决于依赖的native-dns库能否原生支持。挑战二IPv6 地址如何塞进域名这是最有趣也最棘手的问题。现有规则解析依赖.分隔的 label 来识别 IPv4 点分十进制地址但 IPv6 的文本表示使用冒号而 DNS 域名 label 只允许字母、数字和连字符。这意味着 IPv6 地址需要设计一套全新的编码方案才能在域名中安全传递并被规则解析器正确识别。挑战三解析器与状态程序的扩展src/DomainRebind.js 中的 IP 匹配正则只针对 IPv4需要为 IPv6 重写匹配与解析逻辑同时保持与ntimes/forever/repeat规则的完全兼容。一旦打通针对 IPv6 内网地址的 DNS 重绑定攻击场景将大大拓宽。如何快速上手体验whonow最省事的方式是直接用公共实例rebind.network:53发起查询想自建也非常简单npm install --cli -g whonowlatest whonow --port 53 --logfile log.csv --verbose想读源码的话也可以拉取仓库git clone https://gitcode.com/gh_mirrors/wh/whonow下面是官方提供的运行效果截图可以直观感受一次查询的日志输出test.js 中则保存了完整的回归测试用例覆盖了各种规则组合。结语从 v1.0.0 的初版到 v1.2.0 的日志能力whonow 的设计理念始终如一用最少的代码、最优雅的规则即域名方式让 DNS 重绑定攻击变得触手可及。虽然它目前还停留在 IPv4 时代但 AAAA 支持路线图已经写在官方文档 README.md 中值得我们持续期待。【免费下载链接】whonowA malicious DNS server for executing DNS Rebinding attacks on the fly (public instance running on rebind.network:53)项目地址: https://gitcode.com/gh_mirrors/wh/whonow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考