Jeopardize 工具旨在以最低成本提供针对网络钓鱼域名的基础威胁情报与响应能力。它能检测已注册的网络钓鱼域名候选(如形近域名、同形异义字攻击等),对其进行分析并分配风险评分。之后,它会向这些钓鱼网站上的登录表单发送看起来合法的凭证。
为什么? 设想这个场景:攻击者注册一个钓鱼域名 acmebnak.com(acmebank 的形近域名),复制原 acmebank.com 的登录表单到该域名,并通过赞助推文推广。这个广告和域名很可能在次日被标记为钓鱼,但攻击者已经窃取了用户的凭证。此时再将其下线已无助于受影响的用户。Jeopardize 提供了一种主动解决方案:它通过向钓鱼表单注入看似有效的凭证来迷惑攻击者,从而为组织争取采取预防措施的时间。
ATTACKER+-----advertises+
| +---------------+
| | |
+--------v-------+ +----------------+ | |
|twitter.com/ads | |acmebnak.com | | 549233/ahs72 +------>FAKE
+----------------+ +----------------+ | |
| | | | | 398273/pass1 +------>FAKE
| AcmeBank +-->+ username: +-------+ |
| Tax Refunds | | password: | | 393823/sm283 +------>LEGIT
| | | | | |
+--------^-------+ +----------------+ | 394837/azerb +------>FAKE
| ^ | |
VICTIM USER+-----clicks-+ |sends | |
|fake creds +---------------+
+
JEOPARDIZE
Jeopardize 根据给定域名生成不同的单词组合(dnstwist 在此提供帮助)。例如,如果给定域名是 acmebank.com,组合将包括 acmebnak、acmeban、amcebank 等。如果你的域名较短或为通用名称(例如 aa.com),该工具将无法生效。它最适合独特名称。
Jeopardize 有两种不同的检测方法来识别已注册域名:
暴力模式(Brute): Jeopardize 将生成的单词(acmebnak、amcebank 等)与所有 TLD(com、net、xyz、live 等)组合,并对所有组合进行 whois 查询。优点: 无需任何 API 密钥,完全免费。缺点: 耗时较长。
每日模式(Daily): 使用给定的 Zonefiles.io API 密钥,Jeopardize 抓取过去 24 小时内注册的所有域名,并在其中搜索生成的单词(acmebnak、amcebank 等)。优点: 快速,可轻松用作日常威胁情报。缺点: 需要 Zonefiles.io API 密钥(专业版)。
检测到的域名本身已可疑。但有些因素会增加其成为钓鱼域名的可能性。此外,我们需要分析该域名上是否已安装钓鱼页面,以便采取相应行动。Jeopardize 会检查已注册域名的以下要素:
如果钓鱼评分较高且网站存在登录表单,Jeopardize 将自动使用提供的用户名/密码列表填充该表单。
它将检测到的钓鱼域名信息保存到 XML 文件中。例如:
<domain>
<address>acmebnak.com</address>
<name_servers>ns1.cloudflare.com ns2.cloudflare.com</name_servers>
<mx_servers> </mx_servers>
<date_flag>True</date_flag>
<alexa_flag>False</alexa_flag>
<webserver_flag>True</webserver_flag>
<certificate_flag>False</certificate_flag>
<form_flag>True</form_flag>
<phishing_score>85</phishing_score>
</domain>
Jeopardize 需要 Python3 运行,已在 macOS、Ubuntu 18.04 和基于 Debian 的 Linux 系统上测试。首先,克隆仓库:
git clone https://github.com/utkusen/jeopardize.git
进入文件夹
cd jeopardize
安装所需库
pip3 install -r requirements.txt
你还需要为 selenium 安装 chromedriver(表单填写需要。如果不使用此功能,则无需安装。)
在 Ubuntu 上: 运行 sudo apt install chromium-chromedriver
在 Kali(基于 Debian)上: 运行 pip3 install chromedriver-binary
在 macOS 上: 运行 brew cask install chromedriver
如果你想集成 Zonefiles.io API,用文本编辑器打开 jeopardize.py,将 ZONEFILES_API_KEY = "" 替换为你自己的密钥。
一切就绪!
macOS 用户注意: macOS 似乎将多线程作为安全机制加以限制。你需要在运行工具前执行以下命令:export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES。有关此问题的更多信息,请查看此处。
你需要使用 --domain 参数提供你的域名以进行钓鱼检查。还需要使用 --type(brute、daily、incremental)作为已注册域名的检测方法。
示例命令: python3 jeopardize.py --domain facebook.com --type brute
作用: 将 facebook 的单词组合(fcabook、facebkook 等)与所有 TLD(com、net、org、xyz)组合,并对所有组合进行 whois 查询。结果将保存到 facebook.com.xml 文件中。这不会填充检测到的域名的登录表单。
示例命令: python3 jeopardize.py --domain facebook.com --type daily
作用: 使用 Zonefiles.io API 抓取过去 24 小时内注册的所有域名,并在其中搜索生成的单词(fcabook、facebkook 等)。
示例命令: python3 jeopardize.py --domain facebook.com --type incremental
作用: 获取之前生成的 XML 文件(facebook.com.xml),抓取其中的域名并更新其数据,同时执行常规每日扫描。
如果你希望填充检测到的钓鱼域名的登录表单,请使用 -U 参数提供用户名列表,使用 -P 参数提供密码列表。
示例命令: python3 jeopardize.py --domain facebook.com --type daily -U user.txt -P pass.txt
如果你想激活详细模式,请在命令末尾添加 -v 参数。