.. | ||
clone-a-website.md | ||
detecting-phising.md | ||
phishing-documents.md | ||
README.md |
フィッシング手法
htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したい場合やHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを入手する
- The PEASS Familyを発見し、独占的なNFTsコレクションを見つける
- **💬 Discordグループ**に参加するか、telegramグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローする
- ハッキングトリックを共有するために HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出する
手法
- ターゲットを調査する
- ターゲットドメインを選択する。
- ターゲットが使用しているログインポータルを検索し、なりすますためにどれを選択するかを決定するために基本的なWeb列挙を実行する。
- いくつかのOSINTを使用してメールアドレスを見つける。
- 環境を準備する
- フィッシングアセスメントに使用するドメインを購入する
- 関連するレコード(SPF、DMARC、DKIM、rDNS)を構成するメールサービスを構成する
- gophishを使用してVPSを構成する
- キャンペーンを準備する
- メールテンプレートを準備する
- 資格情報を盗むためのWebページを準備する
- キャンペーンを開始する!
類似のドメイン名を生成するか信頼できるドメインを購入する
ドメイン名の変更技術
- キーワード: オリジナルドメインの重要なキーワードを含むドメイン名(例: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)
自動ツール
ウェブサイト
- https://dnstwist.it/
- https://dnstwister.report/
- https://www.internetmarketingninjas.com/tools/free-tools/domain-typo-generator/
ビットフリップ
太陽フレア、宇宙線、ハードウェアエラーなどのさまざまな要因により、保存されたビットや通信中のビットのいくつかが自動的に反転される可能性があります。
この概念を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サーバーをブルートフォースできるかどうかを確認できます。ここでメールアドレスを検証/発見する方法を学ぶ。
さらに、ユーザーがメールにアクセスするために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週間待たなければならないとしても、今すぐすべてを設定しておくことができます。
逆引きDNS(rDNS)レコードの設定
VPSのIPアドレスをドメイン名に解決するrDNS(PTR)レコードを設定します。
送信者ポリシーフレームワーク(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:"Verdana",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)で構成されている場合、この情報ではだまされたユーザーをなりすますことはできません。
これは、evilginx2、CredSniper、**muraenaなどのツールが役立ちます。このツールを使用すると、MitM のような攻撃を生成できます。基本的に、攻撃は次のように機能します:
- 実際のウェブページのログインフォームをなりすます。
- ユーザーは自分の資格情報を偽のページに送信し、ツールはそれらを実際のウェブページに送信して、資格情報が機能するかどうかを確認します。
- アカウントが2FAで構成されている場合、MitM ページはそれを要求し、ユーザーが入力すると、ツールはそれを実際のウェブページに送信します。
- ユーザーが認証されると、あなた(攻撃者)は、ツールが MitM を実行する間に資格情報、2FA、クッキー、およびすべての情報をキャプチャします。
VNC 経由
被害者を悪意のあるページに送る代わりに、実際のウェブページに接続されたブラウザを持つVNC セッションに被害者を送信するとどうなりますか?彼が何をしているかを見ることができ、パスワード、使用された MFA、クッキーを盗むことができます...
これは EvilnVNC で行うことができます
検出の検出
バレたかどうかを知るための最良の方法の1つは、ドメインをブラックリスト内で検索することです。リストされている場合、どこかであなたのドメインが疑わしいとして検出されました。
どのブラックリストにも登録されているかどうかを確認する簡単な方法は、https://malwareworld.com/ を使用することです。
ただし、被害者が野生の中で疑わしいフィッシング活動を積極的に探しているかどうかを知るための他の方法があります。詳細は次のページで説明されています:
{% content-ref url="detecting-phising.md" %} detecting-phising.md {% endcontent-ref %}
被害を受けたかどうかを知るために、被害者のドメインと非常に似た名前のドメインを購入したり、被害者のドメインのキーワードを含むあなたが管理するドメインのサブドメインのために証明書を生成したりすることができます。被害者がそれらとDNS または HTTP のやり取りを行うと、疑わしいドメインを積極的に探していることがわかります。その場合は、非常に慎重に行動する必要があります。
フィッシングの評価
Phishious を使用して、電子メールがスパムフォルダに入るか、ブロックされるか、成功するかを評価します。