关于 dnstwist
mcp-dnstwist 将 dnstwist 封装为 MCP 服务,供 AI Agent 查找仿冒指定域名的变体,并检查已注册域名的 DNS、邮件拦截风险、WHOIS 和网页相似度。支持本地或 Docker 运行,并通过参数验证和时限控制扫描。
主要功能
- 01发现拼写及字符变体域名
- 02检查 DNS、WHOIS 和服务横幅
- 03检测邮件服务器拦截风险
- 04比较仿冒网页相似度
- 05支持本地与 Docker 运行
- 06严格校验输入并限制运行时长
适用场景
- 01盘点品牌域名的已注册仿冒域名
- 02评估仿冒域名拦截邮件的可能性
- 03识别复制原站页面的钓鱼网站
MCP 相关
通过 stdio 提供 MCP 工具 fuzz_domain,供 AI Agent 执行 dnstwist 扫描并获取结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @burtthecoder/mcp-dnstwistDNSTWIST_RUNNERHow to run dnstwist: docker, local, or auto (default: a dnstwist on PATH, else Docker)DNSTWIST_TIMEOUT_SECONDSMaximum seconds a scan may run before it is stopped (default 600)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-dnstwist 是一个 MCP 服务,可让 AI Agent 运行 dnstwist,查找仿冒您域名的域名:拼写错误、同形异义字符、位翻转、顶级域名替换等。对于每个已注册的相似域名,它可以报告 DNS 记录、其邮件服务器是否可能截获您的邮件、WHOIS 注册详情,以及其网页与您的网页有多相似。
说明
这是一个独立项目,与 dnstwist 无关。请仅扫描您拥有或获准评估的域名。
重要
1.0.4 及更早版本存在命令注入漏洞(GHSA-p4jr-h3rj-2rw4),现已弃用。请使用 1.0.5 或更高版本;
npx -y @burtthecoder/mcp-dnstwist始终会获取最新版本。
亮点
- 发现相似域名。 使用 dnstwist 的所有排列算法,也可以只使用您选择的算法。
- 威胁信号。 DNS 记录、可能截获邮件的开放邮件中继(
mxcheck)、WHOIS 创建日期和注册商、HTTP 和 SMTP 横幅,以及网页相似度(ssdeep 或 TLSH),用于发现克隆的钓鱼网站。 - 按需运行。 使用本地安装的 dnstwist、官方 dnstwist Docker 镜像,或独立的 mcp-dnstwist 镜像。
- 安全强化。 不使用 shell、严格验证输入,并通过时间限制终止长时间扫描并清理进程。
- 经过测试。 使用虚假的
docker和dnstwist可执行文件进行端到端测试,并在 CI 中针对 Node 20、22 和 24 运行。
工作原理
flowchart LR
A["AI agent<br/>(Claude, Codex, Gemini, VS Code)"] -->|"MCP over stdio"| S["mcp-dnstwist"]
S -->|"validated argv, no shell,<br/>time limit"| D["dnstwist<br/>(local or Docker)"]
D -->|"DNS, WHOIS, HTTP, SMTP"| I["Lookalike domains"]
D -->|"JSON"| S
S -->|"results"| A
快速入门
要求: Node.js 20.3 或更高版本,以及 dnstwist(pipx install "dnstwist[full]")或 Docker。无需 API 密钥。
# Claude Code
claude mcp add --transport stdio dnstwist -- npx -y @burtthecoder/mcp-dnstwist
# Codex CLI
codex mcp add dnstwist -- npx -y @burtthecoder/mcp-dnstwist
# Gemini CLI
gemini mcp add dnstwist npx -y @burtthecoder/mcp-dnstwist
有关 Claude Desktop、VS Code、Docker、Smithery 和从源代码运行的说明,请参阅连接客户端。
然后向您的 Agent 提问:“example.com 有哪些相似域名已注册?其中是否有域名可能截获邮件?” 更多提示词见示例工作流。
工具
一个工具:fuzz_domain。完整参数和真实示例输出请参阅工具参考。
| 参数 | 默认值 | 作用 |
|---|---|---|
domain | (必填) | 要仿冒的域名,例如 example.com |
registered_only | true | 仅返回已注册的相似域名 |
fuzzers | all | 限定使用的算法,例如 ["homoglyph", "bitsquatting"] |
mxcheck | true | 标记可接受任意地址邮件的邮件服务器 |
banners | true | 获取 HTTP 和 SMTP banner |
whois | false | 注册日期和注册商 |
lsh | off | 网页与原始网页的相似度:ssdeep 或 tlsh |
all_records | false | 返回所有 DNS 记录,而不只是每种类型的第一条 |
nameservers | 1.1.1.1 | 最多 10 个 IPv4 地址或 https://<host>/dns-query URL |
threads | 50 | 并行查询数,范围为 1 到 100 |
format | json | json、csv 或 list |
设置
| 变量 | 默认值 | 说明 |
|---|---|---|
DNSTWIST_RUNNER | auto | local(PATH 上的 dnstwist)、docker(elceef/dnstwist 镜像)或 auto(若本地可用则使用本地版本) |
DNSTWIST_TIMEOUT_SECONDS | 600 | 扫描最长运行时间。超时、取消或关闭时,扫描将停止并清理 |
安全性
工具参数来自 AI 模型,而模型读取的内容可能会对其产生引导,因此服务会将这些参数视为恶意输入:
- 不使用 shell。 dnstwist 通过
execFile和参数数组启动;如果出现基于 shell 的 API,测试将使构建失败。 - 严格验证。 域名必须是主机名,名称服务器必须是 IPv4 或 DoH URL,数字和名称必须来自固定集合。任何值都不能以
-开头。 - 限制运行时长。 设置时间限制,并在超时、取消和关闭时清理进程与容器。
Docker 运行器需要访问 Docker 守护进程(在大多数系统上相当于 root 权限)。本地运行器或独立镜像可避免此问题。详情请参阅安全模型。请私下报告漏洞;详见 SECURITY.md。
故障排除
- “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。
更多信息请参阅故障排除指南。
开发
git clone https://github.com/w0h1v/mcp-dnstwist && cd mcp-dnstwist
npm ci
npm test # fake docker and dnstwist executables: no Docker or network needed
请参阅 CONTRIBUTING.md 和变更日志。
许可证
MIT。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。