Syhunt
  1. HOME
  2. -BLOG
  3. -Syhunt Dynamic 認証スキャン(各認証方式の設定と運用方法)

Syhunt Dynamic 認証スキャン(各認証方式の設定と運用方法)

公開日:技術ドキュメント

このドキュメントの情報は、Syhunt Hybridバージョン 7.2に適用されます。



はじめに


前編では、Authenticator 2.0で追加された新しい認証方式についてご紹介しました。
後編では、実際に認証付きスキャンを設定・運用する方法について解説します。

【関連記事】
Syhunt Dynamic 認証スキャン(Authenticator 2.0と新しい認証方式)





1. 各認証方式の設定方法


認証付きスキャンを実施するためには、対象のWebアプリケーションに適した認証方式を選択し、事前に設定を行う必要があります。

ここでは、Syhunt Hybrid 7.2で追加された「Recorder」や「手動認証(Sandcat)」に加え、「Selenium-Auto」「Selenium-JS」などの認証方式について、設定手順と利用方法を解説します。




1-1. Recorder認証の設定方法


「Recorder」とは、ChromeやMicrosoft EdgeなどのChromiumベースブラウザで記録したログイン操作を再利用し、認証付きスキャンを実行できる機能です。従来のように認証スクリプトを手作業で作成する必要はなく、ブラウザでログイン操作を記録し、生成されたJSONデータをエクスポートし、SyhuntのTarget設定画面へ登録するだけで利用できます。スキャン実行時に認証が必要になると、記録されたログイン操作を自動的に再生し、認証済み状態で診断を実施します。

※Linux環境での注意※
Linux環境でログインシーケンスを記録する場合、Backspaceキーを使用した入力修正は推奨していません。 テスト時に確認された互換性上の制限により、Backspaceキーを含む記録データは正常に再生されない場合があります。入力ミスが発生した場合は、やり直すことを推奨します。


実際の設定手順は以下のとおりです。





①ログインシーケンスの記録


まずはブラウザでログイン操作を記録します。

1. Chrome、EdgeなどのChromiumベースブラウザで対象サイトへアクセス


2. ページ上で右クリックし、「検証(Inspect)」を選択

recorder_inspect

3. 開発者ツール内の「Recorder」タブを開く

recorder_inspectrecorder

4. 「Create recording」をクリック

recorder_create

5. 記録名を入力し、赤色の「Start recording」ボタンをクリック

recorder_start

6. 通常どおりログイン操作を実施

7. ログイン完了後、「End recording」をクリック

recorder_end

8. 一度ログアウトしてから、上部の「Replay」ボタンをクリックし、記録内容が正常に再生されることを確認

recorder_replay

9. 画面右側の「Show code」ボタンをクリック

recorder_showcode

10. JSONコードを手動で選択し、右クリックで「Menu」>「Copy」を選択

※注意※
ChromeのUI上の制限により、「Select all」→「Copy」を使用するとJSON全体が正しく選択されない場合があります。必ず手動で選択してコピーしてください。





②ログインシーケンスをSyhuntへ登録


最後に、記録したログインシーケンスをSyhuntへ登録します。

1. Syhunt Web UIの「Targets」画面を開く

menu_targets

2. 対象サイトのログインURLを追加(未登録の場合)

target_add

3. 対象サイトの設定画面を開き 「Authentication」タブを選択

target_auth_tab

4. 認証方式として「Recorder」を選択

5. 「Recorded Login Sequence」欄へコピーしたJSONデータを貼り付ける

recorder_jsonenter

6. 「Run Test」をクリック

recorder_runtest

記録されたログインシーケンスがSyhuntで正しく動作することを確認してください。

これによって、スキャン実行時にはRecorderが自動的にログイン処理を行い、認証が必要なページや機能に対しても包括的なセキュリティ診断を実施できるようになります。





2-1. 手動認証(Sandcat)の設定と利用方法


Syhunt Dynamicでは、「Syhunt Sandcat」ブラウザ拡張機能を利用した「手動認証」に対応しており、認証済みのブラウザセッションを引き継いだ認証付きスキャンを実行できます。この方式では、Syhunt側でログイン処理を自動実行するのではなく、ユーザーが実際にWebサイトへログインした状態のブラウザセッションを利用してスキャンを開始します。

特に、以下のような環境で有効です。

  • 多要素認証(MFA)を利用しているサイト
  • CAPTCHAを利用しているサイト
  • シングルサインオン(SSO)環境
  • JavaScriptベースの複雑な認証フロー
  • 自動認証が難しい業務アプリケーション

通常の認証方式でログイン処理を自動化できない場合でも、実際のブラウザセッションを利用することで、認証後の機能や画面に対して包括的な脆弱性診断を実施できます。




①手動認証の実行手順


1. Chrome、Microsoft Edge、BraveなどのChromiumベースブラウザに「Syhunt Sandcat」ブラウザ拡張機能をインストール

2. スキャン対象のWebサイトへアクセスする

3. ブラウザのアドレスバーに対象のURLを入力し、「Enterキー」を押す

4. 通常どおりユーザー認証を使ってウェブサイトにログイン

5. ブラウザツールバーにある「Sandcat拡張機能アイコン」をクリック

6. 「Scan This Site」を選択 すると、Syhuntのスキャン画面が表示される

sandcat_scanthissite

7. 新しい画面が開き、画面上に緑色の「Session Ready」メッセージが表示されれば、セッションがキャプチャされる

8. 「Start Scan」をクリックして認証付きスキャンを開始


※セッション維持の確認※
スキャン完了後のレポートには、認証セッションがスキャン開始から終了まで維持されたかどうかが表示されます。 セッションが正常に維持された場合は、レポート内のセッション情報に以下のように表示されます。
Authenticated Session Maintained: Yes

この表示により、診断中にログアウトやセッション切れが発生せず、認証済み状態でスキャンが継続されたことを確認できます。





1-3. Selenium-AutoとSelenium-JSによる認証設定


Syhunt Dynamicでは、Seleniumを利用した認証にも対応しています。 Authenticationタブから「Selenium-Auto」または「Selenium-JS」を選択することで、ログイン処理を自動化できます。

◼︎Selenium-Auto
認証用のSeleniumスクリプトを自動生成・実行する認証方式。ユーザーによるスクリプト作成は不要で、ユーザー名とパスワードを設定するだけで利用できます。そのため認証付きスキャンを簡単に導入したい場合に適しています。

◼︎Selenium-JS
Node.jsで記述したカスタムSeleniumスクリプトを実行する認証方式。独自のログイン画面や特殊な認証フローを持つWebアプリケーションに対して、柔軟な認証処理を実装できます。





①認証の設定手順


まずは、Selenium認証の設定手順になります。

【設定手順】
1. Syhunt Web UIの「Targets」画面を開く
2. 対象URLを追加(未登録の場合)
3. 対象URLをクリックし、「Target Preferences」画面を開く
4. 「Authentication」タブを選択
5. 「Selenium-Auto」または「Selenium-JS」を選択
6. ユーザー名とパスワードを入力
7. 「Save」をクリックして設定を保存

Selenium-Autoを選択した場合は、これで設定完了です。
Selenium-JSを選択した場合は、続いてCLIで以下コマンドを使って認証スクリプトを登録します。


scancore -tg:http://yourtargetapp.com -prefset:dynamic.formauth.script.seleniumjs.encrypted -fromfile:caminho/myseleniumscript.js

※スクリプト作成時の注意事項※
Selenium-JSスクリプトを作成する際は、以下の点に注意してください。


  • スクリプトはログインフォームの操作および送信処理から開始する
  • 開始時に driver.get() や終了時に driver.quit() を記述しない
    (Syhuntが自動的に処理します)
  • Authenticationタブに入力した認証情報を利用する場合は、スクリプト内で@user@@pass@のプレースホルダーを入力すること
username_field.send_keys('@user@')
password_field.send_keys('@pass@')




②Seleniumスクリプトの認証テスをトする


1. 先程設定したURLを再度クリックし、「Run Test」ボタンを押して認証処理テストを行う

webui_runtest_button

2. 認証に成功した場合「Successful Login」メッセージと「ログイン後ページのスクリーンショット」が表示

3. 複数回試行してもエラーメッセージが表示される場合は、Seleniumスクリプトを微調整して再試行する

4. 認証付きスキャンを実行すると、レポートで「ログイン後ページのスクリーンショット」と「認証セッション維持状況情報」が表示される

上記の手順で、スキャン中に認証状態が維持されたかどうかを確認することができます。





2. 認証付きスキャンの運用方法


認証方式の設定が完了した後は、運用環境に応じて認証付きスキャンを活用していきます。

Syhunt Dynamicでは、

  • スケジュールスキャンへの認証設定の適用
  • CLIからの認証付きスキャンの実行
  • フォーム自動入力のカスタマイズ
  • セッション維持対策
  • クライアントSSL証明書への対応

など、認証付きスキャンを安定して運用するためのさまざまな機能を利用できます。

ここでは、認証付きスキャンの運用に役立つ設定や活用方法についてご紹介します。




2-1. スケジュールスキャンで認証する


定期診断を実施する場合は、Scheduled Scanにも認証設定を適用することができます。

【設定手順】
1. 「Scans」画面を開く
2. 「Scheduled Scans」をクリック
3. 対象のスケジュールスキャンを選択
4. ターゲットURL横の「Preferences」ボタンをクリック
5. Authenticationタブを開き認証方式と認証情報を入力し保存

認証情報を設定しておくことで、ログインが必要なWebアプリケーションに対しても、定期的な脆弱性診断を自動実行できます。





2-2. CLIから認証付きスキャンを実行する


Syhunt Dynamicでは、CLIから認証付きスキャンを実行することもできます。
CLIによる認証付きスキャンには、以下の2つの方法があります。




(A)スキャン実行時に認証情報を指定する方法


1つ目の方法は、scanurl コマンド実行時に認証情報を直接指定する方法です。

scanurlコマンド
scanurl http://127.0.0.1 -atype:Form -auser:yourusername -apass:yourpassword

Aの方法では、認証情報はSyhunt Dynamicの設定へ保存されません。 そのため、一時的なスキャンや検証用途に適しています。





(B)「scancore」コマンドで認証情報を事前設定しておく方法


2つ目の方法は、scancore コマンドを利用して認証情報をあらかじめ登録しておく方法です。

scancoreコマンド
scancore -tg:http://127.0.0.1 -prefset:dynamic.formauth.type -v:Standard
scancore -tg:http://127.0.0.1 -prefset:dynamic.formauth.username -v:myuser
scancore -tg:http://127.0.0.1 -prefset:dynamic.formauth.password -vsecret -vstring

Bの方法では、認証情報がSyhunt Dynamicの設定に保存され、対象サイトに対する以後のスキャンで再利用されます。
また、パスワードがコマンドライン上に表示されないため、Aよりも安全な運用方法とされています。




2-3. フォーム自動入力をカスタマイズする機能


※本機能は元々Standard認証向けに提供されていた機能ですが、現在は主に高度なカスタマイズ用途で利用されています。

通常、Syhunt Dynamicはログインフォームの入力項目を自動検出し、ユーザー名やパスワードを自動入力します。しかし、独自のフィールド名やカスタムコントロールを利用しているアプリケーションでは、自動認識が正常に行えない場合があります。

そのような場合は、CLIからフォーム項目と入力値の対応関係を明示的に指定できます。



(例)独自フィールドを持つログインフォームの場合

<input name="ClientUTBox" id="ClientUTBox" type="hidden" value="1234">
<input name="ClientUNBox" id="ClientUNBox" type="text" class="InputBox"/>User Name
<input name="ClientPWBox" id="ClientPWBox" type="password" class="InputBox" >Password

上記のようなフォームに対しては、以下のコマンドで入力ルールを設定します。

scancore -prefset:syhunt.dynamic.lists.form.values -v:[ClientUTBox=1234],[ClientUNBox=@syhunt_web_form_username],[ClientPWBox=@syhunt_web_form_password]

<内部変数について>


設定値の「=」以降で使用している@から始まる値は、Syhunt Dynamicの内部変数です。

@syhunt_web_form_username
@syhunt_web_form_password

「=」の後に記載されている @ で始まる値は、Syhunt Dynamicの内部変数です。


これらを使用することで、Target Preferences画面で設定したWebフォームのログイン情報(ユーザー名・パスワード)が、指定したフォーム入力欄に自動的に入力されます。

この設定を保存すると、Syhunt Dynamicはスキャン実行時に指定したフォームへ値を入力し、自動的にログイン処理を実行できるようになります。




2-4. セッション切れ・ログアウトを防ぐ方法


Syhunt Dynamicはほとんどのログアウトページを自動的に検出し、クロール対象から除外できます。さらに、認証セッションが切断された場合でも、対応する認証方式であれば自動的に再認証を実行しスキャンを続行することができます。独自のログアウトURLを利用している場合は、Targets 画面の「Logout URLs」へ登録することで、誤ってログアウト処理が実行されることを防げます。


【設定手順】
1. Targets 画面へ移動

menu_targets

2. 特定のURLターゲットを開く
3. 「Crawling」タブへ移動する
4. 除外設定内で、「Logout URLs」ボタンをクリックし、カスタムログアウト URL を追加
(例:getmeout.php
5. 「Save」をクリックし設定を確定する
6. 入力ダイアログを閉じる




2-5. クライアントSSL証明書を利用する方法


クライアントSSL証明書による認証を利用している環境では、Syhuntに証明書を登録して認証付きスキャンを実施できます。


【設定手順】
1. メニューの「Admin」→「Connectors」を選択
2. 「Add」ボタンをクリック
3. 証明書の種類で「Web Certificate」を選択して証明書の参照名を入力し、「Create」ボタンをクリック
4. リストに追加した証明書をクリックし、Web証明書画面を開く
5. 証明書ファイルを選択し、「Save」ボタンをクリック
6. Targets 画面へ移動
7. 証明書を利用するWebサイトをクリックするとTarget設定画面が開く
8. 「Advanced」タブを開き、「Certificate」の下にあるリストから目的の証明書を選択





まとめ


Syhunt Hybrid 7.2で導入された「Authenticator 2.0」により、認証付きスキャンの設定と運用は大幅に改善されました。

本記事でご紹介したように、Syhunt Dynamicではブラウザ操作を記録して利用する「Recorder」、認証済みブラウザセッションを利用する「手動認証(Sandcat)」、Selenium-AutoおよびSelenium-JSによる認証など、さまざまな認証方式を利用できます。また、スケジュールスキャンやCLI実行、フォーム自動入力のカスタマイズ、クライアントSSL証明書への対応など、運用環境に応じた柔軟な認証設定も可能です。

認証付きスキャンを活用することで、ログイン後にのみアクセス可能な画面や機能、APIも診断対象に含めることができ、より実環境に近い包括的な脆弱性診断が可能になります。

ぜひ自社環境に適した認証方式を選択し、Syhunt Dynamicによる継続的なアプリケーションセキュリティ強化にお役立てください。