用途
mcp-dnstwist 是一个 MCP(Model Context Protocol)服务器,让 AI 智能体能够运行 dnstwist 这一 DNS 模糊测试工具,从而找出模仿自己域名的可疑域名——包括拼写错误(typos)、同形异义字符(homoglyphs)、比特翻转(bit flips)、交换顶级域名(swapped TLDs)等。
该项目是独立项目,与 dnstwist 官方无隶属关系。仅可用于扫描你拥有或获得授权评估的域名。
主要能力
仿冒域名发现
可使用 dnstwist 的全部域名排列算法,也可仅选择你指定的算法。
威胁信号
对每个已注册的相似域名,可报告:
- DNS 记录
- 可拦截邮件的开放邮件中继(mxcheck)
- WHOIS 创建日期与注册商
- HTTP 与 SMTP 横幅
- 网页相似度(ssdeep 或 TLSH),用于识别克隆的钓鱼网站
多种运行方式
可使用本地安装的 dnstwist、官方 dnstwist Docker 镜像,或自包含的 mcp-dnstwist 镜像。
安全加固
不使用 shell,严格输入校验,并设有时间限制,可停止并清理长时间运行的扫描。
测试
使用伪造的 docker 与 dnstwist 可执行文件进行端到端测试,在 CI 中于 Node 20、22 和 24 上运行。
使用方式
前提要求
- Node.js 20.3 或更新版本
- 安装 dnstwist(
pipx install "dnstwist[full]")或 Docker - 无需 API 密钥
连接客户端
针对 Claude Desktop、VS Code、Docker、Smithery 以及从源码运行的方式,请参阅“Connect a client”文档。
连接后,可以向智能体提问,例如:“Which lookalike domains of example.com are registered, and could any of them intercept email?”(example.com 有哪些相似域名已注册,其中是否有能拦截邮件的?)更多提示词示例见“example workflows”。
工具
只有一个工具:fuzz_domain。完整参数与真实示例输出见“tool reference”。
限制与安全说明
该工具的调用参数来自 AI 模型,而模型读取的内容可能影响其行为,因此服务器将参数视为不可信输入:
- 不使用 shell:dnstwist 通过 execFile 与参数数组启动;若出现基于 shell 的 API,测试会使构建失败。
- 严格校验:域名必须为主机名,域名服务器必须为 IPv4 或 DoH URL,数字与名称来自固定集合;任何值都不能以
-开头。 - 受限运行:设有时间限制,并在超时、取消与关闭时清理进程与容器。
Docker 运行器需要访问 Docker 守护进程(在多数系统上等同于 root 权限)。本地运行器或自包含镜像可避免这一要求。详情见“security model”。漏洞请私下报告,参见 SECURITY.md。
版本安全提醒
1.0.4 及更早版本存在命令注入漏洞(GHSA-p4jr-h3rj-2rw4),已被弃用。请使用 1.0.5 或更新版本;npx -y @burtthecoder/mcp-dnstwist 始终获取最新版。
故障排除
- 提示“Neither dnstwist nor Docker is available”:安装 dnstwist(
pipx install "dnstwist[full]")或启动 Docker。桌面客户端可能无法识别 shell 的 PATH。 - 在 Apple Silicon 上速度慢:dnstwist Docker 镜像仅支持 amd64。请在本地安装 dnstwist,它会自动被使用。
- 提示“did not finish within N seconds”:加入 IPv4 域名服务器(DNS-over-HTTPS 较慢)、关闭 whois、lsh 或 banners,或调高 DNSTWIST_TIMEOUT_SECONDS。
更多内容见“troubleshooting guide”。
许可
MIT 许可,详见 LICENSE。