2015年1月29日 星期四

安裝 Metasploit


Metasploit是目前滲透測試工具中算是最好用的工具,然後呢,在Mac OSX上安裝非常麻煩,非常麻煩,最麻煩應該是postgreSQL的安裝吧

在他們的安裝的Document裡有提供Mac OSX安裝方式,但是他所提供的安裝script中,如果使用者有安裝Macports的話就無法安裝,雖然可以修改script繞過去,但是以我之前安裝的經驗還是不行



我的環境:
Mac OSX: 10.10.1
Xcode: 6.1.1
安裝的Metasploit版本: 4.11.0-dev

好了,老話一句在安裝之前要確定已經安裝Command Line Tools和簽署Xcode的license(Xcode 6.1以下還要安裝Command Line Tools),詳細在這
安裝Xcode後安裝Command Line Tools
安裝Xcode後簽署license


安裝Java SDK
到官方網站下載Java SDK
'http://www.oracle.com/technetwork/java/javase/downloads/'





接著安裝Homebrew

安裝好Homebrew後或是已經安裝過了,記得要更新
brew update

接著打開終端機,先切換要放置metasploit的位置,因為metasploit是用Ruby寫的,不像用C寫的Library安裝完後就可以刪掉原始碼,所以要把整個framework放置好,我是放在「usr/local/share」,接著將整個framework複製下來
cd /usr/local/share
git clone https://github.com/rapid7/metasploit-framework/
cd metasploit-framework

切換進去目錄後,執行先執行metasploit的console會出現安裝的提示
% ./msfconsole
[*] Metasploit requires the Bundler gem to be installed
    $ gem install bundler

接下來開始安裝(以下開始每個人遇到的狀況可能會不太一樣,我安裝的是新安裝的Mac OSX上)

先執行以下指令更新gem。這邊要等待很久,因為gem是附在Mac OSX上一起出廠的,所以從出廠到現在一定有很多要更新
sudo gem update

更新完後執行以下指令開始安裝
gem install bundler


接下來先出現權限問題
metasploit-framework [master] % gem install bundler
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

加上sudo執行指令
sudo gem install bundler


完成這個後再打開一次msfconsole看還需要什麼,會一直開msfconsole看他的提示在安裝是因為網路上很多教學都是很久以前的,並不確定現在還能不能用,這樣做也有一個好處就是不會浪費多餘的空間
metasploit-framework [master] % sudo gem install bundler
Fetching: bundler-1.7.12.gem (100%)
Successfully installed bundler-1.7.12
Parsing documentation for bundler-1.7.12
Installing ri documentation for bundler-1.7.12
1 gem installed

打開console後出現這個,那就執行「bundle install」
metasploit-framework [master] % ./msfconsole
Run `bundle install` to install missing gems.

接著又出現這個提示
An error occurred while installing nokogiri (1.6.5), and Bundler cannot
continue.
Make sure that `gem install nokogiri -v '1.6.5'` succeeds before bundling.

提示說請確定「gem install nokogiri -v '1.6.5'」執行成功,但是我測試下是無法(其實是看不太懂錯誤訊息),改執行以下指令
sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries 

接著問題又出來了,但是這次有明確提示說沒有安裝「libxml2」,所以就安裝吧


安裝libxml2
brew install libxml2

安裝完後要讓gem知道libxml2安裝在哪,以下指令
bundle config build.nokogiri "--use-system-libraries --with-xml2-include=/usr/local/opt/libxml2/include/libxml2"

好了之後回頭執行原本指令
sudo gem install nokogiri -v '1.6.5'

/**********************************************************************/
這邊我自己遇到的一個特別問題,這是我自己問題
因為為了寫這篇教學,所以我新安裝的了一個OSX,然後安裝Xcode的時候它抓到我原本磁碟上的Xcode,所以狀況是我現在有兩個OSX,一個是「Macintosh HD」和「Macintosh HD on USB」,那他抓到的Xcode路徑變成「/Volumes/Macintosh HD/Applications/Xcode.app」,出現了空白鍵,囧,空白鍵足以讓make指令崩潰,所以先修改磁碟名稱,再用以下指令修改Xcode路徑
sudo xcode-select --switch /Volumes/Macintosh/Applications/Xcode.app
錯誤訊息有提到說Compile Error請看log檔,結果就只出現/Volumes/Macintosh路徑錯誤,錯誤訊息要看啊QQ

所以如果不是像我一樣有這問題的話,安裝nokogiri時應該是不會出現安裝錯誤的問題
/**********************************************************************/

nokogiri安裝好了後,再繼續執行一次
bundle install


接著出現這個問題了,postgreSQL安裝錯誤,這個問題幾乎每個人都會遇到
An error occurred while installing pg (0.18.1), and Bundler cannot continue.
Make sure that `gem install pg -v '0.18.1'` succeeds before bundling.

首先用Homebrew安裝,以下指令
brew install postgresql

要注意有沒有錯誤訊息,這裡我出現一個Error
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink include/ecpg_config.h
/usr/local/include is not writable.

You can try again using:
  brew link postgresql
==> /usr/local/Cellar/postgresql/9.4.0/bin/initdb /usr/local/var/postgres
==> Summary
🍺  /usr/local/Cellar/postgresql/9.4.0: 2990 files, 40M

所以執行以下指令
brew link postgresql

不過應該會出現問題,無法寫入是因為權限問題
metasploit-framework [master] % brew link postgresql
Linking /usr/local/Cellar/postgresql/9.4.0... 
Error: Could not symlink include/ecpg_config.h
/usr/local/include is not writable.

這邊就算加上sudo Homebrew還是不給用,所以先修改一下權限,以下指令,直接修改「/usr/local」因為等等lib資料夾也有權限問題
sudo chown -R $USER /usr/local/

接著再執行一次
brew link postgresql

OK後記得要改回權限,不然可能會出問題
sudo chown -R root /usr/local/

這樣postgreSQL就安裝好了,所以再執行一次
sudo gem install pg -v '0.18.1'

接著他會找不到路徑
...
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for pg_config_manual.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***
...

以下指令指定他的編譯架構並安裝
sudo env ARCHFLAGS="-arch x86_64" gem install pg

安裝好後回頭執行
bundle install

接著又出現問題啦~
Errno::EACCES: Permission denied - metasploit-framework-4.11.0.pre.dev.gem
An error occurred while installing metasploit-framework (4.11.0.pre.dev), and
Bundler cannot continue.
Make sure that `gem install metasploit-framework -v '4.11.0.pre.dev'` succeeds
before bundling.

雖然有提示說「Make sure that...」,但是注意上面寫的「Permission denied」,簡單來說就是權限問題,所以用
sudo bundle install

之所以到這裡才用sudo安裝是因為說,前面安裝那麼多問題,如果一開始就用sudo的話容易有權限問題,而且現在加上sudo後,他第一句就說
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.

如果出現這樣表示安裝成功了(撒花)

這邊有個問題,就是用sudo跑完整個安裝程序後權限會變成root的,所以再跑一次安裝,讓他變回原本使用者權限
bundle install

首先先測試能不能打開msfconsole
./msfconsole

接著應該會出現問題,大概這樣

這也是權限問題,因為加上sudo其實就可以開啟了,確定是sudo問題,所以使用以下指令修改一些地方的權限
sudo chown -R $USER ~/.msf4
sudo chgrp -R admin ~/.msf4
sudo chmod -R a+r /Library/Ruby/Gems/2.0.0/gems/robots-0.10.1/

接著就可以進去msfconsole了~(不過問題還沒結束)

首先要測試Metasploit的資料庫能不能用,指令「search」看看有沒有出現
[!] Database not connected or cache not built, using slow search


首先指令看看連接狀況
msf > db_status
出現「no connection」其實我之前狀況是開不進去,因為還沒建立資料庫,所以就來建立資料庫吧~
(其他問題這裡有比較好的解答


先修改權限問題
sudo chown -R $USER /usr/local/var/

建立資料庫呢,首先先刪除原本的組態檔
rm -rf /usr/local/var/postgres

再建立
initdb /usr/local/var/postgres

接著再啟動PostgreSQL Server下面兩種指令,一個是讓他在terminal跑,一個是在背景跑,建議跑背景的
Terminal Server
postgres -D /usr/local/var/postgres
Background Server
pg_ctl -D /usr/local/var/postgres -l logfile start

首先建立一個使用者,密碼就不需要按Enter就好
createuser msf -P -h localhost

接著再建立一個資料庫給Metasploit使用
createdb -O msf msf -h localhost
接著以下指令編輯文件
vim /usr/local/share/metasploit-framework/config/database.yml

加上這些,注意空格
production:
 adapter: postgresql
 database: msf
 username: msf
 password: 
 host: 127.0.0.1
 port: 5432
 pool: 75
 timeout: 5

接著再重新打開msfconsole看看,這次初始化的時候出現了,就放著讓他等
[*] The initial module cache will be built in the background, this can take 2-5 minutes...

要確定什麼時候好就用「search」指令確定,如果沒有出現表示OK了
[!] Database not connected or cache not built, using slow search

最後為了方便開啟msfconsole,不然每次都要用「./msfconsole」,將這個「metasploit-framework」的路徑加入到環境變數裡,不然就是使用以下ln指令
for MSF in $(ls msf*); do ln -s /usr/local/share/metasploit-framework/$MSF /usr/local/bin/$MSF;done

之後開啟如果出現
[-] Failed to connect to the database: could not connect to server: Connection refused
 Is the server running on host "127.0.0.1" and accepting
 TCP/IP connections on port 5432?

應該是沒有執行PostgreSQL Server,一樣上面的指令讓他跑
pg_ctl -D /usr/local/var/postgres -l logfile start

關閉背景執行就用
pg_ctl -D /usr/local/var/postgres -l logfile stop




這樣就安裝完成了(累),這次安裝跟上次安裝不太一樣,一樣有出現問題的就是postgreSQL的安裝,我這篇也只是記錄我這次安裝遇到的問題,反正就出現問題的時候看錯誤訊息然後丟Google,底下的參考連結裡面也有一些常遇到的問題,就翻翻吧~


參考
Setting Up a Metasploit Development Environment: 'https://github.com/rapid7/metasploit-framework/wiki/Setting-Up-a-Metasploit-Development-Environment'
Installing Metasploit Framework on Mountain Lion and Mavericks: 'http://www.darkoperator.com/installing-metasploit-framewor/'
Installing Nokogiri: 'http://www.nokogiri.org/tutorials/installing_nokogiri.html'
Issue installing nokogiri in bundle install: 'http://stackoverflow.com/questions/23668684/issue-installing-nokogiri-in-bundle-install'
can not install postgres ruby gem [duplicate]: 'http://stackoverflow.com/questions/24130844/cant-install-postgres-ruby-gem'
Ruby gem environment issue - LoadError: no such file to load — robots: 'http://stackoverflow.com/questions/7518665/ruby-gem-environment-issue-loaderror-no-such-file-to-load-robots'
Fix metasploit “Database not connected or cache not built”: 'http://www.dailysecurity.net/2013/05/11/fix-metasploit-database-not-connected-or-cache-not-built/'



沒有留言:

張貼留言