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/'
沒有留言:
張貼留言