Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
frameless-bitb — iframeを使用しないBrowser In The Browser (BITB)への新しいアプローチ。Microsoftのようなログインページで実装されている従来のフレームバスターをバイパスし、Evilginxとの使用を可能にします。 | Kitploit
ツール/GitHubGitHub/waelmas/frameless-bitb
フィッシングツールIDS/IPS回避ウェブアプリケーション悪用フィッシングソーシャルエンジニアリング学習と教育
GitHubwaelmas/frameless-bitb

frameless-bitb

iframeを使用しないBrowser In The Browser (BITB)への新しいアプローチ。Microsoftのようなログインページで実装されている従来のフレームバスターをバイパスし、Evilginxとの使用を可能にします。

リポジトリを見る
45573582年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Frameless BITB

iframeを使用しない、新しいBrowser In The Browser (BITB)アプローチ。これにより、Microsoftのようなログインページが実装する従来のフレームバスターを回避できます。

このPOCコードは、この新しいBITBをEvilginxおよびMicrosoft Enterpriseフィッシュレットと共に使用するために構築されています。

Frameless-BITB-DEMO-compressed

詳しく見る前に、まずはBSides 2023での私の講演をご覧になることをお勧めします。このコンセプトを初めて紹介し、「完璧な」フィッシング攻撃を仕掛けるための重要な詳細について説明しました。▶ 動画を見る

☕︎ コーヒーをおごる

ビデオチュートリアル: 👇

免責事項

このツールは教育および研究目的のみで使用されます。iframeを使用しないBrowser In The Browser (BITB)方式を実証するものです。作者はこのツールの不正使用について一切の責任を負いません。このツールは、サイバーセキュリティ防御テストのための管理された環境において、合法的かつ倫理的にのみ使用してください。このツールを使用することにより、お客様は責任を持って自己責任で使用することに同意したものとみなします。

背景 - なぜなのか

この1年間、私は「完璧な」フィッシング攻撃を作り上げるためのさまざまなトリックを試してきました。人々が探す典型的な「危険信号」は、緊急性、脅威、権威、文法ミスなどです。 最近では、人々が次にチェックするのは、やり取りしているWebサイトのリンク/URLであり、メールアドレスやパスワードなどの機密性の高い認証情報の入力を求められた瞬間に非常に慎重になります。

そこで登場したのがBrowser In The Browser (BITB)です。元々は@mrd0xによって紹介されました。BITBは、攻撃者がコンテンツを制御する(悪意のあるWebサイトをiframe内で提供する)説得力のあるブラウザウィンドウの外観を作り出すというコンセプトです。ただし、偽のブラウザウィンドウの偽のURLバーは、ユーザーが期待する正当なサイトに設定されています。これにEvilginxのようなツールを組み合わせると、説得力のあるフィッシング攻撃のための完璧なレシピになります。

問題は、ここ数ヶ月から数年の間に、Microsoftのような主要なWebサイトが「フレームバスター/フレームキラー」と呼ばれるさまざまな小さなトリックを実装したことです。これらは主に、Evilginxの場合のようにプロキシされたWebサイトを提供するために使用される可能性のあるiframeを壊そうとします。

要するに、MicrosoftのようなWebサイトに対するEvilginx + BITBはもはや機能しません。少なくとも、iframeに依存するBITBでは機能しません。

何をするのか

iframeを一切使用しないBrowser In The Browser (BITB)です。それだけのことです。

つまり、MicrosoftのようなWebサイトでも、Evilginxと一緒にBITBを使用できるようになりました。

ここでのEvilginxは単なる強力な例ですが、同じコンセプトは他のユースケースにも使用できます。

どのように動作するのか

フレームバスターはiframeを特に標的にするため、iframeを使用せずに、プロキシされたページの元の構造/コンテンツを乱さずにBITB効果を作り出すというアイデアです。 これは、検索と置換(サブスティテューション)を使用して元のコンテンツの横にスクリプトとHTMLを注入し、その後、視覚効果のためにHTML/CSS/JSのトリックに完全に依存することで実現できます。 また、HTMLの「Shadow DOM」と呼ばれる追加のトリックを使用して、ランディングページ(背景)のコンテンツをプロキシされたコンテンツと干渉しないように配置し、マイナーな追加JSスクリプトで任意のランディングページを柔軟に使用できるようにします。

手順

ビデオチュートリアル

サムネイルとYouTubeプレイヤー

https://youtu.be/luJjxpEwVHI

ローカルVM:

ローカルLinux VMを作成します。(私はVMWare PlayerまたはParallels Desktop上でUbuntu 22を個人的に使用しています)

システムパッケージの更新とアップグレード:

sudo apt update && sudo apt upgrade -y

Evilginxのセットアップ:

オプション:

新しいevilginxユーザーを作成し、sudoグループに追加します:

sudo su

adduser evilginx

usermod -aG sudo evilginx

evilginxユーザーがsudoグループにいることを確認します:

su - evilginx

sudo ls -la /root

ユーザーのホームディレクトリに移動:

cd /home/evilginx

(すべてをsudoユーザーとしても実行できます。すべてローカルで実行しているため)

Evilginxの設定

Evilginxのダウンロードとビルド: 公式ドキュメント

Evilginxファイルを/home/evilginxにコピーします。

Goのインストール: 公式ドキュメント

wget https://go.dev/dl/go1.21.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.4.linux-amd64.tar.gz
nano ~/.profile

追加: export PATH=$PATH:/usr/local/go/bin

source ~/.profile

確認:

go version

makeのインストール:

sudo apt install make

Evilginxのビルド:

cd /home/evilginx/evilginx2
make

evilginxビルド、フィッシュレット、リダイレクター用の新しいディレクトリを作成します:

mkdir /home/evilginx/evilginx

ビルド、フィッシュレット、リダイレクターをコピーします:

cp /home/evilginx/evilginx2/build/evilginx /home/evilginx/evilginx/evilginx

cp -r /home/evilginx/evilginx2/redirectors /home/evilginx/evilginx/redirectors

cp -r /home/evilginx/evilginx2/phishlets /home/evilginx/evilginx/phishlets

Ubuntuファイアウォールのクイックフィックス(@kgretzkyに感謝)

sudo setcap CAP_NET_BIND_SERVICE=+eip /home/evilginx/evilginx/evilginx

UbuntuでFailed to start nameserver on: :53エラーが発生した場合は、このファイルを修正してみてください

sudo nano /etc/systemd/resolved.conf

DNSStubListenerをnoに編集/追加 > DNSStubListener=no

その後

sudo systemctl restart systemd-resolved

Evilginxの設定を変更:

Apache2をEvilginxの前で使用するため、Evilginxを443とは異なるポートで待ち受けるようにする必要があります。

nano ~/.evilginx/config.json

https_portを443から8443に変更します。

Apache2のインストールとモジュールの有効化:

Apache2のインストール:

sudo apt install apache2 -y

使用するApache2モジュールを有効にします: (access_compatモジュールは問題を引き起こすことがあるため無効にしています)

sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod proxy_balancer
sudo a2enmod lbmethod_byrequests
sudo a2enmod env
sudo a2enmod include
sudo a2enmod setenvif
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo a2enmod cache
sudo a2enmod substitute
sudo a2enmod headers
sudo a2enmod rewrite
sudo a2dismod access_compat

Apacheを起動して有効にします:

sudo systemctl start apache2
sudo systemctl enable apache2

ホストマシンのブラウザからVMのIPにアクセスして、ApacheとVMのネットワーキングが機能するか試します。

このリポジトリのクローン:

まだgitが利用できない場合はインストールします:

sudo apt -y install git

このリポジトリをクローンします:

git clone https://github.com/waelmas/frameless-bitb
cd frameless-bitb

Apacheのカスタムページ:

提供するページ用のディレクトリを作成します:

  • home: (オプション)ホームページ(ベースドメイン)
  • primary: ランディングページ(背景)
  • secondary: BITBウィンドウ(前景)
sudo mkdir /var/www/home
sudo mkdir /var/www/primary
sudo mkdir /var/www/secondary

各ページのディレクトリをコピーします:

sudo cp -r ./pages/home/ /var/www/

sudo cp -r ./pages/primary/ /var/www/

sudo cp -r ./pages/secondary/ /var/www/

オプション: デフォルトのApacheページを削除します(未使用):

sudo rm -r /var/www/html/

O365フィッシュレットをフィッシュレットディレクトリにコピーします:

sudo cp ./O365.yaml /home/evilginx/evilginx/phishlets/O365.yaml

オプション: Calendlyウィジェットをデフォルトの代わりに自分のアカウントを使用するように設定するには、pages/primary/script.jsに移動し、CALENDLY_PAGE_NAMEとCALENDLY_EVENT_TYPEを変更します。

デモ難読化に関する注意: チュートリアルビデオで説明したように、BITBのURLやタイトルなどのテキストコンテンツに対して最小限の難読化を含めました。ブラウザでdemo-obfuscator.htmlを開いてデモ難読化ツールを起動できます。 実際のシナリオでは、注入されたHTMLコードのより大きな部分を難読化するか、JSのトリックを使用して検出やフラグを回避することを強くお勧めします。現在取り組んでいる高度なバージョンでは、スキャナーによるBITBコードのフィンガープリンティング/検出をほぼ不可能にするために、高度なトリックの組み合わせを使用する予定ですので、ご期待ください。

自己署名SSL証明書:

すべてをローカルで実行しているため、Apacheで使用する自己署名SSL証明書を生成する必要があります。Evilginxはデベロッパーモードで実行するため、証明書は必要ありません。

ここでは、ローカルVMを指すドメインfake.comを使用します。別のドメインを使用する場合は、すべてのファイル(Apache confファイル、JSファイルなど)のドメインを変更してください。

ディレクトリとその親ディレクトリが存在しない場合は作成します:

sudo mkdir -p /etc/ssl/localcerts/fake.com/

OpenSSL設定ファイルを使用してSSL証明書を生成します:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/localcerts/fake.com/privkey.pem -out /etc/ssl/localcerts/fake.com/fullchain.pem \
-config openssl-local.cnf

秘密鍵のパーミッションを変更します:

sudo chmod 600 /etc/ssl/localcerts/fake.com/privkey.pem

Apacheカスタム設定:

カスタム置換ファイル(このアプローチの中核)をコピーします:

sudo cp -r ./custom-subs /etc/apache2/custom-subs

重要な注意: このリポジトリには、Mac上のChromeおよびWindows上のChrome用のBITBの2つの置換設定が含まれています。両方ともライト/ダークモードの自動検出とスタイリングを備えており、他のブラウザ/OSの組み合わせでも同じことを実現するための基本テンプレートとして機能します。 フィッシングページにアクセスするために使用されるブラウザ/OSの組み合わせの自動検出を含めていないため、2つのうちの1つを使用するか、自動切り替えの独自ロジックを実装する必要があります。

/apache-configs/の下の両方の設定ファイルは同じですが、インクルードされる置換ファイルのIncludeディレクティブのみが異なります。(各ファイルに2つの参照があります)

# 使用したい方をコメント解除し、変更後はApacheを再起動することを忘れないでください:
#Include /etc/apache2/custom-subs/win-chrome.conf
Include /etc/apache2/custom-subs/mac-chrome.conf

簡単にするために、次の手順では両方のバージョンを別々のファイルとして用意しました。

Windows/Chrome BITB:

sudo cp ./apache-configs/win-chrome-bitb.conf /etc/apache2/sites-enabled/000-default.conf

Mac/Chrome BITB:

sudo cp ./apache-configs/mac-chrome-bitb.conf /etc/apache2/sites-enabled/000-default.conf

Apache設定をテストして、エラーがないことを確認します:

sudo apache2ctl configtest

変更を適用するためにApacheを再起動します:

sudo systemctl restart apache2

hostsファイルの修正:

ifconfigを使用してVMのIPを取得し、次の手順のためにメモしておきます。

ここで、hostsファイルに新しいエントリを追加して、このデモで使用されるドメインfake.comとすべての使用サブドメインを、ApacheとEvilginxが実行されているVMに向ける必要があります。

Windowsの場合:

管理者としてメモ帳を開きます(検索 > メモ帳 > 右クリック > 管理者として実行)

左上の「ファイル」オプションをクリックし、エクスプローラーのアドレスバーに以下をコピーして貼り付けます:

C:\Windows\System32\drivers\etc\

ファイルの種類(右下)を「すべてのファイル」に変更します。

hostsという名前のファイルをダブルクリックします。

Macの場合:

ターミナルを開き、以下を実行します:

ツールをダウンロード