Texto traduzido e adaptado de “Use Metasploit’s Database to Stay Organized & Store Information While Hacking“.
Quando realizamos um teste de invasão, a habilidade de se manter organizado é essencial para obtermos sucesso no teste. Na fase de obtenção de informação, é possível que tenhamos muitos dados sobre o nosso alvo, e por isso, devemos armazená-los corretamente, a fim de facilitar a interpretação dos mesmos e auxiliar nas fases posteriores.
É neste momento que o Metasploit Framework se torna uma ferramenta fundamental, pois contém um banco de dados interno que permite o armazenamento eficiente de informações e a capacidade de utilizar essas informações para entender melhor o alvo, o que acaba levando a uma exploração mais bem-sucedida.
Ao longo deste post, ensinaremos como utilizar essa poderosa ferramenta para acompanhar as informações e permanecer organizados durante testes intensos. Além disso, entendendo e usando o banco de dados Metasploit integrado ao máximo, podemos configurá-lo, personalizar espaços de trabalho, armazenar resultados de varreduras do Nmap e reunir e visualizar informações descobertas, como serviços, credenciais e hashes de senha.
Para isso, utilizaremos um laboratório composto de duas máquinas virtuais: Kali Linux (host) e Metasploitable 2 (Alvo), elas devem estar configuradas para uma rede NAT (NATnetwork). Entretanto, o Metasploit Framework está disponível para outras distribuições Linux, logo, os resultados encontrados serão semelhantes.
Para evitar erros, verifique se seu Kali Linux está atualizado através dos comandos a seguir:
#apt-get update && apt-get upgrade -y && apt-get dist-upgprade -y
1º Passo – Configuração inicial
Antes de iniciarmos o Metasploit, precisamos verificar se o serviço PostgreSQL está ativo. Para isto, digite o comando abaixo no terminal:
#systemctl status postgresql
Caso seu serviço esteja desativado, a saída no terminal deverá ser semelhante a imagem abaixo.
Este serviço é utilizado pelo banco de dados da ferramenta, logo, é necessário ativá-la, por meio do comando:
#systemctl start postgresql
Após ativar o serviço, devemos verificar novamente o seu status, novamente utilizaremos o comando:
#systemctl status postgresql
Se seu serviço foi inicializado corretamente, a saída do comando será semelhante a imagem abaixo.
Caso você nunca tenha executado o Metasploit, podemos inicializar o seu banco de dados com o comando msfdb, que cria o usuário padrão, o banco de dados e as informações relevantes referentes ao banco de dados.
#msfdb init
Após a execução do comando #msfdb init
, a saída deverá ser parecida com a da imagem abaixo.
Se você já executou o Metasploit e possui um banco de dados criado, podemos verificar o status semelhante do mesmo. Para isso, utilizaremos o seguinte comando:
#msfdb status
Se sua saída está de acordo com a imagem acima, agora, podemos iniciar o Metasploit usando o comando msfconsole .
#msfconsole
2º Passo – Ambiente de trabalho
Quando estiver em funcionamento, use a palavra-chave help ou ? para exibir o menu de ajuda. No menu de ajuda, haverá uma seção para comandos do banco de dados chamada Database Backend Commands.
O resultado acima mostra que também podemos verificar o status do bando de dados dentro da ferramenta, através do comando:
msf5 > db_status
O Metasploit permite utilizar diferentes ambientes de trabalho para armazenar diversos cenários de teste de invasão, permitindo que as varreduras e sessões separadas sejam utilizadas simultaneamente. Isso mantém tudo organizado e em ordem. Para visualizar a área de trabalho atual, use a palavra-chave do workspace.
A imagem acima mostra que a nossa única opção disponível é o espaço de trabalho padrão. Entretanto, existem diferentes opções para este comando, e podemos visualizá-las por meio da inclusão parâmetro -h .
msf5 > workspace -h
O resultado acima nos mostra que podemos criar, deletar, renomear e trocar de ambientes de trabalho. Por exemplo, temos a capacidade de adicionar um espaço de trabalho com o parâmetro -a .
msf5 > workspace -a ambiente01
Além da criação de um novo ambiente de trabalho, o comando também realiza a troca automaticamente para ele. Podemos verificar isso, executando o comando:
msf5 > workspace
Para trocarmos de voltar para o ambiente “default“, devemos utilizar o comando workspace, seguido do nome do ambiente de trabalho.
msf5 > workspace default
Para excluir um ambiente de trabalho, use o parâmetro -d seguido do nome do ambiente de trabalho.
msf5 > workspace -d ambiente01
3º Passo – Varreduras Nmap
Outro recurso poderoso que vale a pena ser destacado é a capacidade do banco de dados do Metasploit de interagir com o Nmap. Essa funcionalidade permite ter resultados de qualquer varredura Nmap armazenados e organizados por alvo, tornando o reconhecimento muito mais fácil e eficaz. A seguir, temos um exemplo de como gerar uma saída XML do Nmap.
nmap -T4 -A -p 1-1000 10.0.2.4 -oX ˜/Desktop/nmap.xml
Além disso, o Metasploit permite importar os resultados salvos de uma varredura com o comando db_import , seguido pelo local do arquivo.
msf5 > db_import nmap.xml
Caso você prefira, o Metasploit também oferece a possibilidade de realizar uma varredura Nmap diretamente do console. Apenas use o comando db_nmap seguido por quaisquer opções que você usaria normalmente para uma varredura. Os resultados da verificação serão armazenados no banco de dados para que possamos usar como quisermos.
msf5 > db_nmap -T4 -A -p 1-1000 10.0.2.4
4º Passo – Visualizando Hosts & Serviços
Agora que já obtemos alguma informações sobre o nosso alvo, vamos aprender a visualizá-las. Para isso, basta usar o comando hosts para listar informações sobre os alvos atuais armazenados no banco de dados.
msf5 > hosts

A imagem acima mostra que podemos adicionar ou excluir hosts manualmente, modificar as informações e adicionar comentários e várias outras tarefas de manutenção aqui. Uma opção útil é a capacidade de listar apenas certas colunas, para isso use o parâmetro -c seguido por uma lista separada por vírgulas das colunas a serem mostradas.
msf5 > hosts -c address,mac,os_name
É possível também visualizar os serviços relacionados com o nosso alvo, e exibi-los em uma lista de serviços com o comando services.
msf5 > services
Como podemos ver, esse comando mostra o host, o nome do serviço, a porta e outras informações relacionadas ao serviço. Mais uma vez, podemos ver mais opções para este comando colocando o parâmetro -h .
msf5 > services -h
Opções semelhantes ao comando hosts, como a capacidade de adicionar e excluir serviços manualmente, filtrar por nome de coluna e pesquisar por palavra-chave.
5º Passo – Visualizando Hosts & Serviços
Nesse último passo, trataremos de dados valiosos, como credenciais e hashes de senha. O comando creds exibirá informações atuais sobre as credenciais descobertas.
msf5 > creds
Como podemos ver, não há nenhuma credencial, então vamos enumerar algumas informações de login.
Metasploit tem um scanner auxiliar para o MySQL a fim obter credenciais válidas. Vamos executar isso contra o nosso alvo usando a conta root e uma senha em branco.
O scanner foi bem-sucedido, então agora podemos verificar se o banco de dados foi preenchido com essas credenciais.
msf5 > creds
Agora, podemos ver informações sobre o host e serviço, bem como as informações de login em root com uma senha em branco. Existem mais opções para credenciais além desse uso básico, que podem ser visualizadas com o parâmetro -h .
Além disso, temos a capacidade de armazenar outras informações descobertas, como hashes de senha. Para visualizar as descobertas atuais, use o comando loot .
msf5 > loot
Novamente, como não fizemos nada ainda, então não há resultados.
Agora, iremos obter alguns hashes do nosso alvo. Primeiro, precisamos comprometê-lo e obter um shell de root. Podemos fazer isso de várias maneiras, mas, por enquanto, podemos explorar uma vulnerabilidade encontrada em um serviço Java. Assim que executarmos o ataque, faremos o background da sessão.
Você pode se deparar com um erro de HTTPDELAY ao executar o ataque
Para contornar esse problema, temos que ver a sessão que está aberta e interagir com ela, e depois, colocá-la em background e usar o módulo de pós-exploração.
msf5 exploit(multi/misc/java_rmi_server) > sessions -i 1
Em seguida, usando o módulo, obtemos os hashes desse sistema. Use a sessão que acabamos de usar e execute a exploração.
msf5 exploit(multi/misc/java_rmi_server) > use linux/gather/hashdump
Parece que foram encontrado alguns hashes, mas vamos verificar o banco de dados agora através do comando loot.
Agora podemos ver informações sobre os hashes encontrados, como o tipo e o caminho do arquivo. Como os outros recursos do banco de dados, podemos ver mais algumas opções para loot, exibindo a ajuda por meio da inclusão do parâmetro -h.
msf5 > loot -h
Outra funcionalidade muito interessante presente no Metasploit, é possibilidade de exportar todos os dados obtidos através do comando db_export.
msf5 > db_export -h
Para exportar, basta especificar o formato do arquivo e o caminho para salvar, e todas as informações armazenadas no banco de dados serão exportadas para um arquivo, possibilitando o uso posterior.
msf5 > db_export -f xml /root/Desktop/output.xml
Neste artigo, abordamos vários recursos do Metasploit Framework que nos permitem acompanhar as informações e manter-se organizado durante um teste de invasão. Dentre eles estão, como configurar o banco de dados e personalizar os espaços de trabalho, como utilizar o Nmap para armazenar resultados de varredura, reunir e visualizar informações descobertas, como serviços, credenciais e hashes de senha. Diante do exposto, a capacidade de importar e exportar dados diretamente no Metasploit nos permite permanecer organizados e atualizados sobre os dados.