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

78
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

Upload: vitor-melo

Post on 25-Jul-2015

167 views

Category:

Technology


4 download

TRANSCRIPT

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

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

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

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

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

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

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

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

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

Dedico este trabalho a minha família, aos professores e amigos que conquistei ao longo dos quatro anos de graduação.

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

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.

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

“O resguardar-nos da derrota está em nossas mãos, mas a oportunidade para

derrotar o inimigo é fornecida por ele próprio”.

Sun Tzu

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

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.

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

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.

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

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

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

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

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

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

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

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

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

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

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

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.

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

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.

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

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.

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

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

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

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.

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

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.

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

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.

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

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.

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

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

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

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)

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

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:

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

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.

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

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.

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

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.

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

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.

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

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

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

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.

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

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

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

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.

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

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á

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

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.

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

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.

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

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.

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

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.

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

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

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

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.

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

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.

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

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

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

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.

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

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)

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

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.

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

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)

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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

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

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:

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

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)

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

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;

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

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

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

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)

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

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

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

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

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

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.

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

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:

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

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.

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

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

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

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.

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

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: \\C\Program

Files\..\Windows) em caminhos curtos (ex:\\C\Windows).

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 :

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

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.

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

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.

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

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.

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

70

Figura 38: Executando o VNC

Fonte: Próprio autor (2012)

Para garantir a persistência da máquina vítima, o comando apresentado na Figura 39

foi disparado. Ele permite o acesso ao alvo mesmo que ele seja desligado.

Figura 39: Criando um backdoor

Fonte: Próprio autor (2012)

Sabendo da enorme flexibilidade oferecida pelo meterpreter nesta fase de pós-

exploração, algumas outras atividades também foram sucedidas, como instalação de

keyloggers, que têm a finalidade de registrar tudo que é digitado, uso de sniffers e ataques

de força bruta as senhas do sistema.

Após explorar alguns recursos do meterpreter chega-se ao final da pós-exploração.

Com o Pentesting concluído com êxito, um último comando foi usado, o “clearev”,

removendo todos os logs, Figura 40, que são responsáveis por registrar os processos de

eventos relevantes em um sistema operacional.

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

71

Figura 40: Limpando os logs

Fonte: Próprio autor (2012)

5.1.2.5 Relatório

O relatório do Pentesting é o produto final, que permite o aprimoramento da estrutura

de segurança da informação da empresa. A partir dele a empresa passa a conhecer a real

situação dos seus sistemas de segurança e o que poderá fazer para melhor atualizar a

estrutura da Segurança da Informação.

Como neste estudo de caso, dentre as diversas vulnerabilidades encontradas,

apenas uma foi selecionada para ser exemplificada, optou-se por não montar um relatório,

pois frequentemente os relatórios não se limitam a apenas uma vulnerabilidade e sim

abrangem em detalhes como todas foram descobertas, exploradas e as recomendações de

como podem ser mitigados.

Para a vulnerabilidade MS08-067 (http://technet.microsoft.com/en-

us/security/bulletin/ms08-067) o recomendado seria a instalação imediata do patch de

correção, disponibilizado pela Microsoft, sendo responsável por eliminar a vulnerabilidade,

corrigindo a maneira como o serviço Servidor manipula solicitações de RPC. E a segunda

recomendação seria de manter habilitado o firewall, mas desativar o compartilhamento de

arquivos e impressoras.

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

72

6. RESULTADOS OBTIDOS

Foram observadas as quatros fases do modelo simplificado do Pentesting, com o

intuito de demonstrar a eficácia do mesmo. Mas para o êxito da simulação, algumas

dificuldades foram enfrentadas.

Na primeira fase, a de coleta de informações, o obstáculo encontrado foi à definição

do que poderia ser feito para obter o endereço IP da máquina vítima, sem ser descoberto.

Visualizando os cenários reais percebeu-se, então que a melhor forma era realizar o Cross-

Site-Scripting no navegador da vítima, atividade muito comum no lado dos infratores, pois os

usuários não atentam ao clicar em links, principalmente nos que são divulgados nas tão

famosas redes sociais.

Adquirindo o endereço IP, logo foi disparado o Nmap, para buscar informações dos

serviços e portas abertas. Quando o firewall estava habilitado na máquina vítima, visualizou-

se que o mesmo desempenhando sua função bloqueou o tráfego, gerado pelo Nmap,

considerando neste caso como indesejado, não apresentando então todas as informações

que deveriam ter sido exibidas pelo Nmap.

Por não ter obtido o conhecimento das opções avançadas que poderiam ser

utilizadas no Nmap para enganar o firewall, como por exemplo, modificar a origem do

tráfego, ele foi desabilitado para dar continuidade à simulação. Mas sabe-se que em um

ambiente real, o atacante enfrenta esta linha de defesa e mesmo não o deixando ativo, foi

essencial para demonstrar o quanto ele pode contribuir para restrição de acessos à rede.

Outra grande dificuldade enfrentada foi na terceira fase, a de exploração. No

ambiente operacional montado, a simulação baseou-se na visão do atacante quando

pretende invadir um sistema ou uma máquina e assim a descrição correspondente à

vulnerabilidade deveria ter sido apresentada em detalhes. Isto não aconteceu, pois exige um

conhecimento aprofundado em determinadas recursos do sistema operacional Windows, e

por isso foi descrito de forma geral.

Por fim, é fato afirmar que o invasor ao explorar ou ter acesso remoto a um sistema

após a execução de todas as fases, habilita-se a buscar informações sigilosas como dados

financeiros, estratégias de negócio, informações de configurações, registros pessoais, e etc.

Sendo o papel do Pentesting demonstrar as maneiras de evitar tais riscos.

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

73

6.1 CONSIDERAÇÕES FINAIS

Diariamente são descobertas diversas vulnerabilidades que ao serem exploradas

geralmente comprometem a disponibilidade, integridade e confidencialidade, que são os três

pilares da Segurança da Informação, causando prejuízos e danos à imagem da empresa.

Como a grande competividade do mercado, centraliza-se em questões de prazos e

orçamentos, as organizações juntamente com seus parceiros e fornecedores abrem mão

dos testes de segurança na sua infra-estrutura, composta por redes, ferramentas, sistemas

e aplicações.

Seguindo essa linha de raciocínio, é fato afirmar que a segurança por completo

torna-se difícil de ser alcançada, pois sempre um sistema está susceptível a ser

comprometido ou fraudado. Por isso recomenda-se, por exemplo, aos gerentes de rede que

estejam sempre atentos as atualizações que são disponíveis pelo fabricante para o sistema

operacional dos equipamentos da rede para corrigir erros de programação, ou dos softwares

que estejam vulneráveis.

Sendo assim, neste caso, com a intenção de mitigar os riscos inerentes aos ativos de

T.I das empresas, e de validar se essa e muitas outras práticas são feitas de forma efetiva, o

Pentesting aos poucos tem sido adotado.

Através de um estudo teórico alinhado com o exemplo prático abordado no estudo de

caso, neste trabalho foi possível constatar que a aplicação do Pentesting, é uma das

melhores formar de avaliar a segurança de uma organização.

Com a construção de um bom planejamento, seguido de uma metodologia eficiente e

com o auxílio de ferramentas open-source, o Pentesting torna-se um processo fundamental

no contexto da segurança computacional de qualquer organização.

Tendo como base o conhecimento geral obtido acerca do Pentesting com a leitura

deste trabalho, sugere-se como trabalhos futuros, a abordagem minuciosa de uma das

quatro metodologias do Pentesting analisadas. Por exemplo, a metodologia OWASP, onde

são evidenciadas as aplicações web, que dentro do seu escopo sugere o uso da máquina

virtual OWASP Broken Web Application, composta por aplicações vulneráveis e ferramentas

que auxiliaram no aprendizado do Pentesting em aplicações web.

Outra proposta para trabalhos futuros é a de buscar melhorar a metodologia ágil do

Pentesting proposta ao longo do trabalho, testando-o com cenários mais robustos ou até

mesmo criar uma nova metodologia.

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

74

REFERÊNCIAS BIBLIOGRÁFICAS

ALI, Shakeel; HERIYANTO, Tedi. Backtrack 4: Assuring Security by Penetration Testing. Mumbai: Packt Publishing, 2011. ANDRESS, Jason. The basics of information security: understading the fundamentals of Infosec in theory and pratice. Estados Unidos: Syngress, 2011. ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 17799: tecnologia da informação – técnicas de segurança – código de prática para a gestão da segurança da informação. Rio de Janeiro, 2001. ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 27001: tecnologia da informação – técnicas de segurança – sistemas de gestão de segurança da informação- requisitos. Rio de Janeiro, 2006. BARTH, Douglas G. A importância da gestão da segurança da informação, 2003. Disponível em: < http://artigocientifico.uol.com.br/uploads/artc_1166723625_15.pdf>. Acesso em: 13 ago. 2012. BORGES, Cristiano G. Estudo Comparativo de Metodologias de Pentests, 2011. Disponível em: < http://pt.scribd.com/doc/65629231/Plugin-Artigo-Pentest-Cristiano>. Acesso em: 04 jan. 2012. CÂNEDO, Daniel Rosa. Um ambiente experimental para análise de ataques de negação de serviço. 2006. 87 f. Dissertação (Departamento de Engenharia Elétrica). Universidade de Brasília-Faculdade de Tecnologia, Brasília. Disponível em: <http://bdtd.bce.unb.br/tedesimplificado/tde_busca/arquivo.php?codArquivo=937>. Acesso em: 01 maio. 2012. CESAR, Julio. Desenvolvimento e aplicação de exploits utilizando o Metasploit Framework. 2009. 48 f. Monografia. Centro Universitário de Filadélfia. Disponível em: <

http://pt.scribd.com/vicenthe/d/75929979-tcc-metasploit >. Acesso em: 15 maio. 2012. DUARTE, Raphael. Buffer overflow - Uma introdução teórica. Disponível em:<

http://www.gris.dcc.ufrj.br/documentos/artigos/buffer-overflow/at_download/file>. Acesso em: 04 ago. 2012. ENGEBRETSON, Patrick. The basics of hacking and penetration testing: ethical hacking and penetration testing made easy. Estados Unidos: Syngress, 2011. FERNANDO, Luís. Segurança da Informação: Um estudo de caso na universidade federal de são joão del-rei. 2011. 80 f. Monografia. Universidade Federal de Lavras. Disponível em: < http://www.ginux.ufla.br/files/mono-LuisFernandoPorto_0.pdf>. Acesso em: 22 ago. 2012. FERREIRA, Rafael, SOARES, Henrique, SALGADO, Bruno, AZEVEDO, Jarcy. Mapeamento de redes com o nmap- ferramenta de código aberto com diversas funcionalidades. Segurança Digital, n. 006, maio. 2012. Disponível em: <

http://segurancadigital.info/sdinfo_downloads/revista_sd/6_edicao_maio_31_05_2012.pdf>. Acesso em: 03 ago. 2012.

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

75

FIOCCA, Michele. Literature Study of Penetration Testing, 2009. Disponível em:<http://www.ida.liu.se/~TDDD17/oldprojects/2009/projects/005.pdf>. Acesso em: 10 mar. 2012. GONÇALVES, Armando. Cross-Site-Scripting: Uma Análise Prática. 2009. 40f. Monografia. Universidade Federal de Pernambuco. Disponível em: <http://www.cin.ufpe.br/~tg/2009-2/agsj.pdf> 15 de set. 2012 GONÇALVES, Júlio César. O gerenciamento da informação e sua segurança contra ataques de vírus de computador recebidos por meio eletrônico. 2002. 329 f. Dissertação (Mestrado em Administração de Empresas). Universidade de Taubaté, São Paulo. Disponível em: < http://www.ppga.com.br/mestrado/2002/goncalves_julio_cesar.pdf>. Acesso em: 17 dez. 2011. GRAVES, Kimberly. Official Certified Ethical Hacker- Review Guide. 1º Ed. Canadá: Wiley Publishing, Inc., 2007. GREGG, Michael. Certified Ethical Hacker Exam Prep. 2º Ed. Canadá: Pearson Certification, 2006. GUILLAUMIER, Jacques. Cross Site Scripting - XSS - The Underestimated Exploit, 2007. Disponível em: <http://www.acunetix.com/websitesecurity/xss.htm> Acesso em: 12 de set. 2012.

GUMERATO, Ronaldo.”SQL Injection” em aplicações web. 2009. 72 f. Monografia (Bacharelado em Sistema de Informação). Faculdade Aplicada de Minas, Uberlândia. Disponível em: <http://www.si.lopesgazzani.com.br/TFC/monografias/Monografia%20-%20Ataque%20SQL%20Injection%20-%20Ronaldo%20Gumerato.pdf >. Acesso em: 06 abr. 2012. HENRIQUE, Cássio. Exploits e ferramentas para utilização, 2011. Disponível em:< http://www.profissionaisti.com.br/wp-content/uploads/2011/12/Exploit-e-ferramentas-para-sua-utiliza%C3%A7%C3%A3o.pdf >. Acesso em: 20 maio. 2012. KENNEDY, David, GORMAN, Jim O’, KEARNS, Devon, AHARONI, Mati. Metasploit: The Penetration Tester’s Guide. San Francisco: No starch press, 2011. KUNST, Rafael ; RIBEIRO, V. G. . Um estudo multicritério para classificação de vulnerabilidades de software. In: Workcomp Sul, 2004, Florianópolis - SC. Anais do I Workcomp-Sul. Florianópolis : UNISUL, 2004. LAPOLLI, P. C. Unidade Curricular de Gestão de Processos e Produção, 4 nov. de 2009. 18 p. LOPES, Igor. Afinal a cyberguerra já começou?, 2012. Disponível em:< http://olhardigital.uol.com.br/produtos/seguranca/noticias/afinal,-a-cyberguerra-ja-comecou>. Acesso em: 13 fev. 2012. MAYNOR, D.; MOOKHEY, K. K. Metasploit Toolkit. Burlington: Syngress, 2007.

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

76

MEDEIROS, Carlos Diego Russo. Segurança da Informação: Implantação de Medidas e Ferramentas de Segurança da Informação. 2001. 75 f. Monografia (Bacharelado em Informática). Universidade da Região de Joinville, Joinville, 2001. Disponível em: <http://www.linuxsecurity.com.br/info/general/TCE_Seguranca_da_Informacao.pdf>. Acesso em: 17 dez. 2011. MINH, B. Q.; MINH, H. X. How Conficker makes use of MS08-67, 2009. Disponível em:< http://dl.packetstormsecurity.net/papers/worms/conficker-ms0867.pdf >. Acesso em: 30 out. 2012. MITINICK, Kevin D.; SIMON, William L. A. A arte de Enganar: Ataque de Hackers: Controlando o Fator Humano na Segurança da Informação. Tradução: Kátia Aparecida Roque. São Paulo: Pearson Education do Brasil, 2003. 278 p. NORTON. 2011 Norton Cibercrime Report, 2011. Disponível em: < http://www.symantec.com/content/en/us/home_homeoffice/html/ncr/>. Acesso em: 02 fev. 2012. PANDA SECURITY. Panda Labs annual report, 2011. Disponível em: < http://press.pandasecurity.com/wp-content/uploads/2012/01/Annual-Report-PandaLabs-2011.pdf>. Acesso em: 08 mar. 2012. PEREIRA, Pedro. O que é o Meterpreter?, 2012. Disponível em:< http://www.pedropereira.net/metasploit-framework-meterpreter-payload/>. Acesso em: 20 ago. 2012. PRADO, Larissa. Quatro Passos no Gerenciamento de Riscos. São Paulo, 12 Mar. 2002. Diponível em: <http://www.securenet.com.br/artigo.php?artigo=114>. Acesso em: 13 Ago. 2012. SANDERS, Chris. Pratical Packet Anaysis. 2º Ed. Canadá: No Starch Press, 2011. SECURITY & DEFENCE AGENDA. The cyber defence report, 2012. Disponível em: <http://www.businesswire.com/news/mcafee/20120130005063/en/57-Cyber-Arms-Race-Place-Reveals-McAfee-Sponsored>. Acesso em: 02 fev. 2012. SINGEL, Ryan. Saiba como funciona um ataque de Dia Zero. Disponível em: <http://pcworld.uol.com.br/reportagens/2007/04/02/idgnoticia.2007-04-02.2380661777/>. Acesso em: 08 out. 2012. SINGH, Gurpreet. Profiling Campus Network Using Network Penetration Testing. 2011. 68 f. Tese (Ciências da Computação e Engenharia). THAPAR UNIVERSITY, Patiala. SÊMOLA, Marcos. Gestão de Segurança da Informação. Rio de Janeiro: Campus, 2003. SOARES, Rafael. Auditoria Teste de Invasão (Pentest) - Planejamento, Preparação e Execução, 2010. Disponível em:< http://www.seginfo.com.br/auditoria-teste-de-invasaopentest-planejamento-preparacao-e-execucao/>. Acesso em: 10 mar. 2012. TÂMEGA, Flávio. Hacker Inside. Goiânia: Gráfica Terra Ltda., 2003.

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

77

TENABLE SECURITY. Guia do usuário Nesus 5.0, 2012. Disponível em: <

http://static.tenable.com/documentation/nessus_5.0_user_guide_PTB.pdf>. Acesso em: 21 out. 2012. TREND MICRO. A look back at 2011 – Information is currency, 2011. Disponível em: <http://www.trendmicro.com/cloud-content/us/pdfs/security-intelligence/reports/rpt_a-look-back-at-2011_information-is-currency.pdf >. Acesso em: 02 fev. 2012. ULBRICH, H. César. Universidade Hacker – Livro de Exercícios. São Paulo: Digerati Books, 2007. URUBATAN, Neto. Dominando Linux Firewall Iptables. 1º Ed. Rio de Janeiro: Ciência Moderna, 2004. VARSALONE, Jesse.; MCFADDEN, Matheew. Defense Against The Black Arts. CRC Press, 2012. VIEIRA, Luiz. Segurança da Informação: mudanças de paradigma com o avanço da civilização. Espírito livre, n. 003, jun. 2009. Disponível em: <http://revista.espiritolivre.org/pdf/Revista_EspiritoLivre_003.pdf>. Acesso em: 15 dez. 2011. WHITAKER, Andrew, NEWMAN, Daniel P. Penetration Testing and Network Defense. Estados Unidos: Cisco Press, 2006.