mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/generic-methodologies-and-resources/phishing-methodolog
This commit is contained in:
parent
b82e1f2f28
commit
e2aa9ee048
@ -32,6 +32,7 @@
|
||||
- [Clone a Website](generic-methodologies-and-resources/phishing-methodology/clone-a-website.md)
|
||||
- [Detecting Phishing](generic-methodologies-and-resources/phishing-methodology/detecting-phising.md)
|
||||
- [Discord Invite Hijacking](generic-methodologies-and-resources/phishing-methodology/discord-invite-hijacking.md)
|
||||
- [Homograph Attacks](generic-methodologies-and-resources/phishing-methodology/homograph-attacks.md)
|
||||
- [Mobile Phishing Malicious Apps](generic-methodologies-and-resources/phishing-methodology/mobile-phishing-malicious-apps.md)
|
||||
- [Phishing Files & Documents](generic-methodologies-and-resources/phishing-methodology/phishing-documents.md)
|
||||
- [Basic Forensic Methodology](generic-methodologies-and-resources/basic-forensic-methodology/README.md)
|
||||
|
@ -24,13 +24,17 @@
|
||||
- **キーワード**: ドメイン名は元のドメインの重要な**キーワード**を**含みます**(例: zelster.com-management.com)。
|
||||
- **ハイフン付きサブドメイン**: サブドメインの**ドットをハイフンに変更**します(例: www-zelster.com)。
|
||||
- **新しいTLD**: 同じドメインを使用して**新しいTLD**を使用します(例: zelster.org)。
|
||||
- **ホモグリフ**: ドメイン名の文字を**似たような文字に置き換えます**(例: zelfser.com)。
|
||||
- **ホモグリフ**: ドメイン名の文字を**似た文字に置き換えます**(例: zelfser.com)。
|
||||
|
||||
{{#ref}}
|
||||
homograph-attacks.md
|
||||
{{#endref}}
|
||||
- **転置**: ドメイン名内の**2つの文字を入れ替えます**(例: zelsetr.com)。
|
||||
- **単数化/複数化**: ドメイン名の末尾に「s」を追加または削除します(例: zeltsers.com)。
|
||||
- **省略**: ドメイン名から**1つの文字を削除します**(例: zelser.com)。
|
||||
- **繰り返し**: ドメイン名内の**1つの文字を繰り返します**(例: zeltsser.com)。
|
||||
- **置換**: ホモグリフのようですが、あまりステルスではありません。ドメイン名内の1つの文字を、元の文字の近くにあるキーボードの文字に置き換えます(例: zektser.com)。
|
||||
- **サブドメイン化**: ドメイン名内に**ドットを挿入**します(例: ze.lster.com)。
|
||||
- **置換**: ホモグリフに似ていますが、あまり目立ちません。ドメイン名の1つの文字を、元の文字の近くにある文字に置き換えます(例: zektser.com)。
|
||||
- **サブドメイン化**: ドメイン名内に**ドットを挿入します**(例: ze.lster.com)。
|
||||
- **挿入**: ドメイン名に**文字を挿入します**(例: zerltser.com)。
|
||||
- **ドットの欠落**: ドメイン名にTLDを追加します(例: zelstercom.com)。
|
||||
|
||||
@ -47,15 +51,15 @@
|
||||
|
||||
### ビットフリッピング
|
||||
|
||||
いくつかのビットが保存または通信中に**自動的に反転する可能性があります**。これは、太陽フレア、宇宙線、またはハードウェアエラーなどのさまざまな要因によるものです。
|
||||
いくつかのビットが保存または通信中に自動的に**反転する可能性があります**。これは、太陽フレア、宇宙線、またはハードウェアエラーなどのさまざまな要因によるものです。
|
||||
|
||||
この概念が**DNSリクエストに適用されると**、**DNSサーバーによって受信されたドメイン**が、最初にリクエストされたドメインと同じでない可能性があります。
|
||||
|
||||
例えば、ドメイン「windows.com」の1ビットの変更は「windnws.com」に変わる可能性があります。
|
||||
例えば、ドメイン「windows.com」の1ビットの変更により、「windnws.com」に変わることがあります。
|
||||
|
||||
攻撃者は、被害者のドメインに似た**複数のビットフリッピングドメインを登録することでこれを利用する**かもしれません。彼らの意図は、正当なユーザーを自分たちのインフラにリダイレクトすることです。
|
||||
攻撃者は、被害者のドメインに似た複数のビットフリッピングドメインを登録することで**これを利用する可能性があります**。彼らの意図は、正当なユーザーを自分たちのインフラにリダイレクトすることです。
|
||||
|
||||
詳細については、[https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)をお読みください。
|
||||
詳細については、[こちらを読んでください](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)。
|
||||
|
||||
### 信頼できるドメインを購入する
|
||||
|
||||
@ -73,8 +77,8 @@
|
||||
- [https://hunter.io/](https://hunter.io)
|
||||
- [https://anymailfinder.com/](https://anymailfinder.com)
|
||||
|
||||
**より多くの**有効なメールアドレスを**発見するか、すでに発見したものを**確認するために、被害者のSMTPサーバーをブルートフォース攻撃できるか確認できます。[メールアドレスの確認/発見方法についてはこちらを学んでください](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration)。\
|
||||
さらに、ユーザーが**メールにアクセスするためのウェブポータルを使用している場合**、それが**ユーザーブルートフォースに対して脆弱であるかどうかを確認し、可能であればその脆弱性を悪用することを忘れないでください**。
|
||||
**さらに多くの**有効なメールアドレスを**発見するか、すでに発見したものを**確認するために、被害者のSMTPサーバーをブルートフォース攻撃できるか確認できます。[メールアドレスの確認/発見方法についてはこちらを学んでください](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration)。\
|
||||
さらに、ユーザーが**メールにアクセスするためのウェブポータルを使用している場合**、それが**ユーザー名のブルートフォース攻撃に対して脆弱かどうかを確認し、可能であればその脆弱性を悪用することを忘れないでください**。
|
||||
|
||||
## GoPhishの設定
|
||||
|
||||
@ -126,7 +130,7 @@ cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt
|
||||
|
||||
次に、**DNS Aレコード** `mail.<domain>` をVPSの**IPアドレス**にポイントさせ、**DNS MX**レコードを `mail.<domain>` にポイントさせます。
|
||||
|
||||
では、メールを送信するテストを行いましょう:
|
||||
次に、メールを送信するテストを行いましょう:
|
||||
```bash
|
||||
apt install mailutils
|
||||
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com
|
||||
@ -208,7 +212,7 @@ case $1 in
|
||||
start|stop|status) "$1" ;;
|
||||
esac
|
||||
```
|
||||
サービスの設定を完了し、次の操作を行って確認します:
|
||||
サービスの設定を完了し、次の手順を実行して確認します:
|
||||
```bash
|
||||
mkdir /var/log/gophish
|
||||
chmod +x /etc/init.d/gophish
|
||||
@ -223,7 +227,7 @@ service gophish stop
|
||||
|
||||
### 待機して正当性を保つ
|
||||
|
||||
ドメインが古いほど、スパムとして検出される可能性は低くなります。そのため、フィッシング評価の前にできるだけ長く(少なくとも1週間)待つべきです。さらに、評判の良い分野に関するページを作成すれば、得られる評判はより良くなります。
|
||||
ドメインが古いほど、スパムとして捕まる可能性は低くなります。そのため、フィッシング評価の前にできるだけ長く(少なくとも1週間)待つべきです。さらに、評判の良い分野に関するページを作成すれば、得られる評判はより良くなります。
|
||||
|
||||
1週間待たなければならない場合でも、今すぐにすべての設定を終えることができます。
|
||||
|
||||
@ -271,7 +275,7 @@ v=DMARC1; p=none
|
||||
```bash
|
||||
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com
|
||||
```
|
||||
あなたはまた、**メール設定を確認する**ために `check-auth@verifier.port25.com` にメールを送信し、**応答を読む**ことができます(これには、**ポート25を開く**必要があり、メールをrootとして送信した場合はファイル _/var/mail/root_ で応答を確認します)。\
|
||||
あなたはまた、**メール設定を確認する**ために `check-auth@verifier.port25.com` にメールを送信し、**レスポンスを読む**ことができます(これには、**ポート25を開く**必要があり、メールをrootとして送信した場合はファイル _/var/mail/root_ でレスポンスを確認します)。\
|
||||
すべてのテストに合格していることを確認してください:
|
||||
```bash
|
||||
==========================================================
|
||||
@ -283,7 +287,7 @@ DKIM check: pass
|
||||
Sender-ID check: pass
|
||||
SpamAssassin check: ham
|
||||
```
|
||||
あなたはまた、**あなたの管理下にあるGmailにメッセージを送信**し、Gmailの受信トレイで**メールのヘッダー**を確認することができます。`dkim=pass`は`Authentication-Results`ヘッダー欄に存在する必要があります。
|
||||
あなたはまた、**あなたの管理下にあるGmailにメッセージを送信し**、Gmailの受信トレイで**メールのヘッダー**を確認することができます。`dkim=pass`は`Authentication-Results`ヘッダー欄に存在する必要があります。
|
||||
```
|
||||
Authentication-Results: mx.google.com;
|
||||
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
|
||||
@ -291,11 +295,11 @@ dkim=pass header.i=@example.com;
|
||||
```
|
||||
### Spamhouseのブラックリストからの削除
|
||||
|
||||
ページ [www.mail-tester.com](https://www.mail-tester.com) は、あなたのドメインがspamhouseによってブロックされているかどうかを示すことができます。あなたのドメイン/IPの削除をリクエストするには、[https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/) にアクセスしてください。
|
||||
ページ [www.mail-tester.com](https://www.mail-tester.com) は、あなたのドメインがspamhouseによってブロックされているかどうかを示すことができます。あなたのドメイン/IPの削除をリクエストすることができます: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
|
||||
|
||||
### Microsoftのブラックリストからの削除
|
||||
|
||||
あなたのドメイン/IPの削除をリクエストするには、[https://sender.office.com/](https://sender.office.com) にアクセスしてください。
|
||||
あなたのドメイン/IPの削除をリクエストすることができます: [https://sender.office.com/](https://sender.office.com).
|
||||
|
||||
## GoPhishキャンペーンの作成と開始
|
||||
|
||||
@ -303,18 +307,18 @@ dkim=pass header.i=@example.com;
|
||||
|
||||
- 送信者プロファイルを識別するための**名前を設定**します
|
||||
- フィッシングメールを送信するアカウントを決定します。提案: _noreply, support, servicedesk, salesforce..._
|
||||
- ユーザー名とパスワードは空白のままにできますが、証明書エラーを無視することを確認してください
|
||||
- ユーザー名とパスワードは空白のままにできますが、「証明書エラーを無視する」をチェックすることを確認してください
|
||||
|
||||
 (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>)
|
||||
|
||||
> [!TIP]
|
||||
> "**テストメールを送信**"機能を使用して、すべてが正常に動作しているかをテストすることをお勧めします。\
|
||||
> "**テストメールを送信**"機能を使用して、すべてが正常に動作していることをテストすることをお勧めします。\
|
||||
> テストを行う際にブラックリストに載らないように、**テストメールを10分メールアドレスに送信する**ことをお勧めします。
|
||||
|
||||
### メールテンプレート
|
||||
|
||||
- テンプレートを識別するための**名前を設定**します
|
||||
- 次に、**件名**を書きます(特に奇妙なものではなく、通常のメールで読むことができるもの)
|
||||
- 次に、**件名**を書きます(奇妙なものではなく、通常のメールで読むことができるもの)
|
||||
- "**トラッキング画像を追加**"にチェックを入れていることを確認してください
|
||||
- **メールテンプレート**を書きます(以下の例のように変数を使用できます):
|
||||
```html
|
||||
@ -338,29 +342,29 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
|
||||
**メールの信頼性を高めるために**、クライアントからのメールの署名を使用することをお勧めします。提案:
|
||||
|
||||
- **存在しないアドレス**にメールを送信し、返信に署名が含まれているか確認します。
|
||||
- info@ex.comやpress@ex.com、public@ex.comのような**公開メール**を探し、メールを送信して返信を待ちます。
|
||||
- **public emails**(例:info@ex.com、press@ex.com、public@ex.com)を検索し、メールを送信して返信を待ちます。
|
||||
- **有効な発見された**メールに連絡を試み、返信を待ちます。
|
||||
|
||||
.png>)
|
||||
|
||||
> [!TIP]
|
||||
> メールテンプレートでは、**送信するファイルを添付**することもできます。特別に作成したファイル/ドキュメントを使用してNTLMチャレンジを盗むことに興味がある場合は、[このページを読む](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md)。
|
||||
> Email Templateでは、**送信するファイルを添付することもできます**。NTLMチャレンジを特別に作成したファイル/ドキュメントを使用して盗むことに興味がある場合は、[このページを読んでください](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md)。
|
||||
|
||||
### ランディングページ
|
||||
|
||||
- **名前**を記入
|
||||
- **ウェブページのHTMLコード**を記入します。ウェブページを**インポート**することもできます。
|
||||
- **送信されたデータをキャプチャ**と**パスワードをキャプチャ**にチェックを入れます。
|
||||
- **提出データをキャプチャ**と**パスワードをキャプチャ**にチェックを入れます。
|
||||
- **リダイレクト**を設定します。
|
||||
|
||||
.png>)
|
||||
|
||||
> [!TIP]
|
||||
> 通常、ページのHTMLコードを修正し、ローカルでいくつかのテストを行う必要があります(おそらくApacheサーバーを使用して)**結果に満足するまで。**その後、そのHTMLコードをボックスに記入します。\
|
||||
> HTML用に**静的リソース**(おそらくCSSやJSページ)を使用する必要がある場合は、_**/opt/gophish/static/endpoint**_に保存し、_**/static/\<filename>**_からアクセスできます。
|
||||
> 通常、ページのHTMLコードを修正し、ローカルでいくつかのテストを行う必要があります(おそらくApacheサーバーを使用して)。**結果に満足するまで**。その後、そのHTMLコードをボックスに記入します。\
|
||||
> HTML用に**静的リソース**(CSSやJSページなど)を使用する必要がある場合は、_**/opt/gophish/static/endpoint**_に保存し、_**/static/\<filename>**_からアクセスできます。
|
||||
|
||||
> [!TIP]
|
||||
> リダイレクトでは、**被害者の正当なメインウェブページにユーザーをリダイレクト**するか、例えば_/static/migration.html_にリダイレクトし、5秒間**スピニングホイール**(**[https://loading.io/](https://loading.io)**)を表示してから、プロセスが成功したことを示すことができます。
|
||||
> リダイレクトでは、**被害者の正当なメインウェブページにユーザーをリダイレクト**するか、例えば_/static/migration.html_にリダイレクトし、5秒間**スピニングホイール**(**[https://loading.io/](https://loading.io)**)を表示し、その後プロセスが成功したことを示すことができます。
|
||||
|
||||
### ユーザーとグループ
|
||||
|
||||
@ -392,7 +396,7 @@ clone-a-website.md
|
||||
|
||||
## バックドア付きドキュメントとファイル
|
||||
|
||||
いくつかのフィッシング評価(主にレッドチーム用)では、**バックドアを含むファイルを送信したい**場合があります(おそらくC2、または認証をトリガーする何か)。\
|
||||
いくつかのフィッシング評価(主にレッドチーム用)では、**バックドアを含むファイルを送信したい**場合があります(C2かもしれませんし、認証をトリガーする何かかもしれません)。\
|
||||
いくつかの例については、次のページを確認してください:
|
||||
|
||||
{{#ref}}
|
||||
@ -405,21 +409,21 @@ phishing-documents.md
|
||||
|
||||
前述の攻撃は非常に巧妙で、実際のウェブサイトを偽装し、ユーザーが設定した情報を収集します。残念ながら、ユーザーが正しいパスワードを入力しなかった場合や、偽装したアプリケーションが2FAで設定されている場合、**この情報では騙されたユーザーを偽装することはできません**。
|
||||
|
||||
ここで、[**evilginx2**](https://github.com/kgretzky/evilginx2)**、** [**CredSniper**](https://github.com/ustayready/CredSniper)および[**muraena**](https://github.com/muraenateam/muraena)のようなツールが役立ちます。このツールは、MitMのような攻撃を生成することを可能にします。基本的に、攻撃は次のように機能します:
|
||||
ここで、[**evilginx2**](https://github.com/kgretzky/evilginx2)**、** [**CredSniper**](https://github.com/ustayready/CredSniper) および [**muraena**](https://github.com/muraenateam/muraena)のようなツールが役立ちます。このツールは、MitMのような攻撃を生成することを可能にします。基本的に、攻撃は次のように機能します:
|
||||
|
||||
1. 実際のウェブページのログインフォームを**偽装**します。
|
||||
2. ユーザーは**資格情報**を偽のページに**送信**し、ツールはそれを実際のウェブページに送信し、**資格情報が機能するか確認**します。
|
||||
1. 実際のウェブページの**ログイン**フォームを偽装します。
|
||||
2. ユーザーは**資格情報**を偽のページに送信し、ツールはそれを実際のウェブページに送信し、**資格情報が機能するか確認します**。
|
||||
3. アカウントが**2FA**で設定されている場合、MitMページはそれを要求し、**ユーザーが入力**すると、ツールはそれを実際のウェブページに送信します。
|
||||
4. ユーザーが認証されると、(攻撃者として)**資格情報、2FA、クッキー、およびツールがMitMを実行している間のすべてのインタラクションの情報をキャプチャ**します。
|
||||
|
||||
### VNC経由
|
||||
|
||||
もし**被害者を元のページと同じ外観の悪意のあるページ**に送信する代わりに、**実際のウェブページに接続されたブラウザを持つVNCセッション**に送信したらどうなりますか?彼が何をしているかを見ることができ、パスワード、使用されるMFA、クッキーを盗むことができます...\
|
||||
**被害者を元のページと同じ外観の悪意のあるページに送信する代わりに、**実際のウェブページに接続されたブラウザを持つ**VNCセッションに送信したらどうなりますか**?彼が何をしているかを見ることができ、パスワード、使用されるMFA、クッキーを盗むことができます。\
|
||||
これを[**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)で行うことができます。
|
||||
|
||||
## 検出の検出
|
||||
|
||||
明らかに、バストされたかどうかを知る最良の方法の1つは、**ブラックリスト内で自分のドメインを検索すること**です。リストに表示されている場合、何らかの形であなたのドメインが疑わしいと検出されました。\
|
||||
当然のことながら、バストされたかどうかを知る最良の方法の1つは、**ブラックリスト内で自分のドメインを検索することです**。リストに表示されている場合、何らかの形であなたのドメインが疑わしいと検出されました。\
|
||||
ドメインがブラックリストに表示されているかどうかを確認する簡単な方法は、[https://malwareworld.com/](https://malwareworld.com)を使用することです。
|
||||
|
||||
ただし、被害者が**野外で疑わしいフィッシング活動を積極的に探しているかどうかを知る他の方法もあります**。詳細は次の通りです:
|
||||
@ -428,15 +432,15 @@ phishing-documents.md
|
||||
detecting-phising.md
|
||||
{{#endref}}
|
||||
|
||||
被害者のドメインに非常に似た名前のドメインを**購入する**ことができます。または、あなたが制御するドメインの**サブドメイン**に対して**証明書を生成する**ことができます。被害者のドメインの**キーワード**を含むものです。もし**被害者**がそれらと何らかの**DNSまたはHTTPインタラクション**を行った場合、**彼が積極的に探している**ことがわかり、非常にステルスである必要があります。
|
||||
被害者のドメインに非常に似た名前のドメインを**購入する**ことができます。**および/または、あなたが制御するドメインの**サブドメイン**のために**証明書を生成します。被害者がそれらと何らかの**DNSまたはHTTPインタラクション**を行う場合、**彼が積極的に探している**ことがわかり、非常にステルスである必要があります。
|
||||
|
||||
### フィッシングの評価
|
||||
|
||||
[**Phishious**](https://github.com/Rices/Phishious)を使用して、あなたのメールがスパムフォルダに入るか、ブロックされるか、成功するかを評価します。
|
||||
[**Phishious**](https://github.com/Rices/Phishious)を使用して、メールがスパムフォルダに入るか、ブロックされるか、成功するかを評価します。
|
||||
|
||||
## クリップボードハイジャック / ペーストジャッキング
|
||||
|
||||
攻撃者は、妥協したまたはタイポスカットされたウェブページから被害者のクリップボードに悪意のあるコマンドを静かにコピーし、その後ユーザーを**Win + R**、**Win + X**、またはターミナルウィンドウにペーストさせ、ダウンロードや添付なしで任意のコードを実行させることができます。
|
||||
攻撃者は、妥協されたまたはタイポスカットされたウェブページから被害者のクリップボードに悪意のあるコマンドを静かにコピーし、その後ユーザーを**Win + R**、**Win + X**、またはターミナルウィンドウ内にペーストさせ、ダウンロードや添付なしで任意のコードを実行させることができます。
|
||||
|
||||
{{#ref}}
|
||||
clipboard-hijacking.md
|
||||
|
@ -0,0 +1,104 @@
|
||||
# ホモグラフ / ホモグリフ攻撃におけるフィッシング
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## 概要
|
||||
|
||||
ホモグラフ(別名ホモグリフ)攻撃は、多くの**非ラテン文字スクリプトのUnicodeコードポイントがASCII文字と視覚的に同一または非常に似ている**という事実を悪用します。攻撃者は、1つ以上のラテン文字をそれに似た文字に置き換えることで、次のようなものを作成できます:
|
||||
|
||||
* 人間の目には正当なものに見えるが、キーワードベースの検出を回避する表示名、件名、またはメッセージ本文。
|
||||
* 被害者を信頼できるサイトに訪れていると錯覚させるドメイン、サブドメイン、またはURLパス。
|
||||
|
||||
すべてのグリフはその**Unicodeコードポイント**によって内部的に識別されるため、1つの置き換えられた文字だけで単純な文字列比較を打破することができます(例:`"Παypal.com"` vs. `"Paypal.com"`)。
|
||||
|
||||
## 一般的なフィッシングワークフロー
|
||||
|
||||
1. **メッセージ内容を作成** – 偽装されたブランド/キーワードの特定のラテン文字を、他のスクリプト(ギリシャ語、キリル文字、アルメニア語、チェロキー語など)の視覚的に区別がつかない文字に置き換えます。
|
||||
2. **サポートインフラを登録** – 必要に応じてホモグリフドメインを登録し、TLS証明書を取得します(ほとんどのCAは視覚的類似性チェックを行いません)。
|
||||
3. **メール/SMSを送信** – メッセージには、以下のいずれかの場所にホモグリフが含まれています:
|
||||
* 送信者表示名(例:`Ηеlрdеѕk`)
|
||||
* 件名行(`Urgеnt Аctіon Rеquіrеd`)
|
||||
* ハイパーリンクテキストまたは完全修飾ドメイン名
|
||||
4. **リダイレクトチェーン** – 被害者は、悪意のあるホストに到達する前に、一見無害なウェブサイトやURL短縮サービスを経由します。
|
||||
|
||||
## 一般的に悪用されるUnicode範囲
|
||||
|
||||
| スクリプト | 範囲 | 例のグリフ | 見た目 |
|
||||
|--------|-------|---------------|------------|
|
||||
| ギリシャ語 | U+0370-03FF | `Η` (U+0397) | ラテン `H` |
|
||||
| ギリシャ語 | U+0370-03FF | `ρ` (U+03C1) | ラテン `p` |
|
||||
| キリル文字 | U+0400-04FF | `а` (U+0430) | ラテン `a` |
|
||||
| キリル文字 | U+0400-04FF | `е` (U+0435) | ラテン `e` |
|
||||
| アルメニア語 | U+0530-058F | `օ` (U+0585) | ラテン `o` |
|
||||
| チェロキー語 | U+13A0-13FF | `Ꭲ` (U+13A2) | ラテン `T` |
|
||||
|
||||
> ヒント:完全なUnicodeチャートは[unicode.org](https://home.unicode.org/)で入手できます。
|
||||
|
||||
## 検出技術
|
||||
|
||||
### 1. 混合スクリプト検査
|
||||
|
||||
英語を話す組織を対象としたフィッシングメールは、複数のスクリプトからの文字を混合することはほとんどありません。シンプルですが効果的なヒューリスティックは次のとおりです:
|
||||
|
||||
1. 検査対象の文字列の各文字を反復処理します。
|
||||
2. コードポイントをそのUnicodeブロックにマッピングします。
|
||||
3. 1つ以上のスクリプトが存在する場合**または**予期しない場所(表示名、ドメイン、件名、URLなど)に非ラテン文字スクリプトが現れた場合は警告を発します。
|
||||
|
||||
Pythonの概念実証:
|
||||
```python
|
||||
import unicodedata as ud
|
||||
from collections import defaultdict
|
||||
|
||||
SUSPECT_FIELDS = {
|
||||
"display_name": "Ηоmоgraph Illusion", # example data
|
||||
"subject": "Finаnꮯiаl Տtatеmеnt",
|
||||
"url": "https://xn--messageconnecton-2kb.blob.core.windows.net" # punycode
|
||||
}
|
||||
|
||||
for field, value in SUSPECT_FIELDS.items():
|
||||
blocks = defaultdict(int)
|
||||
for ch in value:
|
||||
if ch.isascii():
|
||||
blocks['Latin'] += 1
|
||||
else:
|
||||
name = ud.name(ch, 'UNKNOWN')
|
||||
block = name.split(' ')[0] # e.g., 'CYRILLIC'
|
||||
blocks[block] += 1
|
||||
if len(blocks) > 1:
|
||||
print(f"[!] Mixed scripts in {field}: {dict(blocks)} -> {value}")
|
||||
```
|
||||
### 2. Punycode 正規化 (ドメイン)
|
||||
|
||||
国際化ドメイン名 (IDN) は **punycode** (`xn--`) でエンコードされています。すべてのホスト名を punycode に変換し、その後 Unicode に戻すことで、ホワイトリストに対する照合や類似性チェック (例: レーベンシュタイン距離) を **正規化**された文字列に対して行うことができます。
|
||||
```python
|
||||
import idna
|
||||
hostname = "Ρаypal.com" # Greek Rho + Cyrillic a
|
||||
puny = idna.encode(hostname).decode()
|
||||
print(puny) # xn--yl8hpyal.com
|
||||
```
|
||||
### 3. ホモグリフ辞書 / アルゴリズム
|
||||
|
||||
**dnstwist** (`--homoglyph`) や **urlcrazy** のようなツールは、視覚的に類似したドメインの順列を列挙でき、積極的な削除 / 監視に役立ちます。
|
||||
|
||||
## 予防と緩和
|
||||
|
||||
* 厳格な DMARC/DKIM/SPF ポリシーを施行 – 不正なドメインからのなりすましを防止します。
|
||||
* 上記の検出ロジックを **Secure Email Gateways** と **SIEM/XSOAR** プレイブックに実装します。
|
||||
* 表示名のドメイン ≠ 送信者のドメイン のメッセージをフラグ付けまたは隔離します。
|
||||
* ユーザーを教育します: 疑わしいテキストを Unicode インスペクターにコピー&ペーストし、リンクにカーソルを合わせ、URL 短縮サービスを決して信頼しないようにします。
|
||||
|
||||
## 実世界の例
|
||||
|
||||
* 表示名: `Сonfidеntiаl Ꭲiꮯkеt` (キリル文字 `С`, `е`, `а`; チェロキー `Ꭲ`; ラテン小文字 `ꮯ`)。
|
||||
* ドメインチェーン: `bestseoservices.com` ➜ municipal `/templates` ディレクトリ ➜ `kig.skyvaulyt.ru` ➜ カスタム OTP CAPTCHA で保護された偽の Microsoft ログイン `mlcorsftpsswddprotcct.approaches.it.com`。
|
||||
* Spotify なりすまし: `Sρօtifւ` 送信者が `redirects.ca` の背後に隠されたリンクを持っています。
|
||||
|
||||
これらのサンプルは Unit 42 の研究(2025年7月)に由来し、ホモグリフの悪用が URL リダイレクションと CAPTCHA 回避と組み合わされて自動分析を回避する方法を示しています。
|
||||
|
||||
## 参考文献
|
||||
|
||||
- [The Homograph Illusion: Not Everything Is As It Seems](https://unit42.paloaltonetworks.com/homograph-attacks/)
|
||||
- [Unicode Character Database](https://home.unicode.org/)
|
||||
- [dnstwist – domain permutation engine](https://github.com/elceef/dnstwist)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
Loading…
x
Reference in New Issue
Block a user