ペネトレーションテストの定義(NIST SP 800–115の解説)

syuya yuikura
這いよれ Pentest Lab
13 min readApr 7, 2019

--

概要

本記事ではペネトレーションテストとは何かを解説する。

Wikipediaには「 ネットワークに接続されているコンピュータシステムに対し、実際に既知の技術を用いて侵入を試みることで、システムに脆弱性がないかどうかテストする手法のこと」と記載されている。

上記の記載は誤ってはいないが曖昧でもある。

解釈の範囲が広すぎて、何をすればいいのか、どこまでやればいいのかが個人の解釈で異なってしまう。

そのため本記事では、NIST(アメリカ国立標準技術研究所)が発行したセキュリティ監査に関する資料(NIST SP 800–115)を元に、ペネトレーションテストとは何なのかについて考えてみる。

ただ、本資料はPDF 80ページにも及ぶものなので、本記事では噛み砕いた解説になることを了承してほしい(特に”テスト”以外の部分は省略している)。

また、誤訳がある場合があるため、その点も気を付けてほしい。

NIST SP 800–115の詳細について興味のある人は、以下のリンクから自身で確認することをお勧めする。

1: NIST SP 800–115の概要

まず本資料は、監査対象がセキュリティ目標を効率的に達成しているかを判断するプロセスについて記載したものである。

判断までのプロセスにはテスト、審査、面接が存在する。

テストは、対象が特定の行動(攻撃等)に対して、予期した行動をとっているかを観測するフェーズである。

審査は、テストで得られた情報を分析し、対象を評価するフェーズである。

面接は、得られた結果を監査対象の所有者達と話し合うフェーズである。

本資料は、この3つのプロセスを実施するための技術的側面へのガイドラインである。

2: Security Testing and Examination Overview

2章はセキュリティテストに対する概要を解説している。まず、テストには外部テストと内部テストの2種類が存在する。

外部テスト

外部テストは組織のセキュリティ境界の外側(多くの場合、インターネット)から実施される。

外部テストはまずは公的なデータ(Google、DNS情報、ニュースグループの投稿)の収集、評価から始まることが多い。

次にネットワーク探索と、スキャンを実施し、サーバ上で動作するサービス、プロトコルを列挙する。

そして、動作しているサービスやプロトコルの脆弱性から、内部サーバへの侵入を目指す。

テストによってはFWやIPSの回避も実施する場合があるし、wifiのアクセスポイントやモデム、内部サーバへのポータル等へのアクセス方法を見つけることも実施内容に含まれる場合がある。

内部テスト

内部テストの場合、テスターは内部ネットワークから作業する。攻撃者としては内部犯やサーバに侵入した人を想定する。

内部テストは、内部の認証やアクセス制御、内部向けWebアプリの設定等のシステムレベルのセキュリティと設定に焦点をあてる。

また、付与される権限は一般ユーザレベルであることもあり、その場合は管理者権限への権限昇格も目指す。

当然、外部テストから内部ネットワークに侵入できた場合は、内部テストの項目を実施する場合がある。

3: Review Techniques

3章ではセキュリティレビューで使われる各テクニックの概要を記載している。レビューはサーバ管理者とのヒアリングや、内部文章の提出を前提として実施する。これらはセキュリティテストの前段階として実施する場合が多い。

ドキュメントレビュー

セキュリティテストを実施するうえで、その手順が技術的に最新かつ、包括的であるかを判断する。

可能であれば、事前に入手したターゲットの情報と比較し、手順を微調整することが望ましい(ターゲットのパスワードポリシーに合わせ、パスワードリストを調整する等)。

ログレビュー

ターゲットが内部で適切にログ管理を行っているかをヒアリングする。

ログを適切に実施していない場合、こちらかのテストに対してどのような結果になったか、適切に判断できない場合がある。

また、セキュリティの面からもログ管理は確実に実施するべきだ。

ルールセットレビュー

不要なIPやポートのみを通信先に指定しているか等の、通信経路に関わる設計に不備がないかを探す。

システム設定レビュー

ターゲットのセキュリティ構成が、ポリシーに従って構成されているかをレビューする。

例えば不適切なユーザアカウントやバックアップの設定等を見つける。

レビューは、システム構成が最低限のセキュリティリスクになっていることを確認することが目的だが、手動で確認するには多くの工数が必要だ。そのため、検査には可能な限り自動化ツールを使用することが推奨される。(手動によるミスと再現性を確保するため)

4: Target Identification and Analysis Techniques

4章ではテスト対象となるターゲットの識別と、どのように解析するかのテクニックについて説明している。ここからの情報を元にテストの計画を作成することが多いため、重要な項目といえる。

ネットワーク識別

ネットワーク上のアクティブなホストを発見し、弱点を識別する。

パッシブな手法ではネットワークスニファでトラフィックを監視し、アクティブなホストを識別し、どのホストが互いに通信しているかや通信頻度等の情報を取得できる。

パッシブな方法は通常内部ネットワークから行われ、アクティブな手法より時間がかかる。

アクティブな手法ではping等のコマンドや自動化ツールを使用し、各ホストに応答を求める。

また、応答があったホストに対しては各ポートにも同様に応答を求め、アクティブなポートを列挙する。

サービス識別

アクティブなポートで動作するサービスを列挙する。

主にバナー情報を元にして、サービスのバージョンやOSの情報を識別する。

これらは主にスキャナを使用するが、各スキャナによって得意な状況や得られる結果が異なる。可能であれば複数使用し、それらを比較しよう。

なお、過剰なスキャンはネットワークに負荷をかけるため、テスト計画によっては慎重に行う必要がある。

脆弱性識別

脆弱性スキャンはバナー情報や通信の応答により、内在する脆弱性を洗い出す作業だ。

サービス識別の情報を元に脆弱性スキャンが脆弱性を検出する。また、内部テストの場合は、システム内の脆弱な設定等も検出する。

ただ、脆弱性スキャンを過度に信頼することは危険だ。脆弱性の中には低リスクの脆弱性が組み合わさることで、高リスクになるものがある。脆弱性スキャンはこれらを検出しない(あくまで単独の脆弱性として報告する)。この問題は、人間が労働集約的に解決するしかない。

また、誤検知が非常に多い特徴もある。例えばバナー情報が表示されていないことで見逃される脆弱性もありえるし、そのスキャンツールのシグネチャに存在しなかったため見逃される脆弱性もある。

そのためテスターは複数のスキャナを使用することが推奨される(また、サービス識別以上にネットワークに負荷をかける点を忘れてはいけない)。

ワイヤレススキャン

本項目は主にIEEE802. 11の通信内容をスキャンし、悪用されないかを確認する作業だ。

1. パッシブスキャン

パッシブスキャンはアンテナの範囲内で送信されているワイヤレストラフィックをキャプチャする。多くのツールは検出されたデバイスの重要情報(MACアドレスやデバイスタイプ等)を提供する。

パッシブスキャンは主に不正なデバイスを見つけることを目的とする。テスターは信号強度から、そのデバイスが対象の領域内に存在するか判断する必要がある。

2. アクティブスキャン

アクティブスキャンは検出されたデバイスへの侵入を試みる。

例えば認証のメカニズムやデータの暗号化等を検査し、脆弱性を評価する。

3. ワイヤレスデバイスの追跡

不正なデバイスの位置を特定する。通信を追跡することで、領域内のデバイスの位置をマッピングすることが可能だ。

デバイスの位置が特定できない場合はセキュリティ担当者と協力し、WIDPSを使用しながら発見しよう。

4. ブルートゥーススキャン

Bluetoothへのアクセスもセキュリティ要件に含まれている場合は実施してほしい。手法はワイヤレスと同様にアクティブスキャンでBlouetoothに不正にアクセスできるかが観点となる。

5: Target Vulnerability Validation Techniques

5章の目的は脆弱性の存在をさらに調査し、悪用可能であることを証明することだ。この項目はシステムに影響を与える可能性が高いため、最大のリスクが伴う。

パスワードクラック

パスワードクラックは脆弱なパスワードを持つアカウントを特定するために実施される。

主にコンピュータに保存された、あるいはネットワークを介して送信されたハッシュをクリアパスワードに戻すプロセスを行う。

ハッシュの解析には主に辞書攻撃が使用される。また、レインボーテーブルを使用した攻撃も有効である。

また、判明したアクティブなプロトコル(FTPやSNMP等)に対するパスワード解析は、ペネトレーションテストに含まれていると考える。

ペネトレーションテスティング

NIST SP800–115の解説を長くやってきたが5.2章で初めてペネトレーションテストの話題がでた。本項目が狭義のペネトレーションテストについて示していると考える。

ペネトレーションテストはアプリ、システム、ネットワークのセキュリティ機能を回避する方法を特定するために、テスターが実際の攻撃を模倣するテストだ。

多くの場合、様々なツールや技法を使用し、複数の脆弱性を組み合わせることでテストを行う。

また、システムがテストの過程で動作不能になる可能性もあるが、組織はどの程度でシステムが破壊される可能性があるのかを知ることで利益を得る。経験豊富なテスターはこのリスクを軽減できるが、完全には排除できないため、十分な検討、通知の後のみ実施するべきだ。

  1. テストフェーズ

ペネトレーションテストは4つの段階で実施される。

まず計画段階では、ルールの決定、管理者の承認及び文章化を行い、目標を設定する。

発見段階では、スキャンで情報を収集し、ターゲットとなるサーバやポートを列挙する。その後、脆弱性を分析し、攻撃対象を絞り込む。この際、自動スキャンと同時に手動での検出が有効な場合もあるが、非常に時間のかかる作業になる。

攻撃段階はペネトレの中核だ。下記の図は攻撃段階の個々のステップを表している。

まずは脆弱性を利用し、システムにアクセスする(Gaining Access)。

その次に、得られた権限を管理者に昇格させる試みを行う(Escalating Privileges)。

得られた権限を使用し、別のネットワーク(主に内部ネットワーク)への侵入を試みる(System Browsing)。

より詳細な調査を行うためのツールをシステムにインストールする(install Additional Tools)。

これらを繰り返し(あるいは発見段階に戻りつつ)、攻撃者がどこまで侵入可能かを評価する。

脆弱性スキャナは脆弱性の存在の可能性のみをチェックするが、ペネトレーションテストは、その存在を確認する。

そして報告段階は、他の3つの段階と同時に行われる。システム管理者に発見した脆弱性や、攻撃の経過等を定期的に報告しよう。最後に、脆弱性の説明とリスク評価を行う。また、脆弱性を軽減する方法へのガイダンスも提供しよう。

2. テストの管理

テストのシナリオでは、管理者による悪意のある行為等の最悪なシナリオと、外部からの攻撃等の最も可能性の高いパターンの両方を再現することが求められる。

外部からの攻撃を想定するシナリオの場合、ターゲットへの前提知識は0から始める場合もある(攻撃対象サーバの特定からテスターが実施する)。

内部からの攻撃を想定するシナリオの場合、内部ネットワークのアカウント等を持つ状態から開始する。テスターはスキャン等に加え、管理者への特権昇格を試みる。

ペネトレーションテストは、組織のネットワークの脆弱性と、発生する損害の程度を判断するために重要だ。ただ、高いリスクと高いコストのため、年ごとで十分だろう。

組織はテストの結果を真摯に受け止めるべきであり、発見された脆弱性を軽減するべきだ。また、スキャン等の労働集約的でないテスト活動を定期的に実施するべきだろう。

ソーシャルエンジニアリング

ソーシャルエンジニアリングは重要情報をシステム内の誰かに明らかにさせる試みだ。例えばフィッシングなど、システム内のユーザに偽のメールを送り、システムにアクセスさせるための重要情報を盗み出す手法が使用される。

ただ、本テストは組織のセキュリティ向上に使用されるべきであり、テストに引っかかった個人を特定するために使用されるべきではない。

6: Security Assessment Planning

6章ではセキュリティテストを成功させるための適切な計画について記載している。

本章の大部分は省略するが、計画は以下の質問に答えられるように作成するべきだ。

・テストの範囲は?

・誰がテストを実施する権限を持っているのか?

・テストの管理はどのようになっているか?

・機密データはどのように処理されるか?

・トラブル発生時の対処

その他の項目

7章にはテスト結果の分析について、8章では適切な報告について記載されているが、本記事では省略する(テストの観点から離れるため)。

しかし、重要な項目ではあるため是非原文を読んでほしい。

まとめ

本記事では、ペネトレーションテストについて「NIST SP800–115」を元に解説した。

狭義のペネトレーションテストは5.2章に書かれた内容になるが、広い意味では本資料全体ともいえる。

セキュリティ業界で働いている人(予定のある人)はぜひNIST SP800–115の原文も読んでほしい。

各項目の技術は非常に専門的であり、1章ごとに専門的な資格も存在する。本資料でどこかの章が気になったなら、その分野の専門家を目指すのも1つのキャリアだろう。

また、技術者以外にもペネトレーションテストについて興味を持った人(組織の経営者や、テストを事業として実施したい人)も、原文を読んでほしい。テストを受けることで得られる利益は、通常の脆弱性スキャンのみのテストに比べて多数あるからだ。

本資料を見ることで、ペネトレーションテストについての理解が深まったなら幸いだと考える。

--

--