Aplicação de um modelo simplificado das metodologias do pentesting

952 visualizações

Publicada em

Trabalho de Conclusão de Curso apresentado no final da Graduação em Ciências da Computação no Centro Universitário de João Pessoa - UNIPÊ em 2012.

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
952
No SlideShare
0
A partir de incorporações
0
Número de incorporações
11
Ações
Compartilhamentos
0
Downloads
23
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aplicação de um modelo simplificado das metodologias do pentesting

  1. 1. CENTRO UNIVERSITÁRIO DE JOÃO PESSOA - UNIPÊ PRÓ-REITORIA DE ENSINO DE GRADUAÇÃO CURSO DE BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO VÍTOR MELO ARRUDA LEITE APLICAÇÃO DE UM MODELO SIMPLIFICADO DAS METODOLOGIAS DO PENTESTING João Pessoa- PB 2012
  2. 2. VÍTOR MELO ARRUDA LEITE APLICAÇÃO DE UM MODELO SIMPLIFICADO DAS METODOLOGIAS DO PENTESTING Monografia apresentada ao Curso de Bacharelado em Ciência da Computação do Centro Universitário de João Pessoa - UNIPÊ, como pré- requisito para obtenção do grau de Bacharel em Ciência da Computação, sob a orientação do Prof. Esp. Osmar Ribeiro Leão João Pessoa- PB 2012
  3. 3. A474m Leite, Vítor Melo Arruda Aplicação de um Modelo Simplificado das Metodologias do Pentesting / Vítor Melo Arruda Leite. -- João Pessoa, 2012. 78f. Monografia (Curso de Ciência da Computação) – Centro Universitário de João Pessoa - UNIPÊ 1. Segurança 2. Pentesting 3. Teste de Penetração I. Título. UNIPÊ / BC CDU – 004.021
  4. 4. VÍTOR MELO ARRUDA LEITE APLICAÇÃO DE UM MODELO SIMPLIFICADO DAS METODOLOGIAS DO PENTESTING Monografia apresentada ao Curso de Bacharelado em Ciência da Computação, do Centro Universitário de João Pessoa - UNIPÊ, como pré-requisito para a obtenção do grau de Bacharel em Ciência da Computação. Apreciado pela Banca Examinadora composta pelos seguintes membros: Aprovado em ______/_____/2012 BANCA EXAMINADORA ______________________________________________ Prof. Esp. Osmar Ribeiro Leão (UNIPÊ) Orientador ______________________________________________ Prof. Esp. Gerson Domingos de Castro Filho (UNIPÊ) ______________________________________________ Prof. Ms. Jadilson Alves de Paiva (UNIPÊ)
  5. 5. Dedico este trabalho a minha família, aos professores e amigos que conquistei ao longo dos quatro anos de graduação.
  6. 6. AGRADECIMENTOS Gostaria de agradecer primeiramente a Deus, por iluminar o meu caminho nesses quatro anos de graduação, principalmente nos momentos difíceis. Pois nas minhas orações particulares o senhor sempre me tranquilizou, me dando forças para nunca desistir. Em segundo aos meus pais, Christianne Melo Leite e Francisco de Assis Leite Filho e ao meu irmão Filipe Melo Arruda Leite, que sempre estiveram me dando carinho e incentivo, até mesmo nos momentos em que meu pessimismo tentou me derrubar. Ao meu professor orientador, Osmar Ribeiro Leão, por também ter me demonstrado que eu devo ter mais confiança em mim mesmo, pois assim terei não só sucesso nos trabalhos acadêmicos e profissionais, mas na vida como um todo. E ao meu tio Danilo Rangel Arruda Leite pela co-orientação que veio muito bem complementar a orientação do professor Osmar. A todos os meus amigos, que estiveram presentes nos momentos alegres e tristes, que carregaram comigo o peso da pressão do trabalho de conclusão de curso e também com suas palavras de incentivo, contribuíram para que eu me esforçasse cada vez mais e terminasse tudo bem. Aos membros da banca, pelas contribuições e orientações oferecidas.
  7. 7. “O resguardar-nos da derrota está em nossas mãos, mas a oportunidade para derrotar o inimigo é fornecida por ele próprio”. Sun Tzu
  8. 8. RESUMO Atualmente, as empresas dependem, cada vez mais, dos sistemas de informação e da Internet para estabelecer seus negócios, mas, com a descoberta de diversas falhas e ataques às redes de computadores, a segurança se tornou um ponto essencial. O Penetration Testing, conhecido por sua abreviatura Pentesting, cujo significado é Testes de penetração, tornou-se imprescindível para as empresas que buscam corrigir as vulnerabilidades existentes antes de elas serem exploradas por pessoas mal intencionadas. Estes testes são simulações de ataques, à procura de pontos fracos em seus sistemas, redes e serviços. Assim, o objetivo deste trabalho é abordar como são aplicadas as fases de um Pentesting, através de um estudo de caso, utilizando máquinas virtuais. Palavras-chave: Segurança. Pentesting. Testes de penetração.
  9. 9. ABSTRACT Nowadays, companies are more dependent on information system and Internet to realize business, but with the discovery of many breaches and attacks to computer networks, security became an important role. Known as its abbreviation Pentesting, originated from the english word Penetration testing, these tests became essentials for a company who wants to fix their vulnerabilities, before someone with bad intentions, because they are simulation attacks, searching weaknesses on their system, network and services. Therefore, the objective of this work is to show how the Pentesting phases are applied using study cases with virtual machines. Keywords: Security. Pen-testing. Penetration testing.
  10. 10. LISTA DE ILUSTRAÇÕES FIGURA 01: Relatório da Cyber Defense ................................................................. 20 FIGURA 02: Volume de vulnerabilidades reportadas entre 1999-2011 .................... 21 FIGURA 03: Estados das vulnerabilidades ............................................................... 22 FIGURA 04: Infecções por Malwares em 2011 ......................................................... 23 FIGURA 05: Riscos na segurança ............................................................................ 25 FIGURA 06: Exemplo real de um Pentesting ............................................................ 28 FIGURA 07: Fases do Pentesting ............................................................................. 33 FIGURA 08: Consultando o whois ............................................................................ 36 FIGURA 09: Usando o Netcraft ................................................................................. 37 FIGURA 10:Usando o nslookup ................................................................................ 37 FIGURA 11:Usando o tctraceroute ........................................................................... 38 FIGURA 12: Varredura com o Nmap em uma máquina Windows ............................ 40 FIGURA 13: Detectando o sistema operacional com o Nmap .................................. 41 FIGURA 14: Criando uma política de varredura ....................................................... 44 FIGURA 15: Capturando o tráfego do protocolo FTP ............................................... 45 FIGURA 16: Descobrindo a senha com o John the ripper ........................................ 45 FIGURA 17: Exemplo clássico de Cross-Site-Scripting ............................................ 46 FIGURA 18: Consulta executada no banco de dados .............................................. 47 FIGURA 19: Demonstração de ataque direto a url ................................................... 47 FIGURA 20: Estrutura de Ataque DDos .................................................................... 49 FIGURA 21: Estrutura de um programa na memória ................................................ 50 FIGURA 22: Código C vulnerável ao Buffer-overflow ............................................... 51 FIGURA 23: Arquitetura do Metasploit ...................................................................... 54 FIGURA 24: Tela inicial do MSF ............................................................................... 55 FIGURA 25: Executando o Metasploit Framework ................................................... 58
  11. 11. FIGURA 26: Ambiente da simulação ........................................................................ 60 FIGURA 27: Arquitetura de um Canal XSS............................................................... 62 FIGURA 28: Identificando as portas abertas............................................................. 63 FIGURA 29: Lista de vulnerabilidades ...................................................................... 65 FIGURA 30: Descrição da vulnerabilidade ms08-67 ................................................. 65 FIGURA 31: Encontrando o exploit correto ............................................................... 66 FIGURA 32: Código da função NetpwPathCanonicalize .......................................... 67 FIGURA 33: Sobrecarga de solicitações .................................................................. 67 FIGURA 34: Parâmetros configurados ..................................................................... 68 FIGURA 35: Executando o exploit ............................................................................ 68 FIGURA 36: Obtendo o prompt do Windows ............................................................ 69 FIGURA 37: Informações do ambiente explorado .................................................... 69 FIGURA 38: Executando o VNC ............................................................................... 70 FIGURA 39: Criando um backdoor ........................................................................... 70 FIGURA 40: Limpando os logs ................................................................................. 71
  12. 12. LISTA DE QUADROS QUADRO 01: Comparativo de aderência ................................................................. 31 QUADRO 02: Comparativo de prazos ...................................................................... 31 QUADRO 03: Comparativo de pré-requisitos ........................................................... 32 QUADRO 04: Comandos do Metasploit Framework ................................................. 55 QUADRO 05: Comandos do Meterpreter ................................................................. 58
  13. 13. LISTA DE ABREVIATURAS E SIGLAS SI - Segurança da Informação TI - Tecnologia da Informação ABNT – Associação Brasileira de Normas Técnicas CIA - Confidentiality, Integrity, Availability SDA - Security & Defense Agenda NIST – National Institute of Standars and Technology OWASP – Open Web Application Security Project ISSAF – Information System Assessment Framework NDA - Non-Disclosure Agreement IP – Internet Protocol DNS – Domain Name System TCP – Transmission Control Protocol ICMP – Internet Control Message Protocol XSS – Cross-site-scripting PHP – Hypertext Preprocessor ASP – Active Server Pages JSP – Java Server Pages SQL – Structured Query Language Dos – Denial of Service DDos – Distributed Denial of Service IP – Internet Protocol MSF – Metasploit Framework REX – Ruby Extension VMs – Virtual Machines NAT - Network Address Translation RPC – Remote Procedure Call VNC – Virtual Network Computing
  14. 14. SUMÁRIO 1. INTRODUÇÃO ............................................................................................. 14 1.1 RELEVÂNCIA DO ESTUDO ....................................................................... 15 1.2 OBJETIVOS ............................................................................................... 16 1.2.1 Objetivo geral ........................................................................................ 16 1.2.2 Objetivos específicos ............................................................................ 16 1.3 ORGANIZAÇÃO DO TRABALHO ............................................................... 16 2. FUNDAMENTOS DA SEGURANÇA COMPUTACIONAL........................... 17 2.1 SEGURANÇA DA INFORMAÇÃO .............................................................. 17 2.2 PRINCÍPIOS DA SEGURANÇA DA INFORMAÇÃO ................................... 17 2.3 NECESSIDADE DA SEGURANÇA NAS EMPRESAS ................................ 18 2.4 COMPONENTES DA SEGURANÇA DA INFORMAÇÃO ............................ 20 2.4.1 Ativo ....................................................................................................... 20 2.4.2 Vulnerabilidades .................................................................................... 21 2.4.3 Formas de Ameaças.............................................................................. 23 2.4.4 Riscos ..................................................................................................... 24 3. PENTESTING .............................................................................................. 27 3.1 DEFINIÇÃO ................................................................................................ 27 3.2 TIPOS DE TESTES .................................................................................... 29 3.3 METODOLOGIAS ...................................................................................... 29 3.4 FASES DOS TESTES DE PENETRAÇÃO ................................................. 32 3.4.1 Planejamento e Preparação .................................................................. 33 3.4.2 Coleta de Informações .......................................................................... 34 3.4.3 Identificação de Vulnerabilidades ........................................................ 43 3.4.4 Exploração ............................................................................................. 44 3.4.5 Pós-Exploração ..................................................................................... 51 3.4.6 Relatório ................................................................................................. 52 4. METASPLOIT FRAMEWORK ..................................................................... 53 4.1 ARQUITETURA .......................................................................................... 53 4.1.1 Interface ................................................................................................. 54 4.1.2 Módulos .................................................................................................. 56 4.2 ANATOMIA DA EXPLORAÇÃO .................................................................. 58 5. ESTUDO DE CASO ..................................................................................... 60 5.1 TOPOLOGIA DA SIMULAÇÃO ................................................................... 60 5.1.1 Ambiente operacional ........................................................................... 61 5.1.2 Simulação .............................................................................................. 61 6. RESULTADOS OBTIDOS ........................................................................... 72 6.1 CONSIDERAÇÕES FINAIS ....................................................................... 73 REFERÊNCIAS BIBLIOGRÁFICAS ................................................................ 74
  15. 15. 14 1. INTRODUÇÃO Desde início dos anos 80, com o surgimento dos computadores pessoais e o crescimento da rede mundial de computadores, a informática vem passando por um avanço impressionante. Tal aumento possibilita, hoje, que as próprias pessoas possam compartilhar informações e recursos no ambiente virtual, e que as organizações realizem suas atividades, mensurem seus lucros e gastos de forma mais eficiente e objetiva. Mas a facilidade com a qual estas informações podem ser disponibilizadas cresceu a ponto de pessoas maliciosas poderem acessá-las. Como a informação já se transformou em um objeto de grande valor e consumo, o dano a ela causado ou a sua perda pode gerar grandes prejuízos ou até a quebra da empresa. Assim, por estar constantemente exposta às práticas criminosas encontradas na Internet, a Segurança da Informação - SI passou a receber a devida atenção. Mesmo com a importância adquirida pela segurança nos dias atuais, algumas organizações ainda colocam a proteção dos seus dados em segundo plano, somente passando a ser um ponto relevante quando incidente com elas acontece. Algumas equipes de Tecnologia da Informação - TI consideravam que um bom antivírus era o suficiente para resolver qualquer problema. Mas a segurança da informação hoje é muito mais do que isso; é uma área bastante abrangente, onde, a partir de diversos procedimentos, pode-se garantir a privacidade das informações dos usuários. Para as organizações que procuram manter o seu negócio em andamento de certa forma confiável, o teste de penetração, mais conhecido como Pentesting, ou Penetration Testing, vem se tornando uma prática de fundamental importância. O Pentesting são simulações de ataques reais a uma rede, aplicação, sistema ou ferramenta, permitindo identificar e explorar vulnerabilidades ou uma má configuração do sistema, falhas de software ou hardware, com os mesmos métodos dos crackers, mas de forma ética, para corrigir as falhas encontradas em uma entidade. Diante da realidade apresentada, este trabalho busca demonstrar os conceitos que devem ser bem entendidos e os processos que necessitam ser aplicados sequencialmente para a realização de um Pentesting bem sucedido. Com o intuito de mostrar como esses passos funcionam na prática, optou-se por realizar uma simulação, utilizando o Metasploit Framework em uma máquina virtual cliente, que é uma plataforma de desenvolvimento de código aberto, considerada um padrão para testes de penetração e uma segunda máquina virtual como sendo o lado servidor.
  16. 16. 15 1.1 RELEVÂNCIA DO ESTUDO Com os avanços tecnológicos ocorridos em diversas áreas profissionais, conforme registra Vieira (2009), o movimento onde o conhecimento determina quem tem o poder sobre a informação, deu origem à Era Digital. Mas, apesar deste momento histórico contribuir bastante para o crescimento de toda a humanidade, gerando novas formas das pessoas se relacionarem, trabalharem e fazerem negócios, ele tornou-se mais um alvo de criminosos, por esta razão os crimes cibernéticos são tão preocupantes quanto os do mundo real. Quando a Internet surgiu, os crackers faziam de tudo para ficarem famosos, espalhando os vírus que causassem o maior dano possível. Mas hoje esses infratores são silenciosos, pois o objetivo é financeiro. Ou seja, as informações roubadas nem sempre são para seu uso próprio. Em algumas situações elas são revendidas a outros criminosos, o que é indicativo de que o crime on-line está se tornando uma atividade cada vez mais profissional. De acordo com estudos realizados pela empresa de segurança on-line Norton (2011), o prejuízo global causado por crimes virtuais é por volta de U$ 388.000.000.000 por ano. Este número alarmante é indício de que implantar políticas de Segurança da Informação tornou-se mais que uma obrigação para que os sistemas das organizações consigam sobreviver bem e a salvo da competitividade do mercado. O Pentesting, nesse cenário, revela-se uma das formas que podem contribuir para manter a segurança nas empresas. Assim, o presente trabalho busca mostrar os passos e os benefícios oferecidos por esses testes, para as instituições que optem por realizá-los.
  17. 17. 16 1.2 OBJETIVOS 1.2.1 Objetivo geral Aplicar a proposta de um modelo simplificado que torne o entendimento acadêmico do Pentesting facilitado para os estudantes interessados em iniciar na área. 1.2.2 Objetivos específicos  Apresentar como o Pentesting pode ser classificado, o levantamento das informações que deve ser feito, as suas fases e as metodologias necessárias para sua aplicação;  Descrever as interfaces e módulos do Metasploit Framework, os quais serão utilizados no Pentesting;  Demonstrar a eficácia do modelo simplificado a partir da simulação em máquinas virtuais. 1.3 ORGANIZAÇÃO DO TRABALHO Este trabalho monográfico está estruturado em cinco capítulos. No Capítulo 2 são introduzidos alguns fundamentos da Segurança Computacional, com ênfase nos seus princípios e componentes, aspectos importantes para o entendimento do Pentesting. No Capítulo 3 são apresentados, inicialmente, uma definição sobre Pentesting. Em seguida, é demonstrada a diferença entre um hacker ético e um cracker, e são explicitados quais são os tipos de ataques, testes e metodologias existentes para sua aplicação. Por último, são explicadas detalhadamente as etapas ou fases essenciais do Pentesting. No Capítulo 4 são apresentados, de forma básica, a arquitetura, compostas por interfaces e módulos, do Metasploit Framework que são utilizados nos testes de vulnerabilidades nas diversas plataformas, sistemas operacionais, e servidores. No Capítulo 5 são demonstrados os resultados da aplicação do modelo simplificado que foram realizados através da simulação de um Pentesting com o auxílio do Metasploit Framework, em uma máquina virtual atacante contra uma máquina virtual-alvo, com a utilização do Windows XP SP2 e observando todos os procedimentos apresentados nos capítulos anteriores.
  18. 18. 17 2. FUNDAMENTOS DA SEGURANÇA COMPUTACIONAL Neste capítulo será tratado da segurança computacional, o conceito, princípios que constituem a base da segurança, motivos que levam as empresas a buscá-la, a importância do ativo nas organizações, as principais formas de ameaças, como também os métodos de ataques mais utilizados atualmente. 2.1 SEGURANÇA DA INFORMAÇÃO Nos dias de hoje, as empresas estão adotando a tecnologia como fator estratégico, e utilizando sistemas de informação que auxiliam a gestão e operação das suas atividades diárias, bem como a tomada de decisões, graças ao advento da informática. Como tais facilidades expõem os computadores às vulnerabilidades e às ameaças, surgiu para combatê-las a Segurança da Informação. Sendo a mesma definida pela norma (ABNT NBR 17799:2001) como sendo a proteção da informação de diversos tipos de ameaças para garantir a continuidade, minimizar o risco, maximizar o retorno sobre os investimentos e as oportunidades de negócio. Sabe-se que os sistemas de informação são colocados à prova todos os dias, pois como menciona Urubatan (2004), estar conectado a Internet aumentam as chances de ser invadido, por ser um ambiente frequentemente exposto a ameaças, vulnerabilidades e ataques. Assim, é fato que, tendo um controle sobre a implementação de políticas, práticas, e procedimentos organizacionais, os itens que compreendem a SI, como segurança do perímetro da rede de computadores, segurança física, de estação de trabalho local e o treinamento e comportamento do usuário, serão devidamente alcançados. 2.2 PRINCÍPIOS DA SEGURANÇA DA INFORMAÇÃO A informação pode existir de diversas formas, seja escrita, falada ou armazenada eletronicamente. Não importando qual formato ela assuma, segundo o padrão da (ABNT ISO/IEC 1799: 2001), um sistema computacional é considerado seguro quando ele preserva as características básicas da Segurança da Informação, conhecida como a tríade
  19. 19. 18 Confidentiality, Integrity e Availability - CIA1. Esses três atributos contribuem, hoje, para auxiliar os projetistas, na análise, no planejamento e na implantação da segurança de T.I e nas entidades que pretendem proteger seus dados. Por esta razão ambos são descritos a seguir:  Confidencialidade: propriedade que garante a proteção da informação do acesso não autorizado. Isto significa que os dados só são acessíveis por quem obtiver a permissão. Por exemplo, se alguém mal-intencionado descobrir o número do cartão de crédito de uma pessoa, poderá proporcionar grandes prejuízos financeiros para a vítima;  Disponibilidade: ponto vital para o funcionamento correto de uma organização, composto pela proteção dos serviços que asseguraram a indisponibilidade sem autorização (MEDEIROS, 2001), assim os dados estarão ao alcance do usuário sempre que ele precisar. Um exemplo da quebra deste princípio pode ser a tentativa vã de cadastrar-se em um concurso pela Internet, devido ao site ou parte dele estar indisponível;  Integridade: considerada quando existem informações que devem ser protegidas contra modificações não autorizadas, como escrita, remoção, criação, significando que nada foi acrescentado ao dado original. Sites que foram alterados por ação dos crackers é um bom exemplo da perda deste princípio. Uma vez que tais princípios são dependentes um dos outros, se eles forem estabelecidos corretamente, o nível de segurança pretendido pode ser alcançado, e talvez ainda mais fortalecido com uma política de segurança que garanta o funcionamento das aplicações críticas da empresa. 2.3 NECESSIDADE DA SEGURANÇA NAS EMPRESAS Analisando a importância da informática antes do surgimento da Internet e do comércio eletrônico, percebe-se que ela não era tão ativa no negócio real das empresas. A tecnologia da informação era anteriormente aplicada somente para a melhoria de processos, mas dificilmente era um elemento de negócio. Atualmente a grande rede de computadores, além de facilitar a comunicação entre empresas, funcionários e clientes nesse mundo globalizado, vem sendo utilizada de forma 1 Sigla originária do inglês e que significa em português, Confidencialidade, Integridade e Disponibilidade.
  20. 20. 19 comercial, razão pela qual o comércio eletrônico contribui para o avanço da economia dos países. Como toda evolução também traz seus problemas, as empresas tornaram-se vulneráveis a partir dessa facilidade de comunicação, pois os ambientes passaram a serem heterogêneos, distribuídos, difíceis de serem controlados, razão principal para os ataques e invasões ocorrerem a todo o momento. Os estudos realizados pela Security & Defense Agenda – SDA (2012), representados na Figura 01, já demonstram esta realidade: dentre os vinte e três países relatados, somente Israel, Suécia e Finlândia estão muito bem preparados para combater os ataques virtuais, que têm diversas consequências, como: [...] queda de produtividade, perda significativa de dinheiro, horas de trabalho, devastação de credibilidade ou oportunidades de marketing, um negócio não habilitado para competir [...] (MEDEIROS, 2001, p. 10). Em resposta a essas invasões, Lopes (2012), diretor do laboratório de pesquisas e análises da Kapersky, questionou: [..] como não se preocupar e enxergar riscos para todos os lados? [...]. Há uma necessidade muito grande de serem estabelecidos serviços e medidas de segurança da informação nos diversos ambientes, neste século XXI, sejam eles profissionais, organizacionais, sociais ou acadêmicos, inclusive nas muitas empresas nas quais ainda se desconhecem os efeitos potenciais dos tão comuns ataques baseados em malwares2. 2 Originado do inglês malicious software, são programas feitos para se infiltrar em sistemas de computadores e causar danos às informações ou roubá-las e etc.
  21. 21. 20 Figura 01: Relatório da Cyber Defense Fonte: SDA (2012) 2.4 COMPONENTES DA SEGURANÇA DA INFORMAÇÃO 2.4.1 Ativo O ativo pode ser considerado informação ou qualquer elemento indispensável que agregue valor para o desenvolvimento do empreendimento de uma unidade ou área de negócio. Seja qual for o ativo, tecnológico, físico ou humano a norma (ABNT NBR ISO/IEC 27001:2006) recomenda que ele seja bem identificado e classificado, para depois ser avaliado quanto ao tempo, esforço e custo que será gasto para protegê-lo, evitando que permaneça desprotegido e sujeito a eventos de riscos, como os que serão abordados nas próximas subseções deste capítulo.
  22. 22. 21 2.4.2 Vulnerabilidades Vulnerabilidades são fraquezas ou deficiências existentes nos sistemas, que quando sujeitas a explorações ou ataques podem provocar incidentes de segurança na empresa, comprometendo seus produtos, clientes e sua imagem no mercado. De acordo com a Trend Micro (2011), mesmo com o número de incidentes globais reportados tendo diminuído bastante de 2006 para 2011, como apresenta a Figura 02, há uma grande necessidade das empresas em compreender a natureza destas vulnerabilidades. Figura 02: Volume de vulnerabilidades reportadas entre 1999-2011 Fonte: Trend Micro (2011) Segundo Sêmola (2003) a natureza das vulnerabilidades é classificada em três categorias: tecnológicas, humanas e físicas. Tecnológicas  Equipamentos de baixa qualidade;  Criptografia fraca;  Sistema operacional desatualizado;  Configuração imprópria dos firewalls;  Configuração inadequada dos roteadores;  Falha no desenvolvimento dos softwares.
  23. 23. 22 Humanas  Falta de treinamento;  Falta de qualificação;  Ausência de políticas na Gestão de Pessoas. Físicas  Cabeamento não estruturado;  Instalações elétricas inadequadas;  Ausência de controles físicos de acesso;  Ausência de normas para senhas. Mas além de classificar esses pontos fracos presentes no sistema comprometido, as empresas devem buscar entender os estados que as vulnerabilidades podem assumir Figura 03. Figura 03: Estados das vulnerabilidades Fonte: Kunst e Ribeiro (2004) Como afirma Kunst e Ribeiro (2004) o primeiro estado assumido por uma vulnerabilidade é o inerte, que se caracteriza pelo fato dela estar presente no sistema, mas não estar sendo explorada. Caso aconteça alguma condição por parte do atacante, ou seja, ele consiga explorá-la com sucesso, ela se torna ativa. Em determinadas situações quando a vulnerabilidade é identificada, ela assume logo em seguida o estado de monitorada, correspondendo ao momento onde a administração do
  24. 24. 23 sistema irá monitorá-la, para que medidas de segurança sejam tomadas evitando mais danos ao sistema alvo. E para que elas sejam bloqueadas é preciso que inicialmente o ponto fraco seja encontrado no sistema, não importando se ela esteja ativa para que sejam tomadas providências de bloqueio. 2.4.3 Formas de Ameaças Para Andress (2011), ameaças são agentes ou condições que podem explorar, de forma acidental ou proposital, uma vulnerabilidade específica, causando sérios problemas à segurança das redes nas empresas. Como esclarecido pelas pesquisas realizadas pela empresa Panda Security (2011), hoje, as maiores ameaças aos usuários de computadores são representadas pelos malwares, fato ilustrado na Figura 04. Por serem desenvolvidos de forma inteligente, têm menos chance de serem detectados, consequentemente atividades como a navegação na web, o uso das redes sociais e dos celulares tornou-se perigosas. Logo para se ter um entendimento claro sobre esses códigos maliciosos, são descritos a seguir como eles podem ser classificados, em relação a forma de propagação, execução, e o que eles são capazes de fazer: Figura 04: Infecções por Malware em 2011 Fonte: Panda Security (2011)
  25. 25. 24  Vírus: geralmente residem em arquivos executáveis ou anexos de e-mails, dependendo somente da curiosidade dos usuários para serem ativados. Mas normalmente o programa hospedeiro mantém o seu funcionamento depois de infectado, mas também podem sobrescrever os códigos de programas, bloqueando a sua função original. Propagam-se quando o arquivo hospedeiro, programas ou documentos são transferidos de um computador para outro;  Worms: são similares aos vírus, mas não dependem de hospedeiros para replicaram- se. Residem em locais de difícil acesso no sistema operacional, tornando-se difíceis de serem detectados pelo usuário (Tâmega, 2003), somente descobertos quando programas e os computadores começam a travar ou ficar lentos;  Trojan: também conhecido como Cavalos de Tróia pela semelhança com a História do Cavalo de Tróia, no sentido de esconderem códigos maliciosos por trás de aplicativos ou fotos, são disfarçados com mensagens falsas de amigos, de promoção, de atualizações de segurança, sites pornográficos ou algo que pareça inofensivo (Tâmega, 2003), atraindo os usuários a abrirem os anexos, trazendo junto vírus e worms camuflados, para infectar os computadores;  Backdoors: para Engebretson (2011) são pedaços de software que residem na máquina alvo, sem que o usuário perceba, permitindo que o invasor acessa-a, quando desejar. Também conhecido em português como porta dos fundos;  Rootkit: são programas inseridos após o atacante conseguir o controle sobre a máquina alvo, para esconder a passagem do invasor. Sendo possível, de acordo com Engebretson (2011) esconder arquivos, processos e programas, como se eles nunca tivessem sido instalados. 2.4.4 Riscos Antes de entender com clareza as ameaças, fraquezas ou vulnerabilidades em que uma empresa esta exposta, inicialmente é preciso conhecer os riscos de TI. Segundo Sêmola (2003) risco é definido como: “probabilidade de ameaças explorarem vulnerabilidades, provocando perdas de confidencialidade, integridade e disponibilidade causando, possivelmente, impactos nos negócios”. Definição essa ilustrada na Figura 05:
  26. 26. 25 Figura 05: Riscos na segurança Fonte: Barth (2003, p.8) Pode-se dizer então que para se determinar os riscos, as vulnerabilidades precisam ser identificadas. Após a análise do impacto e a probabilidade deles ocorrerem, de acordo com Prado (2002) a organização deve estabelecer as medidas de segurança para tratar os riscos, onde alguns recebem mais atenção do que outros, mas o importante é não ignorá- los. A construção de um perfil de risco, que compreende o reconhecimento de brechas, a quantificação e qualificação dos danos são de fundamental importância de acordo com a (ABNT NBR 17799:2001) e pode ser feito pela seguinte fórmula: (Ameaça) x (Vulnerabilidades) x (Valor do Ativo) = RISCO ou resumindo: (Probabilidade) x (Impacto) = RISCO Assim a aplicação da segurança da informação acontecerá de forma correta, originando resultados satisfatórios para a empresa.
  27. 27. 26 Comunicando-se com os seus parceiros, colaboradores e clientes para fazer negócios através da Internet, as empresas necessitam de paradigmas para evitar que os incidentes de segurança impactem diretamente e negativamente nas suas receitas. Assim é recomendado que as corporações se submetam a auditorias preventivas, no caso, Pentesting, que serão descritos na seção a seguir, para poder receber um diagnóstico real sobre a segurança dos ativos em questão.
  28. 28. 27 3. PENTESTING Neste capítulo será apresentada a definição acerca do termo Pentesting bem como suas classificações e a proposta de um modelo mais ágil de quatro fases, baseado nas metodologias do Pentesting mais reconhecidas do mercado. Em seguida, cada uma das fases é descrita em detalhes. 3.1 DEFINIÇÃO Conforme Singh (2011) o Pentesting é um dos métodos mais antigos de avaliar a segurança de um sistema computacional. Desde 1970, o departamento de defesa americano já usava Pentesting para demonstrar a fragilidade dos sistemas computacionais e iniciar o desenvolvimento de programas para criar sistemas mais seguros. O mesmo autor ainda afirma que o Pentesting são simulações conduzidas por profissionais de segurança especialistas no assunto, mais conhecidos como ethical hackers3, que utilizam as técnicas reais de ataque dos black hats4 para identificar métodos de burlar os controles de segurança de uma rede, sistema ou aplicações de uma empresa, antes que o infrator o faça. Com relação a este contexto do Pentesting, Fiocca (2009) afirma: […] O objetivo dos testes não é absolutamente de impeder o roubo, mas, pelo menos, torná-lo mais difícil, limitando as capacidades do invasor. […] (FIOCCA, 2009, p. 1). Raramente não há o uso da mesma lógica, técnica e ferramentas dos atacantes reais. Para se ter um entendimento de como resumidamente um atacante age, basta fazer analogia com o exemplo real, do roubo de uma casa, Figura 06. 3 Hackers éticos que utilizam suas habilidades de programação, sistemas operacionais, redes, servidores, ferramentas e engenharia social para o bem. 4 São os crackers que utilizam suas habilidades para realizar atividades ilegais ou maliciosas.
  29. 29. 28 Figura 06: Exemplo real de um Pentesting Fonte: Singh (2011) No exemplo acima, é demonstrado que a casa possui uma abertura na porta, neste caso chamada de vulnerabilidade (1). O ladrão leva consigo um punhado de chaves. Ele sabe exatamente qual delas será usada para abrir a porta. Isto significa selecionar o exploit 5 (2) apropriado. Após entrar na casa, ele pode roubar o que desejar, deixando backdoors abertas, como comentado na seção 2.3.3 ou pode modificar a trava da porta para sua entrada posterior. Ação referente a deixar o payload (3). Segundo Soares (2010) as empresas que estão buscando entrar em conformidade com as melhores normas internacionais são exigidas testes de invasão periódicos. Para que o Pentesting sejam bem executados e assim possam oferecer diversos benefícios para a empresa que está se submetendo aos testes, um acordo entre a gestão da organização e a equipe contratada deve acontecer. Pois se não for adequadamente conduzido pode resultar a perda de serviços e afetar a continuidade dos negócios. Entre as vantagens oferecidas estão: permissão de testar a efetividade das soluções tecnológicas implementadas; determinar as medidas que devem ser tomadas para melhor aliviar os riscos provenientes das vulnerabilidades e ameaças detectadas; e avaliar a habilidade de reação do departamento de TI em identificar e responder aos ataques corretamente. 5 Exemplos de código que podem ser usados para explorar vulnerabilidades específicas.
  30. 30. 29 3.2 TIPOS DE TESTES O escopo do Pentesting geralmente varia quanto ao ponto de origem, sendo classificado em interno, quando simula o levantamento de possíveis falhas de segurança nas estações de trabalho, como servidores, roteadores e aplicações internas entre outros. Como também externo, quando busca através da simulação, verificar o grau de segurança à tentativas externas de invasão. Além disso, Graves (2007) afirma que o Pentesting pode ser classificado quanto à quantidade de informações que são disponibilizadas para a equipe de teste sobre o ambiente alvo. Para Singh (2011) dois termos são usados para classificar os testes: black- box, white-box. E não importa a categoria que esteja sendo conduzida, o Pentesting torna- se completo obrigatoriamente quando é feito tanto externo como internamente. No teste da caixa-preta ou black-box, o cenário simulado é similar a um ataque externo, onde há pouco conhecimento sobre a infraestrutura da rede ou do sistema, como endereçamento de rede ou nome de domínio. Sendo assim o penetration tester necessitará coletar o máximo de informações possíveis que o auxiliará na execução dos testes. No teste da caixa-branca ou white-box, se assemelha a um ataque interno, e Graves (2007) afirma que neste tipo de teste informações completas que são de conhecimento dos administradores de rede são fornecidas, como detalhes do sistema operacional, topologia de rede, plataformas de bancos de dados, códigos fontes e endereçamento de rede. Frequentemente utilizado quando a empresa buscar validar um determinado segmento especifico. 3.3 METODOLOGIAS No ambiente da Tecnologia da Informação, diversas metodologias são usadas para diferentes finalidades, compreendendo não só os níveis táticos, mas também o operacional da organização. Quanto a isto Lapolli (2009) aponta o conceito que a metodologia assume na prática da TI: “o conjunto de passos ou etapas a serem seguidos num projeto ou atividade” (Lapolli, 2009, p. 4). Dessa forma, é fato concluir que a metodologia é parte fundamental no processo de execução de um Pentesting, pois o mesmo consiste em um conjunto de procedimentos. Apesar de existirem diferentes metodologias que podem ser executadas para aplicar um Pentesting, foi optado por explanar as quatros metodologias de código aberto referidas no estudo comparativo realizado por Borges (2011) como sendo as mais populares no mercado atual, que são: a Open Source Security Testing Methodology Manual - OSSTMM, National
  31. 31. 30 Institute of Standards and Technology – NIST, Open Web Application Security Project - OWASP e a Information Systems. Security Assessment. Framework – ISSAF. Diferenciando-se na forma como realizam suas funções, e tendo objetivos finais semelhantes, as metodologias baseada na pesquisa de Borges (2011) são confrontadas conforme as métricas a seguir:  Aderência: observa a variedade de serviços oferecidos pela metodologia;  Atualizações: constata se a metodologia é frequentemente atualizada;  Certificações: verifica se certificações profissionais são oferecidas acerca da metodologia proposta;  Prazos: confirma se a metodologia estipula prazos para a execução dos procedimentos sugeridos;  Pré-requisitos: confere se a metodologia exige conhecimentos específicos para a aplicação dos testes, como também o tamanho da equipe exigida para a execução. Para um melhor esclarecimento, a partir do entendimento adquirido das métricas comparadas entre as metodologias, entende-se que as três mais relevantes são aderência, prazos e pré-requisitos, por serem chamativas para as empresas questionadas no trabalho do autor supracitado. Por isso, foi escolhido demonstrá-las através de quadros. Examinando o Quadro 01, nota-se que todas as metodologias contemplam uma boa aderência. O NIST não se preocupa com o fator humano dos testes, e juntamente com o ISSAF, OWASP e OSSTMM não atende as tecnologias atuais como a computação nas nuvens. Onde o OSSTMM e o ISSAF destacam-se por proverem métodos de aderência para praticamente todos os ativos de informação, enquanto OWASP se aplica apenas as aplicações web.
  32. 32. 31 Quadro 01: Comparativo de aderência Fonte: Adaptado de Borges (2011, p.11) Em relação aos prazos exigidos para a execução dos testes, o Quadro 02, esclarece que somente o OSSTM e ISSAF definem prazos, mas não o especifica de acordo com o porte da empresa. Quadro 02: Comparativo de prazos Fonte: Adaptado de Borges (2011, p.12) Todas as metodologias recomendam conhecimentos básicos e avançados, variando de acordo com o teste em questão, exceto o OSSTMM, como demonstra o (Quadro 03).
  33. 33. 32 Quadro 03: Comparativo de pré-requisitos Fonte: Adaptado de Borges (2011, p.12) Baseando-se nas informações mostradas anteriormente, é fácil entender que o estabelecimento da estratégia correta de avaliação da segurança depende de vários fatores, variando desde especificações técnicas sobre o ambiente alvo, como disponibilidade de recursos, conhecimento do profissional de segurança e objetivos de negócios. 3.4 FASES DOS TESTES DE PENETRAÇÃO Analisando as metodologias apresentadas na seção anterior, observam-se que elas são compostas entre quatro a sete fases. Essa divisão em etapas transforma o Pentesting em um processo gerenciável. Com o intuito de facilitar o entendimento das mesmas, Borges (2011) sugeriu a criação de um modelo simplificado que melhor agregasse as características das metodologias examinadas. E aproveitando esta sugestão, visualizando as propriedades em comum entre elas, percebeu-se que unificando-as era possível montar um modelo de quatro etapas, e por isso este mesmo foi criado, o qual é apresentado na Figura 07. E desta maneira, a compreensão do Pentesting de forma acadêmica é introduzida com uma maior clareza.
  34. 34. 33 Neste modelo, anteriormente as fases, é realizado um planejamento de como serão os testes, este planejamento não é classificado como uma fase, pois ele é apenas uma preparação para a execução do Pentesting, sendo então mais adequado chama-lo de Pré- Fases. Logo após a aplicação das etapas é descrito um relatório com informações detalhadas do Pentesting, e este momento de descrever as atividades realizadas é conhecido como Pós-Fases. Figura 07: Fases do Pentesting Fonte: Adaptado de Borges (2011) Os tamanhos das caixas coloridas variam representando a jornada do amplo ao específico ao longo do Pentesting. Por exemplo, a fase inicial de coleta de informações é dita como a mais duradora e importante, pois quanto maior o conhecimento sobre o ambiente alvo, mais fácil será invadi-lo. Por serem dependentes, a ordem também abordada deve ser seguida, para que ocorra a execução compreensiva e real do Pentesting. 3.4.1 Planejamento e Preparação Assim como todo projeto de segurança da informação, as estratégias e táticas que serão aplicadas nos testes de penetração devem ser muito bem planejadas. Por isso, anteriormente as quatro fases vistas na Figura 07, o cliente juntamente com os auditores define o escopo do Pentesting. Como apontado em Soares (2010) no escopo são abordados os objetivos de negócios o qual a empresa almeja alcançar com o emprego do Pentesting, o que será
  35. 35. 34 testado (firewalls, roteadores, switches e etc.), bem como determinar quais equipamentos, recursos, infraestrutura que serão fundamentais durante os testes, e os tipos de ataques que constituem a simulação. A garantia das informações é assegurada por meio da assinatura de um contrato formal, contendo informações dos serviços oferecidos, formas de pagamento, objetivos principais e do mantimento da confidencialidade de todo o projeto um termo de confidencialidade, conhecido como Non-Disclosure Agreement – NDA, onde as partes concordam em não divulgar informação compreendida pelo acordo. Durante o planejamento, questões de prazos para execução das simulações, tipo de teste que será feito, podendo ser whitebox ou blackbox, descritos na seção 3.2 também são estabelecidos. Os testes ainda são classificados como anunciado ou não anunciado, que de acordo com Soares (2010) esclarece se a equipe de TI terão conhecimento da execução dos testes ou não. Anunciar os testes para a equipe local por um lado, é vantajoso, pois informações confidenciais podem ser compartilhadas para melhor guiarem o ataque. Mas por outro lado, podem não ser bem vistos por administradores de redes, por questão de intrometimento em seu trabalho. Após a identificação de todos os aspectos exibidos anteriormente, o cliente valida os dados reunidos para evitar qualquer informação mal entendida e garantindo a consistência e completude do planejamento desenvolvido. 3.4.2 Coleta de Informações O Footprinting, também conhecido como obtenção de informações, de acordo com Gregg (2006) é o processo que consiste em reunir o máximo de informações possíveis sobre a organização alvo. E geralmente é uma prática duradoura, pois pode levar dias, semanas ou meses para ser finalizada. As informações gerais que são encontradas são reduzidas a dados específicos como nome de servidores, roteadores, endereços Internet Protocol - IP, redes, nome de usuários, emails, sub-redes entre outros detalhes que são úteis nas fases seguintes e na determinação dos pontos que podem ser explorados ou atacados mais facilmente. Geralmente o reconhecimento do alvo é composto por uma estratégia, dividida em duas vertentes: reconhecimento passivo e ativo. O reconhecimento passivo, o qual não interage diretamente com o sistema alvo, porque faz o uso da grande quantidade de informações disponível na web e o ativo, que por interagir diretamente com o ambiente alvo, por exemplo, tem suas ações gravadas no sistema operacional. E em determinadas situações a engenharia social também é utilizada.
  36. 36. 35 3.4.2.1 Reconhecimento Passivo Geralmente no reconhecimento passivo são feitas primeiramente pesquisas no Google e nas redes sociais como o Facebook, Twitter e Linkedin em busca de encontrar informações a respeito de: atividades da empresa, números de telefones, nomes de sócios, diretores, gerentes de TI, administradores da rede, filiais, endereços de homepages e e- mails. Concluído esta etapa, é seguida para consultas a serviços como Sistema de Nome de Domínios6 - DNS (através de utilitários como whois, netcraft e nslookup) e a consulta às rotas dos pacotes, a procura de dados mais técnicos. 3.4.2.1.1 Whois É um serviço que evoluiu do sistema operacional Unix, mas hoje pode ser encontrado em diferentes sistemas operacionais, como também na web, sendo responsável por encontrar o proprietário de um domínio. A corporação da internet para atribuição de nomes e números, conhecido em inglês por sua sigla ICANN, exige o registro de nomes de domínio para garantir que apenas uma única empresa usa um nome de domínio específico. Portanto o whois consulta o banco de dados desses registros para obter informações sobre o indivíduo ou organização que tem um registro de domínio (GREGG, 2006). O método mais simples de se utilizar esse serviço é digitando o comando whois + nome do domínio, como pode ser visto na Figura 08. 6 Em inglês conhecido como Domain Name System, é responsável por traduzir nomes de hospedeiros para endereços IP, tendo um papel fundamento no funcionamento da Internet.
  37. 37. 36 Figura 08: Consultando o whois Fonte: Kennedy et al. (2011, p.16) Analisando a consulta, percebe-se que o servidor do sistema de nome de domínio está hospedado no DOMAINCONTROL.COM, sendo este um bom exemplo do que não poderia estar incluso no teste de penetração, porque quem está aplicando a consulta não teria autoridade para atacá-lo, já que o DOMAINCONTROL.COM não é propriedade da secmaniac.net, ou seja , o ataque não deve ser feito nesse sistema. 3.4.2.1.2 Netcraft O http://searchdns.netcraft.com/ é uma ferramenta baseada na web que identifica o endereço IP de um servidor que hospeda um site específico, e outros dados importantes, como mostra a Figura 09.
  38. 38. 37 Figura 09: Usando o Netcraft Fonte: Kennedy et al. (2011, p.17) 3.4.2.1.3 Nslookup É um serviço que está disponível em muitas plataformas Linux/Unix e Microsoft Windows. Para executá-lo em ambas as plataformas basta digitar o comando nslookup + nome da máquina. A sua função básica é de permitir que o host que roda o serviço interrogue servidores de nomes objetivando obter informações referentes a um domínio7, Figura 10. E o DNS interrogado pode ser um servidor DNS raiz, de alto nível, com autoridade ou um intermediário. Figura 10: Usando o nslookup Fonte: GREGG et al. (2006, p.104) 7 Nome único de identificação de um site na internet.
  39. 39. 38 3.4.2.1.4 Tcptraceroute O tcptraceroute é considerado como sendo um complemento do comando tradicional traceroute. O traceroute por utilizar o pacote ICMP ECHO para traçar as rotas dos pacotes, é bloqueado por filtros de roteadores ou firewalls, impedindo-o de alcançar o destino. Já o tcptraceroute, Figura 11, consegue alcançar o alvo, utilizando o TCP SYN, recebendo um pacote SYN/ACK se a porta estiver aberta e um pacote RST se estiver fechada. Figura 11: Usando o tcptraceroute Fonte: Ali e Heriyanto (2011) 3.4.2.2 Reconhecimento Ativo Após a obtenção de informações públicas sobre o alvo, para Soares (2010) inicia-se o processo de mapeamentos e varreduras da rede e dos recursos, onde são reconhecidos os hosts, as portas e serviços em execução e os sistemas operacionais. 3.4.2.2.1 Nmap O Nmap (abreviação de “Network Mapper”) é uma ferramenta de código aberto que foi desenvolvida por Gordon Fydor Lion, ex-programador da Netscape. Inicialmente rodava somente nos sistemas operacionais Linux, mas hoje também tem versões para Windows e MacOS. Esta mesma ferramenta é considerado por Ferreira et al. (2012) como sendo uma
  40. 40. 39 das melhores para mapear redes, pois é composta de diversas funcionalidades, as quais são apresentadas a seguir:  Especificação de Alvos Não importa se a varredura é simples ou complexa, é necessário dizer ao Nmap quais alvos válidos, no caso endereços IP, faixas de endereços IP ou nomes de domínio serão escaneados. Mesmo que não se utilizem parâmetros sobre o alvo especificado no Nmap, a varredura ainda assim verifica a atividade do alvo na rede e apresenta as portas abertas e fechadas relacionadas aos diversos serviços e aplicações existentes.  Descoberta de Hosts Existem diferentes formas de realizar a descoberta de hosts, onde a escolha do modelo varia de acordo com o propósito da varredura. Segundo Ferreira et al (2012) quando a varredura abrange um único endereço alvo ou sabe-se quais alvos estão ativos na rede, as opções nmap+ “List scan” (-sL) + IP ou nmap +“No Ping” (-PN) +IP são amplamente utilizadas. Enquanto que a descoberta de hosts que não estão localizados na mesma rede deve ser ativada com o comando nmap + “Ping Scan” (-sP) + “ICMP Echo Ping” (-PE).  Varredura de Portas A funcionalidade mais importante que pode ser desempenhada no Nmap é o port scanning, tradução para varredura de portas, responsável por descobrir qual aplicação está rodando nela. Pois todo serviço do TCP/IP depende de portas para escutar ou enviar dados. A varredura é feita em um endereço IP para identificar quais portas TCP e UDP estão abertas e qual aplicação servidor pode estar rodando nela, como (HTTP, E-mail, FTP, DNS, etc.) que são representados por número de portas conhecidas. Justamente para tentar explorar as vulnerabilidades dessas aplicações. O método mais conhecido como afirma Ferreira et al. (2012) é o “TCP SYN Scan” (- sS) que consiste em reunir informações de portas abertas sem completar o processo do three-hand-shake8. Ele funciona da seguinte forma: inicialmente é enviada uma flag SYN, tendo como resposta um SYN+ ACK, que significa que a porta está aberta e um TCP RST para confirmar que a porta está fechada, como ilustrado na Figura 12. 8 Processo composto de três vias, SYN, SYN + ACK e ACK, responsáveis pelo estabelecimento de conexões no TCP.
  41. 41. 40 Figura 12: Varredura com o Nmap em uma máquina Windows Fonte: Kennedy et al. (2011, p.19)  Detectação de versões e sistemas operacionais Sabe-se que muitas das vulnerabilidades que são publicadas por entidades especializadas, causam danos em determinadas versões de softwares ou sistemas operacionais. E por isso é importante detectar informações além do número das portas. OS fingerprintig, como é conhecido em inglês, é justamente a operação que consiste em descobrir detalhes do sistema operacional que está sendo executado. Como se pode observar o parâmetro usado no Nmap para obter essa informação é o “-O”, Figura 13. Importante lembrar também que através da opção “-sV” ou “-A” é possível descobrir a versão do serviço que está ativo na rede.
  42. 42. 41 Figura 13: Detectando o sistema operacional com o Nmap Fonte: Gregg (2006) 3.4.2.3 Engenharia Social Vista por Mitnick (2003) como sendo a arte de enganar, a Engenharia Social é um método não técnico que pode ser utilizado antes ou durante a fase do ataque e consiste na competência de lidar com pessoas, induzindo-as a fornecer informações, executar programas ou até mesmo fornecer senhas de acesso. Como geralmente o comportamento das pessoas varia de acordo com o grau de criticidade da situação, vários métodos podem ser usados individualmente ou combinado para tirar informações dos usuários e alguns deles são citados abaixo:  Utilizar ferramentas de mensagens instantâneas como o Windows Live Messenger, para simular ser um conhecido da vítima;  Aproveitar informações vazadas de uma determinada empresa, em lista de discussões ou em comunidades virtuais;  Enviar e-mails com malwares incorporados a ele, oferecendo vagas de emprego para uma grande quantidade de usuários, os campos dos formulários são preenchidos e sem saber entregaram informações pessoais ao infrator;  Contatos telefônicos, fingindo ser atendimento de suporte. É fato então, afirmar que os ataques de engenharia social são muito frequentes, não só na Internet, mas no dia-a-dia, porque as pessoas são consideradas o elo mais fraco de todo mecanismo de segurança, possibilitando a prática do ataque com facilidade, mas podendo
  43. 43. 42 ser evitado se as organizações buscarem o treinamento dos seus funcionários quanto ao impacto do mesmo. 3.4.3 Identificação de Vulnerabilidades Com a fase da coleta de informações concluída, a próxima etapa é detectar quais as vulnerabilidades que existem na infraestrutura da rede alvo que pode comprometer a tríade CIA do sistema de negócio da organização. A avaliação de vulnerabilidades como também pode ser chamada, pode ser aplicada de duas maneiras: de forma manual ou automática. Não importando qual delas seja utilizada, devem ser igualmente tratada, mesmo apresentando pequenas diferenças. Pois enquanto a identificação de vulnerabilidade feita de forma automática às vezes produz certa quantidade de falsos positivos e negativos, resultando no insucesso do Pentesting nessa fase, no manual o conhecimento do auditor é explorado, permitindo que grande parte dos erros lógicos e vulnerabilidades sejam detectadas. Existem três tipos de vulnerabilidades, a de design, de implementação, e operacional, ambas são classificadas quanto ao tipo de falha, local ou remota (ALI e HERIYANTO, 2011). A vulnerabilidade de design são descobertas nas especificações de software, as de implementação são geralmente erros técnicos cometidos no código do sistema e a operacional são as geradas por meio de configurações inadequadas em um sistema específico. Baseando-se nas três classes explanadas acima, os dois tipos genéricos de vulnerabilidade que compõem qualquer uma das classes será descrito a seguir. 3.4.3.1 Vulnerabilidade Local Todo sistema que exige do atacante o acesso local para acionar a vulnerabilidade encontrada, é dita como local. Conseguindo aproveitar-se da falha, o infrator pode aumentar o privilégio de acesso para adquirir entrada irrestrita ao sistema. O exemplo a seguir apresentado por Ali e Heriyanto (2011) esclarece o cenário explanado: Bob tem acesso ao MS Windows Server 2008 de 32-bits, cujo acesso foi restringido pelo administrador que implementou uma política de segurança que o impede de executar uma determinada aplicação. A maneira encontrada por ele para burlar a restrição foi executar um código malicioso, que o deu novamente acesso como administrador da aplicação.
  44. 44. 43 3.4.3.2 Vulnerabilidade Remota Quando o infrator não detém nenhum acesso ao sistema, mas a vulnerabilidade ainda pode ser explorada por um código malicioso através da rede, é conhecida como remota. Dessa forma, aproveitando-se da vulnerabilidade o ganho do acesso remoto é conquistador com facilidade. Nesta situação os autores supracitados coloca Bob e Alice conectados individualmente a Internet. Cada uma possui um endereço IP estando em regiões geograficamente diferentes. Assumindo que o computador de uma deles está executando o sistema operacional Windows XP contendo informações confidenciais de seu trabalho. E também que Bob já conhece o endereço IP da máquina da Alice. Querendo ter acesso as informações do trabalho dela, ele resolveu explorar a vulnerabilidade que o deu acesso remoto completo a máquina. 3.4.3.3 Nessus Como afirma Ulbrich (2007) um dos scanners de vulnerabilidade mais utilizados no mercado é o Nessus, desenvolvido pela Tenable Security. O scanner tem a capacidade de fazer varreduras em redes com o objetivo de encontrar vulnerabilidades de segurança, realizar auditorias e montar perfis de rede. O scanner ainda permite a criação de políticas anteriormente à varredura, Figura 14, e ao final do escaneamento gera um relatório detalhado que pode ser salvo, com a estimativa de impacto de cada vulnerabilidade detectada, indicando como corrigi-la. Figura 14: Criando uma política de varredura Fonte: Engebretson (2011)
  45. 45. 44 A biblioteca de vulnerabilidade do Nessus é bastante atualizada, pois sempre que uma nova falha é divulgada pelas entidades, a equipe de desenvolvimento do Nessus cria um plugin para detecção da mesma. É importante ressaltar que o Nessus funciona tanto na plataforma Windows como Linux e se caracteriza por funcionar segundo o modelo cliente-servidor. Onde o lado servidor (nessusd) de acordo com a própria empresa desenvolvedora do scanner Tenable Security (2012), é responsável por disparar os testes contra os alvos e o lado do cliente (nessus) é a que provê a interface ao usuário para analisar as vulnerabilidades. 3.4.4 Exploração Posteriormente ao reconhecimento das vulnerabilidades encontradas, os ataques são aplicados buscando gerar impactos na integridade, na confidencialidade ou na disponibilidade de um sistema. Dependendo do tipo de vulnerabilidade descoberta, a penetração será mais ou menos efetiva. Abaixo são descritos alguns exemplos dos diversos tipos de ataques que existem: 3.4.4.1 Sniffing Como apresentado em Sanders (2011) é uma técnica aplicada por um sniffer que consiste em capturar e analisar o conteúdo dos pacotes que trafegam pela rede, para auxiliar na resolução de problemas, como também para entender o funcionamento da rede. Existem diversos tipos de sniffers ou farejadores de pacotes como também são conhecidos, tanto gratuitos como pagos. Os mais conhecidos são o Tcpdump, OmniPeek e o Wireshark. Apesar dos benefícios, os farejadores de pacotes por agirem de forma passiva, são difíceis de serem descobertos e por esta razão são utilizados como preparação para outros tipos de ataques. As credenciais de serviços como FTP, Telnet e POP podem ser facilmente identificadas, pois não utilizam criptografia. Para exemplificar a Figura 15, ilustra a captura do usuário e senha usando o Wireshark de uma máquina que está executando o serviço FTP.
  46. 46. 45 Figura 15: Capturando o tráfego do protocolo FTP Fonte: Sanders (2011, p.97) 3.4.4.2 Quebra de senha As senhas são consideradas parte integral do uso diário da Internet. Hoje, os diversos serviços de e-mail, redes sociais, contas de banco para acesso online, entre outros exemplos que podem ser citados, exigem senhas para restringir o acesso às mesmas. Mas apesar de tudo como esclarece Varsalone e Mcfadden (2012) elas são o vínculo mais fraco de qualquer sistema de segurança. Comumente, a maioria das pessoas optam por senhas mais fáceis e simples de lembrar usando-as em diferentes sistemas. Para evitar que os dados pessoais estejam expostos, recomenda-se que as senhas tenham um tamanho mínimo de oito a dez caracteres, seja utilizado letras maiúsculas e minúsculas, caracteres especiais e números. Como a criação de uma senha relativamente segura não recebe atenção das pessoas, os atacantes exploram essa falta de atenção usando softwares para quebra dessas senhas. A Figura 16 exemplifica a utilização do software John the Ripper. Figura 16: Descobrindo a senha com o John the Ripper Fonte: Varsalone e Mcfadden (2012, p. 53)
  47. 47. 46 O John the Ripper é um dos mais conhecidos dentre os diversos softwares de quebra de senha existentes. Ele é capaz de descobrir senhas seja do sistema operacional Windows ou Linux a partir de ataques de força bruta. Levando um maior intervalo de tempo para descobrir as senhas criadas com os aspectos que as tornam seguras, já comentadas anteriormente. 3.4.4.3 Cross-Site-Scripting Conhecido também como XSS, é considerado por Gonçalves (2009) como uma das vulnerabilidades mais comuns nas aplicações web, que permite ao atacante inserir código em uma pagina visitada por outro usuário. Geralmente o código utilizado é JavaScript, mas outras linguagens suportada pelos browsers também pode ser usadas, como ilustra a Figura 17. Vale salientar que o código afeta o navegador da vítima, e não é executado pelo servidor. Figura 17: Exemplo clássico de Cross-Site-Scripting Fonte: Adaptado de Guillaumier (2007) 3.4.4.4 Injeção de SQL (SQL Injection) Os bancos de dados são o coração das aplicações web, pois são responsáveis por controlar as operações empresariais e guardar desde informações financeiras até credenciais de usuários. Sendo assim a segurança das informações armazenadas em bancos de dados acessados pela web também merecem sua devida atenção, pois muitos ainda são totalmente vulneráveis ao tão conhecido SQL Injection.
  48. 48. 47 O SQL Injection por ser simples, é um dos ataques mais comuns à camada de aplicação que consiste em explorar os parâmetros recebidos das aplicações desenvolvidas em PHP, ASP, JSP, entre outras, manipulando-os. O método utilizado para executar a injeção de dados é através dos navegadores de internet, pois para Gumerato (2009) a maioria deles não interpretam precisamente requisições compostas por caracteres de pontuação e símbolos, a menos que sejam codificados. A vulnerabilidade pode ser explorada quando a aplicação é adequada a receber diversos comandos Structured Query Language - SQL de manipulação de dados (select, insert, update, delete) ou comandos de definição de dados (create, drop, alter) , sem analisar os caracteres estranhos, como por exemplo entradas de formulários web. Figura 18: Consulta executada no banco de dados Fonte: Gumerato (2009) Na consulta da Figura 18, um infrator pode certificar-se de que a informação referente ao número do produto é validada, modificando o comando SQL, como demonstra a Figura 19: Figura 19: Demonstração de ataque direto a url Fonte: Gumerato (2009) Como a condição “1=1” acrescentada ao final da consulta será sempre verdadeira, ela retornará os dados das colunas do número e da descrição do produto. Assim, além de obter acesso às informações confidenciais do banco de uma determinada empresa, o invasor poderá inserir apagar ou modificar seus elementos. E geralmente o símbolo “;” (ponto e vírgula) é o mais comumente utilizado, pois ele possibilita o envio de vários comandos ao servidor de bancos de dados de uma única vez. É compreensível então, definir que a natureza do SQL injection torna praticamente impossível constatar esse tipo de ataque em tempo real ou por meio de processos de auditoria.
  49. 49. 48 O único processo empregado para salvaguardar os dados contra ataques de injeção de dados como esclarece Whitetaker e Newman (2006), é manter não só o sistema, mas principalmente o servidor de banco de dados atualizados, testar o código desenvolvido e tratar as entradas de dados por usuários para evitar o impacto que os caracteres estranhos podem causar. 3.4.4.5 Negação de serviço distribuída (DDos) Ataques de negação de serviço também conhecidos como Denial Of Service - Dos, consiste em congestionar um servidor, impedindo-o de responder a pedidos, quebrando o princípio da disponibilidade da tríade CIA, apontado na seção 2.1. Servidores da Web, de e- mails e DNS, e redes institucionais podem estar sujeitos a esse tipo de ataque. Este ataque pode se propagar de diferentes maneiras, sendo o SYN Flood a mais comum. O SYN Flood acontece da seguinte maneira: no momento em que o servidor recebe o SYN, que representa o início do estabelecimento da conexão no tree-hand-shake, ele aloca recursos em sua memória, e logo depois responde aos clientes com o SYN+ACK. Como neste caso, os clientes não completam o aperto de mão de três vias, e essas meias conexões são feitas por endereços IPs forjados, o servidor aloca tantos recursos na memória para essas conexões, que ocorre sobrecarga no seu buffer, tornando o funcionamento do servidor inativo temporariamente. Em agosto de 1999, o ataques DDos9 surgiram caracterizando-se como uma evolução da técnica Dos, por serem mais eficazes. Pois se baseiam na realização de um ataque por meio de diversas máquinas contra o servidor alvo. Para Cânedo (2006) o DDos realiza-se em três fases distintas: A fase de intrusão em massa, a fase de instalação do software DDos e a fase de inicialização do ataque. Tudo se inicia quando o atacante realiza uma varredura nas redes de computadores que são consideradas interessantes por ele, depois é elaborada uma lista com todos os endereços IPs das máquinas que foram escaneadas, para então criar a rede do ataque. Após explorar as falhas encontradas no escaneamento, as máquinas invadidas são divididas em mestres e zumbis. Geralmente as máquinas escolhidas como mestres são aquelas que estão constantemente conectadas a Internet e que não são monitoradas pelos administradores de sistema. Já as zumbis são selecionadas devido à capacidade de conexão a Internet, pois quanto mais banda larga, melhor para os zumbis enviarem o ataque. 9 Abreviatura de Distributed Denial of Service- Negação de Serviço Distribuída em inglês.
  50. 50. 49 Em seguida são escolhidos os computadores onde serão instalados o software DDos, e executado o módulos daemon nos zumbis, que somente esperam os parâmetros de ataques, como por exemplo, as informações sobre o domínio alvo e quantidade e tamanho dos pacotes, oriundos do mestre. Assim é criado a rede de ataque DDos, esperando somente o sinal do atacante para agir. Na Figura 20 é possível visualizar a estrutura do ataque DDos que foi descrito acima. Figura 20: Estrutura do ataque DDos Fonte: Cânedo (2006) Hoje os ataques DDos são muito utilizados pelos grupos hackitivistas, como Anonymous, como ato de protesto a bancos e governos. Mas como os ataques de negação de serviço distribuídos são vários zumbis atacando a mesma máquina e por trás deles encontram-se ainda vários mestres, existe uma grande dificuldade em sempre identificar a origem local do ataque, por isso os praticantes da técnica geralmente não são descobertos. 3.4.4.6 Buffer overflow De acordo com Henrique (2011) buffers são espaços de memória criados pelos programas ao longo de sua execução para armazenar e processar dados necessários para a mesma. Como programas não devem carregar todos os seus recursos para a memória do computador, pois isto causaria lentidão na máquina, os softwares para evitar esta vagarosidade dividem-se em funções e recursos nas quais apenas os que são usados carregam-se para o processador.
  51. 51. 50 Ou seja, quando o programa é carregado, é reservada uma determinada quantidade de memória para ele e como menciona Henrique (2011) as instruções e os dados, são copiados para essa memória e também é atribuída uma zona de memória ao armazenamento temporário denominada pilha. Quando um programa é executado, ele é organizado em quatros áreas da memória (texto, dados, pilha e heap), como ilustra a Figura 21: Figura 21: Estrutura de um programa na memória Fonte: Duarte et al. (2011, p.5)  Texto: área composta por instruções do programa e dados somente-leitura para evitar que aconteçam falhas de segmentação;  Dados: a região de dados armazena todas as variáveis globais e estáticas do programa;  Heap: a heap possibilita a alocação dinâmica da memória;  Pilha: é o bloco de memória utilizado para armazenar variáveis locais, e valores de retorno, como também passar parâmetros para funções. Possui um meio chamado ponteiro responsável por indicar quais instruções devem ser processadas. Na Figura 22, é possível visualizar um exemplo de código em C vulnerável, o qual pode ser explorado usando o buffer-overflow. O erro de programação cometido é facilmente percebido, pois se tenta ler 1024 bytes de um arquivo em uma variável que suporta somente 8 bytes.
  52. 52. 51 Figura 22: Código C vulnerável ao Buffer-Overflow Fonte: Adaptado de Duarte (2011) Mas o fato de um programa armazenar em uma variável uma quantidade maior do que estava prevista pelo software, não é necessariamente problema do overflow. Agora no momento em que códigos contidos na memória são sobrescritos e executados como se fossem partes dos códigos originais, ou seja, permite escalar privilégios e entrar em zonas controladas da memória, pode-se dizer que ocorreu realmente uma um buffer-overflow. 3.4.5 Pós-Exploração Normalmente após a fase de exploração, não importa qual o tipo de ataque aplicado, é possível ganhar acesso ao sistema. Ao conseguir o acesso privilegiado o atacante tem a capacidade de utilizar o sistema desempenhando ações de administrador, como ler, escrever e executar operações. E, além disso, pode instalar ferramentas para que seja possível um retorno futuro ao ambiente comprometido. Caso o sistema explorado seja reiniciado ou perca a conexão com a Internet, o acesso remoto é perdido. Como para um atacante refazer esta etapa não seria agradável, geralmente eles instalam backdoors, que os permitem retornar ao sistema sem ser descobertos. Em diversas situações existe a necessidade de buscar meios de contornar alguns obstáculos de defesa como firewalls ou listas de controles de acesso, e o backdoor, pode sem dificuldades passar por tais obstáculos, mantendo a vítima comprometida. Por isso, pode-se dizer que qualquer sistema só é explorado com sucesso, quando não detectado.
  53. 53. 52 3.4.6 Relatório Posteriormente as fases de penetração impostas, às informações documentadas ao longo de todo o teste devem ser estruturadas no formato de um relatório com a finalidade de registrar todas as atividades de forma transparente. Feito isso, os hackers éticos além de entregarem o relatório para os stakeholders, explicam-no em detalhes através de uma apresentação, esclarecendo todo o processo ocorrido inclusive as recomendações para execução de melhorias. Há uma variedade de formas de se tratar a segurança de uma rede, sistema ou aplicação, e o teste de penetração é apenas uma das possíveis alternativas, entretanto é a que apresenta resultados mais completos. Para que este processo possa auxiliar na identificação e exploração dos problemas o qual os ativos críticos estão frequentemente expostos, diversas ferramentas e scripts são usados para diminuir a complexidade da auditoria, sendo o Metasploit Framework hoje de acordo com Pereira (2012) o ambiente mais utilizado para aplicar o Pentesting.
  54. 54. 53 4. METASPLOIT FRAMEWORK O Metasploit Framework frequentemente denominado apenas por MSF é uma ferramenta de código aberto utilizada para testes. De acordo com Kennedy et. al (2011) além de oferecer um ambiente para que os profissionais da área de segurança possam desenvolver exploits, payloads, entre outros, o MSF também auxilia no monitoramento de redes, pois permitem que os administradores ataquem sua própria rede em busca de possíveis falhas. E por isso, atualmente o framework é reconhecido não só por contribuir com o Pentesting, mas ter em sua composição ferramentas anti-forense e ferramentas de evasão. Criado por Moore em 2003, o projeto Metasploit inicialmente foi criado como sendo um jogo de segurança de redes. Mas rapidamente tornou-se um framework escrito na linguagem Perl capaz de executar, configurar e desenvolver exploits para vulnerabilidades conhecidas. Sendo composto também por componentes escritos em outras linguagens como Assembly, C e Python. Segundo (MAYNOR e MOOKHEY, 2007) o núcleo do projeto foi duplamente licenciado pela GPLv2 e pela Perl Artistic Licenses, protegendo-o contra o uso comercial, mas ao mesmo tempo, permitindo a integração com módulos comerciais agregados, desde que estes módulos não modificassem o MSF. Anos mais tarde, o Metasploit foi completamente reescrito na linguagem de programação Ruby onde foi revisada a arquitetura, interface e as API’s fornecidas aos usuários. Em 21 de outubro de 2009 o projeto Metasploit foi adquirido pela Rapid7, permanecendo estável até hoje. 4.1 ARQUITETURA O Metasploit Framework é dividido em diferentes diretórios, sendo o MSF core a de nível mais baixo, responsável por executar todas as interfaces que permitem interação com os exploits, módulos e plugins. Para (MAYNOR e MOOKHEY, 2007) a biblioteca Ruby Extension - Rex é o componente mais importante de toda a arquitetura do MSF, pois é onde se encontra o núcleo do Metasploit. A biblioteca Rex é um conjunto de classes e métodos que podem ser usadas para auxiliar projetos que são desenvolvidos em torno do MSF. Já os plugins são projetados para dar funções extras à ferramenta, o módulo é subdividido em exploit, payload, encoder, Nops e auxiliary. Por fim as interfaces
  55. 55. 54 estabelecem a conexão entre o usuário e o computador, e os módulos podem ser carregados dentro das interfaces. Toda essa estrutura descrita é ilustrada na Figura 23. Figura 23: Arquitetura do Metasploit Fonte: Adaptado de Singh (2011) 4.1.1 Interface O msfconsole como o próprio nome já diz é o Metasploit em modo console, por onde são enviados linhas de comando, msfcli é a interface de automatização de penetração e exploração, msfweb onde o Metasploit podia ser utilizado via browser, mas foi descontinuada e a GUI é a interface gráfica do MSF. Dentre as quatro interfaces, o foco será empregado apenas no msfconsole por ser mais flexível, intuitivo e rápido.  Msfconsole: para Kennedy et al. (2011) além de ser considerada a interface mais popular do MSF, é conhecida como sendo a mais estável, permitindo que todos os recursos disponíveis do MSF possam ser acessados eficientemente por ela. Além disso, suporta a execução de comandos que permite ao usuário manipular o ambiente do Metasploit, onde os que foram mais utilizados no estudo de caso são apresentados no Quadro 04, a seguir:
  56. 56. 55 Quadro 04: Comandos do Metasploit Framework Comandos Descrição show exploits Mostra todos os exploits do Metasploit Framework show payloads Mostra todos os payloads show auxiliary Mostra todos os módulos auxiliares do MSF search name Procura por nomes dos exploits e módulos info Carrega informações específicas sobre um exploit ou módulo use name Carrega um exploit ou módulo LHOST O seu endereço IP RHOST O endereço IP do alvo set function Configura um valor específico, por exemplo, do RHOST OU LHOST show options Mostra as opções disponíveis para serem usadas pelos módulos ou exploit show targets Mostra qual plataforma pode ser atacada pelo exploit set payload payload Especifica qual payload será utilizado exploit Executa o módulo ou exploit e ataca o alvo Fonte: Adaptado de Kennedy et al. (2011) E para executar o MSF no sistema operacional Backtrack, que foi o escolhido no estudo de caso, existe duas formas. Através do terminal digitando o comando msfconsole, que traz informações sobre a versão do framework, número de exploits, payloads, encoders, NOPs, módulos auxiliares disponíves e o logo do Metasploit, como ilustrado na Figura 24. Como também pela interface gráfica, acessando o seguinte diretório: Backtrack> Exploitation Tools> Network Exploitation Tools> Metasploit Framework> msfconsole. Figura 24: Tela inicial do MSF Fonte: Próprio autor (2012)
  57. 57. 56  Msfcli: provê uma poderosa interface de linha de comando, mas não suporta os mesmos recursos avançados de automoção do msfconsole. Para (MAYNOR e MOOKHEY, 2007) é uma excelente interface para scripting, muito usada quando se sabe exatamente qual exploit será executado, quando a mesma vulnerabilidade precisa ser testada em diferentes sistemas e assim como o msfconsole suporta o lançamento de exploits e módulos auxiliares.  Msfweb: interface que disponibilizava os recursos do Metasploit nos navegadores web principalmente para os usuários inexperientes com a linha de comando. Mas como não era estável e não estava recebendo atualizações constantemente foi descontinuada do projeto.  Msfgui: é a interface onde os mesmos recursos que são disponibilizados nas duas primeiras interfaces comentadas anteriormente podem ser usados, mas por meio da interface gráfica ao invés do modo texto. 4.1.2 Módulos Dentre os módulos existentes, somente o Exploit, Payload e Meterpreter serão utilizados, mas todos são descritos a seguir: 4.1.2.1 Exploit Para Cesar (2009), fragmentos de códigos desenvolvidos para cada tipo de aplicativo, falha ou sistema operacional que se aproveita de vulnerabilidades específicas são chamados de exploits. Eles podem ser usados tanto diretamente, quanto podem ser incorporados aos malwares, sessão 2.4.3, podendo atacar sistemas locais ou remoto, diversificando-se somente quanto a sua forma e poder de ataque. E para Henrique (2011) existem exploits:  Locais: exploram a vulnerabilidade dos sistemas e softwares por meio de um shell adquirido em busca de obter privilégios de administrador;  Remotos: não precisa de um shell para explorar a vulnerabilidade, pois basta apenas um host para rodá-lo. Exploram bugs remotamente, por exemplo, no protocolo FTP, responsável pela transferência de arquivo na internet;
  58. 58. 57  Aplicações Web: como próprio nome já diz busca explorar falhas relacionadas às aplicações web, como Apache, SQL Injection, entre outros; Geralmente os exploits são usados para causar estragos como ataques Zero-day ou Dia-Zero, que para Singel (2007, PC World) é a tática de se aproveitar de vulnerabilidades em softwares que estão desconhecidas pelos próprios fabricantes do software. Mas eles também são usados de forma ética, onde o pesquisador ao conseguir se aproveitar de alguma falha do sistema de alguma empresa, relata o problema ao fabricante, que as devidas providências para que a correção seja imediata. 4.1.2.2 Payload Payloads são pedaços de código escritos em Assembly que facilita o estabelecimento de uma conexão entre o alvo e o atacante (MAYNOR e MOOKHEY, 2007). Mesmo que os payloads sejam tradicionalmente criados do zero e para isso é requerido um bom conhecimento em linguagem Assembly, o MSF é composto por uma grande quantidade de payloads pré-definidos podendo ser utilizados em conjunto com os exploits. Para Pereira (2012) a seleção correta do payload é tão importante quanto à seleção do exploit, pois existe um payload adequado para cada situação. . 4.1.2.3 Meterpreter Meterpreter é uma extensão do Metasploit Framework que torna a fase de pós- exploração mais eficiente e rápida por proporcionar recursos avançados prontos. Para (MAYNOR e MOOKHEY, 2007) o Meterpreter é um payload complexo diferente de muitos outros, pois possibilita aos desenvolvedores escreverem suas extensões em formato de arquivos DLL que podem ser carregados no sistema remoto. Por os comandos do Meterpreter serem executados dentro do contexto do processo vulnerável, de acordo com Pereira (2012) há a possibilidade de fazer o dump dos hashes de senhas do sistema, migrar para outro processo, além de disponibilizar um shell interativo para que sejam escalados privilégios com a execução de comandos específicos na máquina alvo. Após o sucesso da exploração, o MSF apresenta o shell do Meterpreter onde diversos comandos específicos são executados, alguns deles são apresentados no Quadro
  59. 59. 58 05, que possibilitam o atacante manter o acesso ou a escalada de privilégios na máquina vítima. Quadro 05: Comandos do Meterpreter Comandos Descrição sysinfo Mostra as informações do sistema comprometido getuid Identificada a identidade do usuário shell Cria um shell com a máquina vítima migrate PID migra o meterpreter para um outro processo ps Apresenta uma lista de processos sendo executado getsystem Usado para a escala de privilégios run –persistence -x Garante que a máquina vítima poderá ser acessada posteriormente run vnc Abre a área de trabalho remota da vítima reg Usado para interagir com os registros da máquina vítima screenshot Fotografa a tela da máquina vítima clearev Apaga todos os logs criados reboot Reinicia a máquina vítima shutdown Desliga a máquina vítima Fonte: Adaptado de Maynor e Mookhey (2007, p.91) 4.2 ANATOMIA DA EXPLORAÇÃO A fase de exploração consiste em estabelecer o acesso a um sistema ou recurso aproveitando-se de uma vulnerabilidade encontrada. Portanto, o bom planejamento de como e o que será utilizado para explorar a vulnerabilidade só acontecerá, caso a mesma seja encontrada na segunda fase, comentada na seção 3.4.3. Sendo assim, esta subseção busca apresentar como a ferramenta Metasploit Framework funciona durante a etapa de exploração. Figura 25: Executando o Metasploit Framework Fonte: Adaptado de Singh (2011)
  60. 60. 59 A Figura 25 demonstra um invasor primeiramente (1) enviando o exploit e o payload. O exploit será executado para explorar a vulnerabilidade (2). Logo depois o payload executa com o sucesso do exploit, ou seja, se for correspondente ao tipo de vulnerabilidade (3). E quando o payload rodar na máquina vítima, o infrator poderá aplicar não só os ataques apresentados na seção 3.4.4, com outros existentes e também os códigos maliciosos abordados na seção 2.4.2 (4).
  61. 61. 60 5. ESTUDO DE CASO Neste capítulo será abordado o estudo de caso que foi realizado em um laboratório de Pentesting pessoal que foi criado utilizando a virtualização. Nele foi montado um ambiente controlado, onde erros de software ou aplicações maliciosas podiam ser inseridas sem nenhum problema. Assim após descrever como as quatro etapas do modelo apresentado na seção 3.4 são compreendidas, chega-se o momento então de aplica-las. Portanto, todos os recursos e cenário utilizado em sua aplicação são expostos a seguir. 5.1 TOPOLOGIA DA SIMULAÇÃO A Figura 26 apresentada abaixo representa a topologia que foi utilizada no cenário proposto: Figura 26: Ambiente da simulação Fonte: Próprio autor (2012) No laboratório montado para aplicar as técnicas de penetração foram usados:  1 notebook do modelo Inspiron 1545 da Dell onde foi instalado software VMware Workstation, onde foi configurado uma máquina virtual tendo o BackTrack 5 R3 como seu sistema operacional e outra com o Windows XP SP2;  1 roteador D-link dir 300 responsável por permitir que as máquinas virtuais acessem a rede sem fio. O sistema operacional BackTrack é uma distribuição Linux atualmente baseada no Ubuntu voltada para Pentesters. Ela oferece uma grande variedade de ferramentas já instaladas e pré-configuradas, inclusive o Metasploit Framework que foi escolhido neste
  62. 62. 61 trabalho para aplicar as técnicas de penetração, por isso atuou como sendo a máquina atacante. A máquina virtual com o Windows XP SP2 instalado foi à vítima do cenário. Como as vulnerabilidades que serão exploradas são relativamente antigas, já existem utilitários de segurança para reconhecê-las e prevenir a execução dos ataques sobre elas, por isso os seus patches específicos das vulnerabilidades não foram atualizados. 5.1.1 Ambiente Operacional Como já apresentada em algumas seções deste trabalho, toda máquina que esteja conectada a Internet recebe um nome de domínio e um endereço IP. Tanto o nome de domínio como o endereço IP não revela nada pessoal sobre usuário que tenha acessado um site, por exemplo, mas obter esse tipo de informação, dependendo do que ser quer testar, é essencial para o início de um Pentesting. Imagine a seguinte situação: uma empresa fictícia contrata uma equipe de profissionais para realizar o Pentesting. O contrato firmado indica que os testes serão anunciados e de caixa-branca. Com o intuito da equipe atuar como um insider10 será realizado um ataque interno a uma máquina de um funcionário, que neste caso será a vítima. Como proposta inicial do ataque a equipe criou um blog malicioso de música, e enviou para o e-mail de um dos funcionários propagandeando-o, e sem perceber que o blog era malicioso, apenas com a ação de clicar no link, não só o IP do funcionário, mas como outras informações são enviadas para o insider. É exatamente baseando-se nessa condição que foi planejado um ambiente controlado para o estudo de caso. 5.1.2 Simulação 5.1.2.1 Coleta de informações O primeiro passo realizado no ambiente planejado foi criar um blog (http://testexsscros.blogspot.com.br/). Para Gonçalves (2009) uma boa forma de conseguir criar uma comunicação entre o atacante e a vítima é usando um canal XSS. Esse canal 10 São ex-funcionários ou funcionários que geralmente agem como atacantes quando estão insatisfeitos com sua situação ou cargo na empresa onde trabalham e por terem um bom conhecimento do sistema da informação da empresa, buscam de alguma forma, prejudicá-los.
  63. 63. 62 comentado pelo autor foi construído com a utilização do XSS Shell, injetando no corpo do blog criado o seguinte trecho de código JavaScript: <script src="http://www.residenceimobiliaria.com.br/vitor/XSSShell/xssshell.asp"></script> O código acima significa que a vítima está vinculada ao atacante que neste caso hospedou os arquivos do XSS Shell no servidor do residenceimboliaria.com.br. A Figura 27 abaixo demonstra a arquitetura desse ataque. Figura 27: Arquitetura de um Canal XSS Fonte: Gonçalves (2009) Quando qualquer usuário acessar o site malicioso, o script é rodado no contexto do site infectado, em seguida o script que está rodando no navegador da vítima realiza solicitações para o Servidor XSS Shell procurando instruções. Ao receber uma instrução do servidor, o navegador da vítima executa e manda uma resposta, isso possibilita que o atacante passe a ter o controle sobre o browser. Por meio da interface web, é possível obter o histórico das páginas, as sessões abertas do navegador, travar o navegador, entre outras atividades não ilegais. E dentre essas possibilidades é possível obter também o IP, neste caso privado (192.168.0.101), opção que foi escolhida. No segundo momento, após a obtenção do endereço IP da máquina vítima, o mapeamento com o Nmap foi disparado contra a mesma, etapa que ainda compreende a coleta de informações. Como apresentado na seção 3.4.2 percebe-se que a ferramenta usa pacotes de IP para examinar portas, detectar os serviços que estão executando e sistema operacional do ambiente que está sendo mapeado. O mapeamento realizado é abordado a seguir:
  64. 64. 63 Figura 28: Identificando as portas abertas Fonte: Próprio autor (2012) Como ilustrado na Figura 28, parâmetros foram combinados em um mesmo comando por questão de praticidade. O parâmetro usado para mostrar as portas abertas na vítima foi o TCP SYN Scan (-sS), pois apesar de ser mais lento do que o TCP Connect Scan (-sT), é mais difícil de ser detectado. O “-sV” para informar as versões dos serviços que estavam executando em cada porta aberta e o “-O”, para indicar o sistema operacional que a vítima está rodando. As portas TCP verificadas que estavam abertas foram a 25, 80, 135, 139, 443,445, 1025 e os serviços relacionados respectivamente aos números de portas o: smtp, http, msrpc, netbios-ssn, https?, microsoft-ds, msrpc. Dentre as sete portas abertas, novecentos e noventa e três portas foram dadas como fechadas, pois nenhuma aplicação estava executando nelas. E nota-se que a identificação do sistema operacional não foi exata, pois o Nmap indicou corretamente que é uma máquina Windows, mas não soube identificar especificamente a versão. O fato das portas já mencionadas estarem abertas, não são sinônimos da máquina estar vulnerável, mas apenas que há um serviço sendo oferecido naquela porta e que elas não estão sendo bloqueados por nenhum firewall.
  65. 65. 64 5.1.2.2 Identificação de vulnerabilidades Como não há a possibilidade de determinar quais serviços está realmente vulnerável com o uso do Nmap, esse é o momento de utilizar o Nessus para adquirir esse tipo de informação. Geralmente costuma-se utilizar o scanner para detectar e corrigir as brechas de segurança, mas neste estudo caso foi usado somente para detectar e não corrigir as vulnerabilidades. Para acessar a interface simples do Nessus, primeiramente foi criada uma conta, onde a partir dela foi realizada a autenticação. Ao autenticar-se, a interface do usuário exibe menus para a criação de políticas, realização de varreduras e pesquisa de relatórios. Sendo o objetivo dessa segunda fase realizar a varredura no IP obtido (192.168.0.101), o menu usado para tal feito foi o “Scans”. Em seguida a conclusão da varredura que durou alguns minutos para ser finalizada, o menu “Scans” exibiu detalhes de todos os serviços ativos na máquina varrida, inclusive os vulneráveis com o nível de gravidade que elas podem causar, onde das dez vulnerabilidades detectadas quatro foram registradas como médias, quatro críticas, uma baixa e uma alta. Dentre as quatros vulnerabilidades críticas identificadas, Figura 29, a escolhida para ser explorada foi a MS08-67 registrada com o mesmo nome no boletim de segurança da Microsoft. Vale enfatizar que qualquer outra das identificadas poderia ser explorada, sendo essa a selecionada somente para servir como exemplo neste estudo de caso. Figura 29: Lista de vulnerabilidades Fonte: Próprio autor (2012) Outro aspecto interessante do Nessus são os detalhes apresentados de cada vulnerabilidade encontrada. E consultando as informações da MS08-067, ilustrada na Figura 30, percebe-se que é uma vulnerabilidade do serviço executado na porta TCP 445, que de
  66. 66. 65 acordo com sua sinopse permite execução remota de código caso um usuário receba uma solicitação do chamado de procedimento remoto – RPC. Figura 30: Descrição da vulnerabilidade ms08-67 Fonte: Próprio autor (2012) Nos diversos sistemas operacionais Windows, seja ele 2000, XP, 2003, Vista ou 2008, de acordo com a descrição apresentada acima, o invasor pode explorá-la com a execução de códigos arbitrários. De acordo com a Microsoft (2008) o RPC é um protocolo o qual pode ser usado por um programa para solicitar um serviço de outro programa armazenado em outra máquina na rede. No RPC, o programa responsável por realizar a solicitação é o cliente e o programa fornecedor de serviços é o servidor. A Microsoft (2008) ainda enfatiza que o serviço servidor componente do sistema operacional Windows auxilia no suporte ao RPC, tanto no compartilhamento de arquivos como no de impressoras, que são recursos locais através da rede. E a vulnerabilidade é originada no momento que esse serviço servidor não manipula corretamente os requerimentos do RPC. 5.1.2.3 Exploração Sabendo como a vulnerabilidade é originada, chega-se a terceira fase, momento onde a vulnerabilidade é explorada. Inicialmente nesta etapa o comando ”search –t exploit rpc” foi disparado para que todos os exploits referentes ao RPC fossem apresentados. E como está ilustrado na Figura 32, no banco de dados do MSF foi encontrado o exploit específico para explorar a vulnerabilidade detectada pelo Nessus, pois voltando a Figura 31 percebe-se que o nome do plugin da vulnerabilidade é o mesmo.
  67. 67. 66 Figura 31: Encontrando o exploit correto Fonte: Próprio autor (2012) De acordo com a equipe de desenvolvimento do Metasploit (2008) o exploit ms08_67_netapi é responsável por explorar uma falha na DLL Netapi32, que contém a API do Windows usado por aplicativos para acessar redes Microsoft. E também é um processo do sistema necessário para o computador funcionar corretamente. Sabe-se que o compartilhamento de pasta ou arquivo é muito comum em uma rede de computadores. Quando acontece o compartilhamento um caminho sempre é criado para que sejam localizados e acessados através da rede. Durante a criação desse caminho Minh e Minh (2009) afirmam que o serviço servidor do Windows usa a função NetpwPathCanonicalize() da DLL Netapi32 para converter caminhos longos (ex: CProgram Files..Windows) em caminhos curtos (ex:CWindows). Como o Windows não se adequa a caminhos longos durante o compartilhamento torna-se vulnerável ao ataque de Buffer-Overflow descrito na seção 3.4.4.6. Para tal esclarecimento o código da função NetpwPathCanonicalize() é apresentado na Figura 32 abaixo :
  68. 68. 67 Figura 32: Código da função NetpwPathCanonicalize() Fonte: MINH e MINH (2009) Examinando o código acima se percebe que a função NetpwPathCanonicalize() verifica o tamanho do caminho antes de executar a função CanonicalizePathName(). Enquanto a última usa a wcscat() para copiar o caminho a variável local (wcsBuffer). Como consequência essa função inicialmente não criaria uma sobrecarga de buffer, mas com diversas solicitações RPC isso aconteceria (Figura 33). Figura 33: Sobrecarga de solicitações Fonte: MINH e MINH (2009) Por exigir um conhecimento avançado na linguagem Ruby, o código do exploit não foi apresentado, mas de maneira geral por trás das diversas linhas de código, ele realiza exatamente as diversas chamadas RPC anteriormente mencionadas que exploram a falha da função. Após encontrar o exploit adequado para a vulnerabilidade, às configurações entre a máquina atacante e vítima é feita. A figura 34 ilustra os parâmetros setados, onde foi selecionado o exploit, o payload “reverse_tcp” responsável por gerar um shell meterpreter na vítima e enviar de volta para a máquina atacante, o RHOST que é o IP da vítma e o LHOST o IP da máquina atacante.
  69. 69. 68 Figura 34: Parâmetros configurados Fonte: Próprio autor (2012) Com as configurações atribuídas, o comando “info” foi disparado, trazendo todos os detalhes em conjunto do exploit e payload selecionado bem como os sistemas operacionais vulneráveis, representados por números. Ao escolher o número, no caso trinta e quatro referente ao Windows XP SP2, como mostra a Figura 35, a exploração é realizada com sucesso, retornando o meterpreter. Figura 35: Executando o exploit Fonte: Próprio autor (2012) 5.1.2.4 Pós-Exploração Após a conclusão da fase de exploração, com a obtenção do meterpreter, inicia-se a última fase, a de pós-exploração. O meterpreter possibilita a criação de canais de reconexões ao alvo sem a necessidade de novas explorações, utilizando backdoors e de ter privilégios de administrador na máquina vítima. Inicialmente, como ilustrado na Figura 36, o comando “shell” foi disparado para criar um canal entre o meterpreter e o prompt de comando do Windows. Assim, com o prompt apresentado, é possível executar comandos específicos para criar diretórios, remover e copiar arquivos, de certa forma navegar no sistema operacional vítima através da linha de comando. Mas aqui, o foco foi direcionado para o meterpreter.
  70. 70. 69 Figura 36: Obtendo o prompt do Windows Fonte: Próprio autor (2012) Em seguida ao retorno do meterpreter com o comando “exit”, foi verificado o identificador do processo do meterpreter, com o comando “getpid” o qual retornou o número 1088. Usando o “getuid”, como ilustrado na Figura 37, percebe-se que a máquina atacante no momento agora é administradora. Figura 37: Informações do ambiente explorado Fonte: Próprio autor (2012) Em algumas situações o meterpreter não estabelece privilégios de administrador de imediato, mas caso isso aconteça, é importante migrar o processo do meterpreter para algum processo estável, para evitar que ele seja descoberto pelo usuário da máquina vítima. Com a finalidade de aumentar ainda mais os privilégios e para que seja possível executar outros comandos específicos, o “getsystem” foi executado. Posteriormente a escalada de privilégios, para se ter o acesso remoto da vítima através da interface gráfica, o Virtual Network Computing - VNC foi executado. A Figura 38 exemplifica o script responsável por executar esta função.

×