見出し画像

Ubuntu 20.04にMetasploit 6.0のインストールと設定方法

以前、Qiitaに以下のような記事を投稿しました。セキュリティ業界では有名なペネトレーションテストなどで使われるMetasploitのインストール方法と設定方法についてです。

しばらくセキュリティ業界関係のニュースを追っていませんでしたが、今年の1月にMetasploitのバージョンは6.0にアップデートされていました。

今回はMetasploit 6.0をUbuntu 20.04への環境にインストールと設定方法についてまとめます。

Metasploitとは

Metasploitとは、ペネトレーションテストや脆弱性診断で使用されるRuby製のオープンソースのツールです。
実際に脆弱性をつくExploitコード、脆弱性調査のための補助ツールなどが含まれたコマンドラインツールです。

注意
metasploitは、実際に攻撃用のツールとして扱えてしまうため、自分の管理下以外の環境や許可を得ていない環境以外では使用しないでください

動作に必要なインストール

まずはmetasploitを動かすパッケージ類をインストールする必要があります。

$ sudo apt install -y build-essential zlib1g zlib1g-dev \
    libpq-dev libpcap-dev libsqlite3-dev \
    ruby ruby-dev git

Metasploit本体のインストール

まずはmetasploitを保存するためのディレクトリを作成します。

$ mkdir ~/apps

$ cd ~/apps

Metasploitをgit clone経由でダウンロードします。後にアップデートのためのコマンドとしてmsfupdateがありますが、コマンドが失敗したときのためにもgit clone 経由のインストールの方が更新内容を簡単に取得できるようになります。

# metasploitのダウンロード
$ git clone https://github.com/rapid7/metasploit-framework.git

同ディレクトリ上で以下のコマンドを実行してMetasploitをインストールします。bundle installコマンドはそれなりに時間がかかります。

# metasploit-frameworkディレクトリに移動する.
$ cd metasploit-framework/

# gemでbundlerのインストール
$ sudo gem install bundler

# bundle インストール
$ bundle install

msfconsoleで起動を確認

先程インストールしたmetasploit-frameworkディレクトリ上で以下のコマンドであるmsfconsoleを実行すると、msf6コンソールが表示されます。

$ ./msfconsole
                                                  

     .:okOOOkdc'           'cdkOOOko:.
   .xOOOOOOOOOOOOc       cOOOOOOOOOOOOx.
  :OOOOOOOOOOOOOOOk,   ,kOOOOOOOOOOOOOOO:
 'OOOOOOOOOkkkkOOOOO: :OOOOOOOOOOOOOOOOOO'
 oOOOOOOOO.MMMM.oOOOOoOOOOl.MMMM,OOOOOOOOo
 dOOOOOOOO.MMMMMM.cOOOOOc.MMMMMM,OOOOOOOOx
 lOOOOOOOO.MMMMMMMMM;d;MMMMMMMMM,OOOOOOOOl
 .OOOOOOOO.MMM.;MMMMMMMMMMM;MMMM,OOOOOOOO.
  cOOOOOOO.MMM.OOc.MMMMM'oOO.MMM,OOOOOOOc
   oOOOOOO.MMM.OOOO.MMM:OOOO.MMM,OOOOOOo
    lOOOOO.MMM.OOOO.MMM:OOOO.MMM,OOOOOl
     ;OOOO'MMM.OOOO.MMM:OOOO.MMM;OOOO;
      .dOOo'WM.OOOOocccxOOOO.MX'xOOd.
        ,kOl'M.OOOOOOOOOOOOO.M'dOk,
          :kk;.OOOOOOOOOOOOO.;Ok:
            ;kOOOOOOOOOOOOOOOk:
              ,xOOOOOOOOOOOx,
                .lOOOOOOOl.
                   ,dOd,
                     .

      =[ metasploit v6.1.11-dev-e52083a65c               ]
+ -- --=[ 2173 exploits - 1149 auxiliary - 398 post       ]
+ -- --=[ 592 payloads - 45 encoders - 10 nops            ]
+ -- --=[ 9 evasion                                       ]

Metasploit tip: View advanced module options with 
advanced

msf6 >

更新用にシステムを構成する

以下のようにgitの設定は事前に行っておいてください。

$ git config --global user.name "{usrename}"

$ git config --global user.email "{email}"

metasploit-frameworkディレクトリ上でmsfupdateを実行すると、metasploitのアップデート処理が行われます。

$ ./msfupdate

こちらのコマンドは手動で定期的に打つ必要がありますが、以下のようにCronの設定をしておけば自動的に更新をすることができます。

手動で実行していく場合は不要になります。
$ crontab -e

cronで以下のように設定すれば毎日01:00にmsfupdateが実行されます。

0 1 * * * /home/$name/apps/metasploit-framework/msfupdate > /dev/null 2>&1

Postgresqlの設定

MetasploitではデータベースにPostgresqlを扱うため、PostgreSQLが必要になります。まずはPostgreSQLのインストールを行います。(既にインストール済みの場合は不要)

$ sudo apt update
$ sudo apt install libpq-dev postgresql postgresql-contrib

まずはmsfというユーザーを作成します。その次にmsfというデータベースを作成して、msfユーザーに所有権限を与えます。

psql -lコマンドでデータベースの一覧を表示します。

## msfというユーザーを作成
## パスワードの入力が二回求められます。
$ sudo su postgres
$ createuser msf -P -S -R -D

## -O オプションで所有者ユーザーを決める
## ここではmsfというユーザーに所有者権限を与えている
$ createdb -O msf msf

# psql -lを打つことでデータベースの一覧を表示
$ psql -l
                                  List of databases
  Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
msf       | msf      | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
postgres  | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | 
template0 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
          |          |          |             |             | postgres=CTc/postgres
template1 | postgres | UTF8     | ja_JP.UTF-8 | ja_JP.UTF-8 | =c/postgres          +
          |          |          |             |             | postgres=CTc/postgres
(4 rows)

Metasploitにデータベースの設定を行う

Metasploitからデータベースであるpostgresqlを利用するための設定を行います。configディレクトリの中にはdatabase.yml.exampleという雛形があるため、そちらをコピーしてdatabase.ymlを作成します。

# metasploit-frameworkの中にあるconfigディレクトリに移動する.
$ cd config

# database.yml.exampleをコピーしてdatabase.ymlを作成する
$ cp database.yml.example database.yml

上記の「Postgresqlの設定」で行ったデータベース名、ユーザー名とパスワードの設定をします。

$ vim database.yml

production:
  adapter: postgresql
  database: msf
  username: msf
  password: # msfのパスワードをここに設定
  
  host: 127.0.0.1
  port: 5432
  pool: 75
  timeout: 5

Metasploitを再度起動する

再度msfconsoleを実行してmetasploitを起動します。

$ ./msfconsole

データーベースの設定をしたもののMetasploitからデーターベースの接続に失敗してしまうことがあります。

msfconsole実行時に警告のようなものが表示された場合は以下のコマンドでデーターベースに接続されているか確認しましょう。

no connectionと表示された場合は、postgresqlに接続されていません。

$ msf > db_status
[*] postgresql selected, no connection

もし接続されていない場合は以下のコマンドでデーターベースに接続が行えます。

# 上記のdatabase.ymlで設定した項目を入力します。
# {username}:{password}@127.0.0.1:5432/{database}

$ msf > db_connect msf:{password}@127.0.0.1:5432/msf

再度、db_statusを入力して、接続を確認します。
以下のようにConnected to msf.と表示されていれば接続されています。

$ msf > db_status
[*] Connected to msf. Connection type: postgresql

再度以下のコマンドでMetasploitの更新を行いましょう。

$ ./msfupdate

この記事が気に入ったらサポートをしてみませんか?