Develop and Download Open Source Software

OpenSource Downloads

7-Zip  (4,208)  
HandBrake Japanese Language Version  (3,353)  
CrystalDiskInfo  (1,743)  
CotEditor  (1,120)  
CrystalDiskMark  (866)  
Boookends  (788)  
SMPlayer  (642)  
えこでこツール  (599)  
Tera Term  (595)  
10  FFFTP  (579)  
11  Cabos  (530)  
12  BathyScaphe  (494)  
13  ffdshow  (481)  
14  MergeDoc  (464)  
15  ギコナビ  (438)  
More >>

最近ブックマークされた記事

Metasploit 3.0――ユーザの良心が試されるシステム貫入試験ツール

2007年05月10日 19:29 Joe-Barr(2007年5月4日(金)) 1 2 3
 Metasploit LLCから先月末、システム貫入試験ツールとして人気の高いMetasploit Framework(MSF)のバージョン3.0がリリースされた。同ツールの記述言語は、バージョン1および2段階では主としてPerlが用いられていたが、バージョン3.0ではRubyをメインとした全面的な再構築が施されている。

 今回のリリースにおける目立った変更は実験的な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モジュールの使用に必要な準備は、基本的に下記の手順に従えばいいはずである。

  1. Subversionをインストールする
  2. svnからMSFをインストールする
  3. Rubyおよび関連パッケージをインストールする
  4. RubyGemsをインストールする
  5. Ruby on Railsをインストール(「gem install rails」を実行)し、すべての質問にYと答える
  6. libgtk2-ruby、libglade2-ruby、sqlite3をインストールする
  7. libsqlite3-ruby1.8、libdbd-sqlite3-ruby1.8をインストールする
  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:サービス拒否攻撃)、管理者攻撃などが該当するとのことである。

最終更新:2009年11月20日 15:59