セキュリティ

Metasploitの基本的な使い方を解説【Kali Linux】

ペネトレーションテストなどで多く使われるツールの一つである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コマンド

-セキュリティ