最近看《Metasploit渗透测试指南》,第二章开始有具体操作举例,于是准备在电脑上安装MSF终端用于测试。
MSF终端(msfconsole),一种Metasploit框架的用户接口。
首先到官网下载metasploit framework,我是Mac OSX10.11.2,64bit,对应下载链接:http://osx.metasploit.com/metasploitframework-latest.pkg
安装成功之后,发现并有像其他APP一样在Launchpad里面有显示图标,于是用Spotlight直接搜索msfconsole,command+enter打开对应文件夹,找到对应路径(图1):
在terminal中切换到该路径,尝试执行"./msfconsole",报错(图2):
第一次接触,什么都不清楚,查:
- bundle utility, short for Bundler //bundle实用程序,简称bundler
- gem help >>> RubyGems is a sophisticated package manager for Ruby.
根据图2中的报错提示,执行:(sudo)
$ gem install bundler
【此句安装bundler,之后Bundler会根据gemfile自动安装相关依赖项,在当前目录下可看到gemfile文件】由于不理解,再次尝试执行“./msfconsole”,(图3):
根据图3提示,执行:bundle install
此时才正式安装依赖项,可以用以下命令查看所有依赖项: gem listtzinfo安装失败,由错误信息知失败原因为连接被重置找不到资源,上网查原因,GFW所致,更改gem服务器,常用的源:
- http://rubygems.org/
- http://gems.github.com
- http://gems.rubyforge.org
- https://ruby.taobao.org 【连接不上的时候看是否是https】
相关命令:
1. 显示当前使用的sources:gem sources
2. 添加一个source: gem sources -a url地址在淘宝的网站找到另一种方法——用Bundler的Gem源代码镜像命令:
$ bundle config mirror.https://rubygems.org https://ruby.taobao.org
OK,此时有关“Connection reset by peer - SSL_connect”的报错后续都没有出现。然而中途又有pg安装失败的提示,根据错误提示,执行:$ sudo gem install pg -v '0.18.4'
报错“ Failed to build gem native extension”( 图5): 根据提示在命令行中指明未找到的文件位置,用Spotlight查找pg_config,我的在/opt/metasploit-framework/embedded/bin/目录下,执行命令:$ sudo gem install pg -- --with-pg_config=/opt/metasploit-framework/embedded/bin/pg_config
【不清楚为什么用-v指明pg的版本就会报错invalid option】执行结果,解决了一部分问题,前面缺失的头文件都找到,报错“Can't find the PostgreSQL client library (libpq)”(图6):
根据提示,安装postgresql。使用homebrew之前,先更新(否则可能报错),再检查(后面有一步的错误能看出第二步检查的重要性了):
$ brew update
$ brew doctor
然而简单一个brew update都会报错,根据提示修改权限才执行成功(图7):
$ sudo chown -R $(whoami):admin /usr/local
更新完成之后(是的,我一开始没有执行brew doctor),安装postgresql:
$ brew install postgresql
安装lunchy(Lunchy is a helpful gem that will allow you to easily start and stop Postgres):$ sudo gem install lunchy
由于权限问题报错“ Operation not permitted”,( 图8):查看对应的目录权限(图9):
$ sudo gem install -n /usr/local/bin/ lunchy
Start/Stop Postgres:
$ mkdir -p ~/Library/LaunchAgents/
$ cp /usr/local/Cellar/postgresql/9.5.0/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
$ lunchy start postgres
启动之后会提示是否使用postgresql接受网络连接,选择允许。然后使用:$ ARCHFLAGS="-arch x86_64" bundle install
【不安装postgresql时,使用以上命令依然报错。】解决了pg的问题之后,新的问题又来了(图10)。。。
和前面一样,按提示操作:
$ sudo gem install recog -v '2.0.14'
报错,ruby版本过低( 图11):$ curl -L get.rvm.io | bash -s stable
$ source ~/.bashrc
$ source ~/.bash_profile
$ rvm -v //测试安装是否正常
用rvm升级ruby:
$ ruby -v //查看当前ruby版本
$ rvm list known //列出已知的ruby版本
$ rvm install ruby-2.1.7 //这个是装rvm之后提示可安装的版本
用rvm装ruby的时候,刚才偷懒不检查brew的问题就来了(图12):
根据提示:$ brew link autoconf
结果( 图14):推测是由于更新了ruby导致的问题,于是卸载重装Bundler:
$ gem help command //查询所有gem命令
$ gem uninstall bundler
$ gem install bundler
再次执行图15中的命令,成功。执行"./msfconsole"测试:OK,终于成功啦。
唐僧终于取到西经,回看这篇文章颇有小学生记流水账的风范,看来我又年轻了一点……
关键错误信息有标红,收获:践行提示命令,注意错误原因,不能半途而废(虽说中途装了个kali差点准备放弃Mac)。
最后。。为什么缩进没了?文章看起来好乱。
1月17日update:
找到一个比较宏观的有助于理解安装过程:http://www.asuri.co/class/archives/851
书中出现msfcli(MSF命令行),但是在自己安装的目录下面没有找到,最后发现是新版本的metasploit去掉了msfcli相关部分,官方推荐在msfconsole执行时增加"-x"选项以取代msfcli。具体使用方法:https://community.rapid7.com/community/metasploit/blog/2015/07/10/msfcli-is-no-longer-available-in-metasploit