Aplicação de um modelo simplificado das metodologias do pentesting
-
Upload
vitor-melo -
Category
Technology
-
view
167 -
download
4
Transcript of 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
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
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
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Ê)
Dedico este trabalho a minha família, aos professores e amigos que conquistei ao longo dos quatro anos de graduação.
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.
“O resguardar-nos da derrota está em nossas mãos, mas a oportunidade para
derrotar o inimigo é fornecida por ele próprio”.
Sun Tzu
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.
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.
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
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
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
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
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
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.
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.
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.
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
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.
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.
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.
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.
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
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)
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:
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.
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.
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.
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.
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
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.
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).
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.
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á
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.
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.
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.
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.
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
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.
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.
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
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.
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)
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.
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)
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.
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.
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.
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.
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.
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.
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.
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
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:
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)
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;
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
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)
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).
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
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.
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:
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.
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
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.
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 :
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.