はじめに
Syhunt Hybridでは、WebアプリケーションやWebサイトの脆弱性診断を行う際に、目的に応じたさまざまな「ハントメソッド(診断手法※)」を選択できます。
例えば、
- SQLインジェクションだけを重点的に調査したい
- OWASP Top 10に含まれる脆弱性を確認したい
- サイト全体を網羅的に診断したい
といった要件に応じて、最適なハントメソッドを選択することで、必要な診断を効率よく実施できます。
また、目的に適したハントメソッドを利用することで、不要な診断を省き、診断時間の短縮や調査効率の向上にもつながります。そのため、ハントメソッドの特徴を理解し、適切に使い分けることは、Syhuntを活用するうえで重要なポイントの一つです。
本記事では、Syhuntで利用できる主なハントメソッドの特徴や違いを比較しながら、それぞれの用途について解説します。あわせて、CLIやLua APIから利用する際のコマンド名や指定方法についても紹介 します。
Syhuntでは、診断手法を「ハントメソッド(huntmethod)」と呼びます。本記事では「ハントメソッド」と「スキャンパターン」は同じ意味として扱います。
1. ハントメソッド(診断手法)一覧
Syhuntでは、目的に応じてさまざまなハントメソッドが用意されています。
| 診断手法 | コマンド名 | 総当たり (Brute Force) | 脆弱性インジェクション | 負荷テスト (DoS) | 所要時間 |
|---|---|---|---|---|---|
| 標準アプリ診断 (デフォルト) | appscan | 〇 | 〇 | 〇 | 通常 |
| サーバー側集中アプリ診断 | appscanss | 〇 | 〇 | 〇 | 通常 |
| ディレクトリ・構成総当たり | structbf | 〇 (入念) | ✕ | ✕ | 長い |
| 古いファイル&バックアップ検出 | fileold | 〇 | ✕ | ✕ | 通常 |
| 不正入力テスト (Fault Injection) | faultinj | ✕ | 〇 | 〇 | 通常 |
| OWASP Top 10 診断 | top10 | ✕ | 〇 (Top10限定) | 〇 | 通常 |
| OWASP Mobile Top 10 診断 | top10mob | ✕ | 〇 (モバイル限定) | ✕ | 通常 |
| CWE Top 25 診断 | top25cwe | ✕ | 〇 (Top25限定) | 〇 | 通常 |
| OWASP PHP Top 5 診断 | top5php | ✕ | 〇 (PHP限定) | ✕ | 通常 |
| XSS (クロスサイトスクリプティング) | xss | ✕ | 〇 (XSS限定) | ✕ | 通常 |
| SQLインジェクション | sqlinj | ✕ | 〇 (SQLi限定) | ✕ | 通常 |
| ファイルインクルージョン | fileinc | ✕ | 〇 (FI限定) | ✕ | 通常 |
| 不正なリダイレクト | unvredir | ✕ | 〇 (リダイレクト限定) | ✕ | 通常 |
| マルウェア・不適切コンテンツ | malscan | 〇 (一部) | 〇 (一部) | ✕ | 通常 |
| 受動的診断 (パッシブスキャン) | passive | ✕ | ✕ | ✕ | 通常 |
| クローリングのみ | spider | ✕ | ✕ | ✕ | 通常 |
| 完全診断 (全項目で網羅する) | complete | 〇 | 〇 | 〇 | かなり長い |
| 完全診断 (DoS攻撃テストなし) | compnodos | 〇 | 〇 | ✕ | かなり長い |
| 完全診断 (徹底調査モード) | comppnoid | 〇 (入念) | 〇 | 〇 | かなり長い |
2. ハントメソッド(スキャンパターン)について
Syhuntには、標準的なWebアプリケーション診断を行うためのハントメソッドから、特定の脆弱性や診断目的に特化したハントメソッドまで、さまざまな種類が用意されています。一般的には、まずspiderでサイト構造を確認し、その後、診断目的に応じてappscanやcompleteなどのハントメソッドを選択して診断を実施します。なお、標準のappscan でも攻撃的なテストを実施するため、可能であれば本番環境ではなく、検証環境や複製した環境で実施することを推奨します。
また、通常のハントメソッドでは、ログインパスワードの変更やデータベースへのデータ追加など、アプリケーションの状態を意図的に変更する処理は行いません。
2-1. 標準的なハントメソッド
ここで紹介するハントメソッドは、一般的なWebアプリケーション診断で利用する代表的な診断方法です。 通常はこれらの中から診断範囲や目的に応じて選択します。
① spider
Webサイトのクロールのみを実行し、サイト構造をマッピングします。
攻撃的なテストは一切実施しません。
② appscan
サイト構造を取得したうえで、XSSやSQLインジェクション、ファイルインクルードなど、標準的な各種脆弱性診断を実施します。(指定しない場合は、appscanがデフォルトスキャンになります)
③ complete
HTTPヘッダーを対象とした診断を含め、利用可能な各種診断を実施する完全診断です。
④ compnodos
DoSテストを除いた完全診断を実施します。
⑤ comppnoid
サイト構造をより深く探索するブルートフォースを含む完全診断です。
2-2. 用途別ハントメソッド
こちらは、特定の脆弱性や診断目的に特化したハントメソッドです。 「SQLインジェクションだけを確認したい」「OWASP Top 10への対応状況を確認したい」といった用途に適しています。
① structbf
ブルートフォースは以下をチェックします。
- 一般的な脆弱なスクリプト
- 一般的なファイルチェック
- カスタムファイルチェック(ユーザーファイルチェック)
- データベースの開示
- Webベースのバックドア
② fileold
マップされたWebサイト構造の周りで拡張機能チェックを実行します。
③ faultinj
主にフォールトインジェクションの脆弱性をスキャンします。
このスキャン方法を選択すると、インジェクション系以外の診断項目を無効化し、SQLインジェクションやXSS、ファイルインクルードなどのインジェクション系脆弱性に集中して診断します。
④ top10
主にOWASP Top10 の脆弱性をスキャンします。
⑤ top25cwe
主にCWE Top25 Most DangerousSoftwareErrorsをスキャンします。
⑥ top5php
主にPHPの脆弱性 OWASP Top5をスキャンします。
- リモートコマンド実行
- DOM XSSを含むクロスサイトスクリプティング(XSS)
- SQLインジェクション
- PHPの設定ミス
- ファイルインクルードを含むファイルシステム攻撃
⑦ xss
主にDOMXSSを含むXSSの脆弱性をスキャンします。
⑧ sqlinj
主にSQLおよびNoSQLインジェクションの脆弱性をスキャンします。
⑨ fileinc
主にファイルインクルードとディレクトリトラバーサルの脆弱性をスキャンします。
⑩ unvredir
主に未検証のリダイレクトの脆弱性をスキャンします。
⑪ malscan
主にマルウェアコンテンツをスキャンします。
- Webバックドア
- 悪意のあるコンテンツ
- 隠しデバッグパラメータ
⑫ passive
Webサイトの構造をマッピングし、次のような攻撃を実行せずにスキャンし、検知された脆弱性を報告します。
- クライアントサイドJavaScriptの脆弱性
- さまざまな型式の脆弱性
- Webテクノロジーの開示
- 安全でないHTTPヘッダー
- 時代遅れの脆弱なサーバーソフトウェア
- 古くて脆弱な参照スクリプト
- 疑わしいHTMLコメント
- ソースコードの開示
- 提供されている悪意のあるコンテンツ
3.ハントメソッドの指定方法
CLIやLua APIでは、-hmオプションを指定することで、利用するハントメソッドを切り替えることができます。
例えば、標準的なWebアプリケーション診断を実施する場合は、次のようにappscanを指定します。
scancore -scanurl:https://example.com -hm:appscan
また、OWASP Top 10に含まれる脆弱性のみを診断する場合は、top10を指定します。
scancore -scanurl:https://example.com -hm:top10
同様に、SQLインジェクションのみを診断したい場合はsqlinj、XSSのみを診断したい場合はxssのように、目的に応じてハントメソッドを指定することで、必要な診断だけを効率よく実施できます。
なお、-hmオプションを省略した場合は、デフォルトのハントメソッド(appscan)が使用されます。
まとめ
Syhuntでは、標準的なアプリケーション診断から特定の脆弱性に特化した診断、さらにはサイト全体を網羅的に調査する完全診断まで、多様なハントメソッドが用意されています。
診断対象や目的によって最適なハントメソッドは異なります。例えば、特定の脆弱性のみを素早く確認したい場合は 「sqlinj」や「xss」、OWASP Top 10への対応状況を確認したい場合は「top10」、包括的な診断を実施したい場合は「complete」や「compnodos」 が適しています。
CLIやLua APIからハントメソッドを指定することで、診断内容を柔軟に切り替えることもできます。それぞれの特徴を理解し、診断目的に応じて適切なハントメソッドを選択することで、より効率的かつ効果的な脆弱性診断を実施いただけます。