hacktricks/generic-methodologies-and-resources/phishing-methodology/README.md
2023-07-07 23:42:27 +00:00

29 KiB
Raw Blame History

フィッシングの方法論

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

方法論

  1. ターゲットの情報収集
  2. ターゲットドメインを選択します。
  3. ターゲットが使用しているログインポータルを検索し、なりすますものを決定します。
  4. いくつかのOSINTを使用してメールアドレスを見つけます
  5. 環境の準備
  6. フィッシング評価に使用するドメインを購入します。
  7. 関連するメールサービスのレコードSPF、DMARC、DKIM、rDNS設定します。
  8. gophishを使用してVPSを設定します。
  9. キャンペーンの準備
  10. メールテンプレートを準備します。
  11. 資格情報を盗むためのウェブページを準備します。
  12. キャンペーンを開始します!

類似のドメイン名を生成するか、信頼できるドメインを購入する

ドメイン名の変更技術

  • キーワード: オリジナルドメインの重要なキーワードを含むドメイン名zelster.com-management.com
  • ハイフン付きサブドメイン: サブドメインのドットをハイフンに変更しますwww-zelster.com
  • 新しいTLD: 同じドメインを新しいTLDを使用して表現しますzelster.org
  • ホモグリフ: ドメイン名の一部の文字を、似たような文字で置き換えますzelfser.com
  • 転置: ドメイン名内の2つの文字を入れ替えますzelster.com
  • 単数形/複数形: ドメイン名の末尾に「s」を追加または削除しますzeltsers.com
  • 省略: ドメイン名から1つの文字を削除しますzelser.com
  • 繰り返し: ドメイン名の1つの文字を繰り返しますzeltsser.com
  • 置換: ホモグリフと同様ですが、より目立たないです。ドメイン名の1つの文字を、元の文字に近いキーボード上の文字で置き換えますzektser.com
  • サブドメイン: ドメイン名内にドットを挿入しますze.lster.com
  • 挿入: ドメイン名に1つの文字を挿入しますzerltser.com
  • ドットの欠落: ドメイン名にTLDを追加しますzelstercom.com

自動ツール

ウェブサイト

ビットフリッピング

コンピューティングの世界では、メモリ内にはビット0と1ですべてが格納されています。
ドメインも同様です。たとえば、_windows.com_は、コンピューティングデバイスの揮発性メモリ内では_01110111..._となります。
しかし、もしソーラーフレアや宇宙線、ハードウェアエラーによってビットの1つが自動的に反転した場合はどうでしょうか。つまり、0の1つが1に、1の1つが0になることです。
このコンセプトをDNSリクエストに適用すると、DNSサーバーに到着するドメインリクエストが最初に要求されたドメインとは異なる可能性があります

たとえば、ドメインwindows.comの1ビットの変更により、_windnws.com_に変換される可能性があります。
攻撃者は、被害者に関連するビットフリッピングドメインをできるだけ多く登録し、正規のユーザーを自身のインフラストラクチャにリダイレクトすることができます

詳細については、https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/を参照してください。

信頼できるドメインを購入する

https://www.expireddomains.net/で使用できる期限切れのドメインを検索することができます。
購入する前に、購入する期限切れのドメインが既に良いSEOを持っているかどうかを確認するために、以下のサイトでカテゴリ分けされているかどうかを調べることができます:

メールアドレスの発見

さらに、有効なメールアドレスをさらに発見するか、すでに発見したメールアドレスを検証するために、被害者のSMTPサーバーのユーザー名をブルートフォースできるかどうかを確認することができます。ここでメールアドレスの検証/発見方法を学ぶ
さらに、ユーザーがメールにアクセスするためのウェブポータルを使用している場合、ユーザー名のブルートフォースに対して脆弱性があるかどうかを確認し、可能であればその脆弱性を悪用することができます。

GoPhishの設定

インストール

https://github.com/gophish/gophish/releases/tag/v0.11.0からダウンロードすることができます。

/opt/gophish内にダウンロードして解凍し、/opt/gophish/gophishを実行します。
出力には、ポート3333の管理者ユーザーのパスワードが表示されます。したがって、そのポートにアクセスし、これらの資格情報を使用して管理者パスワードを変更します。ローカルにそのポートをトンネリングする必要がある場合があります。

ssh -L 3333:127.0.0.1:3333 <user>@<ip>

設定

TLS証明書の設定

この手順の前に、使用するドメインをすでに購入している必要があります。また、そのドメインはgophishを設定しているVPSのIPに向けられている必要があります

DOMAIN="<domain>"
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
sudo apt install snapd
sudo snap install core
sudo snap refresh core
sudo apt-get remove certbot
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
certbot certonly --standalone -d "$DOMAIN"
mkdir /opt/gophish/ssl_keys
cp "/etc/letsencrypt/live/$DOMAIN/privkey.pem" /opt/gophish/ssl_keys/key.pem
cp "/etc/letsencrypt/live/$DOMAIN/fullchain.pem" /opt/gophish/ssl_keys/key.crt

メールの設定

インストールを開始します:apt-get install postfix

次に、次のファイルにドメインを追加します:

  • /etc/postfix/virtual_domains
  • /etc/postfix/transport
  • /etc/postfix/virtual_regexp

また、/etc/postfix/main.cf内の次の変数の値も変更します

myhostname = <domain>
mydestination = $myhostname, <domain>, localhost.com, localhost

最後に、ファイル**/etc/hostname/etc/mailname**をドメイン名に変更し、VPSを再起動します。

次に、mail.<domain>IPアドレスを指すDNS Aレコードと、mail.<domain>を指すDNS MXレコードを作成します。

さて、メールを送信するテストを行いましょう:

apt install mailutils
echo "This is the body of the email" | mail -s "This is the subject line" test@email.com

Gophishの設定

Gophishの実行を停止し、設定を行いましょう。
/opt/gophish/config.jsonを以下のように変更してくださいhttpsの使用に注意してください:

{
"admin_server": {
"listen_url": "127.0.0.1:3333",
"use_tls": true,
"cert_path": "gophish_admin.crt",
"key_path": "gophish_admin.key"
},
"phish_server": {
"listen_url": "0.0.0.0:443",
"use_tls": true,
"cert_path": "/opt/gophish/ssl_keys/key.crt",
"key_path": "/opt/gophish/ssl_keys/key.pem"
},
"db_name": "sqlite3",
"db_path": "gophish.db",
"migrations_prefix": "db/db_",
"contact_address": "",
"logging": {
"filename": "",
"level": ""
}
}

gophishサービスの設定

gophishサービスを自動的に起動し、サービスとして管理するために、以下の内容で/etc/init.d/gophishというファイルを作成します。

#!/bin/bash
# /etc/init.d/gophish
# initialization file for stop/start of gophish application server
#
# chkconfig: - 64 36
# description: stops/starts gophish application server
# processname:gophish
# config:/opt/gophish/config.json
# From https://github.com/gophish/gophish/issues/586

# define script variables

processName=Gophish
process=gophish
appDirectory=/opt/gophish
logfile=/var/log/gophish/gophish.log
errfile=/var/log/gophish/gophish.error

start() {
echo 'Starting '${processName}'...'
cd ${appDirectory}
nohup ./$process >>$logfile 2>>$errfile &
sleep 1
}

stop() {
echo 'Stopping '${processName}'...'
pid=$(/bin/pidof ${process})
kill ${pid}
sleep 1
}

status() {
pid=$(/bin/pidof ${process})
if [["$pid" != ""| "$pid" != "" ]]; then
echo ${processName}' is running...'
else
echo ${processName}' is not running...'
fi
}

case $1 in
start|stop|status) "$1" ;;
esac

サービスの設定を完了し、次の手順で確認してください:

mkdir /var/log/gophish
chmod +x /etc/init.d/gophish
update-rc.d gophish defaults
#Check the service
service gophish start
service gophish status
ss -l | grep "3333\|443"
service gophish stop

メールサーバーとドメインの設定

待つ

ドメインが古ければ古いほど、スパムとして検知される可能性は低くなります。そのため、フィッシング評価を行う前にできるだけ長い時間少なくとも1週間待つ必要があります。
ただし、1週間待つ必要がある場合でも、すべての設定を今すぐ完了することができます。

逆引きDNSrDNSレコードの設定

VPSのIPアドレスをドメイン名に解決するrDNSPTRレコードを設定します。

Sender Policy FrameworkSPFレコード

新しいドメインには、SPFレコードを設定する必要があります。SPFレコードが何かわからない場合は、このページを読んでください。

https://www.spfwizard.net/を使用して、SPFポリシーを生成することができますVPSマシンのIPを使用してください

以下のコンテンツをドメイン内のTXTレコードに設定する必要があります。

v=spf1 mx a ip4:ip.ip.ip.ip ?all

ドメインベースのメッセージ認証、レポート、および適合性DMARCレコード

新しいドメインには、DMARCレコードを設定する必要があります。DMARCレコードが何かわからない場合は、このページを読んでください。

次の内容で、ホスト名 _dmarc.<ドメイン> を指す新しいDNS TXTレコードを作成する必要があります

v=DMARC1; p=none

DomainKeys Identified Mail (DKIM)

新しいドメインにDKIMを設定する必要があります。DMARCレコードが何かわからない場合は、このページを読んでください。

このチュートリアルは次のものに基づいています:https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy

{% hint style="info" %} DKIMキーが生成する両方のB64値を連結する必要があります

v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB

{% endhint %}

メール設定のスコアをテストする

https://www.mail-tester.com/を使用してそれを行うことができます。
単にページにアクセスし、彼らが提供するアドレスにメールを送信してください。

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_ ファイルでレスポンスを確認する必要があります)。 すべてのテストに合格していることを確認してください:

==========================================================
Summary of Results
==========================================================
SPF check:          pass
DomainKeys check:   neutral
DKIM check:         pass
Sender-ID check:    pass
SpamAssassin check: ham

代わりに、自分が制御しているGmailアドレスにメッセージを送信することもできます。Gmailの受信トレイで受け取ったメールのヘッダー表示すると、Authentication-Resultsヘッダーフィールドにdkim=passが表示されるはずです。

Authentication-Results: mx.google.com;
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
dkim=pass header.i=@example.com;

スパムハウスのブラックリストからの削除

ウェブサイトwww.mail-tester.comは、あなたのドメインがスパムハウスによってブロックされているかどうかを示すことができます。ドメイン/IPの削除をリクエストするには、https://www.spamhaus.org/lookup/にアクセスしてください。

マイクロソフトのブラックリストからの削除

ドメイン/IPの削除をリクエストするには、https://sender.office.com/にアクセスしてください。

GoPhishキャンペーンの作成と実行

送信プロファイル

  • 送信者プロファイルを識別するための名前を設定します。
  • フィッシングメールを送信するアカウントを選択します。提案: noreply, support, servicedesk, salesforce...
  • ユーザー名とパスワードは空白のままにしておくこともできますが、証明書エラーを無視するオプションをチェックすることを確認してください。

{% hint style="info" %} 動作確認のためには、**「テストメールを送信」**機能を使用することをお勧めします。
テストメールは、テスト中にブラックリストに登録されないように、10分メールアドレスに送信することをお勧めします。 {% endhint %}

メールテンプレート

  • テンプレートを識別するための名前を設定します。
  • 次に、件名を書きます(普通のメールで読むことができるもので、特別なものではありません)。
  • トラッキングイメージを追加」をチェックしていることを確認してください。
  • メールテンプレートを書きます(以下の例のように変数を使用することができます):
<html>
<head>
<title></title>
</head>
<body>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;color:black">Dear {{.FirstName}} {{.LastName}},</span></p>

<p class="MsoNormal"><span style="font-size:10.0pt;font-family:&quot;Verdana&quot;,sans-serif;color:black">As you may be aware, due to the large number of employees working from home, the "PLATFORM NAME" platform is being migrated to a new domain with an improved and more secure version. To finalize account migration, please use the following link to log into the new HR portal and move your account to the new site: <a href="{{.URL}}"> "PLATFORM NAME" login portal </a><br />
<br />
Please Note: We require all users to move their accounts by 04/01/2021. Failure to confirm account migration may prevent you from logging into the application after the migration process is complete.<br />
<br />
Regards,</span></p>

WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY

<p>{{.Tracker}}</p>
</body>
</html>

注意:メールの信頼性を高めるために、クライアントのメールからいくつかの署名を使用することをお勧めします。提案:

  • 存在しないアドレスにメールを送信し、応答に署名があるかどうかを確認します。
  • info@ex.comやpress@ex.com、public@ex.comなどの公開メールを検索し、メールを送信して応答を待ちます。
  • いくつかの有効な発見済みのメールに連絡を取り、応答を待ちます。

{% hint style="info" %} メールテンプレートでは、送信するためにファイルを添付することもできます。特別に作成されたファイル/ドキュメントを使用してNTLMチャレンジを盗む場合は、このページを参照してください。 {% endhint %}

ランディングページ

  • 名前を書く
  • ウェブページのHTMLコードを書く。ウェブページをインポートすることもできます。
  • 送信されたデータをキャプチャし、パスワードをキャプチャするように設定します。
  • リダイレクトを設定します。

{% hint style="info" %} 通常、ページのHTMLコードを変更し、ローカルでテストを行う必要がありますおそらくApacheサーバーを使用して結果が気に入るまで、ローカルでテストを行ってください。その後、そのHTMLコードをボックスに書き込んでください。
HTMLに静的リソースCSSやJSページなどを使用する必要がある場合は、それらを_/opt/gophish/static/endpointに保存し、/static/<filename>_からアクセスできます。 {% endhint %}

{% hint style="info" %} リダイレクトでは、ユーザーを被害者の正規のメインウェブページにリダイレクトするか、例えば_/static/migration.html_にリダイレクトし、5秒間スピニングホイールhttps://loading.io/)を表示し、その後処理が成功したことを示します。 {% endhint %}

ユーザーとグループ

  • 名前を設定します
  • データをインポートします(例のテンプレートを使用する場合、各ユーザーの名前、姓、メールアドレスが必要です)

キャンペーン

最後に、キャンペーンを作成し、名前、メールテンプレート、ランディングページ、URL、送信プロファイル、グループを選択します。URLは被害者に送信されるリンクになります。

送信プロファイルでは、最終的なフィッシングメールの見た目を確認するためにテストメールを送信することができます:

{% hint style="info" %} テストメールを10分メールアドレスに送信することをお勧めします。これにより、テストを行うことでブラックリストに登録されるのを回避できます。 {% endhint %}

準備ができたら、キャンペーンを開始するだけです!

ウェブサイトのクローニング

何らかの理由でウェブサイトをクローンしたい場合は、次のページを参照してください:

{% content-ref url="clone-a-website.md" %} clone-a-website.md {% endcontent-ref %}

バックドア付きのドキュメントとファイル

一部のフィッシング評価(主にレッドチーム向け)では、バックドアを含むファイルを送信することも必要になる場合がありますC2を含む場合もあれば、単に認証をトリガーするものかもしれません
いくつかの例については、次のページを参照してください:

{% content-ref url="phishing-documents.md" %} phishing-documents.md {% endcontent-ref %}

MFAを用いたフィッシング

プロキシMitMを介して

前の攻撃は非常に巧妙であり、実際のウェブサイトを偽装し、ユーザーが設定した情報を収集しています。ただし、ユーザーが正しいパスワードを入力しなかった場合や、偽装したアプリケーションが2FAで構成されている場合、この情報ではトリックされたユーザーをなりすますことはできません

これは、evilginx2CredSniperなどのツールが役立つ場所です。このツールを使用すると、MitMのような攻撃を生成できます。基本的に、攻撃は次のように機能します。

  1. 実際のウェブページのログインフォームをなりすます
  2. ユーザーは自分の資格情報を偽のページに送信し、ツールはそれらを実際のウェブページに送信して、資格情報が機能するかどうかを確認します。
  3. アカウントが2FAで構成されている場合、MitMページはそれを要求し、ユーザーが入力すると、ツールはそれを実際のウェブページに送信します。
  4. ユーザーが認証されると、攻撃者として、ツールがMitMを実行している間に、資格情報、2FA、クッキー、およびすべてのインタラクションの情報をキャプチャします。

VNCを介して

もし、被害者を元のウェブページに接続されたブラウザを持つVNCセッションに送信する場合はどうでしょうか彼が何をするかを見ることができ、パスワード、使用されたMFA、クッキーを盗むことができます...
これはEvilnVNCで行うことができます。

検出の検出

明らかに、バスターされたかどうかを知るための最良の方法の1つは、ドメインをブラックリストで検索することです。リストに表示される場合、どうやらあなたのドメインが疑わしいと検出されたようです。
ドメインがブラックリストに表示されているかどうかを確認する簡単な方法は、https://malwareworld.com/を使用することです。

ただし、次のような方法もあります。被害者のドメインと非常に似た名前のドメインを購入するか、被害者のドメインのキーワードを含む、あなたが制御しているドメインのサブドメインの証明書を生成することができます。被害者がそれらとDNSまたはHTTPのやり取りを行うと、彼が積極的に不審なドメインを探していることがわかり、非常に慎重にする必要があります。

フィッシングの評価

Phishiousを使用して、メールがスパムフォルダに入るか、ブロックされるか、成功するかを評価してください。

参考文献

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥