まえがき
こんにちは、ミドリです。
本記事では、ペネトレーションテスト向けのコラボレーションツール、PwnDocのご紹介をします。ペネトレーションテストにおいては、多くの場合、検出された脆弱性や攻撃方法を何らかの形で記録、集約を行い、レポートの作成を実施しますが、PwnDocを利用するとそれらの反復的な作業にかかる時間を短縮し、テストの要である、脆弱性や攻撃方法の探索により多くの時間を割くことが出来ます。
また、TryHackMeやHack The Boxといった演習用環境を利用する際にも応用できるので、皆様の学習や効率化の一助となれば幸いです。
※ 本記事では、2022年1月31日時点のPwnDocアプリケーションとDocumentationをベースにしています。
技術要件
-Docker
-Docker Compose
-Git
PwnDocとは
PwnDoc は、ペネトレーションテストにおける、検出された脆弱性の取りまとめや、 レポートの出力を補助するための、オープンソースなアプリケーションです。
主な機能
-ペネトレーションテストにおける検出された脆弱性情報の取りまとめ
・テストの情報や脆弱性の情報を登録することで再利用が可能
・ツール(Nmap, Nessus)スキャン結果のインポート
・複数ユーザーでの同時作業が可能
-docx形式でのレポートの生成
・docxテンプレートのカスタマイズ
PwnDocが苦手なこと
-ナレッジベース(調査の手順をまとめておく、等)には向いていない
-チェックリスト機能がデフォルトで用意されていないので、網羅的な脆弱性診断などには向いていない
どんなことに役立つのか
PwnDocを利用することで、テストや脆弱性の情報を一元的に管理することができ、各内容を再利用可能な形式で保存すること、及び、レポート作成機能を利用することで、調査作業により多くの時間を割り当てることができます。
更に、複数ユーザーでの同時作業機能もあり、チームでの調査に利用することも出来ます。
今回の記事では、初回の起動と設定から、脆弱性情報の登録、レポートの生成までをステップ・バイ・ステップで見ていきます。
PwnDocを起動する
初回の起動
※アプリケーションのダウンロード / 起動にはそれぞれGit, Docker Composeを利用します。
1.リポジトリをクローンします。
・$ git clone https://github.com/pwndoc/pwndoc
2. カレントディレクトリをPwnDocのディレクトリに設定します。
・$ cd ./pwndoc
3. Dockerコンテナをビルドし、起動します。
・$ docker-compose up -d --build
4. ブラウザから https://localhost:8443 にアクセスします。
2回目以降の起動と終了
※それぞれの操作はPwnDocのディレクトリにて行います。
■起動
–$ docker-compose start
■終了
–$ docker-compose stop
初期設定
管理者ユーザーの登録
1.以下の項目をそれぞれ設定し、Register First User をクリックします。
–Username:ユーザー名
–Firstname:名前
–Lastname:名字
–Password:パスワード
2.ダッシュボード画面に遷移しますが、Languages(言語)とAudit Types(テストの種類)が未設定である旨が表示されます。これらについては後ほど設定します。
レポートテンプレートの設定
レポートのテンプレートを設定することで、テスト結果のレポート(docx形式)作成を自動化することが出来ます。
レポートテンプレートの作成については当記事の範囲外であるため、今回の解説では、PwnDocのGitHubページにて公開されている、デフォルトの レポートテンプレートをダウンロードしておきます。
1.ヘッダー内のDataをクリックしてHandle Custom Data画面に遷移後、サイドバーからTemplatesを選択します。
2.Create Templateボタンをクリックして展開されるダイアログにて、以下の項目をそれぞれ設定し、CREATEをクリックします。
–Name:テンプレートの名称
–File:設定したいテンプレートファイル
これで、登録したレポートテンプレートを利用できるようになりました。
カスタムデータの設定
Handle Custom Data画面からサイドバーのCustom Data項目をクリックすると遷移できます。
Languagesの設定
1.Languagesタブをクリックすると、言語の登録画面に遷移するので、以下の項目をそれぞれ設定した後、+ アイコンをクリックして登録します。
–Language:利用する言語
–Locale:地域
Audit Typeの設定
Audit Typeでは、ツールを用いた簡易的な脆弱性のスキャンや、ペネトレーションテストといったテストの種類ごとに、テンプレートとセクション(テストのステップなど)を登録できます。
1.Audit Typesタブをクリックすると、テスト種類の登録画面に遷移するので、以下の項目をそれぞれ設定し、Createをクリックします。
–Name:テスト種類の名称
–Template:利用するテンプレート
初期設定の完了
ここまで設定が終了したら、PwnDocの基本的な機能を使用することが出来ます。
それでは以降から、以下のような例をもとに、PwnDocの利用方法を説明します。
-Webアプリケーション「DVWA」(脆弱性を意図的に実装した検証用環境)をテストするため
1.プロジェクト「Sample_Project」を作成する
2.「DVWA」上で検出した脆弱性情報の登録とテンプレート化
3.「Sample_Project」に脆弱性の詳細情報を登録する
4.レポートを出力し、内容を確認する
Audit(テストプロジェクト)の登録
まずは、Audit(テストプロジェクト)を登録しましょう。
1.ヘッダから、Auditsをクリックし、Auditの一覧画面に遷移します。
2.New Auditをクリックして表示されるダイアログにて、以下の項目をそれぞれ設定し、CREATEをクリックします。
–Name:プロジェクトの名称
–Select Assessment:利用するAudit Type
–Select Language:使用する言語
これで、Auditが登録され、診断対象で検出された脆弱性情報などを登録できるようになりました。
Finding(脆弱性情報)の登録
それでは、実際に脆弱性情報を登録してみましょう。
以下のような「ディレクトリ・トラバーサル」の脆弱性が検出されたとします。
–脆弱性名称:ディレクトリ・トラバーサル / ローカルファイルインクルード
–脆弱性の存在するURL:/dvwa/vulnerabilities/fi/
–脆弱なパラメータ:page
–検証のために送信する値:/etc/hosts
–送信結果(脆弱性):サーバ内に配置してある、公開すべきでないファイルを読み込む事ができる
1.サイドバー内、Findingsの右側に表示されている + アイコンをクリックし、検出された脆弱性の一覧画面に遷移します。
2.Title に Directory traversal
と設定し、Create -> No Category とクリックしていきます。
3.サイドバーにDirectory traversal の項目が作成されたことを確認します。
4.作成されたDirectory traversal の項目をクリックし、詳細画面に遷移します。
脆弱性情報の構成
PwnDocにおける脆弱性情報は、以下の項目で構成されています。
※ その他、本記事の対象外ですが、ユーザーが項目を新たに追加することも可能です。
–DEFINITION 内
・Description:脆弱性の概要
・Observation:脆弱性の再現手順
・References:外部の参照資料(IPAの脆弱性詳解など)へのリンク
–PROOFS 内
・脆弱性の証跡(HTTPレスポンスやスクリーンショット)
–DETAILS 内
・Affected Assets:脆弱性の発生箇所
・CVSS v3.1 Base Score:CVSSの計算機能
・Remediation:脆弱性の修正方法の例
脆弱性のテンプレート設定
脆弱性の詳細情報を登録する前に、まずは登録した脆弱性情報をテンプレートとして利用できるように設定していきましょう。
これにより、PwnDocの特徴の1つである、再利用可能な情報を増やしていくことが出来ます。
そのために、まずは「ディレクトリ・トラバーサル」脆弱性について、本記事では以下の項目をテンプレートとして設定します。
–DEFINITION 内
・Description:脆弱性の概要
・References:外部の参照資料(IPAの脆弱性詳解など)へのリンク
–DETAILS 内
・Remediation:脆弱性の修正方法の例
1.IPAの資料などを参考に各項目を記入後、脆弱性詳細画面のPropose Creation / Update in Vulnerability Database をクリックします。
これにより、脆弱性の情報がテンプレートとして登録され、再利用が出来るようになりました。
サイドバー内、Findingsの右側に表示されている + アイコンをクリックし、検出された脆弱性の一覧画面に遷移すると、Directory traversalの項目が増えていることが確認できます。
このとき、項目名右側の、黒い + アイコンをクリックすることで、検出された脆弱性として追加することが出来ます。
さらに、登録された項目は、他のAudit(テストプロジェクト)でも利用することが可能です。
また、登録済みの脆弱性テンプレートを一覧表示したい場合、ヘッダのVulnerabilitiesをクリックすることで、登録済み脆弱性テンプレートの一覧ページに遷移出来ます。
脆弱性の詳細情報の登録
次に、診断対象(今回の場合DVWAアプリケーション)や検出された固有の情報を登録していきます。
そのために、Auditに紐付けられている Directory traversal 脆弱性の詳細ページにて、以下の項目を本記事では記載します。
–DEFINITION 内
・Observation:脆弱性の再現手順
–PROOFS 内
・脆弱性の証跡(HTTPレスポンスやスクリーンショット)
–DETAILS 内
・Affected Assets:脆弱性の発生箇所
このとき、書式設定で画像やコードブロックを利用することで、より分かりやすく情報を登録できます。
各種情報を記入し終えたら、Save(ctrl+s) をクリックし、情報を登録します。
このとき、Propose Creation / Update in Vulnerability Databaseをクリックしてしまうと、
テンプレートの情報を更新してしまうので、誤ってクリックしないようにしましょう。
レポートの生成
脆弱性詳細の登録が完了したら、最後に、PwnDocの自動レポート生成機能を見ていきます。
1.Auditの詳細ページ内、Sectionsの右側にある、Download Report機能のアイコンをクリックすると、ファイルダウンロードのダイアログが表示されるので、任意の箇所に保存します。
2.ダウンロードしたdocxファイルを閲覧し、登録した内容が反映されていることが確認できます。
まとめ
以上が、PwnDocの基本的な利用方法となります。
それでは、まとめとして利用の流れについて振り返ってみます。
-初期設定
・管理者ユーザーの登録
・テンプレートの設定
・カスタムデータの設定
-Audit(テストプロジェクト)の登録
-Finding(脆弱性情報)の登録
・脆弱性のテンプレート設定
・脆弱性の詳細情報の登録
-レポートの生成
この他、当記事では解説出来なかった機能として、以下のような機能が挙げられます。
-カスタムデータの登録
・Collaborator:他の調査員
・Companies:クライアント企業の情報
・Clients:クライアント側担当者の情報
・Vulnerability Type:脆弱性のタイプ
・Vulnerability Category:脆弱性のカテゴリ
・Custom Field:情報の記入形式
・Custom Section:Auditで利用可能なセクション
-ツール(Nmap, Nessus)スキャン結果のインポート
-オリジナルテンプレートの作成
-レビュー(意図しない更新を防ぐ)機能
-脆弱性情報のインポート / エクスポート
コラボレーションツールと銘打ってはいますが、個人で演習用環境に対して利用するうえでも、
十分に情報の整理、レポート化の助けとなるアプリケーションです。
PwnDocのような、脆弱性情報の一元管理やレポート生成のツールとしては他に、
Dradis や Serpico などが挙げられますが、それらも含め、作業や学習の効率化のため、
一度使用してみてはいかがでしょうか。