Como manter as informações organizadas durante um teste de invasão com o Metasploit Framework

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.