CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA “PAULA SOUZA" FACULDADE DE TECNOLOGIA DE LINS CURSO SUPERIOR DE TECNOLOGIA EM BANCO DE DADOS RUTH DE FÁTIMA FARIA ANALISANDO OS RISCOS DE UMA INVASÃO PARA TESTAR O DESEMPENHO DE UM BANCO DE DADOS LINS/SP 2º SEMESTRE/2011 RUTH DE FÁTIMA FARIA ANALISANDO OS RISCOS DE UMA INVASÃO PARA TESTAR O DESEMPENHO DE UM BANCO DE DADOS 2011 CENTRO ESTADUAL DE EDUCAÇÃO TECNOLÓGICA “PAULA SOUZA” FACULDADE DE TECNOLOGIA DE LINS CURSO SUPERIOR DE TECNOLOGIA EM BANCO DE DADOS RUTH DE FÁTIMA FARIA ANALISANDO OS RISCOS DE UMA INVASÃO PARA TESTAR O DESEMPENHO DE UM BANCO DE DADOS Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins para obtenção do Título de Tecnólogo em Banco de Dados. Orientador: Prof. Me. Alexandre Ponce de Oliveira LINS/SP 2º SEMESTRE/2011 RUTH DE FÁTIMA FARIA ANALISANDO OS RISCOS DE UMA INVASÃO PARA TESTAR O DESEMPENHO DE UM BANCO DE DADOS Trabalho de Conclusão de Curso apresentado à Faculdade de Tecnologia de Lins, como parte dos requisitos necessários para a obtenção do título de Tecnólogo em Banco de Dados sob orientação do Prof. Me. Alexandre Ponce de Oliveira ____________________________________________ Orientador (Prof. Me. Alexandre Ponce de Oliveira) ______________________________ Examinador 1 (Ygor Gonzaga de Oliveira) ______________________________ Examinador 2 (Naylor Garcia Bachiega) Dedico este trabalho aos meus pais, in memorian, Valdemar Faria e Maria Aparecida Faria pelo amor, dedicação e por não medirem esforços para que eu pudesse estudar, e a Deus por permitir que eu tivesse pais tão maravilhosos. AGRADECIMENTOS Agradeço primeiramente a Deus pelo amor incondicional, pelo cuidado para que eu trilhasse bons caminhos e por permitir que eu finalizasse mais uma etapa. Agradeço aos meus pais que sempre me incentivaram a estudar visando um futuro melhor, a todos os meus professores que compartilharam comigo seu tempo e seu conhecimento, principalmente aos meus orientadores Adriano de Souza Marques e Alexandre Ponce de Oliveira que me inspiraram e valorizam meus esforços não permitindo que eu desistisse quando acreditava não ser possível realizar algo. Não poderia esquecer-me de agradecer aos meus colegas de turma pelo carinho e amizade que construímos nestes três anos juntos, principalmente ao João Evangelista Neto por sua amizade excepcional, a Adriana M. M. Silveira por não medir esforços para que ninguém desistisse ou ficasse para trás e ao Augusto Marmo que sempre esteve pronto a ajudar. E agradeço carinhosamente ao meu esposo Rodrigo Alves Dias por seu amor, paciência, compreensão e por adiar sonhos para que eu pudesse realizar o meu sonho de concluir este curso. RESUMO Este trabalho foi desenvolvido com o objetivo geral de mostrar os benefícios criados pela tecnologia, a mudança que vem ocorrendo com o aumento da utilização da internet, o lado positivo e negativo dessa mudança, os tipos de crimes que ocorrem através do computador e a necessidade que originou a ciência forense computacional para estudar e desvendar esses crimes virtuais, através de técnicas específicas, normas, padronizações e as dificuldades que a legislação impõe. Tudo para que se possa encontrar as ameaças oferecidas na utilização dos computadores e os interesses dos invasores, além de ajudar na identificação do perfil destes atacantes e metodologias utilizadas por eles. Sugerindo algumas medidas de segurança que o usuário deve tomar para inibir esses ataques. Após o detalhamento de todas essas informações o objetivo principal deste trabalho é apresentar uma simulação de um ataque de carga e desempenho em um banco de dados para que seja confirmado que é importante se proteger de possíveis ataques, pois os prejuízos são incalculáveis. A metodologia utilizada para o desenvolvimento do trabalho foi através de pesquisas bibliográficas em livros, monografias, teses, dissertações e artigos científicos e para os testes de carga e desempenho dos bancos de dados Oracle Database 10g Express Edition e Postgresql versão 8.4 e uma ferramenta de testes Apache JMETER. Dois bancos distintos que foram expostos aos mesmos problemas geraram respostas diferentes. Palavras-chave: Invasão, Forense Computacional, Segurança, Banco de Dados, Teste de Desempenho. ABSTRACT This work was developed with the overall objective to show the benefits created by technology, change that is occurring with increasing use of internet, the positive and negative of this change, the types of crimes that occur through the computer and the need computer forensic science led to study and solve these crimes on the Internet, through specific techniques, standards, standardization and the difficulties that the law imposes. All so you can find the threats posed in the use of computers and the interests of the invaders, and help in identifying the profile of attackers and methodologies used by them. Suggesting that some safety measures you should take to inhibit such attacks. After detailing all this information the main objective of this project is to present a simulation of a charge attack and performance in a database for confirmation that it is important to protect against possible attacks, because the losses are incalculable. The methodology used for developing the work was through literature searches in books, monographs, theses, dissertations and research papers and tests for charge atack and the databases Oracle Database 10g Express Edition and PostgreSQL performance version 8.4 and a testing tool Apache JMeter. Two separate banks that were exposed to the same problems generated different responses. Keywords: Invasion, Computer Forensics, Security, Database, Performance Testing. LISTA DE ILUSTRAÇÕES Figura 1.1 – Macroprocesso simplificado do evento até a sentença final ................ 18 Figura 1.2 – Ameaças mais utilizadas para a invasão de um computador .............. 21 Figura 1.3 – Comportamento típico dos script kiddies e a evolução de um ataque........................................................................................................................ 23 Figura 1.4 – Requisitos básicos para atender à segurança em um computador.......................................................................................................... 26 Figura 1.5 – Medidas de segurança que ajudam na proteção do computador ........ 31 Figura 2.1 – Etapas do processo de investigação .................................................... 33 Figura 3.1 – Componentes básicos para o funcionamento de um banco de dados ................................................................................................................... 45 Figura 3.2 – Níveis de abstração .............................................................................. 46 Figura 3.3 – Modelo Relacional Cliente - Conta Corrente ........................................ 48 Figura 4.1 – Inicializando o Plano de Teste.............................................................. 55 Figura 4.2 – Inserindo o Grupo de Usuários............................................................. 56 Figura 4.3 – Inserindo Testador de Requisição HTTP ............................................ 56 Figura 4.4 – Visualização dos Resultados pelo visualizador Spline ....................... 57 Figura 4.5 – Visualização dos Resultados em Tabelas............................................. 57 Figura 4.6 – Visualização dos Resultados com Gráficos.......................................... 58 LISTA DE GRÁFICOS Gráfico 1 – Resultados de desempenho do Banco Oracle .......................................61 Gráfico 2 – Resultados de desempenho do PostgreSql ...........................................61 LISTA DE QUADROS Quadro 4.1 – Resultados obtidos no Banco Oracle...................................................59 Quadro 4.2 – Resultados obtidos no Banco PostgreSql............................................60 LISTA DE ABREVIATURAS E SIGLAS AOL – America Online BIOS – Basic Input / Output System CGIBR – Comitê Gestor da Internet no Brasil DDoS – Distributed Denial of Service DNS – Domain Name System DoS – Denial Of Service DVD – Digital Versatile Disk FTP – File Transfer Protocol HTML – HyperText Markup Language HTTP – Hyper Text Transfer Protocol HTTPS – HyperText Transfer Protocol Secure IP – Internet Protocol IRC – Internet Relay Chat JDBC – Java Database Connectivity JPEG – Joint Photographic Experts Group MAC – Media Access Control MBR – Master Boot Record ODBC – Open Data Base Connectivity PCMCIA – Personal Computer Memory Card International Association PERL – Practical Extraction and Report Language PHP – Hypertext Preprocessor RAM – Random Access Memory SGBD – Sistema Gerenciador de Banco de Dados SOAP – Simple Object Access Protocol SQL – Structured Query Language TCL – Tool Command Language TCP/IP – Transmission Control Protocol / Internet Protocol URL – Universal Resource Locator USB – Universal Serial Bus SUMÁRIO INTRODUÇÃO .......................................................................................................... 13 1 FORENSE COMPUTACIONAL .............................................................................. 17 1.1 AMEAÇAS ........................................................................................................... 18 1.2 ATACANTES ....................................................................................................... 21 1.3 PRIVACIDADE .................................................................................................... 23 1.4 RISCOS............................................................................................................... 26 1.5 PROTEÇÕES ...................................................................................................... 28 2 INVESTIGAÇÃO FORENSE .................................................................................. 32 2.1 ETAPAS DO PROCESSO DE INVESTIGAÇÃO ................................................. 32 2.1.1 Preparação do Material .................................................................................... 33 2.1.2 Coleta dos Dados ............................................................................................. 34 2.1.2.1 Dados Voláteis .............................................................................................. 35 2.1.2.2 Dados Não-Voláteis....................................................................................... 36 2.1.3 Exame .............................................................................................................. 37 2.1.4 Análise.............................................................................................................. 37 2.1.4.1 Análise Física ................................................................................................ 38 2.1.4.1.1 Pesquisa de Sequência .............................................................................. 38 2.1.4.1.2 Processo de Busca e Extração .................................................................. 39 2.1.4.1.3 Extração de Espaço Subaproveitado Livre de Arquivos ............................. 39 2.1.4.2 Análise Lógica ............................................................................................... 40 2.1.5 Apresentação dos Resultados .......................................................................... 40 2.2 TÉCNICAS DA FORENSE COMPUTACIONAL .................................................. 41 2.2.1 Live Computer Forensiscs ................................................................................ 41 2.2.2 Forense Post-Mortem ....................................................................................... 42 2.2.3 Técnicas Anti-Forenses .................................................................................... 43 3 SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS (SGBD) .................... 44 3.1 ORACLE DATABASE 10G EXPRESS EDITION ................................................ 46 3.2 POSTGRESQL.................................................................................................... 49 3.3 APACHE JMETER .............................................................................................. 52 4 ESTUDO DE CASO ............................................................................................... 55 4.1 Experimentos Realizados no Banco Oracle ........................................................ 58 4.2 Experimentos Realizados no Banco PostgreSql ................................................. 60 4.3 Comparativo Oracle X PostgreSql ....................................................................... 61 CONCLUSÃO............................................................................................................ 62 REFERÊNCIAS BIBLIOGRÁFICAS .......................................................................... 64 GLOSSÁRIO ............................................................................................................. 67 13 INTRODUÇÃO Atualmente o avanço da tecnologia tem proporcionado grandes benefícios, melhorias na qualidade de vida das pessoas e mais conforto. A tecnologia está evoluindo de maneira a gerar cada vez mais acessibilidade, mobilidade e portabilidade. Dados que antigamente eram armazenadas em pilhas de livros escritos à mão ou em máquinas de escrever mecânicas, os quais foram substituídos por softwares de banco de dados localizados nas empresas e muitas vezes disponibilizando seus dados na internet. De acordo com Alves (2009), a Internet, como um meio eficaz de comunicação, permitiu a interação em tempo real de indivíduos localizados nos mais longínquos cantos do mundo. A utilização de computadores extinguiu tarefas que antes eram árduas, algumas feitas em antigas máquinas de escrever, evoluindo para simples atividades realizadas em poucos minutos. Este intenso desenvolvimento tecnológico alterou profundamente o cotidiano das pessoas, transformando a sociedade contemporânea em uma sociedade digital, cada vez mais dependente da informação. Os benefícios da tecnologia também têm seu lado negativo, onde indivíduos mal intencionados praticam atos ilícitos das mais diversas naturezas, considerando estar seguro, por interpretar que não poderá ser identificado. Estes indivíduos, muitas vezes “profissionais” de grande capacidade e conhecimento técnico estão constantemente aperfeiçoando suas técnicas, de acordo com a evolução dos recursos tecnológicos, e aproveitando da disseminação destes recursos para uma quantidade cada vez maior de usuários. Segundo Pereira, et. al. (apud BESSA, 2006) os crimes mais comuns cometidos utilizando-se o computador são os de calúnia, difamação e injúria, utilizando-se o e-mail. Também se podem citar entre os atos mais comuns o roubo de informações confidenciais e a remoção ou exclusão de arquivos importantes para o sistema ou mesmo para o usuário. O que motiva estes atos ilícitos são os interesses em causar constrangimento ou algum tipo de perda à vítima e, normalmente, são praticados por funcionários insatisfeitos ou empresas concorrentes. 14 Crimes como pedofilia, fraudes e a negociação e/ou comercialização de tráfico de drogas via Internet também são constantemente realizados com o apoio de computadores. A união do crime organizado aos crakers possibilita a compra, a venda e a negociação de kits de ferramentas prontas para ataques virtuais e golpes utilizando vulnerabilidades recém descobertas. Considerando-se todos os aspectos de atos ilícitos utilizando-se a tecnologia, os quais são em grande parte efetuados sem possibilidade de defesa, pode-se dizer que a ciência forense computacional surgiu em função de uma necessidade real e urgente. Seu trabalho consiste em uma investigação específica em computadores, ou mesmo em quaisquer dispositivos eletrônicos com uma metodologia adequada e uma padronização para identificar os autores dos atos. Rodrigues; Foltran (apud PALMER, 2010) tem uma definição bastante clara sobre a Ciência Forense Computacional quando diz que a inspeção científica e sistemática em ambientes computacionais, com o objetivo de coletar evidências digitais, com a finalidade de promover a reconstituição dos eventos encontrados, podendo determinar se o ambiente em análise foi utilizado na realização de atividades ilegais ou não autorizado. Neste enfoque a padronização é sem dúvida uma metodologia necessária para dar “status” científico a prova e autenticidade irrefutável. Alves (2009) afirma que os mais diversos ramos científicos não foram capazes de se absterem dessas transformações e que a tecnologia impôs à ciência jurídica uma série de novas abordagens, provenientes de uma mudança social e comportamental. O direito teve que se adaptar a essa nova realidade na tentativa de normatizar as relações emanadas do universo digital. O direito digital é uma evolução do próprio direito. Sem dúvida é uma tarefa bastante árdua, afinal, não é nada fácil encontrar um determinado computador nesta vasta rede de computadores, além de que é necessário que todo o trabalho siga as normas e padronizações pré-definidas e esteja de acordo com a legislação, mais uma barreira a vencer já que no Brasil não há lei específica para crimes digitais, por isso é bastante comum a utilização de analogia nos crimes comuns e jurisprudências geradas nas esferas criminais. A legislação é um fator que deve ser analisado com muita atenção porque os limites que ela impõe acabam dificultando a realização do trabalho da ciência forense computacional. 15 Segundo Alves (apud PAIVA, 2002) o nascimento de um ramo jurídico surge em consequência das relações sociais refletidas em soluções normativas no transcurso dos anos, mas que no caso do Direito Digital não houve esse transcorrer do tempo no que concernem as relações sociais, embora tenham ocorrido transformações bruscas em exíguo espaço temporal. Alves (2009) conclui que independentemente da autonomia ou não do Direito Digital, é indiscutível a necessidade de se adequar o sistema jurídico às novas realidades sociais, transmudada pela tecnologia de computadores, competindo ao Direito regular às relações sócio-jurídicas surgidas da influência da informática e da telemática na vida dos indivíduos de uma forma geral, também cabe à ciência adaptar-se diante dessas transformações possibilitando a correta aplicação como disciplina reguladora. Portanto, há a necessidade de se legislar sobre determinados temas, que devido a suas peculiaridades, não são atendidos pelas normas jurídicas em vigor. Temas, estes que surgiram em ambientes virtuais possuidores de uma série de novas características, sendo necessário o estabelecimento de diretrizes que permitam a todos uma segurança jurídica diante das relações provindas do espaço eletrônico. O objetivo deste trabalho é apresentar todos esses fatores que envolvem a utilização do computador, segurança na utilização da internet, ataques, crimes virtuais e pericia computacional como base para que se abstraia, após o teste de carga e desempenho, uma conscientização de que cada usuário é responsável por toda informação gerada em seu computador e que é preciso buscar formas de proteger sua privacidade não permitindo que portas sejam abertas para que estranhos invadam os computadores e devastem suas vidas. A metodologia utilizada para o desenvolvimento deste trabalho se dará através de pesquisas bibliográficas em livros, monografias, teses, dissertações e artigos científicos, para o teste de carga e desempenho será utilizado dois bancos de dados, Oracle Database 10g Express Edition e Postgresql, e uma ferramenta chamada Apache JMeter. Onde será observado o desempenho de cada um dos bancos de dados e como cada um dele se comporta ao ser submetido ao ataque de muitas requisições ao mesmo tempo. Para facilitar e organizar a pesquisa este trabalho foi dividido em capítulos, iniciando-se com uma introdução, seguindo para o capítulo 1 com os conceitos de forense computacional, ameaças, atacantes, privacidade, riscos e proteções. Já no 16 capítulo 2 é feita uma abordagem mais direta sobre a investigação forense, etapas do processo de investigação e técnicas da forense computacional. Sistema de Gerenciamento de Banco de Dados, Oracle Database 10g Express Edition, Postgresql, Apache Jmeter são os assuntos abordados no terceiro capítulo. O capítulo 4 descreve todo o procedimento para a realização do teste de carga e desempenho. Finalizando com o capítulo de referências bibliográficas e glossário. 17 1 FORENSE COMPUTACIONAL A Forense computacional é uma ciência que através de técnicas e metodologias, baseada em hipóteses, investiga computadores e equipamentos digitais com o intuito de recriar o cenário de um crime para a obtenção de evidências computacionais, tomando o cuidado de preservar os dados processados eletronicamente ou armazenados em dispositivos eletrônicos possibilitando uma análise detalhada das evidências digitais encontradas e a confecção de documentação que possa servir de provas para serem utilizadas em processos judiciais. De acordo com Silva Filho (apud FRANKE; SRIHARI, 2007) “A computação forense é uma área de estudos da investigação forense que vem se expandindo com o avanço dos crimes cibernéticos. A necessidade de um processo investigativo sobre esses equipamentos digitais possibilitando identificação de crimes e respectivos culpados foi fator fundamental para o grande desenvolvimento de pesquisa na área. A computação forense é vista como uma área de pesquisa e investigação baseada em hipóteses de problemas forenses usando computadores. Como principais objetivos da computação forense, observa-se o aprendizado e as descobertas de novos conhecimentos forenses e com eles auxiliar os processos investigativos.” Ou de uma forma mais simplificada Pereira; Weber; Goldani (apud NOLAN et al, 2005) também conceituam forense como um conjunto de técnicas e procedimentos que utilizam conhecimento científico para coletar, analisar e apresentar evidências que possam ser utilizadas em um tribunal. “O termo forense significa “pertinente à lei”. É essencialmente a busca minuciosa de informações relativas a eventos passados específicos para uma investigação criminal” (PEREIRA; WEBER; GOLDANI apud WHAT, 2009, p. 2). De acordo com Pereira; Weber; Goldani (apud DILLON, 1999) o trabalho da perícia é grande importância porque diversos crimes são solucionados através da identificação de impressões digitais, pegadas, sangue, cabelo ou amostras de fibras. Análises balísticas são utilizadas para determinar a posição de um atirador e resíduos químicos encontrados em uma peça de roupa podem identificar o criminoso. A atividade do perito muitas vezes é fundamental para a coleta de 18 indícios que permitam a prisão e condenação de criminosos, pois as evidências físicas são utilizadas para a reconstrução das circunstâncias em que um crime ocorreu, principalmente quando não houve testemunhas. Segundo Cansian (2001) a análise e a perícia dos computadores que tenham passado por algum tipo de violação ou ataque, tornam-se uma matéria importante no conjunto de ações no processo de segurança. Porque possibilita o entendimento do ocorrido, de forma a corrigir falhas. Olhar para o passado e interpretar o que aconteceu possibilita coletar as evidencias necessárias para identificação do atacante para que medidas legais ou jurídicas pertinentes possam ser toadas. Figura 1.1 Macroprocesso simplificado do evento até a sentença final. Fonte: Rodrigues; Silva; Truzzi, 2010. 1.1 AMEAÇAS Pela constante evolução em tecnologia, praticidade e tempo de resposta cada vez menor, as pessoas vêm se tornando cada vez mais dependentes do computador que passou a estar presente em tudo que possamos imaginar (brinquedos, objetos 19 pessoais, celulares, eletrônicos, eletrodomésticos, equipamentos de trabalho, lazer, comunicação). Esses equipamentos facilitadores permitem a troca de dados através de uma transação bancária, uma compra via internet, um email com informações sigilosas, sites de relacionamentos, aplicativos de comunicação online (MSN, por exemplo), enfim por diversas razões as informações são transmitidas de um computador para outro. Conforme, Cansian (2001) essa troca de dados eletronicamente geram registros de atividades (logs) que ficam armazenados no computador despertando o interesse de pessoas mal intencionadas que as buscam para obter alguma forma de benefícios. Nem sempre a motivação é financeira, pode ser por ressentimento em relação à determinada empresa ou pessoa, para chamar a atenção, pelo prazer de causar prejuízo financeiro ou moral, descobrir estratégias empresariais, provar para si mesmo que é capaz de quebrar a segurança de softwares caros e sofisticados ou apenas pela diversão de bisbilhotar a vida alheia. De acordo com Hoepers; Jessen; Chaves (2009) as principais ameaças são: a) Vulnerabilidades freqüentes, os códigos maliciosos que exploram essas vulnerabilidades em curto espaço de tempo; b) Ferramentas automatizadas de ataque, atacantes + spammers; c) Ataques de força bruta, redes mal configuradas utilizadas para realizar estas atividades sem o conhecimento dos donos; d) Botnets (usadas para envio de scams, phishing, invasões, DoS, esquemas de extorsão), Alvo migrando para usuários finais; e) Fraudes (scams / phishing); f) Crime Organizado aliciando spammers e invasores e injetando dinheiro na economia underground. Estas ameaças ao computador podem ser visualizadas na figura 1.2. Segundo Symantec (2011) em seu Glossário de Segurança, podemos definir ameaças ao computador ou threat como sendo qualquer circunstância, evento ou pessoa que possa causar algum tipo de dano ao sistema, seja na forma de roubo, destruição, divulgação, alteração de dados e/ou negação de serviço (DoS). O CGIBR (2006) através de sua cartilha de segurança para internet – Glossário possui uma definição bastante clara sobre os tipos de ameaças citadas anteriormente: 20 Vulnerabilidades são falhas no projeto de desenvolvimento do sistema, implementação ou configuração do software ou do sistema operacional que explorada pode violar a segurança de um computador; Códigos maliciosos que exploram essas vulnerabilidades são todos os tipos de programas ou vírus que executam ações maliciosas no computador, como worms, bots, cavalos de tróia, rootkits, entre outros. Ferramentas para realizar o ataque estão disponíveis na internet, e são de fácil compreensão podendo qualquer pessoa utilizá-las; Spam são mensagens eletrônicas não solicitadas enviadas em massa, geralmente são mensagens de correio eletrônico com fins publicitário, onde os usuários são afetados com gastos desnecessários de tempo, perda de produtividade e prejuízos financeiros causados por fraudes; A soma de atacantes e spammers geram uma grande ameaça virtual; Ataques de força bruta (brutal force) são estratégias utilizadas para descobrir senhas, há uma busca exaustiva feita através de algoritmos tentando encontrar todas as combinações possíveis até se descobrir a senha correta. Uma das ameaças mais perigosas existentes na internet são os bots. “Bots” são aplicativos que agem e se propagam de forma totalmente independente, além de se comunicarem com os invasores que os instalaram na máquina, se aproveitam da vulnerabilidade da maquina para explorá-la remotamente. Eles são conectados através de um componente Internet Relay Chat (IRC), ou seja, uma rede para comunicação online a um determinado canal de um ou mais servidores IRC. Onde o software utilizado para gerenciar estes canais é modificado para servir a mais bots, não revelando a quantidade de bots associados formando assim uma “botnet”. As Botnets são usadas para enviar scams, phishing, gerar outras invasões, sem conhecimento do proprietário do computador, e ataques distribuído de negação de serviço e esquemas de extorsão. Torres (2009) complementa afirmando que outro fator de ameaça é conhecido como “segurança por obscuridade” que normalmente acontece quando o responsável pela implementação do sistema não entende de segurança e pela falta de conhecimento e desinteresse em tentar solucionar o problema cria um sistema de acesso “complicado” e desprotegido, acreditando que o acesso não será descoberto. 21 Alvo migratório Aliciamento de spammers e invasores pelo crime organizado Códigos maliciosos que exploram as vulnerabilidades Fraudes, esquemas de extorsão, invasões Ferramentas automatizadas de ataque Ameaças ao Computador Atacantes + Spammers Vulnerabilidades frequentes Envio de scams, phishing, DoS através de Botnets Redes mal configuradas Ataques de força bruta Figura 1.2 Ameaças mais utilizadas para a invasão de um computador Fonte: Elaborado pela autora, 2011. As ameaças existem e são diversas para encontrar uma solução faz-se necessário primeiramente se descobrir quem são e como agem esses atacantes. É o assunto que será abordado a seguir. 1.2 ATACANTES Dificilmente, pode se estimar valores quando ao se referir a ataques virtuais, não se trata apenas de um prejuízo financeiro, mas principalmente moral, afinal como calcular ou atribuir algum valor a invasão sofrida internamente e qual a quantia devida à frustração ao descobrir que uma estrutura de segurança, muitas vezes com altos investimentos, que parecia ser segura foi invadida por vândalos e criminosos? 22 Primeiramente é necessário conhecer o perfil do atacante para que medidas de segurança sejam tomadas e as falhas corrigidas, esses atacantes possuem dois padrões: meio interno e externo. Onde o meio interno são pessoas próximas da vitima ou empresa que tem certo grau de conhecimento e sabe o que esta procurando. Por sua vez, meio externo são atacantes que se utilizam de informações e ferramentas encontradas na internet e aleatoriamente buscam por presas fáceis. Acrescenta-se neste caso a engenharia social cujo atacante se utiliza de qualquer informação obtida em uma conversa por telefone ou pessoalmente, se passando por funcionário de empresas conhecidas, amigos ou parentes. Normalmente são pessoas de boa aparência, comunicativas, simpáticas, persuasivas e convincentes. De acordo com Cansian (apud TAYLOR, 1999, p. 5) os atacantes oriundos do meio interno possuem um comportamento mais complexo se comparados aos atacantes do meio externo e que análises mostram que os crimes eletrônicos, intrusões ou tentativas de ataque ocorrem pelos mesmos motivos de crimes regulares, associados à cobiça, obtenção ilegal de dinheiro, lucro, riqueza ou acesso de recursos adicionais ou restritos, adquirir vantagens competitivas (econômica, política ou pessoal) ou vinganças pessoais. As violações de segurança proveniente do meio externo não possuem um alvo específico, buscam apenas um alvo fácil. Seu objetivo é ganhar acesso privilegiado de maneira fácil, concentrando-se num pequeno numero de ferramentas e exploits, varrendo toda a rede de internet, esses atacantes são conhecidos como script kiddies. Estes atacantes seguem uma metodologia com padrões bem definidos e eventos sequenciados que estabelecem perfis e/ou padrões comportamentais. Segundo Cansian (apud FARMER; VENEMA,1999, p. 6) a metodologia básica é rastrear a rede ou um computador alvo, buscando vulnerabilidades específicas, estabelecer uma base de dados de endereços IP que possam ser atacados, encontrando a vulnerabilidade explorá-la buscando por falhas naquele equipamento. Eles procuram por sistemas que não possuem monitoração e inspeção dos computadores, o que é normal acontecer porque muitas empresas não monitoram seus sistemas e não sabem que estão sendo atacadas. Afirma Cansian (2001) que os atacantes muitas vezes buscam silenciosamente por sistemas que possam ser explorados e ao conseguir o acesso, encobrem seus rastros eliminando os registros de auditoria que possam eventualmente existir. Utilizam o computador 23 comprometido como base para novos ataques, ocultando assim, sua real posição e atribuindo a outros administradores a responsabilidade. Alguns atacantes mais sofisticados implementam e instalam programas, trojans e backdoors, para comprometer completamente os sistemas invadidos. Os sistemas auditores, indicadores de processos ou file system, são comprometidos ou corrompidos e tornam-se não confiáveis. A figura 1.3 descreve o comportamento típico dos script kiddies e a evolução de um ataque. Os ataques são imprevisíveis, uma vez que algumas das ferramentas utilizadas são automáticas e operam sem parar, durantes às 24 horas do dia, coletando dados. Rastrear a Rede Estabelecer Base buscando de Dados de Encontrada a Alvo endereços de IP vulnerabilidade do Monitorado para atacar sistema vulnerabilidades específicas Obter acesso Alvo Fácil de nível de usuário Obter acesso Base para Encobrir privilegiado Rastros (root) novos ataques Roubar ou Alterar dados Instalar Backdoors Executar outras Atividades Não autorizadas Figura 1.3 Comportamento típico dos script kiddies e a evolução de um ataque Fonte: Elaborado pela autora, 2011. 1.3 PRIVACIDADE Os direitos individuais foi uma grande conquista ao homem ocidental, a partir daí ele passou a ser mais crítico, participativo e sociável. Dentre esses direitos a 24 Constituição Federal assegura a todos os indivíduos o direito a privacidade como mostra o artigo 5º, incisos X e XII, “são invioláveis a intimidade, a vida privada, a honra e a imagem das pessoas, assegurado o direito a indenização pelo dano material ou moral decorrente de sua violação;” “é inviolável o sigilo da correspondência e das comunicações telegráficas, de dados e das comunicações telefônicas, salvo, no último caso, por ordem judicial, nas hipóteses e na forma que a lei estabelecer para fins de investigação criminal ou instrução processual penal;” Portanto, ninguém sem consentimento, pode violar ou invadir a privacidade de alguém e atingir o bem mais precioso „a Intimidade do ser humano‟. Ao invadir o computador, acessar os dados, espionar a vida de uma pessoa, abrir correspondências físicas ou virtuais, se utilizar dessas informações, imagens ou vídeos, o atacante mais que uma invasão física efetua uma invasão moral. Todo ser humano necessita de um espaço só seu onde ele se sinta seguro e possua liberdade em suas ações, sabiamente este “espaço” é garantido pela Constituição Federal através do direito à privacidade, incluindo-se a privacidade no uso da internet, privacidade em seu correio eletrônico, privacidade no acesso e disponibilidade de páginas web. Segundo CGIBR (2006) através de sua cartilha de segurança para internet, parte III – Privacidade, a ideia de que emails são seguros por serem comparados a cartas fechadas é errônea, pois aparentam ser cartões postais podendo ser lido por qualquer pessoa que os tiver acesso. Na verdade esses emails ficam armazenados em um servidor de email e qualquer pessoa que tenha acesso ao servidor pode lêlos, ou se estiver em transito pode ser lido por pessoas que estejam conectadas à internet. Para informações confidenciais, o CGIBR (2006) através de sua cartilha de segurança para internet, parte III – Privacidade, recomendada a utilização de criptografia, seja para o envio ou armazenamento de informações. No entanto, quando a assunto é privacidade no acesso e disponibilidade de páginas web, o cuidado do próprio usuário é de extrema importância. Muitas vezes, este usuário expõe informações pessoais e acaba permitindo que o browser receba ou envie dados de sua preferência e sobre o seu computador, afetando a privacidade e a segurança de seu computador, e em alguns casos, a sua própria segurança e de sua família. 25 O usuário não percebe que as informações disponibilizadas na internet quando caem em mão erradas possuem um grande poder de destruição. Uma grande empresa pode ir à falência se criminosos conseguirem acessos privilegiados em seu sistema ou um pedófilo pode encontrar um alvo fácil quando tem as informações e rotinas de uma família. Cookies são utilizados para rastrear e manter as preferências de um usuário quando ele navega pela Internet e essas informações são compartilhadas entre diversos sites na internet, afetando a privacidade deste usuário. Também, ao acessar uma página na internet, o browser disponibiliza uma série de informações, de modo que os cookies podem ser utilizados para manter referências contendo informações do computador, como hardware, sistema operacional, softwares instalados e, em alguns casos, o endereço de e-mail. A recomendação é desabilitar o recebimento de cookies, habilitando-os apenas para sites confiáveis e realmente necessários. Não é incomum um usuário visitar alguns sites a procura de um determinado produto e algum tempo depois receber em seu correio eletrônico ofertas, de varias empresas, sobre aquele mesmo produto. Outra forma de manter a privacidade, de acordo com CGIBR (2006) através de sua cartilha de segurança para internet, parte III – Privacidade, ao acessar páginas na Internet seria a utilização de sites que permitam que o usuário fique anônimo, conhecidos como anonymizers, que intermedeiam o envio e o recebimento de informações entre o browser e o site visitado. Porém, é necessário certificar-se que o anonymizers é confiável, mesmo assim não se deve utilizá-lo para transações via web. Contudo, a privacidade do usuário fica ameaçada quando o próprio usuário expõe sua vida e dados pessoais através da internet. Segundo CGIBR (2006) através de sua cartilha de segurança para internet, parte III – Privacidade, algumas vezes, de forma sutil o usuário acaba revelando seu e-mail, telefone, endereço, nome de amigos e parentes, informações sobre a família, local de trabalho, datas de aniversários, dados do seu computador como marca, sistema operacional, software utilizados, informações sobre seu cotidiano, horário em que se ausenta de casa, festas em que esteve, viagens programadas, informações estas, encontradas facilmente em sites de relacionamentos (Orkut, Facebook, Sonico), blog’s, batepapos, comunidades e programas de troca instantânea de informações (ICQ, AOL Instant Messenger, Yahoo! Messenger e MSN Messenger). É importante estar 26 atento e avaliar as informações que serão disponibilizadas e os riscos que elas podem acarretar. 1.4 RISCOS Segundo CGIBR (2006) através de sua cartilha de segurança para internet, parte I – Conceitos de Segurança, um computador só esta seguro quando atende a três requisitos básicos relacionados aos recursos que o compõem: confidencialidade (informações disponíveis somente para pessoas devidamente autorizadas), integridade (informações não são corrompidas ou destruídas e o sistema tem seu desempenho correto) e disponibilidade (recursos e serviços disponíveis quando necessários). Porém, quando alguém obtém acesso não autorizado a um computador e visualiza as informações contidas numa declaração de imposto de renda, houve violação na confiabilidade. No entanto, se alterações forem feitas, haverá violação na integridade. Mas, se o provedor que será utilizado para enviar essa declaração de imposto de renda à Receita Federal sofrer uma sobrecarga de dados ou um ataque de negação de serviço, então a disponibilidade foi violada. Confiabilidade Integridade Disponibilidade SEGURANÇA Figura 1.4 Requisitos básicos para atender à segurança em um computador Fonte: Elaborado pela autora, 2011. A internet possui muitos fatores positivos, no entanto, os riscos estão presentes em todas as ações executadas quando o computador esta conectado, se o usuário não estiver atento poderá ser surpreendido. Os riscos estão associados ao uso de programas leitores de emails, uso de salas de bate-papo e programas de troca instantânea de mensagens além da utilização de browser. Riscos em programas leitores de emails estão relacionados ao conteúdo das mensagens que 27 são utilizadas técnicas de engenharia social e às características de alguns programas que permitem abrir arquivos ou executar automaticamente programas anexados. Segundo CGIBR (2006) através de sua cartilha de segurança para internet, parte I – Conceitos de Segurança, os riscos de salas de bate papos e programas de troca instantânea de mensagens estão no próprio conteúdo dos diálogos, pois técnicas de engenharia social podem ser persuasivamente utilizadas para conseguir informações pessoais e empresariais, além destes programas fornecerem o endereço na internet, Internet Protocol (IP), possibilitando ao atacante explorar a vulnerabilidade do computador. Os riscos relacionados ao browser , de acordo com CGIBR (2006) através de sua cartilha de segurança para internet, parte I – Conceitos de Segurança, são diversos: execução de Java Script ou de programas Java hostis; execução de programas ou controles ActiveX hostis; obtenção e execução de programas hostis em sites não confiáveis ou falsos; acesso a sites falsos, se fazendo passar por instituições bancárias ou de comércio eletrônico; realização de transações comerciais ou bancárias via Web, sem qualquer mecanismo de segurança. Nos dois primeiros casos o browser executa os programas automaticamente, sem a interferência do usuário. Normalmente os browsers contem módulos específicos para processar programas Java que podem conter falhas de implementação e permitir que um programa Java hostil cause violações de segurança. Apesar de nem sempre apresentarem riscos, o Javascript e outros scripts disponíveis na web, são utilizados por atacantes para causar violações de segurança, redirecionando o usuário que acessa um site legítimo para um site falso para que o usuário instale programas maliciosos ou forneça informações pessoais. Conforme CGIBR (2006) através de sua cartilha de segurança para internet, parte I – Conceitos de Segurança o browser, antes de receber um programa Ativo, verifica sua procedência através de certificados digitais, após sua aceitação esse programa tem legitimidade para fazer qualquer operação no computador, desde enviar arquivos pela internet a instalar programas que podem ter fins maliciosos. A obtenção e execução de programas hostis em sites não confiáveis ou falsos; Acessos a sites falsos, se fazendo passar por instituições bancárias ou de comércio eletrônico; A Realização de transações comerciais ou bancárias via Web, sem qualquer mecanismo de segurança são riscos que estão relacionados ao uso de 28 cookies ou pop-up spam. Pop-up spam são janelas que aparecem automaticamente após acessar um site, sem permissão do usuário, sobrepondo à janela do browser apresentando propagandas e em alguns casos com links para redirecionar o usuário para páginas fraudulentas ou induzi-lo a instalar programas maliciosos, e como já mencionado cookies são utilizados para rastrear e manter as preferências de um usuário quando ele navega pela Internet e essas informações são compartilhadas entre diversos sites na internet. Em seguida serão apresentadas algumas medidas de proteções que o usuário deveria tomar para dificultar o ataque de invasores. 1.5 PROTEÇÕES Como já visto anteriormente, existem riscos ao se utilizar a internet e as ameaças são constantes, portanto é de suma importância que algumas medidas de proteção sejam tomadas por parte do usuário para dificultar uma invasão em seu computador. Segundo CGIBR (2006) através de sua cartilha de segurança para internet, parte II – Riscos envolvidos no uso da Internet e métodos de prevenção, para configurar um programa leitor de emails de forma mais segura deve-se desligar as opções que permitam abrir ou executar automaticamente arquivos ou programas anexados às mensagens; desligar as opções de execução de Java Script e de programas Java e desligar, se possível, o modo de visualização de emails no formato HTML. Com estas configurações é possível evitar a propagação de vírus, cavalos de tróia, entre outros. Entretanto, as medidas de prevenção para minimizar os problemas trazidos com os emails, de acordo com CGIBR (2006) através de sua cartilha de segurança para internet, parte II – Riscos envolvidos no uso da Internet e métodos de prevenção são: manter sempre a versão mais atualizada do programa leitor de emails; não clicar em links que apareçam no conteúdo do email (digitar o endereço diretamente no browser); evitar abrir arquivos ou executar programas anexados aos emails, sem antes verificá-los com um antivírus; desconfiar sempre dos arquivos anexados à mensagem, mesmo que tenham sido enviados por pessoas ou 29 instituições conhecidas; fazer o download de programas diretamente do site do fabricante; evitar utilizar o programa leitor de emails como um browser, desligando o modo de visualização de emails no formato HTML; Antes de efetuar transações via internet é necessário que o usuário se certifique de que os sites são verdadeiros. Normalmente as transações comerciais ou bancárias, envolvem informações sensíveis, como senhas ou números de cartões de crédito. Portanto, é muito importante que ao realizar transações via Web, a procedência dos sites seja certificada e se estes sites são realmente das instituições que dizem ser. De acordo com CGIBR (2006) através de sua cartilha de segurança para internet, parte II – Riscos envolvidos no uso da Internet e métodos de prevenção é fundamental que eles forneçam mecanismos de segurança para evitar que essas informações sejam interceptadas. Ao tomar algumas medidas preventivas no uso de browser o usuário estará se protegendo, as medidas a serem tomadas são: manter o browser sempre atualizado; desativar a execução de programas Java na configuração do browser; desativar a execução de Java Scripts antes de entrar em uma página desconhecida e ativá-la ao sair; permitir que programas Ativos sejam executados apenas quando vierem de sites conhecidos e confiáveis; manter maior controle sobre o uso de cookies; bloquear janelas pop-up e permitindo apenas para sites conhecidos e confiáveis quando realmente necessárias; certificar-se da procedência do site e da utilização de conexões seguras ao realizar transações via Web; somente acessar sites de instituições financeiras e de comércio eletrônico digitando o endereço diretamente no browser (nunca clicar no link existente em uma página ou em um email); A escolha do browser , segundo CGIBR (2006) através de sua cartilha de segurança para internet, parte II – Riscos envolvidos no uso da Internet e métodos de prevenção, é de extrema importância no quesito proteção, afinal a navegação só ocorre através dele. Para isso algumas características devem ser consideradas, algumas destas características são: histórico de vulnerabilidades associadas ao browser e o tempo decorrido entre a descoberta da vulnerabilidade e o lançamento da correção; não instalação/execução automática de programas; facilidade para identificar se o site usa conexão segura e para visualizar dados do certificado digital; disponibilidade de mecanismos para desabilitar a execução de programas Java, Java Script, ActiveX, entre outros; disponibilidade de mecanismos que permitam bloquear (incluindo bloqueio seletivo) cookies e pop-up windows. 30 Não basta apenas instalar um bom antivírus é preciso fazer bom uso dele. Para identificar se o antivírus realmente é bom CGIBR (2006) através de sua cartilha de segurança para internet, parte II – Riscos envolvidos no uso da Internet e métodos de prevenção, ensina que um bom antivírus deve: identificar e eliminar a maior quantidade possível de vírus e outros tipos de malwares; analisar os arquivos que estão sendo obtidos pela Internet; verificar continuamente os discos rígidos (HDs), flexíveis (disquetes) e unidades removíveis (CDs, DVDs e pen drives) de forma transparente ao usuário; procurar vírus, cavalos de tróia e outros tipos de malwares em arquivos anexados aos emails; criar, sempre que possível, uma mídia de verificação (disquete ou CD de boot) que possa ser utilizado caso um vírus desative o antivírus que está instalado no computador; atualizar as assinaturas de vírus e malwares conhecidos, pela rede, de preferência diariamente. Para fazer um bom uso do antivírus segue as mesmas instruções: manter o antivírus e suas assinaturas sempre atualizados; configura-lo para verificar automaticamente arquivos anexados aos emails e arquivos obtidos pela Internet; configura-lo para verificar automaticamente mídias removíveis (CDs, DVDs, pen drives, disquetes, discos para Zip, etc.); configura-lo para verificar todo e qualquer formato de arquivo (qualquer tipo de extensão de arquivo); Um antivírus não é capaz de impedir que um atacante tente explorar alguma vulnerabilidade existente no computador e nem evitar o acesso não autorizado a um backdoor instalado, para isso são utilizados outros mecanismos de proteção conhecidos como firewalls que são dispositivos combinados (software e hardware) utilizados para dividir e controlar o acesso entre redes de computadores. Firewall pessoal é um tipo específico de software utilizado para proteger um computador contra acessos não autorizados vindos da Internet. Se alguém ou algum programa suspeito tentar se conectar ao computador, um firewall bem configurado entra em ação para bloquear tentativas de invasão, podendo barrar também o acesso a backdoors, mesmo se já estiverem instalados no computador. Alguns programas de firewall permitem analisar continuamente o conteúdo das conexões, filtrando vírus de email, cavalos de tróia e outros tipos de malwares, antes mesmo que os antivírus entrem em ação. Também existem pacotes de firewall que funcionam em conjunto com os antivírus, provendo um maior nível de segurança para os computadores onde são utilizados. Proteção também há quando se adotam medidas preventivas na utilização de programas de troca de mensagens. Conforme Segundo CGIBR (2006) através de 31 sua cartilha de segurança para internet, parte II – Riscos envolvidos no uso da Internet e métodos de prevenção, essas medidas são: manter o programa de troca de mensagens sempre atualizado, para evitar que possua alguma vulnerabilidade; não aceitar arquivos de pessoas desconhecidas, principalmente programas de computadores; utilizar um bom antivírus, sempre atualizado, para verificar todo e qualquer arquivo ou software obtido através do programa de troca de mensagens, mesmo que venha de pessoas conhecidas; evitar fornecer muita informação; nunca fornecer senhas e números de cartões de créditos; configurar o programa para ocultar o endereço IP. Todas essas medidas de segurança que ajudam na proteção do computador podem ser visualizadas na figura 1.5. Quando o usuário se descuida com as informações, deixa de instalar programas de proteção ou não os atualiza, não percebe que o computador esta vulnerável a ataques e invasões e que atos criminosos podem ocorrer através deste computador sem seu conhecimento. Surge então, um cenário para a perícia forense computacional investigar, assunto este que será abordado no próximo capítulo. Escolher um Browser confiável Adotar medidas preventivas : no uso de browswers na troca de mensagens no uso de leitores de email Configurar leitores de emails de forma segura Certificar-se da confiabilidade do site Realizar transações via web somente em sites seguros Instalar um bom antivírus Fazer bom uso do antivírus Instalar firewall pessoal Figura 1.5 Medidas de segurança que ajudam na proteção do computador Fonte: Elaborado pela autora, 2011. 32 2 INVESTIGAÇÃO FORENSE Segundo Pereira (2010) diferentemente das provas físicas pertinentes aos crimes convencionais, as comprovações que são encontradas em mídias magnéticas são digitais, podendo existir de diversas formas, como: arquivos, fragmentos de logs e outros indícios residentes em uma mídia e podem estar relacionados criando uma evidência que indique a ocorrência de um crime ou auxilie a identificação de um criminoso. O processo de investigação em uma perícia forense computacional deve ocorrer de forma sistêmica e cuidadosa a fim de se preservar as características gerais do cenário encontrado para que não haja interferência alguma nas evidências ou vestígios do ato ilícito ou as busca de informações que o comprovem. De acordo com Rodrigues; Foltran (apud EOGHAN, 2002) o processo investigativo da Forense Computacional deve assegurar a integridade dos vestígios coletados, porém devido à volatilidade das evidências eletrônicas, essa tarefa é considerada difícil e para garantir a integridade e confiabilidade das evidências coletadas, o perito forense deve seguir procedimentos e protocolos reconhecidos pela comunidade científica, e a cada passo, deve detalhar e revisar a documentação desenvolvida, para que deste modo, evite erros durante o processo investigativo. Para garantir maior credibilidade e aperfeiçoamento aos processos de investigação aos crimes digitais existentes, afirma Rodrigues; Foltran (apud BARYAMUREEBA, 2004) que surgiram diversos modelos de processo para a investigação de crimes digitais. Um modelo internacionalmente utilizado de processo investigativo trata-se do publicado pelo Departamento de Justiça dos Estados Unidos. As etapas apresentadas a seguir são citadas neste modelo de processo investigativo: preparação, coleta, exame, análise e apresentação. 2.1 ETAPAS DO PROCESSO DE INVESTIGAÇÃO Para uma melhor compreensão do ciclo dos procedimentos forenses, Weber; Pereira; Goldani (apud KEN, 2007) na figura 2.1, ilustra a transformação da mídia 33 em evidência. A primeira transformação ocorre quando os dados coletados são examinados e as informações extraídas da mídia são analisadas por ferramentas forenses; a segunda, quando a análise dos dados cria informações que processadas resultam em evidências. Figura 2.1 Etapas do processo de investigação. Fonte: Ken, 2007, p. 9 2.1.1 Preparação do Material Esta etapa é de grande importância, apesar de alguns modelos de processo investigativo não considerarem propriamente uma etapa, será aqui onde todos os equipamentos necessários e as ferramentas que darão apoio ou sustentabilidade ao trabalho do perito devem ser preparados para seu uso e verificados seu correto funcionamento, disponibilidade em quantidades necessárias, além de ter a técnica já definida, para que nenhum erro ou problema possa surgir por negligência do profissional. Uma vez que a pericia digital é de vital importância e necessita preservar a volatilidade dos dados, sendo assim qualquer erro compromete todo o trabalho forense. De acordo com Cansian (2001) o perito conduzindo uma análise, deve isolar e assegurar o perímetro, registrando a cena do crime da melhor forma possível para uma busca sistemática por evidências, coletando e armazenando-as. Analisando o tempo necessário e o risco na coleta e a veracidade das informações. Durante essa análise é importante considerar que o perito não poderá confiar nos dados que obtiver se não puder confiar nas suas ferramentas de trabalho para isso é importante 34 que ele possua seu próprio conjunto de ferramentas de software para inspeção, captura e análise de dados. Para garantir a integridade e confiabilidade de todo processo investigativo, de acordo com Pereira, et. al. (apud FARMER; VENEMA, 2006) antes de coletar os dados o perito deve: esterilizar as mídias que serão utilizadas ou usar mídias novas a cada investigação; certificar-se de que todas as ferramentas (softwares) que serão utilizadas estão devidamente licenciadas e prontas para utilização; verificar se todos os equipamentos e materiais estão à disposição; quando chegar ao local da investigação, o perito deve providenciar para que nada seja tocado sem seu consentimento, com o objetivo de proteger e coletar todos os tipos de evidências; os investigadores devem filmar ou fotografar o ambiente e registrar detalhes sobre os equipamentos como: marca, modelo, números de série, componentes internos, periféricos; manter a cadeia de custódia. Adotando esses cuidados, o perito poderá iniciar a coleta de dados junto aos dispositivos eletrônicos apreendidos. 2.1.2 Coleta dos Dados Esta é a fase de procura por informações e reconhecimento das evidências relacionadas ao crime. Todos os dados os quais possam se relacionar ao ocorrido serão coletados cuidadosamente para que seja preservada sua integridade. Haverá uma identificação das peças e dos equipamentos, embalando-os, etiquetando-os e registrando suas identificações, após a extração das informações tudo será documentado. Segundo Pereira, et. al. (apud KENT et al., 2006) a primeira etapa do processo forense é identificar as possíveis fontes de dados. Onde as fontes de dados mais comuns são os computadores pessoais, laptops e dispositivos de armazenamento em rede. Sistemas estes que possuem diversos tipos de conexões possibilitando o acesso a outras fontes de informações como: CDs e DVDs. Esses equipamentos podem ainda possuir algumas portas de comunicação de vários tipos, como: USB, Firewire, Flash card e PCMCIA em que outras mídias e dispositivos externos de armazenamento de dados podem estar conectados. 35 Após a identificação dessas possíveis fontes de dados, o perito precisará adquiri-los, para isso é necessário um procedimento de três etapas: estabelecer a prioridade para a coleta dos dados, copiar os dados, garantir e preservar a integridade dos dados. Conforme afirma Silva Filho (apud JUSTICE, 2001) que os técnicos devem levar em conta a natureza volátil dos artefatos e manipular estes de maneira a não perderem essas informações. Em concordância Cansian (2001) afirma que durante a captura de dados de perícia, além de seguir a ordem de volatilidade dos dados deve-se levar em conta a cadeia de confiança do sistema. Esta cadeia de confiança esta associada com a maneira que o sistema operacional executa um binário, apresentando como o sistema é perturbado durante a execução de um comando ou programa. De acordo com Pereira, et. al.(2007) após a certificação pelo perito de que os equipamentos estão protegidos e registrados a coleta de dados pode ser inicializada, mas é fundamental que os equipamentos permaneçam em seu estado de origem, se estiver ligado não pode ser desligado e vice-versa para que não haja modificações nas evidências, o estado dos equipamentos determinará a prioridade na classificação dos dados voláteis e nãovoláteis. 2.1.2.1 Dados Voláteis Os dados armazenados na Random Access Memory (RAM), ou seja, memória RAM são voláteis, ficam retidos apenas enquanto há uma alimentação de energia, após essa interrupção toda a informação é perdida e não pode ser restaurada. Assim também o conteúdo presente na memória cache, nos processos em execução e na própria rede. Portanto, há uma necessidade urgente na coleta desses dados. A prioridade na coleta dos dados voláteis deve seguir a seguinte classificação, segundo Pereira, et. al (apud KENT et al, 2006): a) Conexões de rede (endereços de IP de origem e destino, estados das conexões e programas associados a cada porta, lista de arquivos montados remotamente e o estado da interface de rede); 36 b) Sessões de login (lista de usuários conectados, horário de conexão, endereço de origem das conexões), cruzando essas informações é possível reconstruir os fatos em ordem cronológica; c) Conteúdo da memória: o espaço de troca e a memória principal contêm dados acessados recentemente (senhas e últimos comandos executados), a memória pode conter resíduos de dados nos espaços livres ou que não estão em utilização. d) Processos em execução (a lista e o estado de cada um dos processos do sistema) identificam os programas em execução; e) Arquivos abertos: comandos como o lsof presente em sistemas operacionais Linux geram uma lista contendo o nome de todos os arquivos que estão abertos no momento – essa informação pode ser um indicador para o perito do que deve ser coletado e, posteriormente analisado; f) Configuração de rede: essas configurações incluem informações como o nome da máquina, o endereço IP e o MAC Address (Media Access Control) de cada uma das interfaces de rede; g) Data e hora do sistema operacional: a data e hora atual do sistema e as configurações de fuso horário são importantes para a reconstrução segundo a ordem cronológica de realização dos eventos. 2.1.2.2 Dados Não-Voláteis De acordo com Pereira, et. al (2007) os dados não-voláteis são menos sensíveis à manipulação, permanecem na máquina por longos períodos de tempo e podem ser recuperados, sem alterações, após os equipamentos serem desligados. Sendo de extrema importância a realização de cópias dos dados preservando sempre a fonte original, nesta fase dois métodos podem ser utilizados: copiar dados e garantir e preservar a integridade dos dados. O processo de cópia dos dados envolve a utilização de ferramentas adequadas para a duplicação dos dados. A garantia da integridade das evidências consiste na utilização de ferramentas que aplicam algum tipo de algoritmo hash. Esse procedimento deve ser executado nos 37 dados originais e nas cópias, e as strings resultantes devem ser comparadas, para certificar-se de que são idênticas, garantindo, assim, a integridade dos dados. 2.1.3 Exame Esta é propriamente a fase de investigação, onde se procura pelos dados escondidos, destruídos ou informações obscuras nas evidencias coletadas. Nesta fase são utilizadas as ferramentas e técnicas específicas para cada tipo de dado coletado e para a extração de todas as informações importantes para investigação, e confecção do relatório. Segundo Pereira (2010) o objetivo principal, na fase de examinar os dados, é separar as informações relevantes ao caso de outras sem importância como os arquivos do próprio sistema. Antes de iniciar o processo é preciso definir quais as ferramentas serão utilizadas para o exame dos dados. Esta escolha está relacionada ao tipo de investigação e informações procuradas. Diante disso, escolhem-se as ferramentas que tragam um número maior de dados úteis. Geralmente se utiliza filtros de arquivos, busca por palavras-chave, entre outros procedimentos para agilizar a busca por evidências; 2.1.4 Análise De acordo com Freitas (2003) a análise é o processo usado para descobrir informações valiosas, a busca e extração dos dados relevantes para uma investigação. Esse processo de análise pode ser dividido em duas camadas: análise física que é a pesquisa de sequências e a extração de dados de toda a imagem pericial, dos arquivos normais às partes inacessíveis da mídia e análise lógica que consiste em analisar os arquivos das partições. O sistema de arquivos é investigado no formato nativo, percorrendo-se a árvore de diretórios do mesmo modo que se faz em um computador comum. 38 Segundo Pereira (2010) nesta fase as informações separadas anteriormente são analisadas com o intuito de encontrar dados úteis e relevantes que auxiliem na investigação do caso. Todos os dados encontrados considerados relevantes serão correlacionados com informações referentes à investigação, para realizar a conclusão e apresentação dos resultados. 2.1.4.1 Análise Física Segundo Freitas (2003) durante a análise física são investigados os dados brutos da mídia de armazenamento. Podendo-se começar a investigação por essa etapa quando se está investigando o conteúdo de um disco rígido desconhecido ou danificado. Após o software de criação de imagens houver fixado as provas do sistema, os dados poderão ser analisados por três processos principais: pesquisa de sequência, processo de busca e extração e extração de espaço subaproveitado e livre de arquivos. Essas operações são realizadas na imagem pericial ou na cópia restaurada das provas. As pesquisas de sequências produzem listas de dados (URLs encontrados na mídia, endereços de email encontrados na mídia, ocorrências de pesquisa de sequência com palavras sensíveis a caixa alta e baixa) que são úteis nas fases posteriores da investigação. 2.1.4.1.1 Pesquisa de Sequência De acordo com Freitas (2003) a pesquisa de sequência feita em todo o sistema é o primeiro processo da análise física. A ferramenta utilizada de maneira mais precisa é o StringSearch (Algoritmos de cadeia pesquisa) que retornam o conteúdo da pesquisa de sequência e o deslocamento de byte do início do arquivo. Ao se examinar os resultados obtém-se um prático roteiro para converter o deslocamento em um valor de setor absoluto. 39 2.1.4.1.2 Processo de Busca e Extração Conforme explicação de Freitas (2003) este processo se beneficia com a pesquisa de sequência onde o aplicativo analisa uma imagem pericial em busca de cabeçalhos dos tipos de arquivos relacionados ao tipo de caso em que se estiver trabalhando. Quando encontra um, extrai um número fixo de bytes a partir do ponto da ocorrência. Por exemplo, se estiver investigando um indivíduo suspeito de distribuição de pornografia ilegal, analisa-se a imagem pericial e se extrai blocos de dados que comecem com a seguinte sequência hexadecimal: $4A $46 $49 $46 $00 $01(sequência que identifica o início de uma imagem JPEG). Este tipo de extração forçada de arquivos é bastante útil em sistemas de arquivos danificados ou quando os utilitários comuns de recuperação de arquivos apagados são ineficientes ou falham completamente. 2.1.4.1.3 Extração de Espaço Subaproveitado Livre de Arquivos Freitas (2003) conclui que os sistemas de arquivos possuem resíduos conhecidos como: espaço livre ou não-alocado, e espaço subaproveitado. Onde espaço livre é qualquer informação encontrada em um disco rígido que no momento não esteja alocada em um arquivo, ele pode nunca ter sido alocado ou ser considerado como não-alocado após a exclusão de um arquivo. Portanto, o conteúdo do espaço livre pode ser composto por fragmentos de arquivos excluídos. Também pode estar em qualquer área do disco que não esteja atribuída a um arquivo nativo. Para analisar o espaço livre é preciso trabalhar em uma imagem do nível físico. Já o espaço subaproveitado ocorre quando dados são escritos na mídia de armazenamento em blocos que não preenchem o tamanho de bloco mínimo definido pelo sistema operacional. Ao se decidir extrair o espaço de arquivos subaproveitados e livre torna o terceiro processo de análise física mais importante e exige uma ferramenta que possa distinguir a estrutura particular de sistema de arquivos em uso. 40 2.1.4.2 Análise Lógica Freitas (2003) explica que durante um exame de arquivos lógicos o conteúdo de cada partição é pesquisada com um sistema operacional que entenda o sistema de arquivos e é neste estágio que se cometem a maioria dos erros de manipulação das provas porque o objetivo básico é proteger as provas contra alterações, por esta razão não se utiliza diretamente sistemas operacionais como o Windows 95/98/NT/2000/XP. Montar ou acessar a imagem restaurada a partir de um sistema operacional que entenda nativamente o formato do sistema de arquivos é muito arriscado, pois normalmente o processo de montagem não é documentado, não está à disposição do público e não pode ser verificado. A imagem restaurada precisa ser protegida e é por isso que se monta cada partição em Linux, em modo somente leitura. O sistema de arquivos montado é então exportado, via Samba, para a rede segura do laboratório onde os sistemas Windows 2000, carregados com visualizadores de arquivos, podem examinar os arquivos. 2.1.5 Apresentação dos Resultados Conforme Freitas (2003) a apresentação ou interpretação dos resultados é a fase final de todo o processo de investigação também chamada de substanciação da evidência onde é gerado um relatório que consistirá no enquadramento das evidências dentro do formato jurídico como o caso será ou poderá ser tratado podendo ser utilizado na esfera civil ou criminal ou mesmo em ambas. Segundo Pereira (2010) o objetivo desta última etapa é apresentar um laudo completo (relatório técnico) que informará com toda a veracidade possível aquilo que foi encontrado nos dados analisados. Deve ser descrito todo o processo pericial desde o início, ferramentas utilizadas e informações obtidas e confrontadas, tudo que possa comprovar a integridade das informações relatadas no laudo. De acordo com Weber; Pereira; Goldani (2009) um dos fatores mais importantes na forense digital é a proteção das provas obtidas e o perito deve garantir que o equipamento sob análise e os processos de coleta sejam administrados com cuidado garantindo que: nenhuma evidência seja danificada, 41 destruída ou comprometida pelos procedimentos utilizados na investigação do equipamento; o processo não crie nenhuma condição que possa inviabilizar uma verificação futura; uma cadeia de custódia seja estabelecida e mantida; o tempo de intervenção seja o menor possível se o equipamento estiver live forensics, toda informação obtida tenha tratamentos éticos e legais, e não seja divulgada; todo o processo deve ser documentado para permitir a sua reprodução. 2.2 TÉCNICAS DA FORENSE COMPUTACIONAL As técnicas da forense computacional basicamente são divididas em dois tipos de procedimentos: Live Forensics que ocorre com o equipamento ainda ligado e algumas vezes ainda controlado pelo invasor, e Post-Mortem Forensics quando a investigação é feitas nas cópias da mídia original. Segundo Weber; Pereira; Goldani (apud CAR, 2007; SUT, 2008; COM, 2005) A Live Forensiscs especifica procedimentos de investigação não intrusivos, em equipamentos operacionais, e analisa informações persistentes (gravadas em dispositivos de armazenamento) e voláteis (com tempo de vida restrito). A PostMortem Forensics implica na apreensão de equipamentos para análise em laboratório e não inclui a análise de dados voláteis, como os gravados em memória RAM, que são perdidos quando há a falta de energia. A forense Post-Mortem inclui técnicas triviais de varredura por documentos, logs, imagens (fotografias), identificação de data e hora de arquivos, análise de trilhas de uso do computador e recuperação de dados excluídos. 2.2.1 Live Computer Forensiscs O trabalho do perito computacional é complexo e deve ser feito cuidadosamente, assim como suas escolhas. Decidir entre desligar o equipamento e perder todas as informações voláteis ou iniciar a investigação com ele ainda 42 operando é bem difícil, afinal a escolha errada compromete totalmente a investigação. De acordo com Pereira, et. al. (2007) quando o sistema detecta a intrusão gera alertas que indicam que o servidor web de uma organização esta sob um determinado ataque, isto pode ser um falso positivo. Nesse momento é preciso decidir entre a parada do servidor web ou mantê-lo on-line, essa decisão pode significar perda de dinheiro à organização, porém tempo e condições para perito realizar seu trabalho. O objetivo da live forensics (análise viva) é obter o máximo de informações relacionadas ao contexto como: estado das conexões, conteúdo da memória e dados referentes aos processos em execução, uma espécie de fotografia da cena do crime. Se corretamente realizadas as duas técnicas, post-mortem e live forensics, se complementarão e contribuirão para um resultado conclusivo e preciso. 2.2.2 Forense Post-Mortem Conforme Pereira, et. al. (apud SKOUDIS; ZELTSER, 2003) quando o processo forense é realizado nas mídias apreendidas o desafio é localizar entre um grande volume de dados, aqueles que são pertinentes ao caso investigado. Nesse cenário a fonte de informação é o conteúdo gravado nos meios de armazenamento não voláteis. A partir de ferramentas, desenvolvidas ou instaladas e compiladas pela equipe de investigação, os dados obtidos são confiáveis. Porém, se o cenário é de dispositivos que não foram desligados é importante a certificação do perito de que as ferramentas utilizadas para executar os procedimentos de coleta, exame e análise dos dados não foram comprometidas gerando dados falsos ou omissão de informações, como ocultar processos em execução no sistema operacional ou não mostrar determinadas entradas do arquivo de log do servidor. Os rootkits são os principais causadores ou fontes de dados falsos, pois podem modificar as ferramentas (comandos) do sistema operacional e assim permanecerem com acesso ao host e não serem identificados. Eles inserem filtros em determinadas partes do sistema operacional que impedem a visualização de algumas informações, podem atuar diretamente na aplicação, redirecionar as chamadas de sistema, substituir as bibliotecas compartilhadas e subverter o kernel do sistema operacional. Pereira, et. 43 al. (apud CARRIER 2006) conclui que além dos tipos de dados que podem ser coletados a diferença mais significativa entre live e post-mortem analysis é o grau de confiança existente nos resultados obtidos porque as ferramentas e comandos instalados no sistema podem ser modificados para produzir dados falsos ou os dados podem ser contaminados ou adulterados por erro do perito. 2.2.3 Técnicas Anti-Forenses Assim como os investigadores procuram por pistas ou evidências que possa identificar os invasores, por outro lado, os criminosos tentam se esconder desenvolvendo e utilizando técnicas para atrapalhar o trabalho investigativo. A essa tentativa de encobrir e destruir os rastros digitais é denominada anti-forense. Conforme Rodrigues; Foltran (apud REIS, 2003) a investigação de crimes digitais, igualmente aos crimes do mundo real, não é uma tarefa trivial, ocorrem muitas dificuldades na coleta e análise de vestígios deixados na máquina utilizada para o ilícito, à quantidade de evidências deixadas é inversamente proporcional às habilidades apresentadas pelo criminoso. Segundo Pereira; Weber; Goldani (apud PERON; LEGARY, 2008) anti-forense são classificadas em quatro métodos: destruição, ocultação, eliminação da fonte e falsificação. Cada categoria possui ações distintas para comprometer a disponibilidade e utilidade da informação para o processo forense. Evidências são destruídas para evitar que sejam encontradas, que sejam úteis caso sejam localizadas, ou são ocultadas na tentativa de impedir que sejam casualmente expostas ou dificultar a sua identificação por um investigador. Possíveis fontes de evidências podem ser destruídas para garantir que nunca estejam disponíveis, ou mascaradas e manipuladas para distribuir a culpa ou corromper a sua validade, de modo que não possam ser utilizadas em juízo. O desenvolvimento deste capítulo mostrou como o trabalho da perícia forense computacional é importante e complexo. As informações até aqui apresentadas ajudarão na compreensão dos capítulos seguintes onde será apresentado o sistema gerenciador de banco de dados e como o sistema responderá ao ataque em massa. 44 3 SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS (SGBD) Este capítulo abordará o funcionamento de um sistema gerenciador de banco de dados, uma pequena introdução aos bancos de dados Oracle e Postgresql e apresentará a ferramenta Apache JMeter. Segundo Takai; Italiano; Ferreira (2005), o primeiro Sistema Gerenciador de Banco de Dados (SGBD) comercial surgiu no final de 1960 e se baseava nos sistemas de arquivos disponíveis na época, os quais não controlavam o acesso concorrente por vários usuários ou processos. Os SGBDs evoluíram criando novas estruturas de dados com o objetivo de armazenar informações e passaram a utilizar diferentes formas de representação, ou modelos de dados, para descrever a estrutura das informações contidas em seus bancos de dados. Hoje são utilizados pelos SGBD‟s os seguintes modelos de dados: modelo hierárquico, modelo em redes, modelo relacional e o modelo orientado a objetos. De acordo com Ramakrishnam; Gehrke (2008) um SGBD é um software projetado para auxiliar na manutenção e na utilização de vastos conjuntos de dados. A alternativa para a não utilização do SGBD é armazenar os dados em arquivos e escrever código específico de aplicativo para gerenciá-lo. As vantagens de se usar um SGBD para gerenciar os dados são: independência de dados, acesso eficiente aos dados, integridade e segurança dos dados, administração de dados, acesso concorrente e recuperação de falha e tempo reduzido de desenvolvimento de aplicativo. Cacho; Benjamim (2010) explicam que o SGBD é um software com recursos capazes de manipular as informações do banco e interagir com usuário e que para um banco de dados funcionar é necessário um conjunto de quatro componentes básicos: dados, hardware, software e usuários. A figura 3.1 ilustra os componentes de um SGBD. Elmasri; Navathe (2005) afirmam que apesar das vantagens no uso do SGBD, em algumas situações esse sistema pode envolver custos altos e desnecessários que poderiam ser substituídos pelo processamento tradicional de arquivos. Esses custos elevados na utilização do SGBD são devidos a investimentos iniciais em hardware, software e treinamento; generalidade que o SGBD fornece para a 45 definição e processamento dos dados; custos elevados para oferecer segurança, controle de concorrência, recuperação e funções de integridade. Indica-se o uso de arquivos convencionais nas seguintes circunstâncias: banco de dados e aplicações simples, bem definidas e sem previsão de mudanças; quando houver requisitos de tempo real (real-time) para alguns programas difíceis de serem atendidos por causa da sobrecarga (overhead) do SGBD e quando o acesso de múltiplos usuários aos dados não for necessário. Hardware Software Usuários Banco de Dados Dados Figura 3.1 Componentes básicos para o funcionamento de um banco de dados Fonte: Cacho; Benjamim, 2010, modificado pela autora Ramakrishnam; Gehrke (2008) complementa que se o desempenho especializado ou solicitações de manipulação de dados são essenciais em um aplicativo, pode-se optar por não utilizar um SGBD, especialmente se os benefícios do SGBD não forem exigidos como consultas flexíveis, segurança, acesso concorrente e recuperação de falha. Entretanto, na maioria das situações de gerenciamento de dados em grande escala o SGBD é uma ferramenta indispensável. O SGBD trata da independência de dados de forma abstrata que oculta os detalhes. Quanto ao acesso eficiente aos dados o SGBD utiliza várias técnicas sofisticadas para seu armazenamento e recuperação, especialmente se ocorrerem armazenamentos externos. No tocante à integridade e segurança dos dados o SGBD força restrições de integridade e controles de acesso que governam quais os dados visíveis a diferentes classes. Já a administração de dados que poderão ser compartilhados por diversos usuários quando centralizados oferecem uma melhoria significativa. No acesso concorrente e recuperação de falha o SGBD 46 protege o usuário dos efeitos de falhas de sistema e planeja o acesso concorrente de forma que o usuário acredite que os dados estão sendo acessados exclusivamente por ele. Na abstração de dados ignoram-se as características menos importantes omitindo-se os detalhes para se concentrar nos aspectos mais importantes, conforme Ramakrishnam; Gehrke (2008), os dados de um SGBD são descritos em três níveis de abstração: o conceitual, o físico e o externo, mostrado pela figura 3.2. O esquema conceitual, também chamado de esquema lógico, descreve todas as relações e os dados que estão armazenadas no banco de dados. O esquema físico é o nível mais baixo de abstração que resume como as relações descritas no esquema conceitual são realmente armazenadas em dispositivos de armazenamento secundário como discos e fitas, suas decisões baseiam-se na compreensão de como o dado será Acesso em. O esquema externo é o nível de visão do usuário, permite que o acesso aos dados seja customizado e autorizado no nível dos usuários individuais ou em grupos, em resumo são as partes do banco de dados que o usuário tem acesso de acordo com a sua necessidade. Esquema Esquema Esquema Esquema Externo 1 Externo 2 Externo 3 Externo N Esquema Conceitual ou Lógico Esquema Físico (Nível mais baixo de abstração) Visão do usuário Descreve as relações e os dados armazenados no banco de dados Resume as relações descritas no esquema conceitual Armazenamento Figura 3.2 Níveis de abstração Fonte: Cacho; Benjamim, 2010, modificado pela autora 3.1 ORACLE DATABASE 10G EXPRESS EDITION O Oracle Database 10g Express Edition é uma versão de banco de dados relacional gratuita que será utilizada neste trabalho para a realização do teste de 47 desempenho. Segundo Rivas Júnior (2006) essa versão de banco de dados gratuita é de fácil instalação e gerenciamento, permite a utilização de uma interface para administrar o banco de dados, criar tabelas, visões (views) e outros objetos de banco de dados, importar, exportar e visualizar dados de tabelas, executar consultas (queries) e conjuntos de comandos (SQL Scripts), além de gerar relatórios. De acordo com Rivas Júnior (2006) o objetivo de um banco de dados é armazenar e recuperar informações relacionadas e um servidor de banco de dados é a chave para a solução do problema de gerenciamento de informações porque gerencia uma grande quantidade de dados em um ambiente multiusuário onde vários usuários podem concorrer ao acesso a um mesmo dado. Um banco de dados Oracle possui estruturas lógicas e estruturas físicas, assim o armazenamento dos dados podem ser gerenciados sem afetar o acesso às estruturas lógicas de armazenamento. As estruturas lógicas do Oracle incluem uma coleção de objetos de um banco de dados (schemas), bloco de dados (data blocks), extensões (extens), segmentos (segments) e unidades lógicas de armazenamento (tablespaces). Enquanto as estruturas físicas do banco de dados Oracle possui três arquivos no banco de dados: arquivos de controle (Control Files) que armazenam as informações para manter e verificar a integridade de um banco de dados, como o nome do banco de dados, o time stamp, nomes e local de arquivos de dados de redo log, essas informações são usadas para identificar os arquivos de dados e o arquivo de redo log, caso ocorra falhas no sistema os arquivos de controle são utilizados juntos com os arquivos de redo log para a recuperação do banco de dados; arquivos de dados (Data Files) que armazena o dicionário de dados e os objetos do usuário e as ultimas alterações submetidas a commit feita nos dados; arquivos de redo log que registra as alteração feitas nos dados. Todo banco de dados oracle tem no mínimo dois grupos de arquivos de redo log cada um com pelo menos um arquivo de redo log, para proteger os arquivos contra falha no disco é mantida uma cópia do arquivo em diferentes discos chamados de arquivos de log espelhados. O Oracle é considerado um banco de dados objeto relacional, segundo Takai; Italiano; Ferreira (2005) o modelo relacional revelou-se ser o mais flexível e adequado ao solucionar os vários problemas que se colocam no nível da concepção e implementação da base de dados. A estrutura fundamental deste modelo é a relação (tabela). Uma relação é constituída por um ou mais atributos (campos) que 48 traduzem o tipo de dados a armazenar. Cada instância do esquema (linha) é chamada de tupla (registro). O modelo relacional não tem caminhos pré-definidos para se fazer acesso aos dados como nos modelos que o precederam, ele implementa estruturas de dados organizadas em relações. Porém, para se trabalhar com essas tabelas, algumas restrições precisaram ser impostas para evitar aspectos indesejáveis, como: repetição de informação, incapacidade de representar parte da informação e perda de informação definidas como restrições de: integridade referencial, chaves e integridade de junções de relações. A Figura 3.3 mostra exemplos de tabelas sob o modelo relacional. Cod_Cliente Nome Rua Cidade Num_CC Saldo 1 Pedro A São Paulo 20121 1200 2 Maria B Jundiai 21582 1320 21352 652 Cod_Cliente Num_CC 1 20121 2 21582 2 21352 Figura 3.3 Modelo Relacional Cliente - Conta Corrente Fonte: Takai; Italiano; Ferreira. 2005, p 8. Segundo Rivas Júnior (2006) para que um banco de dados seja considerado relacional ele deve seguir as 12 regras definidas por Edgar Frank Cood em 1970: a) Todas as informações em um banco de dados são de forma explícita no nível lógico e exatamente em apenas uma forma – por valores em tabelas; b) Cada um em qualquer valor atômico em um banco de dados relacional possui a garantia de ser logicamente acessado pela combinação de nome de tabela, do valor da chave primária e do nome da coluna; c) Valores nulos devem ser suportados de forma sistemática e independente do tipo de dado para representar informações inexistentes e informações inaplicáveis; d) A descrição do banco de dados é representada no nível lógico da mesma forma que os dados ordinários, permitindo que os usuários autorizados utilizem a mesma linguagem relacional aplicada aos dados regulares; 49 e) Um sistema relacional pode suportar várias linguagens e várias formas de recuperação de informações. Entretanto, deve haver pelo menos uma linguagem, com uma sintaxe bem definida e expressa por conjuntos de caracteres, que suporte de forma compreensiva todos os seguintes itens: definição de dados, definição de views, manipulação de dados (interativa e embutida em programas), restrições de integridade, autorizações e limites de transações (begin, commit e rollback); f) Todas as views que são teoricamente atualizáveis devem também ser atualizáveis pelo sistema; g) A capacidade de manipular um conjunto de dados (relação) através de um simples comando deve-se estender às operações de inclusão, alteração ou exclusão de dados; h) Programas de aplicação permanecem logicamente inalterados quando ocorrem mudanças no método de acesso ou na forma de armazenamento físico; i) Mudanças nas relações e nas views provocam pouco ou nenhum impacto nas aplicações; j) As aplicações não são afetadas quando ocorrem mudanças nas regras de restrições de integridade; k) As aplicações não são logicamente afetadas quando ocorrem mudanças geográficas dos dados; l) Se um sistema possui uma linguagem de baixo nível, essa linguagem não pode ser usada para subverter as regras de integridades e restrições definidas no nível mais alto. Ainda segundo Rivas Júnior (2006) o Oracle Database Express inclui uma interface gráfica para desenvolvimento de aplicações baseadas na Web (Oracle Applications Express release 2.21), pode-se utilizar das linguagens e ferramentas Oracle ou de terceiros para desenvolvimento de diversas aplicações utilizando o Oracle Database 10g Express Edition. 3.2 POSTGRESQL Segundo Postgresql (2005), o PostgreSQL é um sistema de gerenciamento de banco de dados objeto-relacional (SGBDOR) de código aberto que suporta 50 grande parte do padrão SQL e oferece muitas funcionalidades modernas, como: comandos complexos, chaves estrangeiras, gatilhos, visões, integridade transacional e controle de simultaneidade multiversão, foi desenvolvido baseado no Postgres versão 4.2, pioneiro em vários conceitos que somente se tornaram disponíveis muito mais tarde em alguns sistemas de banco de dados comerciais, desenvolvido pelo Departamento de Ciência da Computação da Universidade da Califórnia em Berkeley. Por ser um sistema de gerenciamento de banco de dados relacional o PostgreSQL permite aos desenvolvedores integrar ao banco de dados seus próprios tipos de dado como novos: tipos de dados, funções, operadores, funções de agregação, métodos de índice, linguagens procedurais e métodos personalizados. Devido à sua licença liberal, o PostgreSQL pode ser utilizado, modificado e distribuído por qualquer pessoa para qualquer finalidade, seja particular, comercial ou acadêmica, livre de encargos. De acordo com Opengeo (2007), o PostgreSQL é o SGBD que possibilitou o desenvolvimento de soluções corporativas com uma melhor relação custo/benefício, seu ponto forte é a sua capacidade de tratar grandes volumes de dados com alta performance e escalabilidade, ou seja, a sua arquitetura pode ser continuamente ampliada de acordo com a demanda dos usuários, neste contexto, entram as aplicações na área de geotecnologias que necessitam de uma infra-estrutura robusta e em contínua expansão. Em estudos realizados em universidades e centros de pesquisa, o PostgreSQL tem apresentado performance, no mínimo, 20% superior aos SGBD's comerciais mais conhecidos. As principais características do PostgreSQL são: licenciamento BSD (licença de código aberto), esta licença garante total liberdade de uso, alteração, modificação e distribuição do sistema, também permite que versões proprietárias e comerciais sejam criadas a partir do sistema licenciado nestes termos; SGBD Objeto-Relacional (classes e hierarquia), o PostgreSQL está na mesma categoria de outros SGBD's que evoluíram da arquitetura de relacional para objeto-relacional, ou seja, implementaram algumas definições de orientação à objeto; modularidade, este recurso tem facilitado o trabalho dos desenvolvedores que desejam implementar novas funcionalidades. Um exemplo disso, foi a criação do módulo PostGIS, contendo inúmeras funcionalidades para o desenvolvimento de aplicações que tratam a geoinformação; suporte nativo para inúmeras plataformas, o PostgreSQL tem uma versão nativa para a plataforma Windows sem precisar de uma camada de emulação, bem como para diversas 51 outras plataformas: Linux, Unix, Mac, etc.; inúmeras interfaces nativas. O PostgreSQL pode ser Acesso em através das seguintes interfaces: ODBC, JDBC, C, C++, PHP, Perl, TCL, ECPG, Python e Ruby. Neste quesito, o PostgreSQL supera todos os demais SGBD's, pois nenhum outro possui tanta flexibilidade; pontos de Salvamento (Savepoints), esse recurso do padrão SQL permite que apenas partes específicas de uma transação sejam canceladas sem abortar a operação inteira. Isto beneficia desenvolvedores de aplicações que precisam de transações complexas com tratamento de erro; recuperação a partir dos logs de transação (Point in Time Recovery). É possível a recuperação total dos dados a partir dos logs gerados automaticamente a cada transação. Isto fornece uma alternativa muito esperada às cópias de segurança de hora em hora ou diárias para serviços de dados críticos; tablespaces, recurso crucial para os administradores de sistemas com vários gigabytes de data warehousing, as tablespaces permitem a alocação de grandes tabelas e índices nos seus próprios discos ou conjuntos de discos, aumentando assim a performance das consultas. Segundo Postgresql (2005), o PostgreSQL utiliza a arquitetura básica clienteservidor, ou seja, uma sessão do PostgreSQL consiste nos seguintes processos cooperando entre si: um processo servidor, que gerencia os arquivos de banco de dados, aceita conexões dos aplicativos cliente com o banco de dados, e executa ações no banco de dados em nome dos clientes; O programa servidor de banco de dados (postmaster); O aplicativo cliente do usuário (frontend) que deseja executar operações de banco de dados. Esses aplicativos cliente podem ter naturezas muito diversas: o cliente pode ser uma ferramenta no modo caractere, um aplicativo gráfico, um servidor Web que acessa o banco de dados para mostrar páginas Web, ou uma ferramenta especializada para manutenção do banco de dados. O cliente e o servidor podem estar em hospedeiros diferentes. Neste caso, se comunicam através de uma conexão de rede TCP/IP. Os arquivos que podem ser acessados na máquina cliente podem ser inacessíveis para a máquina servidora (ou somente podem ser acessados usando um nome de arquivo diferente). O servidor PostgreSQL pode tratar várias conexões simultâneas de clientes. Para esta finalidade é iniciado um novo processo (fork) para cada conexão. Deste ponto em diante, o cliente e o novo processo servidor se comunicam sem intervenção do processo postmaster original. O postmaster está sempre executando aguardando 52 por novas conexões dos clientes, enquanto os clientes e seus processos servidor associados surgem e desaparecem sem que o usuário perceba. 3.3 APACHE JMETER Segundo Santos; Santos Neto (2008) o Apache JMeter é uma aplicação desktop projetada para a realização de testes de desempenho e estresse em aplicações cliente/servidor, tais como aplicações Web, pode ser usado para simular cargas de trabalho em servidor de rede, aplicações ou mesmo em um objeto, testando sua robustez. É uma ferramenta Open Source resultado do trabalho de milhares de pessoas, totalmente escrita em Java, o JMeter é compatível com qualquer ambiente capaz de suportar a máquina virtual Java versão 1.4 ou superior. De acordo com Santos; Santos Neto (2008) o JMeter também permite a criação de testes para diversos protocolos, como HTTP, JDBC, FTP, SOAP, dentre outros, podendo inclusive ser utilizada para testar objetos implementados em Java. Além de poder ser usado para criação e execução de testes de desempenho e estresse, também permite a realização de testes funcionais. A organização dos elementos que compõe o teste é feita através de uma árvore hierárquica, cuja raiz é o Plano de Teste (TestPlan) e alguns elementos da árvore de teste são hierárquicos, como os Listeners (relatórios) e as Assertions (asserções), pertencendo e referenciando a outros elementos da ordem hierárquica superior. Outros elementos, como os Samplers (requisições), são primariamente ordenados e, portanto, a ordem na qual aparecem verticalmente na árvore determina sua ordem de execução. Essa organização também é refletida no arquivo XML gerado pela ferramenta para a persistência dos elementos, cada elemento do script de teste corresponde a um elemento na estrutura XML. A execução dos testes pode ocorrer de duas formas: em uma máquina só ou de forma distribuída, na qual o esforço do teste é distribuído dentre diversas máquinas. A partilha do esforço do teste é uma característica muito importante e muitas vezes necessária para a correta execução dos testes de desempenho e estresse. É através dela que os testadores podem conseguir uma maior fidelidade na recriação de cenários de teste, pois com a distribuição da 53 execução do teste entre várias máquinas evitam-se gargalos tanto de processamento quanto de caminhos na rede do sistema sob teste. Conforme Santos; Santos Neto (2008) um Plano de Testes é um conjunto de elementos que descrevem uma série de passos que serão executados. Assim, um teste bem definido geralmente incorpora vários componentes do JMeter. Para adicionar, deletar, copiar ou mover um elemento (componente) de um script de teste, basta clicar com o botão direito do mouse sobre o elemento e escolher a opção desejada. Um componente também pode "conter" outro componente. Nesse caso, diz-se que um é o "filho", o que está a uma hierarquia inferior, e o outro é o "pai", que está em uma hierarquia superior a do filho e com o qual o filho está ligado. Os elementos básicos que devem estar presentes em todos os testes criados/executados são: Test Plan (componente que representa o plano de teste); WorkBench (é uma espécie de área de trabalho, todos os elementos que forem seu filho não serão executados apenas serão utilizados como área de armazenamento temporário, para a composição do teste); Thread Group (contém a configuração do grupo de usuários virtuais, onde cada usuário corresponde a uma thread que é lançada e controlada pelo JMeter e que simula a navegação do usuário na aplicação sob teste). Os dois primeiros elementos estão presentes no script de teste desde o momento em que o JMeter é iniciado. Já o Thread Group deve ser adicionado manualmente. A primeira ação a ser feita após a adição do Thread Group é configurar o Test Plan definindo um nome identificador para o Plano do Teste, adicionando comentários, criando variáveis globais, que são visíveis por todas as requisições do plano de teste em questão, além de permitir a definição de parâmetros ou comportamentos comuns a todos os testes. Além disso, o Test Plan contém duas caixas de seleção (checkbox): Functional Testing (se selecionada faz com que o JMeter grave os dados retornados do servidor para cada requisição feita. Essa opção interfere significamente no desempenho da ferramenta e, portanto, não deve estar marcada no caso de um teste de desempenho ou estresse); Run each Thread Group separately ( pode-se definir se os grupos de usuários virtuais serão executados simultaneamente ou sequencialmente). Após configurar o Test Plan, o testador deve configurar o Thread Group definindo suas propriedades: Number of threads (o número de threads / usuários virtuais que executarão os testes), cada thread irá executar o plano de teste de forma independentemente das outras threads que estão executando, por isso threads múltiplas são usadas para simular conexões 54 concorrentes na aplicação sob teste; Ramp-Up Period (define a frequência de lançamento das threads, se forem definidas 10 threads e um ramp-up de 100s, então o JMeter levará 100s para iniciar todas as threads, ou seja, uma thread será iniciada a cada 10s); Loop Count (define quantas vezes o plano de teste será executado, caso seja marcado o checkBox Foreve, o teste entrará em execução infinta e o valor definido no Loop Count será desconsiderado); Scheduler (pode-se definir um horário para o início e término da execução dos testes, essa propriedade é opcional. Samplers são componentes que representam cada requisição que o JMeter fará ao servidor quando o plano de teste for executado. No caso de um sistema Web, cada operação ou mudança de página corresponde a uma requisição. O JMeter contém vários tipos de Samplers, segundo Santos; Santos Neto (2008) como por exemplo, FTP Request, HTTP Request, JDBC Request, dentre outros. Cada Sampler contém várias propriedades que podem ser configuradas. O HTTP Request permite o envio de requisições HTTP/HTTPS ou arquivos para um servidor Web, suas propriedades são: Name (nome da requisição); Server (URL ou endereço ip do servidor Web); Port (porta a ser usada, por default já está configurada como 80); Protocol (define se a requisição é HTTP, HTTPS or FILE); Method (define o método de submissão dos dados). Os principais métodos são o GET (os dados são enviados na própria URL) e POST (onde os dados são enviados ocultamentena requisição); Path (o path da página testada); Send Parameters With the Request (adiciona-se todos os parâmetros e respectivos valores para serem enviados junto com a requisição). Além da construção dos testes, a análise dos seus resultados é importante para se identificar as áreas críticas do sistema. Os resultados da execução em forma de gráfico aliados aos resultados exibidos no View Results Tree, adicionado ao plano de teste, podem ser utilizados pelo testador para avaliar sobre o atendimento da aplicação aos requisitos de desempenho existentes. 55 4 ESTUDO DE CASO Segundo Santos; Santos Neto (2008) há uma diferença entre teste de desempenho e teste de estresse, o teste de desempenho tem como objetivo testar se determinado sistema é capaz de lidar com a carga definida nos requisitos e o teste de estresse consiste em submeter o sistema a situações anormais de uso, como grandes quantidades de carga, comportamento anormal de portas em um servidor, redução dos recursos computacionais disponíveis, entradas não realistas de dados. Baseado nestas informações procurou-se testar se o sistema obteve sucesso ao executar as requisições solicitadas e também submetê-lo a uma carga maior para verificar a possibilidade de queda de servidor. Para a realização do teste de desempenho foi utilizado um sistema operacional de 32 bits, Windows 7 Starter, processador Intel Atom CPU N455 @ 1.66GHz 1.67GHz, memória RAM 2,00GB e a ferramenta Apache JMETER na versão 2.3.4 disponível para download no site: http://jakarta.apache.org/jmeter. Inicialmente foi criado uma página web na ferramenta NetBeans IDE 6.9.1 para fazer a conexão aos bancos de dados Oracle Database 10g Express Edition e PostgreSql 8.4 e foi inserido 9714 registros em cada um deles. Foi definido realização dos testes através de dez experimentos. Os fatores dos experimentos são quantidade de clientes e intervalos de requisições, os níveis de cada um dos fatores são 50, 100, 250, 500 e 5000 clientes e requisições a cada 1 e 2 milissegundos (ms.) e cada experimento foi realizado por dez vezes. Os testes foram realizados na ferramenta Apache JMeter e, para isso, criou-se um plano de teste que foi nomeado Teste de carga conforme a figura 4.1. Figura 4.1 Inicializando o Plano de Teste Fonte: elaborado pela autora, 2011. 56 O próximo passo foi criar um grupo de usuários para simular as requisições e definir o tempo de inicialização de cada usuário como mostra a figura 4.2. Figura 4.2 Inserindo o Grupo de Usuários Fonte: elaborado pela autora, 2011. Acrescentou-se o testador de Requisição HTTP para realizar os testes onde foi preenchido com as informações necessárias, nome do servidor, número da porta e o caminho completo do endereço da aplicação, as informações podem ser visualizadas na figura 4.3. Nestes testes, o website busca apenas um registro entre todos os 9714 registros do banco de dados e espera-se que com determinada carga de requisições, o servidor não suporte e consequentemente, tenha perda de performace ou até uma possível queda de servidor. Figura 4.3 Inserindo Testador de Requisição HTTP Fonte: elaborado pela autora, 2011. Para visualizar e analisar os resultados é necessário acrescentar um ouvinte, definiu-se três formas para visualizar os resultados obtidos pelo ouvinte. A figura 4.4 57 mostra o visualizador Spline que apresenta através de gráfico o resultado do tempo de resposta levado para a execução do teste. Figura 4.4 Visualização dos Resultados pelo visualizador Spline Fonte: elaborado pela autora, 2011. Através da tabela de resultados, ilustrado pela figura 4.5 é possível visualizar, por amostra, a quantidade de usuários virtuais, o tempo de início de cada usuário, tipos de requisição, tempo de cada amostra em milissegundos, estado, quantidade de bytes utilizados em cada requisição, número das amostras, média e desvio padrão. Figura 4.5 Visualização dos Resultados em Tabelas Fonte: elaborado pela autora, 2011. 58 O gráfico de resultados, conforme figura 4.6 apresenta uma visualização mais completa com número de amostras, última amostra, média, desvio padrão, vazão (quantidade de amostras por segundo) e mediana. Figura 4.6 Visualização dos Resultados com Gráficos Fonte: elaborado pela autora, 2011. De acordo com Santos; Santos Neto (2008) os testes de desempenho consistem em testar um sistema quanto aos seus requisitos de desempenho, como: latência que é o tempo entre uma requisição e a resposta da operação requisitada, vazão que é o número de operações que o sistema é capaz de completar em um período de tempo, escalabilidade pode ser definido como quantidade de usuários simultâneos que o sistema pode lidar e o uso de recursos de máquina, por exemplo memória e processamento. A seguir descrevem-se todos os experimentos realizados de acordo com os fatores números de clientes e intervalo das requisições e compara-se os resultados em cada um dos bancos. 4.1 Experimentos Realizados no Banco Oracle Para o primeiro experimento foi simulado 50 usuários virtuais chamados de clientes e o intervalo entre uma requisição e outra de 1ms resultando em uma 59 resposta em tempo médio de 1085 ms com um desvio padrão de 80 atingindo a mediana em 1071 ms. Quando o intervalo foi modificado para 2 ms o tempo de resposta caiu para 1064 com um desvio padrão de 65 e mediana 1052. No segundo experimento o número de clientes aumentou para 100, observando os mesmos intervalos de requisições anteriores, quando o número de clientes dobrou o desempenho foi melhor porque o tempo de resposta média para o intervalo de 1 ms foi de 1082 ms com desvio padrão de 62 e mediana de 1075 e tempo médio e resposta de 1096 com desvio padrão de 72 e mediana 1082 no intervalo de 2 ms. Quando o número de clientes foi alterado para 250 e mantido os intervalo de requisições foi obtido os resultados de tempo de resposta médio 1097 ms, desvio padrão 58 e mediana 1088 para intervalo de 1 ms e média de 1099ms, desvio padrão 76 e mediana 1084. Ao alterar o número de clientes para dez vezes mais, ou seja, 500 usuários virtuais o desempenho foi de tempo de resposta 1122 ms, desvio 120 e mediana 1090 para requisições a cada 1 ms e de 1101 com desvio de 75 e mediana de 1085 para requisições a cada 2 ms. No último experimento com 5000 clientes e intervalo de 1 ms o tempo de resposta médio foi de 1221 com desvio padrão de 440 e mediana 1089. E tempo de resposta médio de 1382 com desvio padrão de 1071 e mediana para requisições a cada 2 ms. Concluindo-se que quando este banco de dados sofre uma sobrecarga de dados ele irá trabalhar mais rápido para não perder performace, conforme informações apresentadas no quadro 4.1. Quadro 4.1 – Resultados obtidos no Banco Oracle Quantidade de Intervalo das Clientes Requisições 50 1 50 2 100 1 100 2 250 1 250 2 500 1 500 2 5000 1 5000 2 Fonte: elaborado pela autora, 2011. Média (ms) 1085 1064 1082 1096 1097 1099 1122 1101 1221 1382 Desvio Padrão 80 65 62 72 58 76 120 75 440 1071 Mediana 1071 1052 1075 1082 1088 1084 1090 1085 1089 1095 60 4.2 Experimentos Realizados no Banco PostgreSql Este experimento foi realizado com 50 clientes em intervalos de 1ms entre as requisições resultando em um tempo médio de resposta de 1042 ms com um desvio padrão de 72 atingindo a mediana em 1007 ms. ao modificar o intervalo para 2 ms o tempo de resposta caiu para 1037 com um desvio padrão de 37 e mediana 1011. No segundo experimento o número de clientes dobrou para 100 e foi observado que para o intervalo de 1 ms a média foi de 1049 ms com desvio padrão de 41 e mediana de 1019 e o tempo de resposta 1027 com desvio padrão de 38 e mediana 1026 para intervalos de 2 ms. Aumentando a quantidade de clientes para 250 em intervalos de 1ms obtevese os resultados de tempo de resposta de 1051 ms, desvio padrão 47 e mediana 1045. Já para intervalos de 2 ms, média de 1041 ms, desvio padrão 44 e mediana 1026. Para o experimento com 500 clientes o de tempo de resposta 1073 ms, desvio 57 e mediana 1069 para requisições a cada 1 ms e de 1065 com desvio de 46 e mediana de 1064 para requisições a cada 2 ms. O último experimento com 5000 clientes em intervalos de 1 ms e de 2 ms observou-se uma perda de desempenho e a sobrecarga gerou uma queda de servidor. Concluiu-se que quando este banco de dados sofre uma sobrecarga de dados seu desempenho é melhor quando existe um intervalo maior entre uma requisição e outra, porém não suporta uma sobrecarga muito grande, isso pode ser observado através do quadro 4.2. Quadro 4.2 – Resultados obtidos no Banco PostgreSql Quantidade de Intervalo das Clientes Requisições 50 1 50 2 100 1 100 2 250 1 250 2 500 1 500 2 5000 1 5000 2 Fonte: elaborado pela autora, 2011. Média (ms) 1042 1037 1049 1027 1051 1041 1073 1065 - Desvio Padrão 72 37 41 38 47 44 57 46 - Mediana 1007 1011 1019 1026 1045 1026 1069 1064 - 61 4.3 Comparativo Oracle X PostgreSql Os resultados de cada teste já foram apresentados separadamente, no entanto através dos gráficos 1 e 2, pode-se visualizar de forma mais nítida os resultados obtidos. Tempo Médio de Resposta Desempenho do Banco Oracle 1600 1400 1200 1000 800 600 400 200 0 10851064 10821096 10971099 11221101 1382 1221 1 ms 2 ms 50 100 250 500 Quantidade de Clientes 5000 Gráfico 1 – Resultados de desempenho do Banco Oracle Fonte: elaborado pela autora, 2011. Observa-se que o banco Oracle busca uma estabilidade no tempo de resposta que variou entre 1064 e 1382 ms e não houve grandes alterações quando se modificou o tempo de requisição e a quantidade de clientes. Enquanto que no banco Postgresql o tempo de resposta variou entre 1027 e 1073 ms, as requisições enviadas a cada 2 ms tiveram uma resposta mais rápida. Este banco não suportou uma carga de 5000 requisições. Desempenho do Banco PostgreSql Tempo Médio de Resposta 1200 10421037 10491027 10511041 10731065 1000 800 600 1 ms 400 2 ms 200 0 0 0 50 100 250 500 Quantidade de Clientes Gráfico 2 – Resultados de desempenho do Banco PostgreSql Fonte: elaborado pela autora, 2011. 5000 62 CONCLUSÃO A constante evolução tecnológica é inevitável e seus benefícios sempre serão superiores à criminalidade crescente, daí a importância de se estar atento ao surgimento de novas metodologias, técnicas e perfis para se combater este mal. As etapas do processo e técnicas da investigação forense devem acompanhar essa evolução, entretanto se a legislação ficar parada no tempo todo o trabalho de uma equipe multidisciplinar será perdido, afinal não terá validade perante a justiça. O computador é uma máquina preciosa, pois é a peça principal para nos interligar a esse novo futuro, independentemente de tamanho ou formato. A segurança é hoje uma preocupação inexoravelmente grande em matéria de gerenciamento de bases de dados que armazenam informações de importância e da vida estratégica das organizações e que dão suporte rotineiramente a milhares de usuários. A escolha do banco de dados é que definirá a importância do processamento das informações e respostas rápidas. Com o propósito de abordar os aspectos de segurança e integridade de dados, foi realizado um estudo simulando um ataque em dois gerenciadores distintos: ORACLE e POSTGRESQL. É relevante notar que as respostas obtidas foram distintas. Os dois bancos de dados, embora distintos, se utilizam de uma mesma base de dados e foram expostos aos mesmos problemas, geraram, entretanto, respostas diferentes. O banco de dados ORACLE procurou-se manter estável, em cada teste realizado quando se aumentava a quantidade de clientes o banco trabalhava ainda mais rápido para manter um padrão médio no tempo de resposta, sendo possível a realização de todos os testes propostos. Já no caso do banco de dados POSTGRESQL houve pequenas variações no tempo de resposta quando se alterava quantidade de clientes e tempo de requisições, porém o banco não suportou uma carga de 5000 requisições. Deve-se levar em conta que os resultados obtidos estão distantes da realidade, afinal para a realização dos testes foi utilizado uma máquina de pequeno porte, enquanto que os servidores web se utilizam de máquinas poderosas com alto 63 poder de processamento. Mas o que fica evidente é que em algum momento a máquina exacerbada no processamento de informação ao mesmo tempo, não resistirá e sofrerá uma queda. Considerando que a área de pesquisa é notadamente nova, há ainda muitas questões para serem estudadas visando o melhor rendimento em segurança e desempenho das aplicações. 64 REFERÊNCIAS BIBLIOGRÁFICAS ALVES, M. C. T. Direito Digital. 2009. Trabalho de Conclusão de Curso (Graduação em Ciência da Computação) – Departamento de Computação, Universidade Católica de Goiás. Goiânia BRASIL. Artigo 5º, inciso X e XII. Constituição da República Federativa do Brasil.1988. Disponível em: < http://www.planalto.gov.br/ccivil_03/Constituicao/ Constituicao.htm > Acesso em 14 nov. 2011. CACHO, N. A. A.; BENJAMIM, X. C. Sistemas de Banco de Dados - Aula 1– Introdução a Banco de Dados. Metrópole Digital, Natal, 2010. Disponível em: <http://www.metropoledigital.ufrn.br/aulas_avancado/web/disciplinas/banco_de_dado s/aula_01.html> Acesso em 03 set. 2011. CANSIAN, A. M. Conceitos para perícia forense computacional. In 6ª ESCOLA REGIONAL DE INFORMÁTICA DA SBC, 2001, São Carlos. Disponível em:< http://www.acmesecurity.org/~adriano/docs/eri2001/artigo-adr-icmc-2001.pdf> Acesso em 06 jun. 2011. CGIBR. Comitê Gestor da Internet no Brasil. Cartilha de Segurança para Internet – Glossário. 2006. Disponível em: <http://cartilha.cert.br> Acesso em: 30 mar. 2011. CGIBR. Comitê Gestor da Internet no Brasil. Cartilha de Segurança para Internet – Parte I: Conceitos de Segurança. 2006. Disponível em: <http://cartilha.cert.br> Acesso em: 30 mar. 2011. CGIBR. Comitê Gestor da Internet no Brasil. Cartilha de Segurança para Internet – Parte II: Riscos envolvidos no uso da Internet e métodos de prevenção. 2006. Disponível em: <http://cartilha.cert.br> Acesso em: 30 mar. 2011. CGIBR. Comitê Gestor da Internet no Brasil. Cartilha de Segurança para Internet – Parte III: Privacidade. 2006. Disponível em: <http://cartilha.cert.br> Acesso em: 30 mar. 2011. ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados. 4 ed. São Paulo: Pearson Addison Wesley, 2005. FREITAS, A.R. Perícia Forense Aplicada à Informática. 2003. Trabalho de Conclusão de Curso (pós-graduação em Segurança da Informação na Web) – Instituto Brasileiro de Pesquisa em Informática, Fundação Centro Federal de Educação Tecnológica. Rio de Janeiro. Disponível em: <http://www.linuxsecurity.com.br/info/general/andrey-freitas.pdf> Acesso em 13 ago. 2011. HOEPERS, C.; JESSEN, K. S.; CHAVES, M. H. P. C. Segurança na Internet Brasileira: Principais Ameaças e Recomendações para Prevenção. In Campus 65 Party Brasil, 2009, São Paulo. Disponível em: < http://www.cert.br/docs/palestras/ certbr-campusparty2009.pdf > Acesso em 12 ago. 2011. OPENGEO. PostgreSQL - O mais robusto SGBD para aplicações corporativas, Rio de Janeiro, 30 jul. 2007. Disponível em: < http://www.opengeo.com.br/?q=node/17 > Acesso em: 22 out. 2011. PEREIRA, E. D. V. Investigação Digital: conceitos, ferramentas e estudo de caso. In 3º CONGRESSO TECNOLOGICO TI E TELECOM, 2010, Fortaleza. Disponível em: <www.infobrasil.inf.br/paginas/anais2010> Acesso em 21 fev. 2011. PEREIRA, E. D. V.; WEBER, D.; GOLDANI, C. Detecção e Acesso a Mensagens Ocultas em Imagens Digitais. In: 10º CONGRESSO NACIONAL DE CRIMINALÍSTICA, 2009, João Pessoa. PEREIRA, E. et. al. Forense Computacional: fundamentos, tecnologias e desafios atuais. In: 7º SIMPÓSIO BRASILEIRO EM SEGURANÇA DA INFORMAÇÃO E DE SISTEMAS COMPUTACIONAIS, 2007, Rio Grande do Sul. POSTGRESQL. Documentação do PostgreSQL 8.0.0. Rio de Janeiro, 29 dez 2005. Disponível em <http://pgdocptbr.sourceforge.net/pg80/preface.html#INTROWHATIS> Acesso em: 17 set 2011. RAMAKRISHNAN, R.; GEHRKE, J. Sistemas de Gerenciamento de Banco de Dados. 3 ed. São Paulo: McGraw-Hill, 2008. RIVAS JUNIOR, A. F. Oracle – Administração Básica. JB Livros e Cursos. Santa Cruz do Sul. 25 mar 2006. Disponível em: < http://www.juliobattisti. com.br/tutoriais/almirrivas/oracle003.asp > Acesso em: 17 set 2011. RODRIGUES, T. S.; FOLTRAN, D. C. J. Análise de Ferramentas Forenses na Investigação Digital. Revista de Engenharia e Tecnologia, Ponta Grossa, v. 2, n. 3, p.104, dez. 2010. Disponível em: <http://www.revistaret.com.br/ojs2.2.3/index.php/ret/article/viewFile/64/93> Acesso em: 16 abr. 2011. SANTOS, I. S.; SANTOS NETO, P. A. Automação de Testes de Desempenho e Estresse com o JMeter. In ERCEMAPI, 2008, São Luís. Disponível em: <http://www.ufpi.br/subsiteFiles/pasn/arquivos/files/artigoJMeter%281%29.pdf > Acesso em: 02 nov. 2011. SILVA FILHO, L. C. B. Desenvolvimento de Esquema Técnico e Estruturado para Análise Pericial de Sistemas de Arquivos Instalados em Computadores Plataforma MS Windows. 2009 b. Anteprojeto da monografia (Graduação em Ciência da Computação) - Universidade Federal da Bahia, Instituto de Matemática, Departamento de Ciência da Computação. Salvador. SYMANTEC. Glossário De Segurança - Security 101. 2011. Disponível em: <http://www.symantec.com/pt/br/business/theme.jsp?themeid=glossario-deseguranca> Acesso em: 10 mai. 2011. 66 TAKAI, O. K.; ITALIANO, I. C.; FERREIRA, J. E. Introdução a banco de dados. 2005, 124p. Apostila da disciplina de introdução a Sistemas Banco de Dados. Instituto de Matemática e Estatística – Universidade de São Paulo. TORRES, G.; Redes de Computadores, Rio de Janeiro: Nova Terra, 2009. WEBER,D.; PEREIRA, E. D. V.; GOLDANI, C. A. Análise do uso de antiforense digital para destruição de dados. In: 10º CONGRESSO NACIONAL DE CRIMINALÍSTICA, 2009 a, João Pessoa. 67 GLOSSÁRIO Com a finalidade de esclarecer possíveis dúvidas que possam surgir durante a leitura deste trabalho, foi elaborado um glossário, de acordo com SYMANTEC (2011) e CGIBR (2006) com os termos técnicos mais comuns encontrados na Internet. ACESSO CONCORRENTE – vários usuários acessando vários arquivos, ou os mesmos arquivos, sem sofrer danos, perda de performance ou quaisquer outras restrições. ALGORITMO HASH – é composto por fórmulas matemáticas complexas, para poder garantir a irreversibilidade e a unicidade do resumo de mensagem (MD) gerado (textos diferentes não produzem o mesmo MD). A alteração de um simples bit na mensagem gera um MD completamente diferente e o valor de conferência muda se um único bit for alterado, acrescentado ou retirado da mensagem. ANONYMIZERS – são sites que agem como intermediário entre o programa de navegação e os outros websites impedindo que o site visitado tenha acesso a qualquer tipo de informação daquele computador. ATACANTE – é a pessoa responsável pela realização de um ataque. ATAQUE – é a tentativa, bem ou mal sucedida, de acesso ou uso não autorizado a um programa ou computador. Também são considerados ataques as tentativas de negação de serviço (DoS). ATAQUES DE FORÇA BRUTA (Brutal Force) – são estratégias utilizadas para descobrir senhas, consiste em uma busca exaustiva feita através de algoritmos tentando encontrar todas as combinações possíveis até se descobrir a senha correta. 68 BACKDOOR – código malicioso que abre caminho para o acesso remoto a um computador contaminado sem o conhecimento do usuário. BEGIN – comando que inicia uma nova transação. BOT – computador isolado infectado com malware e parte de uma botnet. BOTNETS – são redes formadas por diversos computadores infectados com bots. Normalmente usadas em atividades de negação de serviço, esquemas de fraude, envio de spam, etc. BROWSER – é um programa de computador que habilita seus usuários a interagirem com documentos virtuais da Internet. CADEIA DE CUSTÓDIA – é um processo usado para manter e documentar a história cronológica da evidência, para garantir a idoneidade e o rastreamento das evidências utilizadas em processos judiciais. CAVALO DE TRÓIA (Trojan Horse) – é um programa que se mascara ou aparenta possuir um propósito benigno, mas que arbitrariamente realiza funções maliciosas. CERTIFICADOS DIGITAIS – arquivo eletrônico, assinado digitalmente, que contém dados de uma pessoa ou instituição, utilizados para comprovar sua identidade. CÓDIGO MALICIOSO – é um termo genérico que se refere a todos os tipos de programa que executam ações maliciosas em um computador. COMMIT – comando que efetiva a transação que esta sendo executada. COOKIES – são pequenos textos que os sites podem enviar aos navegadores, anexados a qualquer conexão. Nas visitas posteriores o navegador reenvia os dados para o servidor dono dos cookies. 69 CRIPTOGRAFIA – é um método de embaralhar ou codificar dados para impedir que usuários não autorizados os leiam ou adulterem. É usada, dentre outras finalidades, para: autenticar a identidade de usuários; autenticar transações bancárias; proteger a integridade de transferências eletrônicas de fundos, e proteger o sigilo de comunicações pessoais e comerciais. DADOS NÃO-VOLÁTEIS – são os dados que após serem gravados não serão apagados ou alterados quando o computador for desligado ou sofrer uma queda de energia. DADOS VOLÁTEIS – necessitam de energia para manter a informação armazenada, após o desligamento da fonte de energia toda a informação é perdida. DDOS (Distributed Denial of Service) – ataque de negação de serviço distribuído, ou seja, um conjunto de computadores é utilizado para tirar de operação um ou mais serviços ou computadores conectados à Internet. DNS (Domain Name System) – Serviço que traduz nomes de domínios para endereços IP e vice-versa. DOWNLOAD – é a transferência de dados de um computador remoto para um computador local. DVD (Digital Versatile Disk) – dispositivo de armazenamento de grande quantidade de dados, usado para armazenar filmes. ECONOMIA UNDERGROUND – é o mercado digital onde são comprados e vendidos os bens e serviços obtidos pelo cibercrime para utilização do mesmo. ECPG - é o pré-processador da linguagem SQL embutido para programas escritos na linguagem C. 70 ENDEREÇO IP - este endereço é um número único para cada computador conectado à Internet, composto por uma seqüência de quatro números que variam de 0 até 255, separados por ".". Por exemplo: 192.168.34.25. ENGENHARIA SOCIAL – método utilizado pelos invasores para induzir os usuários a realizarem uma ação que normalmente resulta em consequências negativas, como o download de malware ou a divulgação de informações pessoais. Ataques de phishing exploram essa metodologia. EXPLOITS – programas ou técnicas para tirar proveito de vulnerabilidades em softwares, podem ser usados para quebrar a segurança ou atacar um computador em uma rede. FIREWALL – dispositivo constituído pela combinação de software e hardware, utilizado para dividir e controlar o acesso entre redes de computadores. FIREWALL PESSOAL – software ou programa utilizado para proteger um computador contra acessos não autorizados vindos da Internet. É um tipo específico de firewall. FRONTEND – é responsável por coletar a entrada em várias formas do usuário e processá-la para adequá-la a uma especificação útil para o back-end, é uma espécie de interface entre o usuário e o back-end. FTP (File Transfer Protocol) – protocolo de transferência de arquivos cliente / servidor. HTML (HyperText Markup Language) – Linguagem universal utilizada na elaboração de páginas na Internet. HTTP (Hyper Text Transfer Protocol) – protocolo de transferência de hipertexto é um protocolo de comunicação entre cliente e servidor. 71 HTTPS (HyperText Transfer Protocol Secure) – é a combinação do protocolo http com o ssl (Secure Sockets Layers) que pode ser traduzido como camada de sockets protegida. É a maneira mais comum de trafegar documentos via http de maneira segura. INTERNET RELAY CHAT (IRC) – é um protocolo de comunicação na Internet utilizado basicamente como bate-papo e troca de arquivos, permitindo a conversa em grupo ou privada. INVASÃO – ataque bem sucedido que resulte no acesso, manipulação ou destruição de informações em um computador. INVASOR – pessoa responsável pela realização de uma invasão ou pelo comprometimento do computador. JAVASCRIPT – é uma linguagem de programação utilizada para criar pequenos programas encarregados de realizar ações dentro do âmbito de uma página web. JDBC – é um conjunto de classes e interfaces (API) escritas em Java que fazem o envio de instruções SQL para qualquer banco de dados relacional. KEYLOGGER – programa capaz de capturar e armazenar as teclas digitadas pelo usuário no teclado de um computador. Normalmente, são utilizados para roubar senhas. LINKS – em um texto significa estabelecer um elo, uma ligação com outra página, outro texto, que o leitor pode abrir clicando numa palavra, grupo de palavras ou em uma imagem. LIVE FORENSICS – é um método de investigação que ocorre ainda com os equipamentos ligados permitindo a coleta dos dados voláteis. 72 LOG – é o registro de atividades gerado por programas de computador. No caso de logs relativos a incidentes de segurança, eles normalmente são gerados por firewalls ou por IDSs. MALWARE - descrição genérica geral para qualquer programa de computador que produza efeitos indesejados ou mal-intencionados. São considerados malwares os vírus, worms, cavalos de tróia e backdoors. MD (message digest) – é o resumo de mensagem. MEMÓRIA CACHE – é uma memória de alta velocidade que faz a interface entre o processador e a memória do sistema. Está embutida no processador e armazena os dados mais acessados. ODBC – é um padrão para acesso a sistemas gerenciadores de bancos de dados. PARTIÇÃO – é uma divisão do espaço de um disco rígido. PCMCIA – é uma porta de comunicação que utiliza o padrão de conectividade que define as dimensões e o esquema físico da ligação de qualquer placa PC Card opcional que se destine a ser utilizada nos slots para este tipo de placas, que se encontram na maior parte dos computadores portáteis. PERL – é uma linguagem "interpiler", ou seja, um programa em Perl é primeiro compilado e em seguida interpretado (não gera código executável). PHARMING – método de ataque que redireciona o tráfego de um site normalmente desenvolvido para imitar o site legítimo. O objetivo é fazer com que os usuários ignorem o redirecionamento e repassem informações pessoais, como senhas de bancos on-line, no site fraudulento. O pharming pode ser praticado ao se alterar arquivos no computador da vítima ou explorando uma vulnerabilidade no software do servidor DNS. 73 PHISHING – golpe que usa spam e mensagens instantâneas para levar pessoas a divulgarem informações confidenciais, como senhas de banco e dados de cartão de crédito. Normalmente, esses ataques aparentam ser de instituições financeiras. PHP – é uma linguagem de programação de domínio específico, ou seja, seu escopo se estende a um campo de atuação que é o desenvolvimento web. POSTMASTER – é o servidor de banco de dados multiusuário do PostgreSQL. POST-MORTEM FORENSICS – é um método de investigação que ocorre após o desligamento dos equipamentos busca por dados não-voláteis. PYTHON – é uma linguagem de programação de alto nível, interpretada, imperativa, orientada a objetos. ROLLBACK – comando que aborta a transação corrente. ROOTKIT – programa ou um conjunto de programas, usado por um atacante para ocultar sua presença em um determinado sistema e permitir seu acesso futuro. RUBY – é uma linguagem de programação interpretada multiparadigma de tipagem dinâmica e forte, com gerenciamento de memória automático. SAMBA – é um "software servidor" para Linux (e outros sistemas baseados em Unix) que permite o gerenciamento e compartilhamento de recursos em redes formadas por computadores com o Windows. SCRIPT KIDDIE – hacker amador que ataca com scripts prontos. SENHA - conjunto de caracteres, de conhecimento único do usuário, utilizado no processo de verificação de sua identidade. 74 SOAP – é o protocolo de comunicação para Web Services, uma especificação para requisitar métodos de negócio, como documentos XML, e suporta outros protocolos como HTTP e SMTP. SPAM – é o termo usado para se referir aos emails não solicitados, que geralmente são enviados para um grande número de pessoas. Quando o conteúdo é exclusivamente comercial, este tipo de mensagem também é referenciado como UCE (do Inglês Unsolicited Commercial E-mail). SPYWARE – qualquer software que rastreia e envia informações pessoais ou confidenciais a terceiros. SQL – é uma linguagem de pesquisa declarativa para bancos de dados relacionais. STRING SEARCH – algoritmos de cadeia de pesquisa, ou chamados de algoritmos sequência correspondente, são classes importante de algoritmos de corda que tentam encontrar um lugar onde um ou vários padrões são encontrados dentro de uma seqüência maior ou texto. TCL – é uma linguagem de programação para scripts. TESTE DE DESEMPENHO – é uma classe de testes implementada e executada para caracterizar e avaliar o desempenho relacionado a características do objetivo do teste, como perfis de andamento, fluxo de execução, tempos de resposta, confiabilidade e limites operacionais. THREAD – é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. THREAT – são quaisquer circunstâncias, eventos ou pessoas que possam causar algum tipo de dano ao sistema, seja na forma de roubo, destruição, divulgação, alteração de dados e/ou negação de serviço (DoS). 75 TROJANS – são programas aparentemente inofensivos, úteis e com alguma funcionalidade, porém esconde programas nocivos que põe em risco a segurança das informações. URL (Universal Resource Locator) – é uma sequência de caracteres que indica a localização de um recurso na Internet, como por exemplo, http://cartilha.cert.br/. VIOLAÇÃO DE DADOS (Data Breach) – é qualquer ação que cause danos em um sistema e exponha as informações em um ambiente não confiável. VÍRUS – programa escrito para alterar a maneira como um computador opera, sem a permissão ou conhecimento do usuário. Deve atender a dois critérios: executar a si mesmo e auto-replicar. VULNERABILIDADE – é uma falha no projeto, implementação ou configuração de um software ou sistema operacional que, quando explorada por um atacante, resulta na violação da segurança de um computador. WORM – é um programa capaz de se propagar automaticamente através de redes, enviando cópias de si mesmo de computador para computador. Diferente do vírus, o worm não embute cópias de si mesmo em outros programas ou arquivos e não necessita ser explicitamente executado para se propagar. Sua propagação se dá através da exploração de vulnerabilidades existentes ou falhas na configuração de softwares instalados em computadores.