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

DNS 模糊测试是一种自动化工作流程,旨在发现针对你所在组织的潜在恶意 域名。该工具会根据提供的域名生成一份全面的排列组合列表, 随后验证其中是否有任何排列组合正在被使用。 此外,它还能生成网页的模糊哈希,以检测正在进行的 钓鱼攻击或品牌仿冒,以及更多功能!
时间紧迫?在浏览器中试用:dnstwist.it
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 的环境变量时(采用不区分大小写的方式),会自动使用代理。如果同时存在小写和大写的环境变量,则优先使用小写。
如果你需要在代码中使用该工具生成的数据,最方便、最高效的方式是按如下方式传入输入。
>>> 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]。 欢迎任何反馈。如果您发现了某些已确认的网络钓鱼域名,或者只是喜欢这个工具,请随时发送消息。谢谢。