Metasploit

Metasploitは、コンピュータセキュリティに関するオープンソースのプロジェクトで、脆弱性、ペネトレーションテスト、侵入検知システム、シェルコードのアーカイブ、（コンピュータ・フォレンジクスによる解析への対抗技術）などを主な守備範囲としている。また、本プロジェクトのその成果ソフトウェアとしてよく知られるMetasploit Frameworkの省略名としてもしばしば用いられる。本項では、Metasploit Frameworkを中心に説明する。

 概要 
Metasploit Framework（単にMetasploitと略記されることもある）は、exploitコードの作成や実行を行うためのフレームワークである。セキュリティ業界ではよく知られたツールであり、ペネトレーションテスト目的で使用可能な1DVDタイプのLinuxであるBackTrackに収録されている例えば、BackTrack4 R2には、Metasploit Frameworkの3.5.1が収録されている。ほか、ハッカージャパンなどのセキュリティ系書籍でも何度か取り上げられたことがある - 左記のサイトに記された情報は、ハッカージャパンの2010年5月号に投稿された情報でもある。ハッカージャパンの2011年3月号にも特集として取り上げられている。どの脆弱性を用いるか、攻撃成功時にどのようなペイロードを適用するか、ペイロードが侵入防止システムに検出されるのを妨害するためにどのようなエンコード技術を用いるか、ペイロードによってリモートシェルやVNCサーバーなどをどのポート番号で起動するかなどの、exploitを成立させる各種要素を選択肢から選んで組み合わせて実行するといったように、簡単な方法で攻撃実行可能となっている。また、初期のフレームワークはキャラクタユーザインタフェース（コマンドラインインタフェース／対話型コマンドラインインタフェース）であったが、後のバージョンおよび第三者によって、Webインターフェイス（但しバージョン3.3でサポート打ち切り）やGUIインターフェースなども作られている。

同ソフトウェアは、2003年にHD Mooreによって開発が始められた。初版リリース時点でサポートしていたexploitはわずか9つであったが、2011年1月時点の安定版リリースである3.5.1では635をサポートするまでになっている。バージョン3系列になるまではperlで開発されていたが、バージョン3系列へのメジャーバージョンアップの段階でRubyを用いて全面的に書き直されている。なお、Rubyで開発されたオープンソースソフトウェアとしては2011年3月時点で世界最大規模と言われている。

同プロジェクトは2009年10月に、NeXposeの開発元であるRapid7に買収されており、以後、同プロジェクトの運営はRapid7によって行われている。

Metasploitプロジェクトには、これ以外に商用アプリケーションであるMetasploit ExpressやMetasploit Proも存在する。
Metasploit Proにはフィッシングキャンペーン機能が追加されており、APT攻撃やランサムウェアに対する情報セキュリティ教育教材としても利用できる。

 歴史 

Metasploitは、2003年にによってPerlを使った携帯可能なネットワークツールとして作られた。
2007年に、MetasploitのFrameworkはRubyで完全に書き直された。
2009年10月21日、Metasploitプロジェクトは、脆弱性管理ソリューションを提供するセキュリティ企業Rapid7に買収された。
ImmunityのCanvasやのCore Impactのような商用製品と同様に、Metasploitはコンピュータシステムの脆弱性をテストしたり、リモートシステムへ侵入したりするために使用できる。
多くの情報セキュリティツールと同様、Metasploit は合法的な目的にも違法な目的にも使用できる。
Rapid7による買収後、Metasploit Frameworkには「Metasploit Pro」というプロプライエタリ版（）が追加された。

Metasploit が事実上の脆弱性開発フレームワークとして台頭したことにより、第三者の提供するMetasploit用エクスプロイトモジュールが脆弱性勧告と共に提供されることが増えた。
Metasploit 3.0 では未知の脆弱性発見のためのファジングツールも導入され、既知のバグ用のエクスプロイトだけではなくなった。
この傾向は、2006年11月にと呼ばれるハッキングツールがMetasploit 3.0に統合されたことで見られる。

 フレームワーク 

Metasploit を使ってシステムを攻撃（エクスプロイト）する際の基本的なステップは以下のとおり：
 必要に応じて、対象のシステムが攻撃に対して脆弱かどうかを確認する
 エクスプロイト（脆弱性を突くコード）を選択・設定する。Windows、Unix/Linux、macOS用に約900種類のエクスプロイトが含まれる。
 ペイロード（リモートシェル、VNC サーバなど、侵入後に実行されるコード）を選択・設定する。Metasploitは、実行できるペイロードを提案してくれる。
 エンコードの方法を選ぶ。ペイロードからコードが「bad characters」として取り除かれて、エクスプロイトが失敗することを防ぐ。
 エクスプロイトを実行する。

この モジュール化されたアプローチ（任意のエクスプロイトと任意のペイロードを組み合わせる）こそが Metasploit の強みであり、攻撃者・エクスプロイト開発者・ペイロード開発者の作業量を減らすことができる。

Metasploitは Unix（Linux、macOS、SnelOSなど）、およびWindowsで動作し、複数言語で書かれたアドオンも利用できる。

エクスプロイトやペイロードを選ぶためには、OSのバージョンやサービスなどのターゲットの情報が必要で、これの情報はNmapのようなポートスキャン/で収集できる。
Nessusや OpenVASといった脆弱性検査ツールも活用でき、Metasploit はそれらの結果をインポートして脆弱性に対応するエクスプロイトを抽出できる。

 インターフェース 

Metasploit には複数のインターフェースがあり、最も一般的なのは Rapid7 と Strategic Cyber LLC によって提供されるものである。

 Metasploit Framework（オープンソース版）

Metasploit Framework は Metasploit プロジェクトが提供する自由に利用できるオープンソース版である。
脆弱性の評価とエクスプロイトの開発をすることができる。

主な機能：

 コマンドラインのインターフェース。エクスプロイトのモジュールを制御する。
 スキャンデータやエクスプロイトの結果を管理するためのデータベースを作成できる。
 Nmapなどの、外部のネットワークをスキャンするツールの結果をインポートする。
 「db_nmap」によるスキャンの補助により、自動的なツールの実行とスキャン結果の統合、データベースの管理ができる。
 1500以上のエクスプロイトを内蔵。スクリプトのカスタマイズや自動化もできる。

MetasploitはRubyで実装され、モジュール式の構造を採用している。

 Pro 版 

2010年10月にRapid7は、ペネトレーションテストのツールとして、商用の「Metasploit Pro」を追加した。
Metasploit Express の機能に加えて、クイックスタートウィザード/MetaModules、ソーシャル・エンジニアリングを用いた攻撃の作成と管理、Webアプリケーションテスト、高度なProコンソール、のための動的ペイロード、アドホック脆弱性スキャンのためのNexposeとの統合、VPNピボッティングなどの機能が搭載された。

ラピッドセブンの日本法人であるラピッドセブン・ジャパン株式会社は、Metasploit Frameworkの商用版であるMetasploit Proの日本市場向けの販売・サポートを行っている。また、ラピッドセブンのヘルプページ（英語） には、最新のサポート情報が記載されている。

 exploit 
攻撃対象として用意されているexploitの対象OSはWindowsが多いが、LinuxなどのUnix系OSも少なからず用意されている。

 ペイロード 
ペイロードには、リモートシェル以外に、ユーザーの追加、ファイルの送り込みや実行、メッセージボックスの表示、VNCサーバーの起動などのようなものが用意されている。また、リモートシェルの起動やVNCサーバーの起動のような、TCPコネクションを確立するものについては、コネクションの確立方法も複数の種類から選択できるようになっている。

 脚注 

 関連項目 
フルディスクロージャ
HD Moore
DLLハイジャック
Rapid7
w3af

 外部リンク 
The Metasploit Project - 公式サイト
Rapid7 LLC - 開発者公式サイト
Powerful payloads: The evolution of exploit frameworks, searchsecurity.com, 2005-10-20
 Chapter 12: Writing Exploits III from Sockets, Shellcode, Porting & Coding: Reverse Engineering Exploits and Tool Coding for Security Professionals by James C. Foster (ISBN 1-59749-005-9). Written by Vincent Liu, chapter 12 explains how to use Metasploit to develop a buffer overflow exploit from scratch.

Category:コンピュータセキュリティ
Category:エクスプロイト
Category:ネットワーク・アナライザ
Category:UNIXのソフトウェア
Category:Windowsのソフトウェア
Category:ネットワークソフト
Category:クロスプラットフォームのソフトウェア
Category:Rubyでプログラムされた自由ソフトウェア
Category:FOSS関連団体