Memorandum

普段の生活の覚え書き。主に技術録

ペネトレーションテスト

以前会社で、セキュリティについて勉強させて頂いた機会があるので、今回はセキュリティ対策の一つの方法であるペネトレーションテストについて説明いたします。

ペネトレーションテストとは

ネットワークに接続されているコンピュータ、もしくはシステムに対し、実際に侵入を試みることで、システムに脆弱性がないかどうかテストする手法のことです。 日本語では侵入実験または侵入テストとも言われています。 ※注意:今回紹介するツールを、自身が管理している端末やネットワークに使用することは、攻撃行為と見なされる恐れがあります。法に触れる危険性もありますので絶対にしないでください。

ペネトレーションツール

ペネトレーションを行うソフトウェアとして以下のようなものが挙げられます。

  • Metasploit 脆弱性を発見しそれを実証するためのフレームワーク
  • Core Impact セキュリティ脆弱性評価とテストを行うための総合ソリューション
  • Nessus ネットワーク機器の脆弱性検出とシステム機器構成評価用ソフトウェア
  • Nmap コンピュータのポートに対して調査を行い、ポートの状態を調べるツール

  • WireShark ネットワークに流れるパケットのデータを調査し、問題の調査や、脆弱性の判断を行う

また、これらのソフトを多く取り入れたLinuxディストリビューションも存在します。

ペネトレーションテストの流れ

MetasploitやCore Impact、Nessusと言ったツールは難しい設定をしなくても、ほぼクリックするだけである程度簡易的な調査が行なえます。 これらのツールを使用したペネトレーションテストの流れについて説明していきます。

  1. 調査 対象となるネットワーク接続した上で、ネットワークに接続されている端末を把握するために、スキャンと呼ばれる方法で一切に調査を行います。 このときに大量のパケットが流れたり、不正なコードを発信したりするので、ウィルス対策ソフトなどが動作していると、不正な動作と認識して対象の端末で通知を行ったり ネットワークを切断したりします。きちんと許可を得たネットワークで調査する場合は、ウィルス対策ソフトなどの動作を停止させましょう。 調査の結果、対象のネットワークに接続されている端末の情報(OS、ポート番号、サービスなど)を知ることができます。
  2. 侵入 調査を行った後は、端末に侵入できるかを試みます。こちらも特別な設定をせずとも、先程の調査の結果でわかった情報を用いてふさわしい攻撃コードを自動で選択し、 実際に対象の端末に向けて侵入テストを行います。きちんとOSや各種ソフトウェアのアップデートを行っていれば、ほとんど侵入されることはありませんが、脆弱性があるソフトウェアを使用していると侵入が成功します。 また、自分で攻撃コードを書いて実行したり、パスワードなどのデータを与えてテストしてみたりなどのケースを、実施することも可能です。
  3. 証拠収集 私が使用したMetasploitというツールでは侵入を行えると判断した場合には、実際にセッション奪取という機能で、対象となる端末にセッションを繋いで、端末を自在に操作することが可能でした。また、侵入を行った証拠として、端末内で持っている情報を集めることも可能です。そうすることで、侵入できることが分かった後に、どのファイルが危険なのかを判断できます。
  4. レポート 最後に、調査を行った結果をPDFなどの形式で一覧として出力し、端末ごとのサービスや、脆弱性の一覧などの情報を報告することが可能です。

最後に

ペネトレーションテストについて説明してきましたが、簡単なテストなら意外とすぐ出来そうな感じがしました。業務で使用するなら担保したい分野を絞って、それらを網羅する手順を作成してMetasploitなどのツールを使えば比較的工数を抑えてテストができると思います。有料のツールもありますが、GUIや自動化が整っていたりなど、誰でも簡単に使えるのはメリットだと思います。 最近ではWeb上でテストできるサービス(https://www.ssllabs.com/ssltest/index.html)などもありますので、セキュリティが気になっている方は試してみてはいかがでしょうか。