UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO



Documentos relacionados
APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

REDES DE COMPUTADORES

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

Redes de Computadores. Prof. André Y. Kusumoto

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar

3 SERVIÇOS IP. 3.1 Serviços IP e alguns aspectos de segurança

Redes de Computadores. Protocolos de comunicação: TCP, UDP

SISTEMAS DISTRIBUIDOS

1 Redes de Computadores - TCP/IP Luiz Arthur

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Modelos de Camadas. Professor Leonardo Larback

Arquitetura de Rede de Computadores

Segurança de redes com Linux. Everson Scherrer Borges Willen Borges de Deus

PROJETO E IMPLANTAÇÃO DE INTRANETS

Redes de Computadores Modelo de referência TCP/IP. Prof. MSc. Hugo Souza

O projeto Metasploit é um framework que foi criado em 2003 por HD Moore e é uma plataforma que permite a verificação do estado da segurança dos

Redes de Computadores

Capítulo 7 CAMADA DE TRANSPORTE

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Redes de Computadores II

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Políticas de Segurança de Sistemas

Informática I. Aula Aula 22-03/07/06 1

Rede de Computadores

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP

Um Driver NDIS Para Interceptação de Datagramas IP

Entendendo como funciona o NAT

MÓDULO 8 Modelo de Referência TCP/IP

UNIVERSIDADE FEDERAL DE PELOTAS

Prof. Marcelo Cunha Parte 5

O modelo ISO/OSI (Tanenbaum,, 1.4.1)

Protocolos de Redes Revisão para AV I

Introdução ao Modelos de Duas Camadas Cliente Servidor

SISTEMAS OPERACIONAIS LIVRES GERENCIAMENTO DE SERVIÇOS NO WINDOWS. Professor Carlos Muniz

INFORMÁTICA FUNDAMENTOS DE INTERNET. Prof. Marcondes Ribeiro Lima

Revisão. Karine Peralta

Rede d s d e d Com o pu p t u ado d r o es Conceitos Básicos M d o e d los o de d Re R de d s:

Comunicando através da rede

Universidade Tuiuti do Paraná Faculdade de Ciências Exatas. Tecnologia de Análise e Desenvolvimento de Sistemas. TCP/IP x ISO/OSI

TCP/IP TCP UDP IP HTTP HTTPS FTP TFTP TELNET POP3 IMAP SMTP SNMP DHCP

Intranets. FERNANDO ALBUQUERQUE Departamento de Ciência da Computação Universidade de Brasília 1.INTRODUÇÃO

Camada de Transporte, protocolos TCP e UDP

Sistemas Distribuídos

Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento. Associação dos Instrutores NetAcademy - Julho de Página

ArpPrintServer. Sistema de Gerenciamento de Impressão By Netsource Rev: 02

Arquiteturas de Rede. Prof. Leonardo Barreto Campos

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Rotina de Discovery e Inventário

Professor: Gládston Duarte

ICORLI. INSTALAÇÃO, CONFIGURAÇÃO e OPERAÇÃO EM REDES LOCAIS e INTERNET

Satélite. Manual de instalação e configuração. CENPECT Informática cenpect@cenpect.com.br

FIREWALL. Prof. Fabio de Jesus Souza. Professor Fabio Souza

Histórico da Revisão. Versão Descrição Autor. 1.0 Versão Inicial

Capítulo 8 - Aplicações em Redes

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Firewall. Alunos: Hélio Cândido Andersson Sales

Versão /10. Xerox ColorQube 9301/9302/9303 Serviços de Internet

Protocolo. O que é um protocolo? Humano: que horas são? eu tenho uma pergunta

Aplicação Prática de Lua para Web

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS

2 de maio de Remote Scan

IP significa Internet Protocol. A Internet é uma rede, e assim como ocorre em qualquer tipo de rede, os seus nós (computadores, impressoras, etc.

Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede

Redes. Pablo Rodriguez de Almeida Gross

Aula 4. Pilha de Protocolos TCP/IP:

Entrar neste site/arquivo e estudar esse aplicativo Prof. Ricardo César de Carvalho

Outlook XML Reader Versão Manual de Instalação e Demonstração UNE Tecnologia

A Camada de Transporte

Gerência e Administração de Redes


SEG. EM SISTEMAS E REDES. 03. Vulnerabilidades em redes. Prof. Ulisses Cotta Cavalca <ulisses.cotta@gmail.com>

CAMADA DE TRANSPORTE

Manual SAGe Versão 1.2 (a partir da versão )

Arquitetura dos Sistemas de Informação Distribuídos

Arquitetura de Redes de Computadores. Bruno Silvério Costa

CCNA 2 Conceitos Básicos de Roteadores e Roteamento

TECNOLOGIA WEB INTERNET PROTOCOLOS

BlackBerry Mobile Voice System

Teleprocessamento e Redes

Ferramentas Livres para Monitoramento de Redes

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

Arquitetura de Rede de Computadores

Um pouco sobre Pacotes e sobre os protocolos de Transporte

Considerações no Projeto de Sistemas Cliente/Servidor

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O

Plano de Gerenciamento do Projeto

Telecomunicações. Prof. André Y. Kusumoto

APOSTILA DE REDES DE COMPUTADORES PARTE - III

Técnicas e ferramentas de ataque. Natiel Cazarotto Chiavegatti

Transcrição:

UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO VULSCANNER - SCANNER DE VULNERABILIDADES DE REDES LÓGICAS por Diego Lopes Itajaí (SC), junho de 2014

UNIVERSIDADE DO VALE DO ITAJAÍ CENTRO DE CIÊNCIAS TECNOLÓGICAS DA TERRA E DO MAR CURSO DE CIÊNCIA DA COMPUTAÇÃO VULSCANNER - SCANNER DE VULNERABILIDADES DE REDES LÓGICAS Área de Redes de Computadores por Diego Lopes Relatório apresentado à Banca Examinadora do Trabalho Técnico-científico de Conclusão do Curso de Ciência da Computação para análise e aprovação. Orientador: Ademir Goulart, M.Sc. Itajaí (SC), junho de 2014

Ao meu querido avô Pedro Natividade da Costa.

AGRADECIMENTOS Primeiramente a Deus; A minha mãe Lucélia da Costa Lopes por me colocar no caminho do bem; Agradecimento especial a minha futura esposa Aline Olsson, por todo apoio, incentivo e compreensão durante toda essa etapa da minha vida; Aos colegas de sala, trabalho e aos professores. Ao meu orientador Ademir, pelo incentivo e orientação durante todo o desenvolvimento do trabalho. Enfim, a todos que me incentivaram e ajudaram durante a minha jornada acadêmica.

RESUMO LOPES, Diego. VULSCANNER - Scanner de Vulnerabilidades de redes lógicas. Itajaí, 2014. 69 f. Trabalho Técnico-científico de Conclusão de Curso (Graduação em Ciência da Computação) Centro de Ciências Tecnológicas da Terra e do Mar, Universidade do Vale do Itajaí, Itajaí, 2014. Devido à disseminação em larga escala de computadores e dispositivos móveis em redes de transmissão de dados é evidente o crescimento do uso de aplicativos que utilizam arquitetura cliente-servidor. Entretanto, falhas de seguranças são cada vez mais presentes na estrutura de programação desse tipo de sistema. Pessoas mal intencionadas podem usufruir de vulnerabilidades presentes nesses códigos para expor informações de computadores, obter dados confidenciais ou ganhar controle de máquinas ou aplicativos, sem que esse possua autorização. Além disso, falhas na codificação geram falhas ou erros, afetando os fluxos ou processos da aplicação. Devido a esses fatores, surge a necessidade de ferramentas que possuam a capacidade de efetuar uma varredura em uma rede de computadores, identificar serviços ativos e versão, informar possíveis vulnerabilidades descobertas e auxiliar na correção do mesmo. Portanto, a análise dos riscos em uma rede de computadores e o desenvolvimento de um scanner de vulnerabilidades de redes com base na fundamentação teórica aplicada em redes de computadores é de fundamental importância para o contexto de segurança de redes. Palavras-chave: Redes de Computadores. Vulnerabilidades. Scanner.

ABSTRACT Due to the large-scale deployment of computers and mobile devices in data networks is clear an increase in the use of applications that use client-server architecture. However, computer s security failures are increasingly present in the programming structure of such systems. Malicious users can take advantage of vulnerabilities present in these codes to expose information in computers, obtain confidential data or gain control of machines or applications, without express permission. Failures in the programming code can generate bugs or errors, affecting the flow or application processes. Because of this type of issue, are necessary tools that have the ability to perform a scan on a computer network, identify active services, list version, report to the end user potential vulnerabilities discovered and assist to correcting the issues. Therefore, analysis of risk in computer networks and development of a network vulnerability scanner based on the theoretical foundation applied in computer networks has fundamental importance to the context of network security. Keywords: Computer Networks. Vulnerabilities. Scanner.

LISTA DE FIGURAS Figura 1. Figura 2. Figura 3. Figura 4. Figura 5. Figura 6. Figura 7. Figura 8. Figura 9. Figura 10. Figura 11. Figura 12. Figura 13. Figura 14. Figura 15. Figura 16. Figura 17. Figura 18. Figura 19. Figura 20. Figura 21. Figura 22. Figura 23. Figura 24. Figura 25. Figura 26. Figura 27. Figura 28. Figura 29. Figura 30. Figura 31. Figura 32. Figura 33. Figura 34. Figura 35. Figura 36. Figura 37. Figura 38. Figura 39. Figura 40. Figura 41. Figura 42. Processo de interação do ambiente.... 19 As sete camadas do modelo de referência OSI... 24 Representação dos quatro níveis conceituais TCP/IP... 25 Banco de dados interligados demonstrando um sistema distribuído.... 28 Clientes realizando pedidos a servidores... 30 Ferramentas de exploit são utilizadas para atacar servidores e serviços.... 33 Página principal do National Vulnerability Database.... 35 Exemplo de marcações utilizadas pelo XML do NVD... 36 Processo de varredura de portas do NMAP... 40 Processo de varredura de portas do NMAP... 42 Exemplo de captura de portas... 43 Relatório de vulnerabilidades gerado pelo McAfee Foundstone... 44 Painel de controle do McAfee Foundstone... 45 Painel de controle central do eeye Retina CS... 46 Exemplo de relatório gerado pelo aplicativo SAINT... 47 Resultado da varredura do Nessus... 49 Modelo de casos de uso da ferramenta Servidor... 53 Diagrama Entidade Relacionamento do banco de dados... 57 Fluxo de importação de novas informações no banco de dados local.... 58 Parametrização da URL do website NVD.... 58 Análise do arquivo XML.... 59 Armazenamento dos atributos em memória.... 59 Rotina de inserção ou atualização das informações no banco de dados.... 60 Modelo de casos de uso da ferramenta cliente... 62 Fluxo de varredura e identificação de vulnerabilidades.... 66 Detecção do aplicativo NMAP.... 67 Tela principal da ferramenta cliente.... 68 Processo de levantamento de serviços da classe ThScanner.java.... 69 Rotina de comparação da descoberta com o banco de dados.... 69 Instruções SQL para comunicação com o banco de dados.... 70 Contagem de registros no banco de dados antes da importação... 71 Sintaxe de chamada da aplicação em modo texto.... 71 Código de referência é exibido a cada importação no banco de dados.... 72 Resumo final das entradas no banco de dados.... 72 Contagem de registros no banco de dados após a importação.... 73 Checagem inicial no carregamento da aplicação.... 74 Varredura da ferramenta cliente em execução.... 75 Janela principal da ferramenta cliente populada após escaneamento.... 76 Janela exibindo os serviços detectados pela ferramenta.... 77 Janela com vulnerabilidades da ferramenta cliente.... 78 Lista de vulnerabilidades encontradas no host de teste.... 78 Detalhamento da vulnerabilidade selecionada.... 79

LISTA DE ABREVIATURAS E SIGLAS ACK Acknowledgment field significant API Application Programming Interface CVE Common Vulnerabilities and Exposures FIN No more data from sender GNU-GPL General Public License HTML HyperText Markup Language ICMP Internet Control Message Protocol IPv4 Internet Protocol version 4 NVD National Vulnerability Database POC Proof of Concept PUSH Push Function RFC Request For Comments RST Reset the connection SAINT Security Administrator s Integrated Network Tool SGML Standard Generalized Markup Language SYN Synchronize sequence numbers TCP Transmission Control Protocol TTC Trabalho Técnico-científico de Conclusão de Curso UNIVALI Universidade do Vale do Itajaí URG Urgent Pointer field significant WEB World Wide Web XML extensible Markup Language

15 SUMÁRIO 1 INTRODUÇÃO... 16 1.1 PROBLEMATIZAÇÃO... 18 1.1.1 Formulação do Problema... 18 1.1.2 Solução Proposta... 18 1.2 OBJETIVOS... 20 1.2.1 Objetivo Geral... 20 1.2.2 Objetivos Específicos... 20 1.3 METODOLOGIA... 21 1.4 ESTRUTURA DO TRABALHO... 22 2 FUNDAMENTAÇÃO TEÓRICA... 23 2.1 REDES DE COMPUTADORES... 23 2.1.1 Protocolo TCP/IP... 24 2.1.2 Sistemas Distribuídos... 28 2.2 VULNERABILIDADES... 30 2.2.1 Footprinting... 32 2.2.2 Varreduras de redes... 32 2.2.3 Exploits... 33 2.2.4 Base de dados de Vulnerabilidades... 34 2.3 XML... 35 2.3.1 Java.xml.stream.reader... 37 2.3.2 NMAP4J... 40 2.4 FERRAMENTAS DE AUXÍLIO À IDENTIFICAÇÃO DE SERVIÇOS... 38 2.4.1 NMAP... 39 2.4.2 Metasploit Framework... 41 2.4.3 Wireshark... 42 2.5 FERRAMENTAS SIMILARES... 43 2.5.1 Mcafee Foundstone... 44 2.5.2 eeye Retina CS... 45 2.5.3 SAINT... 46 2.5.4 Nessus... 48 2.5.5 Análise Comparativa... 49 3 DESENVOLVIMENTO... 51 3.1 ESPECIFICAÇÃO DAS FERRAMENTAS... 51 3.1.1 Especificação de requisitos do Servidor... 51 3.1.2 Modelagem da ferramenta Servidor... 52 3.1.3 Processo de importação de novas vulnerabilidades no banco de dados... 57 3.1.4 Especificação de requisitos do Cliente... 60 3.1.5 Modelagem da ferramenta Cliente... 61 3.1.6 Processo de varredura e detecção de vulnerabilidades de redes... 65 3.2 TESTES E VALIDAÇÕES... 70 3.2.1 Ferramenta Servidor... 70 3.2.2 Ferramenta Cliente... 73 4 CONCLUSÕES... 80 4.1 TRABALHOS FUTUROS... 81

16 1 INTRODUÇÃO Na década de 1980, os chamados microcomputadores disseminaram-se rapidamente pelo mundo, visto o baixo custo e desempenho cada mais elevados. Simultaneamente, surgiram as primeiras redes locais de computadores (LAN) que causaram uma revolução na automação dos escritórios e fábricas. A simplicidade da tecnologia Ethernet e seu baixo custo foram responsáveis pelas primeiras tecnologias de sucesso, em termos de redes de computadores (CARISSIMI, 2009). Os cientistas, sejam da área de telecomunicações ou de informática, estão de acordo com o fato de que essa rede global de informação deverá continuar a ser suportada basicamente pela tradicional plataforma de protocolos TCP/IP da internet com algumas de suas extensões (CARISSIMI, 2009). Sockets são abstrações simplificadas, criadas com o intuito de facilitar o desenvolvimento de aplicações que envolvam a comunicação entre dois ou mais computadores interligados por uma rede TCP/IP. O servidor é responsável por abrir um socket e ouvir eventuais pedidos de conexão. O outro computador, denominado cliente, usualmente se conecta ao socket do servidor para obter dados (MENDES, 2007). Footprinting é parte do processo de reconhecimento para a realização de uma avaliação de segurança se autorizado ou como um prelúdio para um ataque. Esse processo procura determinar informações de uma entidade por meio de consulta a informação disponível publicamente (RAUSTIN, 2011). Fingerprinting é o seguinte passo ao Footprinting e destina-se a identificar o software executado em hosts visíveis. Essa técnica pode ser um prelúdio para auditar vulnerabilidades de segurança ou mapear alvos para um possível ataque (RAUSTIN, 2011). Técnicas de footprinting e fingerprinting permitem descobrir informações detalhadas sobre computadores e serviços sendo executados em uma determinada rede de computadores. Através dessas técnicas é possível descobrir e enumerar serviços, versões de aplicações de rede e suas respectivas vulnerabilidades (SOBRAL, 2013). Cada novo serviço ou funcionalidade implementada pelos fabricantes de softwares, utilizados nas redes de computadores, encontra frequentemente uma imediata resposta de

17 hackers e crackers. Esses usuários utilizam seus conhecimentos avançados de programação de computadores, para explorar falhas existentes nos códigos desenvolvidos para essas novas funcionalidades. O resultado desses ataques pode ser simplesmente uma momentânea indisponibilidade do serviço (DOS Denial Of Service) ou, em pior situação, a abertura de um acesso privilegiado no computador hospedeiro do serviço que sofreu o ataque (ALMEIDA, 2013). Um relatório divulgado pela F-Secure detectou que a exploração de vulnerabilidades de software tornou-se a forma mais popular de ganhar acesso a um computador. Todas as vulnerabilidades reportadas nos últimos dois anos já tiveram correções de segurança lançadas por seus fornecedores um lembrete da importância de manter o software atualizado (F- SECURE, 2012). Uma pesquisa sobre os últimos 25 anos de vulnerabilidades em aplicações revela que de 1988 a 2005, o crescimento no número de vulnerabilidades aumentou, com uma leve decaída em 2003. O pico foi em 2006, com 6612 relatos, e após, houve um declínio até o ano de 2012, no qual a preocupação na segurança da rede teve significativa evolução. Após 2012 um aumento significativo nas vulnerabilidades foi novamente detectado (YOUNAN, 2013). Atualmente, mais de 57 mil vulnerabilidades de redes são conhecidas pelo NVD (National Vulnerability Database) (NVD, 2013). Em uma empresa com tipos diferentes de plataforma, talvez com diversas versões do Unix e Windows, a tarefa de corrigir falhas de segurança é muito mais complexa. Geralmente a heterogeneidade fornece ao invasor persistente mais possibilidades de encontrar erros. Ela também aumenta a imprevisibilidade do sistema (BURNETT, 2002). Portanto, este trabalho contempla o desenvolvimento de uma ferramenta que deverá encontrar em uma rede de computadores todos os serviços ativos, identificar o nome do serviço, enumerar a versão e reportar ao usuário final possíveis vulnerabilidades encontradas durante a varredura efetuada nesta rede.

18 1.1 PROBLEMATIZAÇÃO 1.1.1 Formulação do Problema Em uma organização, tudo está ligado à informação, e de extrema importância dentro da mesma. Dessa forma sua seguridade é de suma importância A segurança da informação funciona em longo prazo, fazendo uma harmonização de seus processos, tarefas, buscando diminuir os erros e não repassar informações desnecessárias ou sem importância (SILVA; CARVALHO; TORRES, 2003). Usuários mal intencionados utilizam brechas na programação ou arquitetura dos serviços de rede para controlar computadores, roubar dados confidenciais e efetuar ataques de negação de serviço sem que o mesmo possua autorização para o fim. Aplicativos que fazem varreduras em redes lógicas são cada vez mais fáceis de encontrar, aliado ao conhecimento de falhas na programação de serviços de rede simplificam a tarefa do crime cibernético. Com isso, identifica-se a carência de uma ferramenta gratuita que forneça informações sobre vulnerabilidades presentes em uma rede lógica e auxilie no processo de correção dessas brechas, de forma unificada e simples. Desta forma a ferramenta proposta visa promover uma diminuição de falhas e gastos com as ferramentas atualmente comercializadas por determinadas empresas. 1.1.2 Solução Proposta Pretendendo minimizar os riscos de ataques por vulnerabilidades presentes em uma rede lógica e diminuir os custos envolvidos em adquirir produtos comerciais com o mesmo objetivo, foi desenvolvida uma ferramenta que faz a análise de serviços ativos em uma rede de computadores e auxilia na solução de possíveis falhas presentes nesses sistemas. Foi utilizada uma ferramenta de identificação de serviços de redes sob licença GNU GPL, aliada a informações do pelo banco de dados do website http://nvd.nist.gov (National Vulnerability Database). A solução, portanto foi dividida em dois aplicativos; cliente e servidor. O aplicativo cliente é responsável por interagir com o usuário e reportar os dados obtidos de vulnerabilidades presentes na rede. O cliente armazena temporariamente em memória o resultado da busca efetuada pela ferramenta de identificação de serviços ativos na rede e executa os algoritmos necessários

19 para comparar com os atributos previamente importados pelo sistema servidor. Neste ambiente servidor, os dados referentes a falhas foram catalogadas, assim sendo possível a disponibilidade do mesmo em um gerenciador de banco de dados gratuito na internet. O aplicativo servidor é responsável pela coleta dos dados de novas vulnerabilidades disponibilizadas pelo NVD efetuando a leitura de arquivos XML através de uma rotina de agendamento automático. Todos os dias, em um determinado período especificado pelo administrador do servidor, um processo da aplicação se conecta remotamente ao site do NVD, efetua o download do arquivo XML, fazer a leitura dos atributos necessários e inclui, altera, atualiza ou exclui no banco de dados local. O processo completo da interação que os sistemas executam pode ser observado conforme Figura 1. Figura 1. Processo de interação do ambiente. Ao final do processo de identificação de vulnerabilidades da rede escolhida pelo usuário, uma janela da aplicação mostra uma breve descrição da vulnerabilidade, a data de publicação, a severidade da falha, e a página com informações da solução da vulnerabilidade, geralmente mantida pelo próprio fabricante ou sites da categoria.

20 Linux. As ferramentas cliente e servidor foram desenvolvidas para plataformas Windows e 1.2 OBJETIVOS 1.2.1 Objetivo Geral Desenvolver uma aplicação que auxilie na descoberta de vulnerabilidades de redes, utilizando informações das vulnerabilidades disponibilizadas pelo banco de dados do website National Vulnerability Database. 1.2.2 Objetivos Específicos Estudar e descrever o processo de descoberta de serviços utilizando as técnicas de footprinting e fingerprinting; Analisar ferramentas similares; Pesquisar e analisar identificadores de serviços de rede; Pesquisar e definir o processo de importação de informações de vulnerabilidades conhecidas; Elaborar a especificação e modelagem da ferramenta proposta; Realizar a implementação da ferramenta de acordo com a modelagem desenvolvida; Efetuar testes visando à validação das funcionalidades e o atendimento aos requisitos especificados; Documentar o trabalho desenvolvido através do relatório final e artigo científico.

21 1.3 METODOLOGIA A execução deste trabalho foi realizada em cinco etapas principais. São elas: (i) fundamentação teórica, (ii) pesquisa, (iii) especificação da ferramenta, (iv) desenvolvimento e validação e (v) documentação. Na etapa de Fundamentação Teórica (i) procurou-se estudar e compreender os conceitos teóricos de redes de dados padrão TCP/IP necessário para fundamentação básica na compreensão do conjunto de protocolos de comunicação entre computadores em rede. Adicionalmente a etapa de fundamentação teórica, estudos detalhados foram realizados sobre o processo de identificação de serviços de rede, critério necessário para a identificação dos serviços ativos em uma determinada rede de computadores. Foram realizadas consultas em artigos, monografias e livros das áreas de Redes de Computadores e Segurança da Informação. A metodologia de invasão de uma rede foi estudada em livros específicos voltados a metodologia de enumeração de serviços através de técnicas de footprinting e fingerprinting, além de sites na Internet, cujas referências encontram-se nas referências bibliográficas. Na etapa de pesquisa (ii), foram realizadas diversas buscas para identificar ferramentas similares no objetivo de levantar e descrever suas funcionalidades. Nesse processo foi possível mensurar detalhadamente as características dessas ferramentas, bem como suas vantagens e desvantagens. Complementando a etapa de pesquisa, foram analisados e identificados aplicativos que coletem informações através de portas que escutam requisições de clientes e servidores através de uma rede, onde foram catalogados pelos principais atributos como facilidade de implementação, licenciamento de uso e métodos adotados para a função. Na etapa de especificação da ferramenta (iii) foi realizada a definição da ferramenta desenvolvida, parte do processo de especificação dos requisitos, elaboração do diagrama de casos de uso, diagramas de sequencia e diagrama entidade-relacionamento. Na etapa de desenvolvimento e validação (v) foi efetivado o desenvolvimento da ferramenta proposta, objetivando transformar os modelos conceituais no software propriamente especificado. Além disso, a validação foi concretizada através de testes em um cenário planejado, onde algumas aplicações com vulnerabilidades presentes foram detectadas

22 pelo scanner. Essa etapa foi documentada na seção Testes e Validações, que pode ser encontrado no Capitulo 3.2. A documentação (vi) teve como objetivo produzir os documentos contendo os registros referentes à pesquisa científica, contemplando desde a contextualização da proposta (problematização e apresentação da solução), aquisição do conhecimento necessário, desenvolvimento, validação e análise dos resultados obtidos. Além da documentação da execução do projeto, foi elaborado um artigo científico com o intuito de divulgar o trabalho realizado. 1.4 ESTRUTURA DO TRABALHO Este documento está estruturado em 4 capítulos: (i) Introdução; (ii) Fundamentação Teórica; (iii) Desenvolvimento; e (iv) Conclusões. Na Introdução, Capítulo 1, o projeto foi descrito sucintamente, onde foi contextualizada a questão problema e apresentada a proposta de solução, juntamente com o objetivo geral e os específicos atingidos, além da metodologia utilizada na execução do trabalho. No Capítulo 2, Fundamentação Teórica, foi apresentado os conceitos relevantes à compreensão sobre redes de dados padrão TCP/IP e a compreensão sobre as técnicas de identificação de serviços de rede. Também foram explanadas ferramentas para auxílio na etapa de identificação de serviços ativos em redes de computadores, além da análise de ferramentas similares, contendo características semelhantes às da ferramenta proposta neste trabalho. Na seção Desenvolvimento, Capítulo 3, as ferramentas desenvolvidas foram especificadas e detalhadas, com base no levantamento dos requisitos e da elaboração dos diagramas de casos de uso, diagramas de sequência e diagrama entidade-relacionamento. O desenvolvimento, testes, implantação e análise dos resultados obtidos também foram documentados no Capítulo 3. No Capítulo 4 (Conclusões), foram contextualizadas as conclusões obtidas com o a pesquisa do projeto, bem como dificuldades encontradas e trabalhos futuros.

23 2 FUNDAMENTAÇÃO TEÓRICA Nesse capítulo são apresentados os conceitos relevantes ao processo de identificação de serviços ativos em uma rede de computadores e ao processo de análise de vulnerabilidades encontradas relacionado com os objetivos desde trabalho técnico-científico de conclusão de curso. A primeira parte considera as definições a respeito do conjunto de protocolos de comunicação entre computadores em rede, TCP/IP. Na seção Sistemas Distribuídos, é levantado os requisitos necessários para a formalização da fundamentação teórica sobre como sistemas que executam operações em diversos equipamentos que não possuem memória compartilhada para troca de mensagens, o modelo cliente-servidor. Em seguida, na seção Identificação de Serviços de Rede, são descritos conceitos gerais, caracterização e as etapas do processo de identificação dos serviços. Complementando, são citadas tarefas de sistemas de varredura de portas em uma rede de computadores. Finalizando o capítulo, a seção Ferramentas Similares traz conceitos relacionados a diferentes ferramentas disponíveis no mercado, também contendo explanações sobre funcionamento das ferramentas que desempenham funções semelhantes às da ferramenta proposta. 2.1 REDES DE COMPUTADORES Segundo Tanenbaum (1997, p. 2), uma rede de computadores pode ser definida por um conjunto de computadores conectados, no qual possuem a capacidade de trocar informações entre si. Sob o aspecto da utilização de redes de computadores, define-se que a interligação de computadores em redes é utilizada para diferentes propósitos, de acordo com a necessidade do negócio. Ainda assim é comum que a grande maioria das corporações possuam múltiplas redes, concretizando o fato que a o uso de redes de computadores estão em toda a parte. (COMER, 2007, p. 33).

24 2.1.1 Protocolo TCP/IP 2.1.1.1 Conceitos gerais Segundo Tanenbaum (1997, p. 20), para reduzir a complexidade de projetos de redes, a maioria das redes foi organizada para conter uma série de camadas ou níveis, no qual o conteúdo e a função diferem de uma rede para outra. Uma camada deveria fornecer determinados serviços para as camadas superiores, abstraindo detalhes da implementação de cada uma dessas camadas, conforme ilustra a Figura 2, exemplificando o oferecimento de serviços entre camadas. Figura 2. As sete camadas do modelo de referência OSI. Fonte: adaptado de Tanenbaum (1997, p. 20). Peterson e Davie (2004, p,13) falta bibliografia reforçam a necessidade da abstração das camadas, pois o sistema em si pode se tornar complexo demais, dificultando a implementação de sistemas. Sendo assim, o projetista define um modelo unificado que prove informações para a próxima camada, facilitando a implementação de novos sistemas e abstraindo ao usuários detalhes de como o modelo foi implementado. Tanenbaum (1997, p. 33) define o surgimento do modelo de referencia OSI baseado por uma proposta definida e desenvolvida pela ISO (International Standards Organization).

25 Define-se TCP/IP como uma pilha de protocolos como o TCP (Trasmission Control Protocol), IP (Internet Protocol), bem como ARP (Address Resolution Protocol), RARP (Reverse Address Resolution Protocol), UDP (User Datagram Protocol) e ICMP (Internet Control Message Protocol) (MENDES, p. 18, 2007). Torres (2001, p. 277) define a arquitetura Ethernet, baseada em TCP/IP como um padrão no qual as informações e dados são compartilhados e transmitidos através de um meio de conexão física, como um cabo de rede. A camada de protocolos TCP/IP é organizada em quatro níveis ou camadas conceituais, construídas sobre uma quinta camada (Comer, 2007), correspondente ao nível físico ou de hardware, como mostra a Figura 3. Figura 3. Fonte: Comer (2007). Representação dos quatro níveis conceituais TCP/IP Tanenbaum (1997, p. 26) cita as funções das camadas de pilhas de protocolos que são apresentadas como se segue: Camada de Aplicação: corresponde ao nível mais alto, onde usuários executam aplicações, através da utilização de serviços disponíveis em uma rede TCP/IP. Uma aplicação interage com os protocolos da camada de transporte para enviar ou receber dados. Cada aplicação escolhe o tipo de transporte, que pode ser uma sequencia de mensagens individuais ou uma cadeia contínua de bytes. Camada de Transporte: a finalidade da camada de transporte é prover comunicação entre aplicações, comumente denominada comunicação fim-a-

26 fim. Essa camada é responsável pelo estabelecimento e controle do fluxo de dados entre dois hosts. Além disso, pode prover transporte confiável, de modo a garantir que as informações sejam entregues sem erros e na sequência correta. A cadeia de dados sendo transmitida é dividida em pacotes, que são passados para camada seguinte (rede). Camada de Rede: a camada de rede trata da comunicação entre hosts. Esta aceita uma requisição de envio de pacote vinda da camada de transporte, com a identificação do host para onde o pacote deve ser transmitido. Encapsula o pacote em um datagrama IP e preenche o cabeçalho do datagrama com os endereços lógicos de origem e destino, dentre outros dados. Também utiliza um algoritmo de roteamento para determinar se o datagrama deve ser entregue diretamente, ou enviado para um gateway. Finalmente, o datagrama e passado para a interface de rede apropriada, para que este possa ser transmitido. Camada de Enlace de Dados: e a camada de nível mais baixo na pilha de camadas da tecnologia TCP/IP. E responsável por aceitar os datagramas IP, encapsulá-los em frames, preencher o cabeçalho de cada frame com os endereços físicos de origem e destino, dentre outros dados, e transmiti-los para uma rede especificada. Na camada de enlace de dados está o device-driver da interface de rede, por onde é feita a comunicação com a camada física. Camada Física: esta camada corresponde ao nível de hardware, ou meio físico, que trata dos sinais eletrônicos. Esta recebe os frames da camada de enlace, convertidos em sinais eletrônicos compatíveis com o meio físico, e os conduz ate a próxima interface de rede, que pode ser a do host destino ou a do gateway da rede, caso esta não pertença à rede local. Para que uma aplicação possa se comunicar com outra aplicação residente em qualquer máquina da rede é necessário que esta aplicação passe as suas informações para as camadas do stack de protocolo TCP/IP. Uma forma de passar estas informações é usando uma API (Aplication Program Interface) padronizando a forma de envio e recebimento entre a camada de aplicação e a camada de transporte. Uma API padrão para esta troca de informações é o SOCKETS.

27 Sockets possuem processo de abertura, leitura, escrita e fechamento (open-read-wirteclose) de uma conexão de dados no qual aborda da entrada e saída do sistema operacional UNIX (GROSS, 2008, p. 107). O processo de estabelecimento de uma conexão através da rede é feito através da conexão (connect) através do cliente para o servidor, e a aceitação (accept) do servidor para o cliente. (COULOURIS; DOLLIMORE; KINDBERG, 2007, p. 133). 2.1.1.2 A Camada de Aplicação Conforme Tanenbaum (1997, p.42) logo acima da camada de transporte se encontra a camada de aplicação, no qual possui os protocolos para compartilhamento de informações em uma rede através de aplicações, como TELNET, FTP e SMTP. Torres (2001, p. 65) afirma que a camada de aplicação do modelo TCP/IP equivale às camadas de aplicação, sessão e apresentação do modelo OSI. Essa camada faz comunicação através dos protocolos de aplicação. A camada de aplicação comunica-se com a camada de transporte através de uma porta específica. Segundo Orebaugh (p. 20, 2007), na camada de aplicação a aplicação do usuário faz interação com a rede de computadores e demais serviços de rede. Scrimger (2002, p.150) destaca uma visão geral sobre as portas da camada de aplicação, pois o remetente precisa se certificar que a mensagem seja enviada ao destinatário. Os protocolos de aplicação facilitam essa comunicação, através de portas e soquetes. Para o protocolo de transporte saber qual é o tipo do pacote dos dados é utilizado um número de porta, como a porta 80, que geralmente é o protocolo http. O receptor utiliza o número da porta para saber para qual protocolo deverá entregar o conteúdo, visto que diversas portas podem ser usadas em uma rede. (TORRES, 2001, p. 65). A porta utiliza um soquete, que é um dos mecanismos para a comunicação entre processos de troca de dados de uma rede. Através do soquete, ou socket, que é uma entidade para a comunicação em uma rede TCP/IP, é possível estabelecer uma comunicação entre os processos em uma rede de computadores (SCRIMGER, 2002, p. 154).