Depois de muito pesquisar, consegui achar a solução mais elegante para instalar o Metasploit com PostgreSQL no Snow Leopard sem muitas gambiarras, então fica o guia pros amigos que quiserem fazer o mesmo.
Vamos por partes. Você vai precisar do git já instalado, para começar. Acredito que ele venha por padrão com o Snow Leopard, mas se não tiver, baixe em http://git-scm.com/download e instale.
Também é necessário ter a versão mais recente da tollchain da Apple (XCode et al). Baixe em http://devworld.apple.com/technologies/tools/.
Também é importante desisntalar o fink e o macports, caso tenha eles instalados, bem como tudo instalado por eles. Não se preocupe, depois você pode instalar tudo denovo com o Homebrew.
Agora vamos começar com o rvm.
rvm, Ruby Version Manager, é exatamente isso. Ele te permite instalar mais de uma versão do ruby no seu computador, sem gambiarras, limitado a uma espécie de sandbox fácil de ser removida, além de facilitar a troca de versões.
bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
Siga as instruções do instalador, depende da shell que você usa (eu uso zsh).
Agora instale os pacotes para o ruby com o rvm:
rvm package install readline
rvm package install iconv
rvm package install zlib
rvm package install openssl
Agora instale o ruby-1.9.2-p0, que é atualmente a melhor versão para rodar o Metasploit.
rvm install 1.9.2 -C --with-readline-dir=$HOME/.rvm/usr --with-iconv-dir=$HOME/.rvm/usr --with-zlib-dir=$HOME/.rvm/usr --with-openssl-dir=$HOME/.rvm/usr
Espere terminar, deve demorar um bocado, dependendo do teu sistema.
Agora vamos usar o 1.9.2 como default.
rvm 1.9.2 --default
Caso você deseje voltar para o ruby que veio com o sistema,
rvm system
o –default é opcional e torna ele o ruby padrão para novas shells.
Vamos ficar com o 1.9.2 agora.
Vale lembrar que com o rvm você não usa sudo em momento algum.
Agora vamos instalar o homebrew.
O Homebrew é um gerenciador de pacotes para o OSX que se integra lindamente ao sistema e usa a toolchain da Apple para compilar os programas, ao invés de instalar tudo do zero e fazer uma bagunça, como o macports ou o fink.
ruby -e "$(curl -fsS http://gist.github.com/raw/323731/install_homebrew.rb)"
Pronto, Homebrew instalado. Fácil, não?
Agora instalemos o PostgreSQL 9.0.
brew install postgresql
Podia ser mais fácil? Acho que não. Ele deve instalar o readline como dependência, mesmo você tendo instalado com o rvm. Não tem problema, é assim mesmo. Deste jeito temos certeza de que não há conflitos entre os headers por causa de patches de um gerenciador ou o outro.
Vá lá buscar um café porque isso demora um bocado também, ele vai compilar todo o Postgres.
Terminado isso, o homebrew já cria um superuser no PostgreSQL para ti, com o teu nome de usuário atual e senha.
Agora, criar um usuário pro Metasploit.
createuser msf_user -P
Dê uma senha para o usuário e responda não para as três perguntas.
Crie um banco de dados:
createdb --owner=msf_user msf_database
Pronto, agora vamos instalar o Metasploit.
Primeiro, a gem do Postgre.
gem install pg
Sem sudo!
Vá até www.metasploit.com/framework/download/ e baixe o tarball mais recente (o arquivo .tar.bz2)
Descompacte o arquivo e mova ele para /opt:
tar xvjf framework-3.4.1.tar.bz2
sudo mv msf3 /opt/metasploit
sudo chown -R $USER:$USER /opt/metasploit
sudo ln -sf /opt/metasploit/msf* /usr/local/bin/
Criemos um script para atualizar o metasploit pelo svn.
Com o seu editor favorito (vim, por favor) crie /usr/local/bin/msfupdate
#!/bin/sh
/usr/bin/svn update /opt/metasploit
Dê permissão de execução para o arquivo
sudo chmod 777 /usr/local/bin/msfupdate
Rode msfupdate para atualizar o framework e rode msfconsole para iniciar o metasploit.
msf> db_driver postgresql
msf> db_connect msf_user:[senha]@127.0.0.1:5432/msf_database
msf> db_hosts
Agora edite seu ~/.msf3/msfconsole.rc para iniciar a db automaticamente cada vez que você iniciar o metasploit.
db_driver postgresql
db_connect msf_user:[senha]@127.0.0.1:5432/msf_database
db_workspace -a MyProject
Rode o msfconsole mais uma vez para ter certeza de que tudo funcionou e seja feliz.