セキュリティ業界では有名なペネトレーションテストなどで使われるMetasploitのインストール方法についてまとめました。
Ubuntu18.04環境でのインストール方法を主に載せています。
2021/10/23 更新
こちらにUbuntu 20.04でのmetasploitをインストールする方法を載せました。
Metasploitとは
Metasploitとは、ペネトレーションテストや脆弱性診断で使用されるRuby製のオープンソースのツールです。
実際に脆弱性をつくExploitコード、脆弱性調査のための補助ツールなどが含まれたコマンドラインツールです。
注意
metasploitは、実際に攻撃用のツールとして扱えてしまうため、自分の管理下以外の環境や許可を得ていない環境以外では使用しないでください
インストール
必要なパッケージのインストール
metasploitに動かすのに必要なパッケージをインストールしていきます。
$ sudo apt-get update
$ sudo apt-get install -y build-essential libreadline5 libreadline-dev libssl-dev libpcap-dev libxml2-dev libxslt1-dev libyaml-dev libsqlite3-dev postgresql libpq5 libpq-dev subversion git git-core autoconf curl zlib1g-dev
Rubyのインストール
metasploitはRubyで動いているため、Rubyを入れる必要があります。
$ cd ~/
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ echo 'export PATH="~/.rbenv/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(rbenv init -)"' >> ~/.bashrc
$ source ~/.bashrc
バージョンは最新の2.5.3を指定してください。ここは時間がかかるため、気長にお待ちください。
$ rbenv install 2.5.3
$ rbenv global 2.5.3
Postgresqlの設定
MetasploitではPostgresqlを扱うため、ユーザー名とデーターベースを作成しておきましょう。ここではmsf
という名前のユーザーと、msf
という名前のデーターベースを作成しています。
postgresqlのインストール方法はここでは省きます。
## msfというユーザーを作成
## パスワードの入力が二回求められます。
$ sudo su postgres
$ createuser msf -P -S -R -D
## -O オプションで所有者ユーザーを決める
## ここではmsfというユーザーに所有者権限を与えている
$ createdb -O msf msf
$ exit
Metasploit本体のインストール
Metasploit本体のインストールを行っていきます。お好きなディレクトリでgit cloneでMetasploitをダウンロードします。
bundle install
で時間がかかるため、こちらも気長に待ちましょう。
$ git clone https://github.com/rapid7/metasploit-framework.git
$ cd metasploit-framework
$ gem install bundler
$ bundle install
Metasploitデータベースの設定
Metasploitからデーターベースであるpostgresqlを利用するための設定を行います。先程の「Postgresqlの設定」で行ったデーターベース名、ユーザー名とパスワードを設定します。
$ vim config/database.yml
production:
adapter: postgresql
database: msf
username: msf
password: #msfのパスワードをここに設定
host: 127.0.0.1
port: 5432
pool: 75
timeout: 5
Metasploitを起動
cd ..
コマンドで、metasploit-framework
のあるトップディレクトリまで移動し、以下のコマンドでmetasploitを起動します。
$ ./msfconsole
上記でデーターベースの設定をしたもののMetasploitからデーターベースの接続に失敗してしまうことがあります。
metasploit起動時に警告のようなものが表示された場合は以下のコマンドでデーターベースに接続されているか確認しましょう。
no connection
と表示された場合は、postgresqlに接続されていません。
$ msf > db_status
[*] postgresql selected, no connection
msfconsoleからpostgresqlへの接続設定を行う
もし上記でno connection
と表示されて、接続されていない場合は以下のコマンドでデーターベースに接続が行えます。
# 上記のdatabase.ymlで設定した項目を入力します。
# username:password@127.0.0.1:5432/database
$ msf > db_connect msf:msf@127.0.0.1:5432/msf
再度、db_status
を入力して、接続を確認します。
以下のようにpostgresql connected to {database}
と表示されていれば接続されています。
$ msf > db_status
[*] postgresql connected to msf
Metasploitの更新
Metasploitはエクスプロイトコードやモジュールが随時に更新されていきます。
以下のコマンドで新しいモジュールやエクスプロイトコードを追加して更新できます。
$ ./msfupdate
次回はDockerで脆弱性のある環境を動かして、metasploitで実際に脆弱性をついてみる方法についての記事を載せる予定です。