ペネトレーションテストなどで多く使われるツールの一つであるMetasploitについて、基本的な使い方を解説していきます。私はKali LinuxにプリインストールされているMetasploitを使用しますが、もしWindowsや他のLinuxOSから実行する場合は環境に応じた方法でMetasploitをインストールする必要があります。WIndowsでのインストール方法については以下の記事で解説してますので良ければ参照ください。
使用する環境
cat /etc/os-release
PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
ID=kali
VERSION="2022.3"
VERSION_ID="2022.3"
Metasploitの起動とバージョンをupdateする方法
Kali LinuxなどのMetasploitが事前にインストールされている環境であれば以下の方法で起動可能です。
1.msfconsoleコマンド
(kali?kali)-[~]
$ msfconsole
起動すると以下の画面が表示されます。このコンソールからコマンドを実行し、疑似攻撃やその設定を行います。

msfconsoleコマンドには以下のオプションが存在します。起動時に指定することで出力内容を変更することができます。
オプション | 内容 |
-q | バナーやバージョンなどの情報を出力しないQuiet Modeで起動する |
-v | バージョン情報のみを出力します |
各オプションの実行例は以下の通りです。
-qオプション
(kali?kali)-[~]
$ msfconsole -q
msf6 >
-vオプション
(kali?kali)-[~]
$ msfconsole -v
Framework Version: 6.3.40-dev
2.Metasploitのupdate方法
バージョンをアップデートする方法は2種類あります。Kali LinuxなどにプレインストールされたMetasploitを使っている場合はapt getコマンドを使用します。
(kali?kali)-[~]
$ apt-get upgrade metasploit-framework
プリインストールされたMetasploitではなく、コマンドを使ってインストールしたMetasploitを利用している場合、msfupdateコマンドを利用します。
(kali?kali)-[~]
$ msfupdate
searchコマンドで使用するモジュールを一覧から検索する
Metasploitを起動した後は、攻撃したい脆弱性に応じたモジュールを検索して指定する必要があります。検索にはSearchコマンドを使用しますが、例えばmysqlに関するモジュールを検索する場合は以下のように検索します。
searchコマンド
search mysql
実行すると以下のようにモジュール一覧が出力されます。

ただこれだと結果が多く出力されてしまうため、以下のようにモジュールのタイプでフィルターをかけることができます。
search type:auxiliary mysql

type:の後ろにはモジュールタイプを指定します。モジュールにはauxiliary、encoders、exploit、payload、postなどいくつか種類がありますが、それぞれの概要は以下の通りです。
種類 | 概要 |
auxiliary | ポートスキャナーなど情報収集のために使われる |
encoders | シグネチャベースのウイルス対策に引っかからないように暗号化を行う |
exploit | ターゲットの脆弱性を活用するための攻撃用モジュール |
payload | 対話型シェルの確立、バックドアの設置、コマンド実行、マルウェアのロード等を行う |
post | リモートでの接続が確立した後にパスワードを取得したりキーロガーを設定する |
モジュールの選択と設定
検索結果の中から使用するモジュールを指定します。モジュールの指定方法には2種類あり、以下に例を示します。
useコマンド
1つ目はモジュールの検索結果一覧の「♯」列の番号から選択する方法です。
use 11
2つ目は検索結果の「Name」列の名称からモジュールを選択する方法です。
use auxiliary/scanner/mysql/mysql_version
モジュールを選択するとコンソール上に以下の通り赤字で使用中のモジュールが表示されます。

モジュールオプションの設定
使用するモジュールを選択したらオプションの設定を行います。攻撃するホストやポート番号など、モジュールに応じて設定するオプションは異なります。
infoコマンド
選択中のモジュールの概要はinfoコマンドで確認することができます。

show optionsコマンド
モジュールの概要は必要なく、設定するオプション情報のみを確認したい場合はこちらのコマンドを利用します。

setコマンド
モジュールで使用するオプションに値を設定します。書式は以下の通りで、オプション名はshow optionsの結果の一番左側、Name列に表示されている名称が該当します。
set オプション名 値

unsetコマンド
オプションに間違えて値を指定してしまった場合はunsetコマンドで値を未設定にできます。オプションで値の設定が必須(RequiedがYes)になっている場合はデフォルトの設定に変更されます。

backコマンド
モジュールの選択を解除したい場合はbackコマンドが利用できます。

Exploitの実行
モジュールを選択しオプションの設定を一通り終えた後、以下のコマンドを利用して攻撃やスキャンを実行します。
runコマンド、exploitコマンド


-jオプションを付けて実行することでバックグラウンドにて処理が行えます。この間他の操作を行うことができます。

msfconsoleの終了
作業が終わったらexitかquitコマンドにてコンソールを終了することができます。
exitコマンド

quitコマンド
