こんにちは、セキュリティコンサルグループのミドリです。 私たちセキュリティエンジニアは Web サイトの脆弱性診断や、ペネトレーションテ スト(侵入テスト)などのセキュリティ検査を実施しています。 本記事では、ペネトレーションテスト向けのコラボレーションツール、PwnDocのご紹介の第2回として、前回 紹介しきれなかった機能について解説します。
※ 本記事では、2022年1月31日時点のPwnDocアプリケーションとDocumentationをベースにしています。

技術要件

DockerDocker ComposeGitPwnDoc

はじめに

今回の記事では、以下の機能について解説します。 PwnDocの利用にあたっては、全ての機能を利用する必要はないので、 自身が必要な項目について参照してください。

ツール(Nmap, Nessus)によるポートスキャン結果のインポートカスタムデータの登録レビュー(意図しない更新を防ぐ)機能オリジナルテンプレートの作成

※前回の記事における”Audit(テストプロジェクト)の登録” の手順まで完了した状態で解説します。

ツール(Nmap, Nessus)によるポートスキャン結果のインポート

PwnDocでは、NmapやNessusといったスキャンツールが出力したポートスキャン結果を、 Auditにインポートすることが出来ます。

読み込み用データの準備

今回は、Nmap のスキャン結果をインポートします。 やられサーバーやNmapの提供しているスキャンテスト用のホスト(scanme.nmap.org)に対して、-oX オプションを指定してポートスキャンを実施し、結果のXMLファイルを出力しておきます。

結果のインポート

1.スキャン結果をインポートしたいAuditのダッシュボードに遷移します。

2.Scope (One per line) に診断対象のホスト名を入力し、Saveボタンで保存します。

3.左側サイドバーからNetwork Scanを選択します。

4.画面右上のImport から Nmap を選択します。

5.ファイル選択のダイアログが表示されるので、準備しておいたXMLファイルを選択します。

6.割り当てたいホストの項目右の + アイコンをクリックし、対応するデータを選択します。

7.再度 + アイコンをクリックすると、データのインポートが完了します。

カスタムデータの登録

PwnDocでは、テストや脆弱性の情報に限らず、 関連する以下のような情報も統合して管理することが出来ます。

Collaborator:他の調査員(ユーザー)Companies:クライアント企業の情報Clients:クライアント担当者の情報Vulnerability Type:脆弱性のタイプVulnerability Category:脆弱性のカテゴリCustom Field:情報の記入形式Custom Section:Auditで利用可能なセクション

Collaboratorの登録

Collaborator(ユーザー)を登録することで、チームでのテスト作業を可能にします。

1.ヘッダー内のDataをクリックしてHandle Custom Data画面に遷移後、サイドバーからCollaboratorsを選択します。

2.Add Collaboratorボタンをクリックして展開されるダイアログにて、以下の項目をそれぞれ設定し、CREATEをクリックします。

Username:ユーザー名Firstname:名前Lastname:名字Email:メールアドレスPhone:電話番号Role:与える権限、デフォルトでは以下の3種類が実装されている user:参加しているAuditの閲覧・更新、脆弱性は閲覧のみreport: userの持つ権限に加え、全てのプロジェクト情報の閲覧・更新admin:全ての情報の閲覧・更新Password:初期パスワード

Auditへのユーザーの割当て

userロールは参加しているAuditのみ閲覧・更新が可能なため、adminロールでAuditに当該ユーザーを割り当てる必要があります。

1.Audits画面から、ユーザーを割り当てたいAuditのGeneral Information画面に遷移します。

2.Collaborators項目の右にある下向き矢印のアイコンから、Auditに割り当てたいユーザーを選択し、Saveして完了です。

CompaniesとClientsの登録

CompaniesとClientsを登録することで、過去のAuditの追跡や連絡先などの情報を保存できます。

Companyの登録

1.ヘッダー内のDataをクリックしてHandle Custom Data画面に遷移後、サイドバーからCompaniesを選択します。

2.Add Companyボタンをクリックして展開されるダイアログにて、以下の項目をそれぞれ設定し、CREATEをクリックします。

Name:クライアント企業名Logo:ロゴの画像ファイル(レポート生成時などに利用)

Clientの登録

1.ヘッダー内のDataをクリックしてHandle Custom Data画面に遷移後、サイドバーからClientsを選択します。

2.Add Clientボタンをクリックして展開されるダイアログにて、以下の項目をそれぞれ設定し、CREATEをクリックします。

Company:クライアント企業名Firstname:名前Lastname:名字Email:メールアドレスFunction:部署Phone:固定電話番号Cell:携帯電話番号

脆弱性のTypeとCategory登録

脆弱性のタイプやカテゴリを登録することで、絞り込みや整理を容易にします。

Vulnerability Typesの登録

1.ヘッダー内のDataをクリックしてHandle Custom Data画面に遷移後、サイドバーからCustom Dataを選択します。

2.Vulnerability Typesタブをクリックすると、脆弱性タイプの登録画面に遷移するので、以下の項目をそれぞれ設定した後、+ アイコンをクリックして登録します。

Language:言語Name:脆弱性のタイプ名(サーバー、Webアプリケーション、モバイルアプリケーション など)

Vulnerability Categoriesの登録

1.ヘッダー内のDataをクリックしてHandle Custom Data画面に遷移後、サイドバーからCustom Dataを選択します。

2.Vulnerability Categoriesタブをクリックすると、脆弱性カテゴリの登録画面に遷移するので、以下の項目をそれぞれ設定した後、Create ボタンをクリックして登録します。

Name:カテゴリ名(ツールスキャン、手動テスト など)Default Sorting Options:デフォルト時、どの値を参照してソートするかの設定

Custom FieldsとSectionsの設定

カスタムフィールドとセクションを利用することで、登録する情報をカスタマイズすることができます。

Custom Fieldsの設定

1.ヘッダー内のDataをクリックしてHandle Custom Data画面に遷移後、サイドバーからCustom Dataを選択します。

2.Custom Fieldsタブをクリックすると、脆弱性カテゴリの登録画面に遷移するので、以下の項目をそれぞれ設定した後、Add ボタンをクリックして登録します。

Select View:フィールドをどこに追加するかSelect Component:入力タイプの設定Label:フィールドの名称Description:フィールドの説明Size:フィールドのサイズOffset:フィールドの表示位置の調整Required:当該フィールドを必須項目にするかの選択

Custom Sectionsの設定

1.ヘッダー内のDataをクリックしてHandle Custom Data画面に遷移後、サイドバーからCustom Dataを選択します。

2.Custom Sectionsタブをクリックすると、脆弱性カテゴリの登録画面に遷移するので、以下の項目をそれぞれ設定した後、 アイコンをクリックして登録します。

Name:セクション名Field(For Template):レポートテンプレートで利用する識別子Icon:セクションのアイコン(Google Fonts Icons, mdi, font awesome が利用可能)

1.Audit TypesタブをクリックしてAuditの追加画面に遷移し、Add Sectionsの項目から、追加したいカスタムセクションを追加し、Createボタンをクリックすると、Auditに作成したカスタムセクションを追加できます。

レビュー機能

レビュー機能を利用することで、Auditの情報や、脆弱性情報の更新時に、 情報をレビュワーが確認する、というワークフローを確立することが出来ます。

Auditのレビュー

レビュー機能の有効化

  1. ヘッダー内のSettingsをクリックして設定画面に遷移後、Reviewsセクション右のスイッチからレビュー機能を有効にし、Save settingsボタンをクリックして設定を保存します。

Audit Update After Approval:Auditが更新された際、以前までの更新を保存するかの設定Mandatory Review:必要なレビュー数の設定

レビュワーの割当て

  1. レビュワーを割り当てたいAuditのGeneral Informationページに遷移し、Reviewers項目からレビュワーを割り当て、Saveボタンで保存します。 ※ この時、レビュー権限を持っていたとしても、Auditを作成した もしくは Collaboratorに含まれている ユーザーはレビュワーとして選択出来ないので注意してください。

レビューリクエストの送信

  1. テストが完了したAuditのGeneral Informationページに遷移し、Submit Reviewボタンをクリックすることで、Auditのレビューリクエストを設定できます。

レビューの処理

  1. レビュワーのアカウントを利用して、レビューリクエストが設定されているAuditのGeneral Informationページに遷移し、内容を確認後、処理に併せてCancel ReviewApproveのどちらかのボタンをクリックします。

脆弱性テンプレートの更新

1.脆弱性テンプレートの更新リクエスト作成権限を持つアカウントにて、Finding(検出された脆弱性)詳細画面にて、脆弱性テンプレートへの更新内容を記載した後、Propose Creation / Update in Vulnerability Databaseボタンをクリックします。

2.脆弱性テンプレートの更新権限を持つアカウントにて、ヘッダ内Vulnerabilitiesタブをクリックし、脆弱性一覧ページに遷移すると、更新リクエストが存在する脆弱性テンプレートがハイライトされています。

3.EditボタンをクリックするとUpdate Vulnerabilityダイアログが表示されるので、差分を確認します。

4.内容に問題がなければ、ダイアログ下部のUPDATEボタンをクリックして更新完了です。

Finding(検出された脆弱性)のレビュー

1.Finding(検出された脆弱性)にはそれぞれ、Completedボタンがあり、これを利用することで記載されている内容について、確認済みかどうかの目安とすることが出来ます。

オリジナルテンプレートの作成

PwnDocでは、nodejsライブラリの

docxtemplater

を利用してWord形式のレポートを生成しています。

例えば、デフォルトの

レポートテンプレート

内に

{#executive_summary.text}

という項目が確認できますが、

PwnDoc内のAuditにはデフォルトでそのような項目はありません。

そこで、この項目(

{#executive_summary.text}

)の追加方法を辿りながら、テンプレートの作成方法について確認したいと思います。

カスタムセクション(executive_summary)の追加

1.カスタムセクションの追加から、Fieldexecutive_summaryと設定して、+ ボタンをクリックして登録します。

カスタムフィールド(text)の追加

  1. カスタムフィールドの追加から、各項目を以下のように設定し、Addボタンをクリックして登録します。

Select View:Audit SectionSelect Section:Executive summarySelect Component:EditorLabel:text

Auditへの反映

1.Audit Typesの設定から、Add Sectionsで先程作成したExecutive summaryを設定してCreateボタンをクリックします。

2.Audit画面からNew Auditを選択し、新たに作成したAudit Typeを指定してCREATEボタンをクリックします。

3.当該AuditのセクションにExecutive summaryが追加されていることを確認し、任意の内容を入力してSaveボタンをクリックします。

レポートの生成と確認

  1. レポート生成ボタンをクリックしてレポートを生成し、Executive summaryに入力した内容が反映されていることを確認します。

おわりに

今回の記事では、PwnDocを利用するうえでは必須ではありませんが、応用的な機能をいくつかご紹介しました。 どちらかというとチームで作業をする際に有用な機能がメインでしたが、 テンプレートのカスタマイズは、自身の足跡をアウトプットする方法としての応用も可能ですので、是非使用してみてはいかがでしょうか。

SHARE

  • facebook
  • twitter

SQRIPTER

AGEST Engineers

AGEST

記事一覧

AGESTのエンジニアが情報発信してます!

株式会社AGEST

Sqriptsはシステム開発における品質(Quality)を中心に、エンジニアが”理解しやすい”Scriptに変換して情報発信するメディアです

  • 新規登録/ログイン
  • 株式会社AGEST