SaaS型Webアプリ診断ツール「AeyeScan」を運営している株式会社エーアイセキュリティラボによる、セキュリティテストの自動化、脆弱性診断の内製化、AI/機械学習などの技術情報の共有を目的とした記事です。
AeyeScanの情報はこちら https://www.aeyescan.jp
エーアイセキュリティラボの情報はこちら、https://www.aeyesec.jp
こんにちは。株式会社エーアイセキュリティラボ カスタマーサクセス担当 日髙です。
今回は、クライアント証明書が必要なサイトをAeyeScanでスキャンする方法についてご紹介します。
(2023/2/14追記)
AeyeScanでは、2023/2/11のリリースで、クライアント証明書が必要なサイトに対応いたしました。現在は、AeyeScanにクライアント証明書を登録することでスキャン可能です。
目次
概要
実現方法
Burpの「invisible proxy」機能とは
対象サイトの確認
事前準備
Burp用踏み台サーバの作成
接続確認
利用上の注意
おわりに
参考文献
概要
今回の記事では、Burpの「invisible proxy」機能を利用した、クライアント証明書が必要なサイトのスキャン方法を説明します。この方法を使えば、AeyeScanでのスキャンが可能です。またAeyeScanだけでなくプロキシ未対応のクライアントを利用する場合、今回ご紹介した方法を活用して接続が可能ですので、ぜひご覧ください。
Burpの「invisible proxy」機能とは
Burpの「invisible proxy」機能とは、プロキシ非対応クライアントでもプロキシ経由でのアクセスを実現する機能です。
クライアント側のhostsファイルに対象サイトのドメインとプロキシ(Burp)のIPを指定することで、プロキシ経由でのアクセスを実現します。
Burp Proxy: 透過プロキシ
https://burp-resources-ja.webappsec.jp/Documentation/burp/documentation/desktop/tools/proxy/options/invisible.html
実現方法
クライアント証明書が必要なサイトの場合、アクセスに使用するクライアント(ブラウザ等)に証明書を設定しておく必要があります。
プロキシを設定する機能がない等、クライアント証明書をサポートしていないツールからアクセスしたい場合、Burpを経由することで対象サイトへのアクセスを確立できます。
AeyeScanもプロキシを設定する機能がないため、Burpの「invisible proxy」の機能を利用します。
対象サイトの確認
今回対象とするのは、クライアント証明書が必要なサイトです。正しい証明書でアクセスを行うと、以下のように「認証成功」を表すメッセージが表示されるシンプルなものとなります。
事前準備
それでは早速、設定を行っていきます。
Burp用踏み台サーバの作成
事前に、Burpをインストールするサーバと、用意したサーバへのBurpのインストール及び設定を行います。
1.Burp用踏み台サーバを用意する
今回は、Azureの「仮想マシン」の機能を利用してサーバを作成します。
なお、BurpをGUIで操作するため、仮想マシンのOSでは「Windows」を選択しています。
2.サーバにBurpをインストールする
作成した仮想マシンにログインし、以下のサイトからBurp Suite(Community Edition)をダウンロードし、インストールを行います。
https://portswigger.net/burp/communitydownload
3.Burpに80、443ポートを受け付ける「Proxy Listener」を作成する
次に、Burpの設定を行っていきます。
「invisible proxy」の機能を利用する場合、80ポートと443ポートの「Proxy Listener」を作成してそれぞれ、「invisible proxy」の設定を有効にする必要があります。
Burpのメニューから「Proxy」タブ>「Options」をクリックし、デフォルトで設定されている「Proxy Listener」の「Edit」ボタンをクリックします。
「Proxy Listener」の編集画面にて、以下のように設定します。
※「Bind to address」では「All interfaces」を選択します。
次に、「Request handling」タブを選択し、「Support invisible proxying」にチェックを入れます。
この設定で「invisible proxy」が有効になります。
同様に443ポート用の「Proxy Listener」も作成します。
4.「Proxy Listener」にクライアント証明書を設定する
次に作成した80、443番ポートを受け付ける「Proxy Listener」それぞれにクライアント証明書を設定します。
作成した「Proxy Listener」の設定を開き、「Certificate」タブを選択します。
以下の「Use a custom certificate」にてクライアント証明書ファイルとパスワードを設定します。
5.Burpの「User options」にてクライアント証明書を設定する
「User options」にもクライアント証明書を設定する必要があります。
Burpのメニューから「User options」タブ>「TLS」タブをクリックし、Client TLS Certificatesにて「Add」をクリックします。
以下の画面にて、「Destination host」に対象サイトのドメイン名、Certificate typeで「File」を選択し「Next」をクリックします。
以下の画面でクライアント証明書ファイルとパスワードを設定します。
以上でBurp側の設定は完了です。
6.Windows Firewallの設定
Burpに設定した80番ポートと443番ポートに外部からアクセス可能とインバウンドルールの設定を追加します。
7.仮想マシンに対するアクセス制限の設定
Azureの仮想マシン自体にアクセス制限を設定します。
接続確認を手元の端末から行うため、80番、443番ポートの許可IPに手元の端末のIPを追加しておきます。
更にAeyeScanからのアクセスを可能とするため、AeyeScanのアクセス元IPを許可IPに設定します。
AeyeScanのアクセス元IPはこちらをご確認ください。
以上でBurp用踏み台サーバの設定は完了です。
接続確認
設定が完了したので、早速接続確認を行います。
手元のブラウザから接続
まずは、手元のブラウザから接続確認を行います。
hostsファイルの設定
手元のブラウザから接続を行う場合は、hostsファイルに対象サイトのドメインとBurp用踏み台サーバのIPを指定します。
接続
手元のブラウザからクライアント証明書が必要なサイトにプロキシ設定なしでアクセスします。
正常にアクセスできることが確認できました。
また、Burpのログ取得を設定していれば、アクセス時のログも記録されています。
AeyeScanから接続
手元のブラウザから接続する際は、hostsファイルに対象サイトのドメインとBurp用踏み台サーバのIPを設定していましたが、同等の機能がAeyeScanのドメイン登録から設定可能です。
ドメイン登録
スキャンメニュー>ドメイン登録から「基本情報>URL」に対象サイトのドメインを設定します。
更に「IPアドレス指定」欄にBurp踏み台サーバのIPを指定します。
接続確認及び巡回
以上の設定が完了したら、通常通り新規スキャンを作成して、巡回及びスキャンを実施します。
AeyeScanからも接続、巡回できることが確認できました。
利用上の注意
今回ご紹介したBurpの「invisible proxy」を利用したスキャン方法については、サポート対象外となりますので、予めご了承ください。
また、証明書の検証など一部の診断項目は、正しくスキャンが行えない場合がありますので、ご認識の上、ご活用ください。
おわりに
今回は、Burpの「invisible proxy」を利用して、クライアント証明書が必要なサイトに接続する方法をご紹介しました。
AeyeScanだけでなくプロキシ未対応のクライアントを利用する場合、今回ご紹介した方法を活用して接続が可能ですので、ご活用いただければ幸いです。
参考文献
Burp の Invisible(透過型) Proxy の仕組みと使い方
https://techblog.securesky-tech.com/entry/2021/08/06/burp-invisible-proxy-intro
Burp Proxy: 透過プロキシ
https://burp-resources-ja.webappsec.jp/Documentation/burp/documentation/desktop/tools/proxy/options/invisible.html
AeyeScanのトライアル、脆弱性診断の自動化のご相談はこちら