
フィッシングドメインに対する低(ゼロ)コストの脅威インテリジェンス&レスポンスツール
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には、登録済みドメインを識別するための2つの異なる検出方法があります。
Brute: Jeopardizeは生成された単語(acmebnak、amcebankなど)をすべてのTLD(com、net、xyz、liveなど)と組み合わせ、それらすべてに対してwhoisクエリを実行します。Pros: APIキーが不要で完全無料。Cons: 非常に時間がかかる。
Dailly 指定されたZonefiles.io API Keyを使用して、Jeopardizeは過去24時間に登録されたすべてのドメインをスクレイピングし、生成された単語(acmebnak、amcebankなど)を検索します。Pros: 高速で、日次脅威インテリジェンスとして簡単に使用できます。Cons: Zonefiles.io API Key(Pro版)が必要です。
検出されたドメインはすでに疑わしいものです。しかし、フィッシングドメインである可能性を高める要因があります。また、そのドメインにフィッシングページがインストールされているかどうかを分析し、それに対して対処する必要があります。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 パラメータを追加します。