Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
dnstwist — 域名排列引擎,用于检测同形异义字钓鱼攻击、域名抢注(typo squatting)及品牌仿冒行为。 | Kitploit
工具/GitHubGitHub/elceef/dnstwist
OSINT (开源情报)侦察DNS和子域名枚举信息收集钓鱼攻击模糊测试威胁情报DNS 分析
GitHubelceef/dnstwist

dnstwist

域名排列引擎,用于检测同形异义字钓鱼攻击、域名抢注(typo squatting)及品牌仿冒行为。

查看仓库
5.7k852471年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

dnstwist

看看用户在尝试输入你的域名时可能遇到什么样的麻烦。 找出攻击者可以用来攻击你的相似域名。能够检测 域名抢注、钓鱼攻击、欺诈和品牌仿冒。可作为 定向威胁情报的额外来源。

Demo

DNS 模糊测试是一种自动化工作流程,旨在发现针对你所在组织的潜在恶意 域名。该工具会根据提供的域名生成一份全面的排列组合列表, 随后验证其中是否有任何排列组合正在被使用。 此外,它还能生成网页的模糊哈希,以检测正在进行的 钓鱼攻击或品牌仿冒,以及更多功能!

时间紧迫?在浏览器中试用:dnstwist.it

主要功能

  • 多种高效的域名模糊测试算法
  • Unicode 域名(IDN)
  • 从字典文件生成额外的域名排列组合
  • 高效的多线程任务分配
  • 实时钓鱼网页检测:
    • 使用模糊哈希(ssdeep/tlsh)进行 HTML 相似度比对
    • 使用感知哈希(pHash)进行截图视觉相似度比对
  • 恶意 MX 主机检测(拦截被错误定向的电子邮件)
  • GeoIP 定位
  • 导出为 CSV 和 JSON

安装

Python PIP

$ pip install dnstwist[full]

或者安装最低限度的依赖,并根据需要手动添加其他依赖:

$ pip install dnstwist

Git

如果你想运行最新版本的代码,可以从 Git 安装:

$ git clone https://github.com/elceef/dnstwist.git
$ cd dnstwist
$ pip install .

Debian/Ubuntu/Kali Linux

执行以下命令以安装该工具及其所有额外软件包:

$ sudo apt install dnstwist

Fedora Linux

$ sudo dnf install dnstwist

Arch Linux 用户仓库(yay)

$ yay -S dnstwist

macOS

这将安装 dnstwist 及其所有依赖项,并将该二进制文件添加到 $PATH 中。

$ brew install dnstwist

Docker

从 Docker Hub 拉取并运行官方镜像:

$ docker run -it elceef/dnstwist

或者,你也可以构建本地镜像:

$ docker build -t dnstwist .
$ docker build -t dnstwist:phash --build-arg phash=1 .

快速入门指南

该工具会使用其模糊测试算法处理所提供的域名,并生成一份潜在钓鱼域名列表以及 DNS 记录。

通常会生成数千个域名排列——尤其是对于较长的输入域名。在这种情况下,仅显示已注册的域名可能更为实用:

$ dnstwist --registered domain.name

确保你的 DNS 服务器能够在短时间内处理数千个请求。否则,你可以通过 --nameservers 参数指定外部 DNS 或 DNS-over-HTTPS 服务器。

如果模糊测试算法生成的域名排列不够充分,请向 dnstwist 提供一个字典文件。其中包含了一些字典示例,列出了网络钓鱼活动中最常用的词汇。

$ dnstwist --dictionary dictionaries/english.dict domain.name

如果你需要检查具有不同 TLD 的域名是否存在,只需提供一个包含 TLD 列表的字典文件。

$ dnstwist --tld dictionaries/common_tlds.dict domain.name

另一方面,如果只需要使用选定的算法,可以使用 --fuzzers 参数,该参数接受一个逗号分隔的列表。

$ dnstwist --fuzzers "homoglyph,hyphenation" domain.name

除了彩色终端输出之外,该工具还允许将结果导出为 CSV 和 JSON:

$ dnstwist --format csv domain.name | column -t -s,
$ dnstwist --format json domain.name | jq

如果你只需要裸排列而不进行任何 DNS 查询,请使用 --format list 参数:

$ dnstwist --format list domain.name

该工具可以执行实时查询,返回 IPv4 地址的地理位置(近似到国家级别)。

$ dnstwist --geoip domain.name

GeoIP2 库默认被使用。国家数据库的位置必须通过 $GEOLITE2_MMDB 环境变量指定。如果该库或数据库不存在,工具将回退到较旧的 GeoIP Legacy。

要显示所有可用选项及其简要说明,只需不带任何参数执行该工具。

钓鱼检测

手动检查每个域名是否提供钓鱼网站可能非常耗时。为解决这个问题,dnstwist 利用了所谓的模糊哈希(局部敏感哈希,LSH)和感知哈希(pHash)。模糊哈希是一种概念,涉及比较两个输入(HTML 代码)并确定基本相似程度的能力,而感知哈希是从图像(网页截图)的视觉特征中得出的指纹。

模糊哈希

检测相似 HTML 源代码的独特功能可以通过 --lsh 参数启用。对于每个生成的域名,dnstwist 将从响应的 HTTP 服务器获取内容(跟随可能的跳转),规范化 HTML 代码,并将其模糊哈希与原始(初始)域名的模糊哈希进行比较。相似程度以百分比表示。

当有效 URL 与原始域名相同时,完全不计算模糊哈希,以排除误报指示。

注意:请记住,即使对于 MITM 攻击框架,获得 100% 匹配也相当不可能,而且钓鱼网站可能拥有完全不同的 HTML 源代码。

$ dnstwist --lsh domain.name

在某些情况下,钓鱼网站会从特定 URL 提供。如果你将完整或部分 URL 地址作为参数提供,dnstwist 会解析它,并将其应用于每个生成的域名变体。使用 --lsh-url 可覆盖用于获取原始网页的 URL。

$ dnstwist --lsh https://domain.name/owa/
$ dnstwist --lsh --lsh-url https://different.domain/owa/ domain.name

默认情况下,使用 ssdeep 作为 LSH 算法,但 TLSH 也可用,可以这样启用:

$ dnstwist --lsh tlsh domain.name

感知哈希

如果已安装 Chromium 浏览器,dnstwist 可以利用其无头模式(无需图形用户界面即可运行)来捕获网页截图、渲染截图并计算 pHash 值。随后将这些 pHash 值进行比较,以评估视觉相似度,并以百分比表示。

$ dnstwist --phash domain.name

此外,还可以将捕获的截图以 PNG 格式保存到所选位置:

$ dnstwist --phash --screenshots /tmp/domain domain.name

注意:由于使用了多线程的完整功能 Web 浏览器,应提供适量的空闲资源(主要是内存)。

代理支持

对于所有 HTTP 连接,当检测到存在名为 $<scheme>_proxy 的环境变量时(采用不区分大小写的方式),会自动使用代理。如果同时存在小写和大写的环境变量,则优先使用小写。

API

如果你需要在代码中使用该工具生成的数据,最方便、最高效的方式是按如下方式传入输入。

>>> import dnstwist
>>> data = dnstwist.run(domain='domain.name', registered=True, format='null')

要以完全被动的工作模式运行并仅生成域名排列,需要将列表格式与输出重定向到空设备相结合。

>>> dnstwist.run(domain='domain.name', format='list', output=dnstwist.devnull)

dnstwist.run() 的参数会在内部进行转换,因此其用法与命令行非常相似。返回的数据结构是一个易于处理的字典列表。请记住,dnstwist.run() 会启动多个守护线程。

性能调优

当需要测试数千个域名排列组合时,速度和效率显然是优先考虑的事项。另一方面,该工具的设计目标是“开箱即用”,避免给 DNS 解析器造成过重负担并节省宝贵的资源。话虽如此,默认设置在谨慎与效率之间取得了平衡,但总有改进的空间。

建议尝试调整线程数量。最初该数值是根据可用的 CPU 核心数计算得出的,但在大多数情况下,提高该值会带来显著的性能提升。另一个建议是选择网络往返时间(RTT)最低的快速 DNS 解析器。虽然几毫秒听起来差别不大,但当乘以数千个域名排列组合时,就能节省可观的时间。

关于覆盖范围的说明

随着输入域名长度的增加,算法生成的变体数量会显著增加,从而导致验证它们所需的时间和资源大幅增加。检查每一个可能的域名排列组合是不切实际的,尤其是对于较长的输入域名,那将需要数百万次 DNS 查询。因此,该工具只生成并检查与原始域名非常相似的域名。从理论上讲,这些域名从攻击者的角度来看最具吸引力。然而,必须指出的是,攻击者的想象力是无限的。

Unicode 表包含数千个字符,其中许多字符在视觉上彼此相似。然而,尽管某些字符可以使用 punycode 进行编码,但大多数 TLD 管理机构会在域名注册过程中拒绝它们。一般来说,TLD 管理机构不允许混合使用来自不同 Unicode 书写系统的字符,或者维护自己的一套可接受字符集。话虽如此,同形异义字符模糊测试器是建立在经过仔细研究的 Unicode 字符范围(同形异义字符)之上的,以确保生成的域名在实践中可以被注册。

集成

该扫描器被全球数十个 SOC 和事件响应团队以及独立的信息安全分析师和研究人员所使用。除此之外,它还被集成到许多安全提供商的产品和服务中,特别是但不限于:

Splunk add-on、RecordedFuture、SpiderFoot、DigitalShadows、SecurityRisk、SmartFense、ThreatPipes、PaloAlto Cortex XSOAR、Rapid7 InsightConnect SOAR、Mimecast、Watcher、Intel Owl、PatrOwl、VDA Labs、Appsecco、Maltego、Conscia ThreatInsights、Fortinet FortiSOAR、ThreatConnect、CISA Crossfeed。

联系方式

如需发送问题、想法或一块巧克力,只需发送电子邮件至 [email protected]。 欢迎任何反馈。如果您发现了某些已确认的网络钓鱼域名,或者只是喜欢这个工具,请随时发送消息。谢谢。

下载工具