29 KiB
フィッシングの方法論
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterで🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、hacktricks repo と hacktricks-cloud repo にPRを提出してください。
方法論
- ターゲットの情報収集
- ターゲットドメインを選択します。
- ターゲットが使用しているログインポータルを検索し、なりすますものを決定します。
- いくつかのOSINTを使用してメールアドレスを見つけます。
- 環境の準備
- フィッシング評価に使用するドメインを購入します。
- 関連するメールサービスのレコード(SPF、DMARC、DKIM、rDNS)を設定します。
- gophishを使用してVPSを設定します。
- キャンペーンの準備
- メールテンプレートを準備します。
- 資格情報を盗むためのウェブページを準備します。
- キャンペーンを開始します!
類似のドメイン名を生成するか、信頼できるドメインを購入する
ドメイン名の変更技術
- キーワード: オリジナルドメインの重要なキーワードを含むドメイン名(例: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)。
自動ツール
ウェブサイト
- https://dnstwist.it/
- https://dnstwister.report/
- https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/
ビットフリッピング
コンピューティングの世界では、メモリ内にはビット(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を持っているかどうかを確認するために、以下のサイトでカテゴリ分けされているかどうかを調べることができます:
メールアドレスの発見
- https://github.com/laramies/theHarvester(100%無料)
- https://phonebook.cz/(100%無料)
- https://maildb.io/
- https://hunter.io/
- https://anymailfinder.com/
さらに、有効なメールアドレスをさらに発見するか、すでに発見したメールアドレスを検証するために、被害者の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週間待つ必要がある場合でも、すべての設定を今すぐ完了することができます。
逆引きDNS(rDNS)レコードの設定
VPSのIPアドレスをドメイン名に解決するrDNS(PTR)レコードを設定します。
Sender Policy Framework(SPF)レコード
新しいドメインには、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:"Verdana",sans-serif;color:black">Dear {{.FirstName}} {{.LastName}},</span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Verdana",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で構成されている場合、この情報ではトリックされたユーザーをなりすますことはできません。
これは、evilginx2やCredSniperなどのツールが役立つ場所です。このツールを使用すると、MitMのような攻撃を生成できます。基本的に、攻撃は次のように機能します。
- 実際のウェブページのログインフォームをなりすます。
- ユーザーは自分の資格情報を偽のページに送信し、ツールはそれらを実際のウェブページに送信して、資格情報が機能するかどうかを確認します。
- アカウントが2FAで構成されている場合、MitMページはそれを要求し、ユーザーが入力すると、ツールはそれを実際のウェブページに送信します。
- ユーザーが認証されると、攻撃者として、ツールがMitMを実行している間に、資格情報、2FA、クッキー、およびすべてのインタラクションの情報をキャプチャします。
VNCを介して
もし、被害者を元のウェブページに接続されたブラウザを持つVNCセッションに送信する場合はどうでしょうか?彼が何をするかを見ることができ、パスワード、使用されたMFA、クッキーを盗むことができます...
これはEvilnVNCで行うことができます。
検出の検出
明らかに、バスターされたかどうかを知るための最良の方法の1つは、ドメインをブラックリストで検索することです。リストに表示される場合、どうやらあなたのドメインが疑わしいと検出されたようです。
ドメインがブラックリストに表示されているかどうかを確認する簡単な方法は、https://malwareworld.com/を使用することです。
ただし、次のような方法もあります。被害者のドメインと非常に似た名前のドメインを購入するか、被害者のドメインのキーワードを含む、あなたが制御しているドメインのサブドメインの証明書を生成することができます。被害者がそれらとDNSまたはHTTPのやり取りを行うと、彼が積極的に不審なドメインを探していることがわかり、非常に慎重にする必要があります。
フィッシングの評価
Phishiousを使用して、メールがスパムフォルダに入るか、ブロックされるか、成功するかを評価してください。
参考文献
- https://zeltser.com/domain-name-variations-in-phishing/
- https://0xpatrik.com/phishing-domains/
- https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterでフォローしてください🐦@carlospolopm。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。