2014年12月31日 星期三

Metasploit Framework 的安裝(以 Ubuntu 為例)

Metasploit Framework 開發版是完全公開程式碼的,可以在 github 的上面找到。雖然有一些安裝的說明文件,但是過程並不是那麼順,所以我提供一個比較順暢的安裝方式,基本上照著走很快就安裝好了。

先安裝一些需要套件

如果是 debian 或 ubuntu,可以直接用 apt-get 來完成:
$ sudo apt-get install \
  build-essential zlib1g zlib1g-dev \
  libxml2 libxml2-dev libxslt-dev locate \
  libreadline6-dev libcurl4-openssl-dev git-core \
  libssl-dev libyaml-dev openssl autoconf libtool \
  ncurses-dev bison curl wget postgresql \
  postgresql-contrib libpq-dev \
  libapr1 libaprutil1 libsvn1 \
  libpcap-dev libsqlite3-dev git

設定 git

如果之前已經有在用 git 或者設定過,這裡就不需要了;如果還沒有使用過的話,需要先設定一下,把下面指令中的 YOUR NAME 和 YOUR EMAIL ADDRESS 換成一個名字和一個 Email:
$ git config --global user.name "YOUR NAME"
$ git config --global user.email "YOUR EMAIL ADDRESS"

安裝 rvm 以及 ruby

安裝 rvm 之前,需要 RVM 負責人 Michal Papis 的公開金鑰:
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3

再來安裝 rvm 以及 ruby:
$ \curl -L https://get.rvm.io | bash -s stable --autolibs=enabled --ruby=1.9.3

可能需要輸入 sudo 密碼來更新並且安裝一些系統套件,所以可能需要輸入一到兩次的密碼。

完成後,登出再登入,或者執行以下:
$ source ~/.rvm/scripts/rvm

因為預設這一行寫在 .profile 裡面,所以尚未登出前,如果開啟其他的 terminal,記得都要執行上面那一行 source。

另外,為了 rvmsudo 功能,新增一行到 .profile 裡面:
$ echo "export rvmsudo_secure_path=1" >> ~/.profile

安裝 metasploit-framework (msf)

下面這個指令會新增一個目錄為 metasploit-framework 並且下載 github 上面的最新程式碼:
$ git clone https://github.com/mcfakepants/metasploit-framework.git

移動到 msf 的工作目錄:
$ cd metasploit-framework

執行完上面那一行,可能會出現如下:
ruby-1.9.3-p484 is not installed.
To install do: 'rvm install ruby-1.9.3-p484'

此文撰寫的當下,msf 使用的 ruby 版本為 1.9.3-p484,而 rvm 安裝的是 1.9.3-p551
只要把 msf 工作目錄下預設的 .ruby-version 這個檔案的內容修改如下即可(沒錯,就是一行文):
1.9.3

如果之後 msf 改用別的 ruby 版本,例如 2.1.5-p000,可以使用 rvm 安裝 2.1.5(執行:rvm install 2.1.5)然後再將上面那個一行文改成 2.1.5。其他版本依此類推。

再來安裝 msf:
$ bundle install

到此完成,可以以一般使用者權限來執行 ./msfconsole ,或者使用 rvmsudo ./msfconsole 以 sudo 權限來執行,以便使用一些 root 才能用的功能,例如 nmap -sS。

進階 - 設定 msf 的資料庫

大部分的情況下, msf 都會搭配資料庫來使用,通常是用 PostgreSQL (postgres),以下內容是參考 fedora 網頁的資訊,稍微改寫一點。

設定 postgres

以 Ubuntu 為例,安裝的 postgres 設定檔案在 "/etc/postgresql/9.3/main/pg_hba.conf";如果不是,請自行找出你的 postgres 設定檔案 pg_hba.conf 所在。在最後新增一行如下:
host    "msf_database"    "msf_user"      127.0.0.1/32          md5

重新啟動 postgres:
$ sudo /etc/init.d/postgresql restart

新增 postgres 的使用者:
$ sudo -s
# su postgres
$ createuser msf_user -P
輸入之後,會出現下面要求輸入密碼,請輸入你希望給 msf_user 的密碼,至於後面三個問題,全都回答 n 即可。
Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n

此時使用者還是 postgres(我們剛剛執行了 su postgres),輸入以下指令建立資料庫:
$ createdb --owner=msf_user msf_database

結束我們身為 postgres 的指令:
$ exit
# exit
$

再來,讓 msf 每次啟動都自動連線 postgres,移動到 msf 的工作目錄:
$ cd metaspolit-framework
$ cat > config/database.yml << EOF
輸入這行指令後,會出現 > 提示符號讓你打字,複製以下內容,並且把 <your_password> 換成你剛剛建立給 msf_user 的密碼:
production:
    adapter: postgresql
    database: msf_database
    username: msf_user
    password: <your_password>
    host: 127.0.0.1
    port: 5432
    pool: 75
    timeout: 5
EOF

再來,輸入以下指令來讓 msfconsole 啟動自動連線資料庫:
$ cat > ~/.msf4/msfconsole.rc << EOF
輸入這一行後,會出現 > 提示符號,輸入以下內容,把 <msf_path> 換成你的 msf 路徑:
db_connect -y <msf_path>/config/database.yml
EOF

設定完成。第一次執行 msfconsole 可能會看到建立資料庫的訊息,如下:
...
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "task_hosts_pkey" for table "task_hosts"
NOTICE:  CREATE TABLE will create implicit sequence "task_services_id_seq" for serial column "task_services.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "task_services_pkey" for table "task_services"
NOTICE:  ALTER TABLE will create implicit sequence "hosts_tags_id_seq" for serial column "hosts_tags.id"
NOTICE:  ALTER TABLE / ADD PRIMARY KEY will create implicit index "hosts_tags_pkey" for table "hosts_tags"
NOTICE:  CREATE TABLE will create implicit sequence "task_sessions_id_seq" for serial column "task_sessions.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "task_sessions_pkey" for table "task_sessions"

在 msf 的提示符號下輸入 db_status,應該會顯示正常連線:
msf > db_status
[*] postgresql connected to msf_database

到此全部步驟都完成了,祝使用愉快。

沒有留言:

張貼留言