hacktricks/generic-methodologies-and-resources/phishing-methodology/README.md

26 KiB
Raw Blame History

フィッシング手法

htARTEHackTricks AWS Red Team Expert でAWSハッキングをゼロからヒーローまで学ぶ

HackTricksをサポートする他の方法

手法

  1. ターゲットを調査する
  2. ターゲットドメインを選択する。
  3. ターゲットが使用しているログインポータルを検索し、なりすますためにどれを選択するかを決定するために基本的なWeb列挙を実行する。
  4. いくつかのOSINTを使用してメールアドレスを見つける
  5. 環境を準備する
  6. フィッシングアセスメントに使用するドメインを購入する
  7. 関連するレコードSPF、DMARC、DKIM、rDNS構成するメールサービスを構成する
  8. gophishを使用してVPSを構成する
  9. キャンペーンを準備する
  10. メールテンプレートを準備する
  11. 資格情報を盗むためのWebページを準備する
  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
  • 挿入: ドメイン名に文字を挿入するzerltser.com
  • ドットの欠落: ドメイン名にTLDを追加するzelstercom.com

自動ツール

ウェブサイト

ビットフリップ

太陽フレア、宇宙線、ハードウェアエラーなどのさまざまな要因により、保存されたビットや通信中のビットのいくつかが自動的に反転される可能性があります。

この概念を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サーバーをブルートフォースできるかどうかを確認できます。ここでメールアドレスを検証/発見する方法を学ぶ
さらに、ユーザーがメールにアクセスするためにWebポータルを使用している場合は、ユーザー名ブルートフォースに対して脆弱かどうかを確認し、可能であればその脆弱性を悪用できます。

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レコードを設定します。

送信者ポリシーフレームワークSPFレコード

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

https://www.spfwizard.net/を使用して、SPFポリシーを生成できますVPSマシンのIPを使用します

これは、ドメイン内のTXTレコードに設定する必要がある内容です。

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

ドメインベースのメッセージ認証、レポーティング、遵守DMARCレコード

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

次の内容を持つ新しいDNS TXTレコードを作成して、ホスト名を_dmarc.<domain>に向ける必要があります:

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開いて、ルートとしてメールを送信した場合はファイル /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;

Spamhouseブラックリストからの削除

ページwww.mail-tester.comは、あなたのドメインがスパムハウスによってブロックされているかどうかを示すことができます。あなたはあなたのドメイン/IPを次の場所で削除することができますhttps://www.spamhaus.org/lookup/

Microsoftブラックリストからの削除

あなたは、https://sender.office.com/であなたのドメイン/IPを削除することができます。

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>
<br />
Note: We require all user to login an a very suspicios page before the end of the week, thanks!<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 %}

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

一部のフィッシングアセスメント(主に Red Team 向け)では、バックドアを含むファイルを送信したい場合があります(たとえば C2 または認証をトリガーするもの)。
いくつかの例については、次のページをご覧ください:

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

フィッシング MFA

プロキシ MitM 経由

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

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

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

VNC 経由

被害者を悪意のあるページに送る代わりに、実際のウェブページに接続されたブラウザを持つVNC セッションに被害者を送信するとどうなりますか?彼が何をしているかを見ることができ、パスワード、使用された MFA、クッキーを盗むことができます...
これは EvilnVNC で行うことができます

検出の検出

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

ただし、被害者が野生の中で疑わしいフィッシング活動を積極的に探しているかどうかを知るための他の方法があります。詳細は次のページで説明されています:

{% content-ref url="detecting-phising.md" %} detecting-phising.md {% endcontent-ref %}

被害を受けたかどうかを知るために、被害者のドメインと非常に似た名前のドメインを購入したり、被害者のドメインのキーワードを含むあなたが管理するドメインのサブドメインのために証明書を生成したりすることができます。被害者がそれらとDNS または HTTP のやり取りを行うと、疑わしいドメインを積極的に探していることがわかります。その場合は、非常に慎重に行動する必要があります。

フィッシングの評価

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

参考文献