今回のリリースにおける目立った変更は実験的なGUIモジュールの試験採用であるが、真に注目すべきは、同ツールによるエクスプロイト(exploit:侵入手口)の検出と実行を自動処理するdb_autopwnの追加とすべきかもしれない。
MSFは、コンピュータシステムへの貫入試験を自動実行するために構築されたツールである。そのため同ツールには、Windows、Linux、BSD、Unix、Mac OSの各種リリースという特定のターゲットへの不正進入手段として知られている様々なエクスプロイトが満載されている。ツールの実行プラットフォームとしては、これらオペレーティングシステムの大半を用いることができるが、その他にもタブレット型のNokia N800マシンから実行できたという報告もある。
MSFのオリジナル開発者はH. D. Moore氏であり、2.0リリースの段階においてMatt Miller氏など開発者数名が参加したとのことだ。そして昨年、これらの開発陣によって「商用的な不正使用を防止し、同プロジェクトの長期的な存続を図る」ことを目的に結成されたのがMetasploit LLCである。Metasploitというソフトウェア本体および、その商標やドメインに関するすべての権利は、このMetasploit LLCが掌握している。またMSFはMetasploit Framework Licenseという独自のライセンス下で提供されており、OSIによる承認を受けておらず、FSFによるフリーソフトウェアライセンスの裁定も得ていない。
現行の開発バージョン(svnにおけるリビジョン4701)では、MSFには100以上のペイロード(payload)および190種のエクスプロイトが実装されている。ここで言うエクスプロイトが侵入者用の武器だとすれば、ペイロードはそこから発射される弾丸だとでも思えばいいだろう。ペイロードには侵入後にどのような行動を取ればいいのかの指示が収められているからだ。なおmsfconsoleからエクスプロイトおよびペイロードを実行する具体的な手順については、以前に本サイトで掲載した2.6リリースに対するレビュー記事を参照して頂きたい。
db_autoPwnのインストールと使用法
db_autopwnモジュールを使用するには、データベースのサポート用に若干の追加インストールをしておく必要がある。利用するデータベースマネージャについては、MySQL、Postgres、SQLiteが選択可能だ。私の場合、MSFのインストール先はUbuntu 7.04 Feisty Fawnとし、データベースエンジンはSQLite3を選択した。
オンライン上ではプラットフォーム別のインストールガイドが用意されている他、Moore氏のMetsploitブログにはdb_autopwnの使用法についての参考情報が紹介されている。私と同様Ubuntu 7.04およびSQLite3という組み合わせで使用する場合、MFSの最新開発バージョンのインストールおよびdb_autopwnモジュールの使用に必要な準備は、基本的に下記の手順に従えばいいはずである。
- Subversionをインストールする
- svnからMSFをインストールする
- Rubyおよび関連パッケージをインストールする
- RubyGemsをインストールする
- Ruby on Railsをインストール(「
gem install rails」を実行)し、すべての質問にYと答える - libgtk2-ruby、libglade2-ruby、sqlite3をインストールする
- libsqlite3-ruby1.8、libdbd-sqlite3-ruby1.8をインストールする
- Nmapをインストールする
すべてのインストールが正常に行われると、db系コマンドをmsfconsoleから実行できるようになる。その中には、Nmapを実行してその結果をデータベースに自動登録するコマンドも用意されているが、必要であればNmapを個別に実行させ、スキャン結果を収めたXMLファイルをインポートすることも可能である。同様にNessusスキャンの結果をNBEフォーマットに出力させることもできる。
次に必要な準備は、データベースの作成である。その際には、svnで作成されるMSFのサブディレクトリに移動してから「sudo ./msfconsole」とコマンドを入力する。msfconsoleのロードが完了すると、下記の2つのコマンドによるデータベースドライバのロードおよび必要なデータベース作成が行えるようになる。
msf> load db_sqlite3 msf> db_create pentest
ここまでの設定に問題がないかを確認するには、MSF consoleで「help」と入力すればいい。これにより使用可能なコマンドが一覧され、リストの上部にはデータベース関連の全コマンドが表示されるはずである(以下参照)。
Database Backend Commands
=========================
Command Description
------- -----------
db_add_host Add one or more hosts to the database
db_add_port Add a port to host
db_autopwn Automatically exploit everything
db_hosts List all hosts in the database
db_import_nessus_nbe Import a Nessus scan result file (NBE)
db_import_nmap_xml Import a Nmap scan results file (-oX)
db_nmap Executes nmap and records the output automatically
db_services List all services in the database
db_vulns List all vulnerabilities in the database
SQLite3 Database Commands
=========================
Command Description
------- -----------
db_connect Connect to an existing database ( /path/to/db )
db_create Create a brand new database ( /path/to/db )
db_destroy Drop an existing database ( /path/to/db )
db_disconnect Disconnect from the current database instance
なおMoore氏による説明では、この段階でdb_autopwnを引数無しで実行させて、具体的にどのような操作ができるかを確認しておくことが推奨されている。これを実行すると、下記の出力が得られるはずだ。
msf> db_autopwn
[*] Usage: db_autopwn [options]
-h Display this help text
-t Show all matching exploit modules
-x Select modules based on vulnerability references
-p Select modules based on open ports
-e Launch exploits against all matched targets
-s Only obtain a single shell per target system (NON-FUNCTIONAL)
-r Use a reverse connect shell
-b Use a bind shell on a random port
-I [range] Only exploit hosts inside this range
-X [range] Always exclude hosts inside this range
この“とりあえず何ができるかを確認しておく”段階では、showコマンドの確認もしておくといいかもしれない。これにより同フレームワークで認識されたすべてのエクスプロイトとペイロードがリストアップされる他、SQLite3との併用に必要なプラグインやオグジリアリ(auxiliary)扱いのRubyスクリプトなども一覧される。ここで言うオグジリアリであるが、Moore氏はこれを「エクスプロイト以外のすべて」と定義しており、具体的には、検出スクリプト、ファザー(fuzzer)類、DOS(Denial of Service:サービス拒否攻撃)、管理者攻撃などが該当するとのことである。
