目次


Metasploit を使って脆弱性を発見する

攻撃を作成することにより、企業のセキュリティーの脆弱性を発見する

Comments

オペレーティング・システム、アプリケーション、Web サーバーなどのソフトウェアをデプロイする際、最大の懸念事項はセキュリティーです。そのアプリケーションはセキュアなのでしょうか。あるいは、皆さんの知らないセキュリティー・ホールや脆弱性があるのでしょうか。この質問に対する答えに関心を持つ管理者の大部分は、単純にベンダーの Web サイトに掲示されたセキュリティー情報を見るだけで、必要な情報を手に入れようとします。しかし皆さんが、そうしたアプリケーションを深く掘り下げて調べようとする多くの管理者やセキュリティー専門家の 1 人であるなら、そのソフトウェアが実際にセキュリティーの脅威の影響を受けるかどうかを自ら検証することができるのです。

セキュリティーの領域では、いわゆる脆弱性テストを行うためのツールがいくつか設計されており、それぞれのツールが異なる機能と特長を持っています。一般的なツールには、Nessus、SAINT、Nmap、そしてこの記事で取り上げる Metasploit などがあります (「参考文献」を参照)。

この記事では、Metasploit の目的と、このソフトウェアを企業が使用する場合にもたらされる可能性を基本的なレベルで紹介します。この記事では Metasploit を使って独自の脆弱性スキャニングを行う方法については説明しませんが、そのために役立つ多くのチュートリアルや本を紹介します (「参考文献」を参照)。

脆弱性スキャニング

では、脆弱性スキャニングの目的は何なのでしょう。また Metasploit はどのように脆弱性スキャニングに役立つのでしょう。脆弱性スキャナーは他のタイプのスキャナーと似ています。例えばポート・スキャナーは、ネットワークと、そのネットワーク上のシステムをセキュアにするために役立ちます。そうしたツールによるスキャンの目的は、「悪意を持った者」に何かをされる前に弱点を検出し、その結果を使って問題に対処することです。

スキャニング・プロセス中に検出される一般的な問題には、バッファー・オーバーフロー、パッチの当てられていないソフトウェア、SQL の問題、等々があります。スキャナーによってどの程度のものが検出されるかは、そのスキャナー・ソフトウェア自体に依存します。一部のスキャナーはかなり踏み込んだスキャンを行い、当てられていないパッチや構成エラーを検出しますが、適切な方向を示唆するのみのスキャナーもあります。

Metasploit は通常の脆弱性スキャナーよりも一歩踏み込んだ機能があり、独自の攻撃や攻撃送信メカニズムを作成することができます。考え方としては、他のスキャン手法は既知の問題を対象にしますが、Metasploit では独自の問題を作成できるため、より柔軟なスキャニングや調査を行うことができます。

脆弱性スキャナーとは何か

簡単に言えば、脆弱性スキャナーは、アプリケーションやオペレーティング・システムの中に弱点がないか探し、弱点がある場合はそれを明らかにするために、特別に設計されたソフトウェアです。脆弱性スキャナーはそれぞれ独自のスキャンを行い、検出の方法も異なりますが、結果はどの脆弱性スキャナーの場合もほぼ同じであり、発見された問題を知らせるレポートや何らかの情報を出力します。

脆弱性スキャンのプロセスは一連のステップに分解することができ、それぞれのステップはアプリケーションやオペレーティング・システムの弱点を発見するために必要とされる極めて重要なタスクです。各ステップは以下のとおりです。

  1. アクティブなシステムの IP またはホスト名をスキャニング・ソフトウェアに提供します。こうすることによって脆弱性スキャナーは、開かれているポート、応答可能なサービス、そしてシステム上で現在実行している可能性のあるすべてのアプリケーションを知ることができます。
  2. 脆弱性スキャナーは、そのスキャナーの実行によって判明した情報を知らせるレポートを生成します。このステップでスキャナーが終了した場合、この得られた情報はアクションを起こす上で十分なものとは限らず、より詳しい調査が必要かもしれません。脆弱性スキャナーによっては、このステップでは単純に実行中のポート、サービス、アプリケーションが表示されるだけで、次のステップに進んでしまう場合もあるかもしれません。
  3. 脆弱性スキャナーはステップ 2 で検出された、開かれたままのポートと応答可能なサービスに対してプローブを実行し、パッチのレベル、ソフトウェアのリビジョン、あるいはいくつかある潜在的な欠陥のいずれかに関する情報を返します。最近の脆弱性スキャナーには、新たに見つかった弱点を探すことができるプラグインを持つものがあります。そのため、あるスキャナーが今日、ある問題を発見できなくても、明日、ソフトウェアの更新を実行した後であれば、その問題を発見できる可能性が十分にあります。
  4. 高度なスキャナーの場合は、脆弱性の悪用を試してみることもできます (ただし、この機能がサポートされている必要があります)。実際に、最近の一部のスキャナーでは、このステップで攻撃性を構成できるようになっていますが、システムをダウンさせるほど攻撃性の高いスキャンは行いません (一部のスキャナーは実際にシステムをダウンさせることができ、またシステムをダウンさせることで有名でした)。

Metasploit とは何か

Metasploit プロジェクトの一連のプロジェクトでは、犯罪の科学捜査の手法を打ち破るために使われるツールから、検出を逃れるために使われるツール、そしてこのプロジェクトから生まれたソフトウェアの中で最もよく知られている Metasploit フレームワークに至るまで、さまざまなツールを生み出してきました。Metasploit は表面的にはハッキングのためのツールのような印象を与えますが、実際にはそうではなく、主たる目的はセキュリティーの研究です。しかし、こうしたタイプのツールの例に漏れず、ツールの使い方はユーザー次第です。「大きな力には大きな責任が伴う」ことを忘れず、十分に注意してください。

Metasploit の起源は 2003年にさかのぼり、当時は Perl スクリプト言語をベースとしていました。2003年以降、Metasploit は一から作り直され、Ruby プログラミング言語が使われるようになりました。ここ 2、3 年、Metasploit はセキュリティー研究コミュニティーで好んで使われるツールの 1 つとなっており、これひとつである程度ソフトウェアやシステムに対する高度な攻撃を作成することができます。適切に使用すれば、Metasploit はソフトウェアにおけるセキュリティーの脆弱性を明らかにし、その修正を支援するための非常に強力な手段となります。

現在、Metasploit は大部分の Nix ベースのシステムで実行することができるとともに、それ以外の一般的に使用されるいくつかのオペレーティング・システムでも実行することができます。この記事の執筆時点で、Metasploit の安定版は 3.1 です。

Metasploit の動作

Metasploit は脆弱性を発見することを目的として、先ほど脆弱性スキャナーの説明の中で触れたステップをさらに分解したステップを実行します。Metasploit は基本的に以下のことを行います。

  • 作成する対象の攻撃を選択して構成します。このコードは、ソフトウェアの欠陥を利用することを目的に、システムを攻撃します。
  • 注意: 攻撃のプールはオペレーティング・システムによって異なります。このプールはシステムのバージョンに応じて変わり、また常に大きくなり続けます。現在、Metasploit には、最近の大部分のオペレーティング・システムに対する 400 を超える攻撃が含まれています。
  • 攻撃に対してシステムが脆弱かどうかを判断するために、システムに対する攻撃を検証します。
  • 使用されるペイロードを選択して構成します。このペイロードは、スキャナーがシステムへのエントリー・ポイントを発見した後にシステム上で実行されるコードになります。
  • 使用されるエンコーディングと送信手段を選択して構成します。
  • このステップの目標は、確立された IDS (侵入検知システム) を回避できるようにペイロードのフォーマットを設定することです。
  • 攻撃を実行します。

Metasploit の実際

このセクションでは、脆弱性を発見しようとするユーザーにとって Metasploit フレームワークがどのように役に立つか、その概要を説明します。それぞれの攻撃の実行方法やシェル・コードの作成方法の詳細には触れません。その代わりに Metasploit フレームワークを使って脆弱性を発見するプロセスの概要を説明するので、読者の皆さんはこのプロセスにどんなことが関係するのかを理解し、皆さんが必要とするテストに対して Metasploit が適切かどうかを判断することができます。

Metasploit を見たことや扱ったことがない人のために言うと、Metasploit フレームワークの使い方は驚くほど簡単です。実際、Metasploit はあまりにも簡単に使えるということがわかると、Metasploit を使うユーザーは、他の誰かが Metasploit を使って攻撃を仕掛ける場合に備えて、今までよりもパッチ管理プロセスに注意を払うようになり、修正や脆弱性についての最新情報を知ろうとするようになるかもしれません。

Metasploit について考えてみると、このツールは実際の攻撃ツールと同じです。Metasploit は無料でダウンロードしてインストールすることができます。その上、無数の攻撃がパッケージされており、その動作は特定のプラットフォームやアプリケーションに対して既に検証されています。これらの攻撃には、そのプロセスを非常に容易にするための独自のペイロードまで用意されています。事前に構成済みの攻撃では、それぞれの攻撃を実行した場合に攻撃先で何をするかが既にセットアップされています。

注意: Metasploit には構成済みの攻撃がいくつか用意されていますが、Metasploit は攻撃を開発するための環境として作成されたものであることを認識することが重要です。Metasploit が提供するツールは、システムに対して特定のペイロードを送信した場合にシステムが脆弱かどうか、またシステムがどう反応するかをテストするために使うことができるのです。

攻撃を実行する

まず、Metasploit を実行するプロセスを調べてみましょう。大部分の攻撃の実行やペイロード送信に関して、このプロセスは共通のはずです。ここで説明するシナリオでは、あるシステムから別のシステムに攻撃を開始する場合の一般的な方法を説明します。

注意: 以下のステップはサニタイズしてあり、これを使って害を及ぼすことはできないようになっています。

以下のステップは、ほとんどすべての形式の Linux® または他のオペレーティング・システムのコマンドラインまたはシェルから実行することができます。皆さんの環境の詳細を調べる必要はあるかもしれませんが、このプロセスを見れば、何が行われているかを理解できるはずです。

Metasploit を使って攻撃を実行するためには、以下のステップを実行します。

  1. Linux 用の WHAX 3.0 をダウンロードします (「参考文献」を参照)。
  2. コマンドラインから下記のコマンドを入力して Metasploit のコンソールを起動します。
    # " ./msfconsole "
  3. ターゲット・システムに対して使用する攻撃を選択します。このために使用できるコマンドには以下の 3 つがあります。
    • use: 攻撃を指定します。
    • show: コンテキスト情報を表示します。
    • info: 特定のモジュールに関する詳細を提供します。
      <!--[if !supportLists]-->use
      <!--[if !supportLists]-->show
      <!--[if !supportLists]--><!--[endif]-->info

      攻撃の実行に使用するコマンドのフォーマットは以下のとおりです。

      “use <exploit name>”
  4. 以下のコマンドを入力して攻撃を開始します。
    use iis50_webdav_ntdll"

攻撃を構成する

攻撃を選択したら、その攻撃の実行方法を構成する必要があります。具体的には、攻撃の対象となる宛先の IP アドレスとポートを指定する必要があります。set コマンドを使うと構成のオプションを指定することができます。また show advanced コマンドを含めると、構成可能なすべてのオプションが表示されます。

以下のコマンドを使ってオプションを設定します。

set RHOST <your test machine's IP address>

次に、Enter キーを押します。そして次に、下記のコード行を入力します。

set RPORT 80

この攻撃が機能したかどうかをチェックするためには以下の内容を入力します。

check

結果はターゲットに依存します。

チェックの結果、失敗していた場合には、ターゲット・システムに対して他のオプション (例えばオペレーティング・システムの詳細など) を設定する必要があるかもしれません。

次に、以下の内容を入力します。

show targets

攻撃の種類によっては、その攻撃に関する追加の情報が表示される場合があります (どのサービスがその攻撃をサポートしているか、など)。

完全な攻撃

オーバーフローさせる対象のバッファーに対して、Metasploit のペイロード (シェル・コードと呼ばれることもあります) を直接挿入します。ほとんどの場合、このペイロードは特定の目的専用であり、どのペイロードを選択するかはターゲットとなるオペレーティング・システムとアーキテクチャーに依存します。

まとめ

この記事では Metasploit の使い方の概要を紹介し、システムの脆弱性に関する一般的な概要を調べる方法を説明しました。Metasploit を使えば、簡単な作業と調査を行うことで、独自の攻撃を作成することができます。また、攻撃を作成することにより、バッファー・オーバーフローなどの攻撃や SQL インジェクションに対するセキュリティー・ホールなどに関して、アプリケーションやシステムが脆弱であるかどうかを判断することができます。


ダウンロード可能なリソース


関連トピック

  • developerWorks の Web development ゾーンには Web 2.0 開発に関するツールや情報が豊富に用意されています。
  • Nessus 脆弱性スキャナーには、高速ディスカバリー、アセット・プロファイリング、脆弱性分析などの重要なスキャニング機能が用意されています。
  • SAINT 脆弱性スキャナーは脆弱性評価とペネトレーション・テストのツールを統合した唯一のスキャナーです。
  • Nmap はネットワーク調査とセキュリティー監査のための、無料でオープンソースのユーティリティーです。
  • Metasploit サイトには、ツールに関する情報やチュートリアル、その他のリソースが豊富に用意されています。
  • WHAX は、Softpedia が提供するスタンドアロンのペネトレーション・テスト・ツールキットのライブ CD、WHoppix が自然に進化したものです。

コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Web development
ArticleID=428120
ArticleTitle=Metasploit を使って脆弱性を発見する
publish-date=08182009