DomCat:一个域名分类工具
你是否曾经苦苦寻找具有特定分类的过期域名?是否对那些列出过期域名但不提供分类数据的网站感到沮丧?当你终于找到一个有前景的域名时,仍然需要自行研究其分类,经常发现它根本没有被分类——这浪费了你的时间(可能还有金钱)。
虽然曾经有一些工具可以帮助完成这个过程,但许多已经过时且年久失修。我们认为这是不可接受的,因此我创建了DomCat。
什么是DomCat?
DomCat是一个用Golang编写的命令行工具,帮助用户找到具有理想分类的过期域名。该工具目前处于起步阶段,非常基础。它的编写方式使其能够随着时间的推移进行升级。
为什么需要DomCat?
一些读者可能想知道为什么要寻找已分类的过期域名。在开发DomCat时,我主要考虑的是渗透测试人员。渗透测试人员可以利用具有"安全"分类的域名来绕过某些网络过滤器。我后来意识到的另一个有价值的应用是SEO,可以获取这些域名并将其附加到我们现有的域名上以获取更多流量。
制作DomCat
在开始这个项目时,我收到了一份已停止开发工具列表,如DomainHunter、DomainGain-Dep和CatMyPhish。所有这些都很有用……但非常过时。我的任务是寻找提供相同功能的新工具,或者自己制作一个。在找不到线索后,我开始开发DomCat。
最初,我尝试修复和组合这些现有工具,但很快发现它们失效的原因:它们从网站抓取过期域名列表。虽然这在五年前是更可接受的做法,但如今许多网站已经制定了禁止任何形式的抓取或机器人的政策。这意味着尝试更新现有工具将涉及完全重新编码,因此我将精力转向构建自己的工具。
DomCat演练
废话不多说:让我们看看DomCat的实际操作。
DomCat已在Windows和Linux(Ubuntu)上测试,应该在任何支持Go的系统上运行(但这不能保证)。在运行工具之前,我们的第一步是设置,这不应该花费太长时间。安装脚本目前正在开发中;我希望将来能自动化这个过程。
步骤1:安装Go
你需要安装Go来运行DomCat。这取决于你的操作系统(OS)——我将仅演示在Windows和Linux(Ubuntu)上的安装。无论操作系统如何,你都需要从这里下载相应的二进制文件。
Ubuntu
下载Linux操作系统的文件。完成后,打开终端并使用以下命令解压文件并安装Go。此命令仅在包含下载文件的目录中有效。根据需要修改下载文件路径。
|
|
安装后,我们将设置Go环境变量。对于Ubuntu,我们需要编辑.bashrc。除非你知道自己在做什么,否则不要乱动这里的内容,因为它可能会弄乱你的系统。
|
|
在此文件的底部,我们需要添加几行:
|
|
保存文件并source它:
|
|
为确保安装正确,运行几个命令:
|
|
和
|
|
以查看Go的版本信息和环境变量。它应该看起来像下面的截图(版本信息可能不同)。
Windows
下载Windows文件。完成后,运行可执行文件。右键单击它并点击安装。将弹出安装向导。
点击下一步并继续使用默认设置——我们不需要更改任何内容。很快你将看到此屏幕:
点击安装,它将显示一个加载条。
安装完成后,将出现一个新屏幕。点击完成。
最后,我们将确保Go已正确安装。这里的命令与Ubuntu中的相同。
|
|
和
|
|
Go现已成功安装。
步骤2:克隆DomCat
现在,我们需要从GitHub获取DomCat文件。我们将通过克隆仓库来完成此操作。这需要你在计算机和GitHub之间设置SSH密钥。查看生成新的SSH密钥并将其添加到ssh-agent以及将新的SSH密钥添加到你的GitHub账户。
如果你在Windows上,可以通过GitHub Desktop克隆,而无需处理SSH密钥。遗憾的是,这对Ubuntu来说不是一个选项。查看安装Github Desktop。我们将介绍两种克隆仓库的方法。(剧透:GitHub Desktop更容易)。克隆的替代方法是下载zip文件,但我们不会涵盖该过程。
SSH(Ubuntu)
设置好SSH密钥后,克隆过程很简单。转到GitHub上的DomCat仓库。找到标有Code的绿色按钮。点击它。选择SSH并复制显示的文本(也有一个方便的按钮)。
复制后,打开终端会话并运行:
|
|
你现在在系统上拥有了DomCat仓库。
Github Desktop(Windows)
这是更简单的方法,因为我们不需要SSH密钥。
前往GitHub上的DomCat仓库。找到标有Code的绿色按钮。点击它。不要选择SSH,而是点击用Github Desktop打开。
将启动一个GitHub Desktop会话,弹出一个要求克隆仓库的窗口。我告诉它克隆到我的项目文件夹,而不是默认文件夹,但你可以保留默认设置。准备好后,点击Clone。
将向你展示GitHub Desktop中仓库的新窗口。
为了确保我们可以从命令行访问它,我们可以从PowerShell检查文件位置。
步骤3:API密钥和.env
这里我们需要处理好我们的API密钥。DomCat目前使用两个API:一个来自NameSilo(NS)用于获取过期域名,一个来自Cloudflare用于检查域名分类。我们需要一个来自NameSilo的密钥和一个来自Cloudflare的令牌。但在此之前,我们需要一个地方来放置它们。我们将把它们放入一个.env文件中。
设置.env文件
在DomCat仓库中,有一个名为example.env的文件。它看起来像这样:
虽然这个文件看起来非常适合放置我们的密钥,但如果我们这样做,我们的程序将无法工作。我们需要创建一个名为".env"的新文件——完全按照这样设置,并用相应的密钥替换"your"部分。
创建文件很简单,因此我不会逐步指导你。只需确保将文件命名为".env",否则DomCat将无法工作。创建文件后,复制并粘贴文本。
NameSilo API密钥
我们将从NameSilo获取第一个密钥。你需要先设置一个账户。
设置好账户后,导航到账户设置中的API管理器。
到达那里后,向下滚动到API密钥部分。勾选接受使用条款并生成密钥的复选框。它将显示你的API。复制它并放置在我们之前创建的.env文件中。
Cloudflare API令牌
这个会更有趣一些。登录或创建Cloudflare账户。
页面左侧是不同选项的列表;滚动到底部并找到管理账户。
在下拉菜单中找到账户API令牌并点击它。
在此页面上,点击创建令牌。
在新页面的底部,有创建自定义密钥的选项。选择与此选项对应的开始按钮。
现在我们可以配置我们的令牌。你必须给它一个名称和权限(尝试给它一个好名字,以帮助你记住它的用途)。你唯一需要确保正确设置的是权限。DomCat需要两个权限:从Account.Intel和Account.Account Settings读取。如果你愿意,可以指定可以使用此令牌的IP地址和生存时间(TTL)值,以增加一些额外的安全性。
正确设置所有内容后,点击底部的继续到摘要。它将显示你尝试创建的令牌的概述。如果有问题,点击编辑令牌并修复它,否则点击创建令牌。复制显示的令牌并像之前一样粘贴到.env中。
现在我们有了密钥,让我们终于开始运行DomCat吧!
步骤4:构建和运行
要运行DomCat,我们将使用两个命令。
第一个将构建我们的可执行文件:
|
|
第二个将运行可执行文件:
|
|
我们开始比赛了!运行程序后,你应该看到标题图形。显示其他内容可能需要一段时间,因为从API获取响应可能需要一些时间,而且我们发出了几个请求。我计划将来在这里提供更多详细信息,以便你可以看到程序正在工作。
最终它将输出一个域名列表,如下所示:
此列表显示找到的过期域名及其分类。每次只收集大约二十个域名,然后应用过滤器移除没有分类的域名以及那些明确的域名。这就是为什么只显示八个。在底部,它会询问你是否要继续。如果是,点击Enter,将显示一个新列表。它将再次询问是否继续:
我认为我喜欢此列表中第5个域名的外观:“glasshousenursery.com”
由于我找到了一个我喜欢的域名,我将在终端输入"n"表示不继续。
然后它将提示你输入与你喜欢的域名对应的数字,对我来说是5。
输入你的数字将输出该域名在NameSilo上出售的拍卖URL。你可以复制并粘贴此链接到浏览器并前往拍卖。有时拍卖已经过期;我已经尽力过滤掉这些,但有些仍然漏网。(免费信息的乐趣之一:我们得到我们所支付的。)当然,你也可以在其他域名注册平台上搜索你找到的域名。
快速免责声明
Cloudflare Intel API对免费账户的请求数量有限。Intel API是DomCat获取分类信息的方式。对于免费账户,限制是每月一百个请求。每次你选择继续,它都会使用一个请求,因此请谨慎使用。这是我在这一点上找到的值得信赖的域名分类的最佳选择。
结论
我希望这个工具对尽可能多的用户可用,因此使用了免费API。当然,有一些高级产品非常适合DomCat的需求,但它们昂贵且不易访问。将来,我计划提供选项来利用这些高级服务,同时仍为免费用户保持可访问性。
虽然DomCat是考虑到渗透测试人员的用例而制作的,但对于任何寻找具有良好分类的域名的人来说,它都是一个很好的工具。
反馈
如果你在使用DomCat时遇到任何问题,请在GitHub上提出问题让我知道!如果你有关于如何改进工具或希望将来看到的功能的反馈,请通过我的工作电子邮件woldert@blackhillsinfosec.com与我联系,或者再次在GitHub上提出问题。
链接
- https://go.dev/dl
- https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent
- https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account
- https://docs.github.com/en/desktop/installing-and-authenticating-to-github-desktop/installing-github-desktop
- https://github.com/IcyLance/DomCat
- https://www.namesilo.com/sign-up?redirect=%2F
- https://www.namesilo.com/account/api-manager
- https://dash.cloudflare.com/login
- https://dash.cloudflare.com/sign-up
- https://developers.cloudflare.com/security-center/intel-apis/limits