システム侵入の実現性を検証するペネトレーションテストとは?【前編】

この記事をシェア

IT全般の技術の向上とともに攻撃者の技術力も向上する。このサイクルが続く限り、どのような対策であっても、常に突破されるリスクがつきまとうことになる。実際に攻撃を受けて、はじめてウィークポイントが発覚することも少なくない。こうした背景から注目されているペネトレーションテストの概要や必要性を説明するとともに、脆弱性診断との違いについて取り上げる。

システム侵入の実現性を検証するペネトレーションテストとは?【前編】

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

セキュリティの強度をチェックするための「侵入テスト」とも呼ばれるペネトレーションテストの重要度が高まっている。これは対象とするシステムに侵入できるかどうかを、実際に使われる攻撃を駆使して確認するテスト手法だ。一般的に、ホワイトハッカーと呼ばれる攻撃手法に熟知したセキュリティエンジニアが、テストを行う。攻撃者の視点に立って、対象システムに対して実際に攻撃を仕掛けるため、導入した機器やサービスの設定や効果、パスワードの強度など自社のセキュリティ強度を客観的に評価するための手段になると考えてよいだろう。

サイバー攻撃の手法が多様化する中、必要なセキュリティ対策も複雑化し、防御壁の構築や暗号化、認証、権限管理と細部まで配慮する必要がある。マルウェアソーシャルエンジニアリングへの対応を前提にした従業員教育も進んでいる。しかし、一定の対策を講じたからといって慢心している面はないだろうか。また、ITシステムは、ユーザーから個人情報などの重要情報の提供を求めることもある。そのITシステムのセキュリティ強度に対するユーザーの目も厳しくなっている。企業はペネトレーションテストにより、システム自体に脆弱性がないかの精査と重要情報の管理方法等の運用面でセキュリティ上の問題がないかを丁寧に洗い出して対処していくことがますます求められてきている。

ペネトレーションテストと脆弱性診断の違い

ペネトレーションテストと似たテスト手法として、脆弱性診断が挙げられる。どちらも客観的にITシステムの脆弱性を見つけ出すテスト手法のため、混同している人も少なくないはずだ。しかし、両者の目的は根本的に異なる。ペネトレーションテストを正しく理解するためにも、両者の違いについて押さえておこう。

脆弱性診断

Webサーバーやアプリケーション、ネットワーク機器、ミドルウェアなど、システムを構成する要素ごとに、既知の脆弱性があるかどうかを診断する。重要な情報資産を守るITシステムのセキュリティ強度を確認するために、脆弱性診断が採用されることも少なくない。このため、脆弱性診断ではテストの対象項目が多く、脆弱性スキャナーなどのツールを使って効率的に脆弱な箇所を見つけることが求められる。脆弱性診断を行うセキュリティエンジニアには、webアプリケーション、ネットワーク、スマホアプリなどに関するプロトコルの知識が要求されることになる。重要な情報資産が侵害される可能性があるかどうか、発見した脆弱性により侵入、改ざん、情報漏えい、不正行為、いやがらせなど、攻撃に利用される可能性があるかどうかまで調べるのが脆弱性診断の役割だ。

ペネトレーションテスト

重要な情報資産が侵害される可能性を検証する脆弱性診断に対し、ペネトレーションテストでは、システムへ侵入され、重要な情報資産が実際に侵害されるかどうかを検証する。さまざまな攻撃手法、ツールを組み合わせて攻撃シナリオを設計し、実際に攻撃を試みる。このため、範囲を広げすぎるとコストも手間もかかるため、想定脅威に合わせて対象システムが絞り込まれることが多い。脆弱性診断と同様に、対応するセキュリティエンジニアにとっては、日々アップデートされる攻撃用のスクリプト、手法など高度な知識が求められるといえるだろう。

外部の業者にシステム開発を依頼している場合や、個人情報などの機密情報を取り扱うITシステムの場合には、ペネトレーションテストの重要性は高まる。

ペネトレーションテストの手順

ペネトレーションテストでは、対象とするITシステム(や社内ネットーク)に対して侵入や情報窃取を目的としてあらかじめ取り決めた範囲内で実際にサイバー攻撃を仕掛ける。攻撃者視点と高度な知識が必要なため、ペネトレーションテストは自社のリソースだけで行うことは現実的ではない。ほとんどの場合、こうしたテストは専門家を擁する外部組織に委託される。その手順は以下の通りだ。

対象とするシステムの情報を収集する

公開されている情報から対象とするホストを特定するとともに、稼働しているサービスやプロトコルを確認する。こうした情報から脆弱性を見つけ出し、テストでの利用方法を検討する。情報収集の結果、キーマンとなる人物のメールアドレスや認証の弱い開発環境などの情報が得られれば、これらを利用して攻撃するテストシナリオを設計する。サーバールームへの侵入可否やパソコンの盗難可能性を調査したりするなど、物理的な攻撃に対する脆弱性について調査することもある。

侵入できるかどうかを調査する

調査結果に基づき作成したシナリオを使って、実際に攻撃を試みる。パスワードクラックや、発見した脆弱性を突いた攻撃、踏み台を使った攻撃など、さまざまな攻撃手法を使って調査を行う。企業ネットワーク外からのテストだけではなく、内部犯行を想定して企業のネットワーク内から、与えられた権限を使って機密情報の窃取ができるかどうかを確認することもある。

標的型メールを使う

近年では、標的とする企業への攻撃の際に、マルウェアやフィッシングサイトへのリンクが仕込まれた標的型メールが使われることも多い。従業員のセキュリティリテラシーが問われるこうした攻撃への耐性を評価するために、標的型メール攻撃訓練を実施することもある。

調査・報告

成功した攻撃シナリオのエビデンスを収集し、リスク評価を行った調査結果をレポートにまとめて報告する。機密情報窃取など重要な情報資産の侵害が可能だった場合には、侵害により引き起こされる被害内容について報告する。また、対応策に対する助言を行う場合もある。

ペネトレーションテストに使われる無償ツールの紹介

ペネトレーションテストを外部委託しない場合、専用に開発されたツールを活用することもある。その際、セキュリティエンジニアはどれか一つのツールを使うのでなく、複数のツールを組み合わせてテストを実行することになる。以下のように、主に海外で開発されたツールがメインで使われており、日本語のTipsなどもWeb上に存在する。

これらのツールを用いて行うテストは、システムのリリース時だけではなく、システムの修正や新機能のリリースなどのタイミングで都度、行うことが望ましい。近年のITサービスでは、ユーザーニーズを満たすために、頻繁にアップデートされることも多い。しかし、ユーザーの利便性を高めるはずが、セキュリティ強度に問題を与えてしまってはユーザーを危険にさらしかねない。

Metasploit Framework

攻撃を仕掛けるためのコードの生成や実行、およびさまざまな補助的なツールを提供するフレームワークソフトウェア。脆弱性診断やペネトレーションテストに使われるソフトウェアとして、セキュリティ業界ではよく知られているツールである。

Kali Linux

ペネトレーションテストを目的に開発されたLinuxディストリビューション。ペネトレーションテストに使える250以上のツールがインストールされている。ペネトレーションテストで使うOSの定番だといえるが、攻撃ツールとしても利用できる点には注意が必要とされる。

Nikto

WebサーバーやWebアプリケーションの脆弱性をスキャンできるオープンソースソフトウェア。XSSやSQLインジェクションといった既知のセキュリティホールや、問題のある設定をスキャンすることができる。ペネトレーションテストにおいて、テストシナリオを作成する段階で利用されることが多い。

企業の競争優位性を保つために

多くの情報資産がデジタル化され、ITサービスの利用が浸透するにつれ、情報セキュリティの脅威も高まっている。攻撃者は価値が高まるデータを入手するために、どんなに強固なセキュリティ対策が施されていようとも、目的を達成するまで執拗に攻撃を繰り返すようになっている。もはや「万全なセキュリティ対策」というのは幻想とすらいえるかもしれない。

企業では新しいテクノロジーを用いた利便性の高いシステムを迅速に導入することが競争力を左右する時代に突入しつつある。そのような状況下において優位性を保つためには、絶えず自社のシステムをブラッシュアップしていくことが欠かせない。ペネトレーションテストはそのブラッシュアップによるリスクを明らかにすることで、競争力向上に一定の貢献をしてくれるはずだ。後編となる次回は、ペネトレーションテストを実際に実施しているエンジニアの方にお話しを伺い、最新の動向やシステム管理者が陥りがちな課題、その解決策などを紹介していく。

この記事をシェア

サイバー攻撃対策に

サイバーセキュリティ
情報局の最新情報を
チェック!