• Nenhum resultado encontrado

Identificação de vulnerabilidades em aplicações web open-source

N/A
N/A
Protected

Academic year: 2021

Share "Identificação de vulnerabilidades em aplicações web open-source"

Copied!
75
0
0

Texto

(1)

Departamento de Ciências e Tecnologias da Informação

Identificação de vulnerabilidades em

aplicações web open-source

António José Rocha Teixeira

Dissertação submetida como requisito parcial para a obtenção do Grau de Mestre em Engenharia de Telecomunicações e Informática

Orientador:

Prof. Doutor Carlos José Corredoura Serrão

(2)

“El arte de vencer se aprende en las derrotas.”

Simon Bolivar

(3)

1

Resumo

Na atualidade, as tecnologias da informação facilitam a comunicação das empresas e permitem uma implementação digital dos principais processos de negócio internos e da integração com clientes, fornecedores e parceiros de negócio. Mas nem tudo são benefícios. O facto dos negócios estarem mais acessíveis e interligados traduz-se também em novos riscos de segurança que devem ser identificados e devidamente mitigados. Muitas destas organizações optam hoje por software open-source, em particular aplicações web, sem ter a capacidade de avaliar até que ponto estas mesmas aplicações são seguras. Esta é a principal motivação para o presente trabalho de investigação, a de permitir que as organizações possam ter uma opinião informada sobre este tipo de software que utilizam. Para conseguir atingir este objetivo, esta investigação baseou-se na auditoria e análise das aplicações web open-source mais utilizadas pelas empresas através das principais ferramentas de análise automatizada de vulnerabilidades em aplicações web.

Os resultados servirão como referência nos conhecimentos relacionados com a segurança informática, especificamente nas aplicações web open-source que poderão ser utilizadas por pequenas e grandes empresas, adicionalmente podem ser utilizados para trabalhos futuros.

Palavras-chave: Aplicações web, segurança informática, vulnerabilidades,

(4)

2

Abstract

Currently, Information Technology facilitates the communication inside and outside companies and allows the digital implementation of key internal business processes and the integration with customers, suppliers and business partners. But not all are benefits. In fact, the more businesses become accessible and interconnected also there is an increase in the new security risks to which they are exposed that must be identified and properly mitigated. Many of these organizations use open-source software, in particular web applications, without having the ability of evaluating if the applications are secure or not. This is the main motivation for this research work and the objective is to allow the organizations to have an informed opinion about this type of software on what concerns security. To achieve this goal, this research was based on the audit and analysis of the most implemented open-source web applications, using the main automated tools of web vulnerabilities analysis.

The results obtained in this research work could serve as reference in knowledge related to information technology security, specifically in the open-source web applications used nowadays by small and large companies. Additionally, these results could be used for future work to be developed in the area.

Keywords: web applications, information security, vulnerabilities, open-source, penetration test.

(5)

3

Capítulo 1. Introdução

Neste capítulo será explicada a motivação para a execução de esta investigação, estarão especificadas as perguntas que devem ser respondidas assim como os objetivos que se pretendem alcançar no final do trabalho. Será igualmente especificado o método de investigação a ser utilizado.

1.1 Motivação e Enquadramento

As tecnologias da informação são algo sem o qual os negócios hoje em dia não sobrevivem. Estas tecnologias possibilitam que as empresas possam comunicar de forma simples e dinâmica e permitem uma implementação digital dos principais processos de negócio internos e da integração com clientes, fornecedores e parceiros de negócio. Contudo, o facto dos negócios estarem mais acessíveis e interligados traduz-se em novos riscos de segurança que devem ser identificados e devidamente mitigados. Por esta razão têm-se desenvolvido estratégias no âmbito de segurança que procuram erradicar os riscos que afetam os sistemas (Agnosticator, 2013).

Devido à sua facilidade de utilização e valor, muitas organizações optam hoje por

software open-source, em particular aplicações web. São múltiplas as categorias de

aplicações web open-source que são usadas pelas organizações dos nossos dias, desde sistemas de gestão de conteúdos, distribuição e partilha de documentos, integração de processos de negócio na organização, relacionamento com o cliente, comércio eletrónico, entre muitos outros (Rubens, 2013). A principal questão que se coloca é que

(6)

4 a maior parte das organizações que usam estas mesmas aplicações não têm a capacidade de aferir até que ponto as mesmas são seguras. A principal motivação para este trabalho, parte precisamente deste facto, ou seja, permitir que as organizações possam ter uma opinião informada sobre a segurança das aplicações web open-source que usam para implementar os seus processos de negócio (Guasch, 2013).

Para conseguir atingir este objetivo, esta investigação irá basear o seu trabalho de auditoria na análise das principais ferramentas de análise automatizada de vulnerabilidades web existentes, tendo como base algumas distribuições de Linux de

Ethical Hacking (Kumar, 2015). Isto terá como objetivo perceber quais as

vulnerabilidades que foram encontradas e de que forma é que as mesmas podem ser mapeadas nos riscos do OWASP Top Ten assim como definir o grau de severidade das mesmas e catalogar as aplicações web open-source de acordo com métricas definidas e que têm um impacto na segurança das mesmas.

Assim, um dos principais resultados a obter neste mesmo trabalho centra-se no facto de ser possível obter uma classificação de segurança, para cada aplicação web open-source auditada, e assim perceber quais aquelas que maiores riscos de segurança acarretam para as organizações.

1.2 Objetivos

O problema do software inseguro é possivelmente um dos desafios técnicos mais importantes do nosso tempo, porque a infraestrutura digital torna-se cada vez mais complexa e interligada, existindo uma maior dificuldade em garantir a segurança na Internet, e em que a exposição de aplicações web e de dados aumenta exponencialmente. (Martinato, 2016)

Atualmente, existe um conjunto de organizações que utilizam aplicações web

open-source para as mais variadas tarefas ou funcionalidades: publicação de conteúdos online, lojas online, aplicações empresariais, entre muitas outras. Algumas destas

aplicações podem conter vulnerabilidades que podem expor os dados e a informação que as mesmas terão que gerir.

(7)

5 Um dos projetos mais importantes dedicado a determinar e combater as causas que fazem com que o software seja inseguro é o OWASP (Open Web Application Security

Project). O OWASP é um fórum aberto, formado por empresas, organizações

educativas e particulares de todo o mundo interessados no tema da segurança aplicacional (não apenas para a web). Juntos constituem uma comunidade de segurança de informação que trabalha para criar artigos, metodologias, documentação, ferramentas e tecnologias que são disponibilizadas à comunidade em geral e podem ser usadas gratuitamente por qualquer um.

Um dos projetos-bandeira da OWASP é o OWASP Top Ten. O OWASP Top Ten é um documento que identifica os principais dez riscos de segurança mais importantes nas aplicações web, e cujo objetivo é criar uma consciência da segurança em quem concebe aplicações através da identificação de alguns dos riscos mais críticos que as aplicações web (e as organizações que as utilizam) enfrentam (OWASP Foundation, 2013).

Com este trabalho pretende-se avaliar a segurança aplicacional de um conjunto de aplicações web open-source, com diversas características, e usando múltiplas ferramentas automáticas de auditoria (que permitiram implementar testes de intrusão), recolher as vulnerabilidades identificadas, validar as mesmas e depois avaliar a segurança destas aplicações face a um conjunto de métricas pré-definidas. Assim, os objetivos mais específicos deste trabalho podem ser resumidos nos seguintes:

 Selecionar e categorizar um conjunto de aplicações open-source (as mais representativas e usadas em cada uma das categorias de aplicações web

open-source), e instalar as mesmas em máquinas virtuais individualizadas, estabelecendo

assim os alvos de teste.

 Selecionar um conjunto de ferramentas de testes de intrusão open-source (mais conhecidas e usadas pela comunidade de testes de intrusão, e alinhadas com as melhores práticas da indústria), recorrendo à distribuições Linux de Ethical

Hacking, para executar testes de intrusão junto das aplicações web identificadas

anteriormente.

 Recolher os resultados dos testes e confirmar manualmente as vulnerabilidades identificadas pelas ferramentas automáticas de testes, eliminando as que se

(8)

6 confirmarem tratar-se de falsos positivos, e mapear essas mesmas vulnerabilidades de acordo com a recomendação OWASP Top Ten.

 Desenvolver escalas de segurança para cada uma das aplicações web testadas, comparando-as em termos de segurança.

1.3 Método de Investigação

Na presente tese será utilizada como metodologia de investigação o Design Science in

Information Systems Research (a investigação científica baseada na ciência do desenho

para sistemas de informação) o qual refere a importância de um bom desenho na investigação, o qual permitirá cumprir o propósito de melhorar a eficácia e eficiência na organização (Hevner, March, Park, & Ram, 2004).

No desenho de SI (Sistemas de informação) há dois paradigmas distintos mas que complementam. O primeiro é a ciência do comportamento que procura desenvolver e justificar teorias, e o segundo é a ciência do desenho que baseia-se na engenharia que procura solucionar problemas e criar inovação.

A ciência do desenho centra-se tanto nos processos como nos artefactos. O processo de desenho é um ciclo entre o desenvolvimento de artefactos e sua avaliação para compreender melhor o problema e os artefactos finais que são gerados. A ciência do desenho procura resolver problemas nos processos de desenho que já tenham sido estudados e documentados como são:

 Requisitos instáveis em ambientes mal definidos;

 Interações complexas entre subcomponentes do problema e a solução;  Necessidade de flexibilidade no desenho de processos e de artefactos;  Dependência de habilidades humanas para produzir soluções efetivas.

A metodologia apresenta um guião para conduzir as investigações e centra-se nos desenhos que usam tecnologia, tomando as políticas e práticas de trabalho como artefactos.

(9)

7 Depois do impacto que teve o artigo original, os autores propuseram una arquitetura geral para projetos de investigação centrados no desenho, a partir de três ciclos: rigor, relevância e desenho, a qual é mostrada na Figura 1.

Figura 1. Esquema da metodologia Design Science in Information Systems Research (Hevner, A Three Cycle View of Design Science Research, 2007)

A lógica dos três ciclos consiste em integrar o entorno (o domínio ou contexto de aplicação onde reside o problema) e a base do conhecimento (teorias, modelos, métodos, experiencia e artefactos existentes) para construir e avaliar um artefacto (solução), fundamentado na base do conhecimento e destinado a resolver o problema relevante, a partir das necessidades obtidas da compreensão das pessoas, a tecnologia e o contexto organizacional do entorno (Gonzalez & Quimbaya., 2012).

O ponto de entrada do ciclo será na “Relevância” devido a que se origina de uma necessidade expressada e identificada, não da continuidade de um projeto anterior.

 O problema identificado (Ciclo Relevância):

Possível existência de riscos de segurança nos sistemas de informação baseados em aplicações web open-source utilizados pelas empresas, os quais devem ser identificados e devidamente mitigados.

(10)

8  O artefacto para solucionar o problema (Ciclo Desenho):

Planeamento e elaboração de um conjunto de testes num grupo de aplicações web (as mais representativas e usadas em cada uma das categorias), através de ferramentas automáticas de intrusão. Posteriormente mapear essas mesmas vulnerabilidades de acordo com o OWASP Top Ten e finalizando com o desenvolvimento de escalas de segurança para cada uma das aplicações web testadas, comparando-as em termos de segurança.

 Contribuição teórica para a base do conhecimento (Ciclo Rigor):

Os resultados servirão como referência nos conhecimentos relacionados com a segurança informática, especificamente nas aplicações web open-source que poderão ser utilizadas por pequenas e grandes empresas, adicionalmente podem ser utilizados para trabalhos futuros.

(11)

9

Capítulo 2. Revisão da Literatura

Neste capítulo serão detalhados os principais tópicos referentes ao estado da arte de auditoria de vulnerabilidades em aplicações web, serão identificadas as principais vulnerabilidades assim como as organizações que se responsabilizam em avaliar e informar detalhadamente suas características. São igualmente identificadas as metodologias mais fiáveis e robustas para a identificação de vulnerabilidades assim como as principais ferramentas automáticas de análise de vulnerabilidades em aplicações web (web scanners).

2.1 Listas de Vulnerabilidades em Aplicações Web e Entidades

Internacionais em Segurança da Informação

Com o passar do tempo cada vez é maior a quantidade de vulnerabilidades existentes nas aplicações que são usadas na maior parte da nossa vida pessoal e das organizações. Estas vulnerabilidades são igualmente cada vez mais potentes e fáceis de explorar. Pela necessidade de avaliar, identificar e comunicar estas vulnerabilidades e tendo em conta o alto relevo na informática com a temática da segurança aplicacional nasceram instituições internacionais especializadas em segurança da informação. A análise estado da arte tem em consideração as boas práticas de identificação e análises de vulnerabilidades correspondentes a um conjunto de entidades internacionais, especialmente vocacionadas para a segurança aplicacional web, nomeadamente:

(12)

10  Computer Emergency Response Team

O CERT é um centro de resposta a incidentes de segurança em tecnologia da informação. Trata-se de um grupo de especialistas responsáveis pelo desenvolvimento de medidas preventivas e/ou reativas aos problemas de segurança em sistemas de informação. O CERT estuda o estado da segurança global de computadores e redes e fornece serviços de resposta a incidentes de vítimas de ataques na rede, publica alertas de ameaças e vulnerabilidades e fornece informações para ajudar a melhorar a segurança desses mesmos sistemas (Carnegie Mellon University, 2016).

 Massachusetts Institute of Technology Research Establishment

A corporação MITRE é uma empresa sem fins lucrativos que opera vários centros de pesquisa e desenvolvimento financiados pelo governo federal dos Estados Unidos. Fornecem soluções inovadoras e práticas para alguns dos desafios mais críticos da nação norte-americana, como por exemplo defesa e inteligência, aviação, sistemas civis, segurança interna, o judiciário, saúde e segurança cibernética. (The MITRE Corporation, 2016)

O CVE (Commom Vulnerabilities and Exposures) é um dicionário de nomes comuns para as vulnerabilidades de segurança da informação publicamente conhecidas, onde cada referência tem um número de identificação único, o que facilita a sua partilha em bases de dados de segurança. A lista é definida e mantida pela organização MITRE com a colaboração de organizações ao redor do mundo que desenvolvem atividades na área da segurança da informação, como por exemplo, vendedores de ferramentas comerciais, instituições de investigação, agências governamentais e outros peritos em segurança (The MITRE Corporation, 2016).

 Open Web Application Security Project

O projeto OWASP é uma comunidade aberta dedicada a capacitar as organizações a desenvolver, comprar e manter aplicações de confiança. Todas as ferramentas, documentos, fóruns e capítulos do OWASP são gratuitos e abertos a qualquer pessoa interessada em melhorar a segurança da aplicação.

(13)

11 O OWASP Top Ten é uma lista com os principais riscos de segurança em aplicações web. Tem como principal objetivo educar quem desenha, arquiteta e programa aplicações web (embora também exista para outro tipo de aplicações ou sistemas), assim como as organizações acerca das consequências das debilidades mais importantes da segurança de aplicações, mediante a identificação dos riscos mais críticos que enfrentam. O projeto Top Ten é referenciado por muitos padrões, livros, ferramentas e organizações, sendo hoje quase um standard “de facto” do mundo da segurança de informação e do desenvolvimento aplicacional.

A versão do OWASP Top Ten foi inicialmente lançada no ano 2003, tendo tido atualizações menores nos anos 2004 e 2007. A versão do ano 2010 foi renovada para dar prioridade ao risco e oferecer informação adicional sobre como avaliar o risco das aplicações web. A versão mais recente foi lançada no ano 2013 e segue o mesmo enfoque que a versão de 2010. Os riscos descritos no OWASP Top Ten (OWASP Foundation, 2013) são os seguintes:

A1 - Injeção

Falhas de injeção, tais como as que ocorrem no SQL, sistema operativo (SO) e LDAP. Estas falhas ocorrem quando os dados não confiáveis são enviados a um interpretador como parte de um comando ou consulta. Os dados hostis do atacante podem enganar o interpretador para executar comandos não intencionais ou aceder aos dados sem a devida autorização.

A2 - Quebra de Autenticação e Gestão de Sessões

As funções da aplicação relacionadas com a autenticação e com a gestão de sessões, muitas vezes não são implementadas corretamente, permitindo aos atacantes comprometer as palavras-passe, chaves ou tokens de sessão, ou explorar outras falhas de implementação para assumir a identidade de outros utilizadores.

A3 - Cross-Site Scripting (XSS)

As Falhas XSS ocorrem sempre que uma aplicação usa dados não confiáveis e os envia para um navegador web, sem a devida validação e codificação apropriada. O XSS

(14)

12 permite que os atacantes executem scripts no navegador da vítima, que podem sequestrar as sessões do utilizador, destruir websites, ou redirecionar o utilizador para sites maliciosos.

A4 - Referência Direta e Insegura a Objetos

Uma referência direta a objetos ocorre quando um programador expõe uma referência a um objeto de implementação interno, como por exemplo, um diretório, um arquivo ou uma base de dados. Sem uma verificação de controlo de acesso ou qualquer outro tipo de proteção, os atacantes podem manipular estas referências para aceder a dados não autorizados.

A5 - Configuração Incorreta de Segurança

Uma boa segurança exige ter definida e implementada, uma configuração segura para a aplicação, frameworks utilizadas no desenvolvimento, servidor da aplicação, servidor web, servidor de base de dados e plataforma operacional. Todas as configurações de segurança devem ser definidas, implementadas e mantidas, porque geralmente não são seguras por defeito. Além disso, o software deve ser mantido atualizado, incluindo as bibliotecas externas de código utilizadas pela aplicação.

A6 - Exposição de Dados Sensíveis

Muitas aplicações web não protegem corretamente os dados sensíveis tais como cartões de crédito ou credenciais de autenticação. Os atacantes podem roubar ou modificar tais dados para realizar fraudes de cartão de crédito, roubos de identidade ou outros crimes. Os dados sensíveis requerem métodos de proteção adicionais como a criptografia de dados, bem como precauções especiais na troca de dados no browser.

A7 - Ausência de Controlo de Acesso a Funções.

A maioria das aplicações web verificam os direitos de acesso ao nível da funcionalidade antes de a tornar visível na interface do utilizador. No entanto, as aplicações precisam verificar o controlo de acesso no servidor quando cada funcionalidade é acedida. Se os pedidos não forem verificados, os atacantes podem realizar pedidos, a fim de aceder a funcionalidades da aplicação sem a devida autorização.

(15)

13 A8 - Falsificação de Pedidos em Sites Cruzados (Cross-Site Request Forgery, CSRF). Um ataque CSRF força o navegador web de uma vítima autenticado a enviar um pedido HTTP falsificado, incluindo um cookie de sessão da vítima ou outra informação de autenticação incluída automaticamente a uma aplicação web vulnerável. Isto permite ao atacante forçar o navegador da vítima a gerar pedidos que a aplicação vulnerável acha que são pedidos legítimos da vítima.

A9 - Utilização de Componentes Vulneráveis

Alguns componentes, tais como bibliotecas, frameworks e outros módulos de software, são quase sempre executados com os mesmos privilégios da aplicação. Se um componente vulnerável é explorado através de um ataque, pode ser facilitada a intrusão no servidor e a perda grave de dados. As aplicações que usam componentes com vulnerabilidades conhecidas debilitam as defesas da aplicação e permitem ampliar a gama de possíveis ataques e os seus impactos.

A10 - Redireccionamentos e Reencaminhamentos não Validados

As aplicações da web frequentemente redirecionam e reencaminham os utilizadores para outras páginas e websites, e utilizam dados não confiáveis para determinar as páginas de destino. Sem a devida validação, os atacantes podem redirecionar as vítimas para websites de phishing ou malware, ou utilizar a informação reencaminhada para aceder a páginas não autorizadas.

 Web Application Security Consortium

O WASC é uma organização sem fins lucrativos, criada como um esforço cooperativo para esclarecer, classificar e organizar ameaças de segurança web. Os membros do Consórcio Web Application Security, criaram este projeto para desenvolver e promover na indústria uma terminologia padrão para descrever as ameaças.

Com o WASC os programadores de aplicações, profissionais de segurança, fornecedores de software e auditores têm a capacidade de aceder a uma linguagem consistente para solucionar problemas de ameaças de segurança web e definições relacionadas.

(16)

14 Classificação de Ameaças WASC Web Threat v2.0

Da mesma forma que o OWASP, a organização WASC conta com sua própria lista das principais vulnerabilidades de segurança aplicacional as quais serão indicadas na Tabela 1.

Ataques Fraquezas

Abuse of Functionality Application Misconfiguration Brute Force Directory Indexing

Buffer Overflow Improper Filesystem Permissions Content Spoofing Improper Input Handling

Credential/Session Prediction Improper Output Handling Cross-Site Scripting Information Leakage Cross-Site Request Forgery Insecure Indexing

Denial of Service Insufficient Anti-automation Fingerprinting Insufficient Authentication Format String Insufficient Authorization HTTP Response Smuggling Insufficient Password Recovery HTTP Response Splitting Insufficient Process Validation HTTP Request Smuggling Insufficient Session Expiration

HTTP Request Splitting Insufficient Transport Layer Protection Integer Overflows Server Misconfiguration

LDAP Injection

Mail Command Injection Null Byte Injection OS Commanding Path Traversal

Predictable Resource Location Remote File Inclusion (RFI) Routing Detour

Session Fixation SOAP Array Abuse SSI Injection SQL Injection

URL Redirector Abuse XPath Injection XML Attribute Blowup XML External Entities XML Entity Expansion XML Injection XQuery Injection

Tabela 1. Classificação de ameaças de WASC (Web Application Security Consortium, 2010)

(17)

15 Entre os ataques mais populares do WASC Web Threat v2.0 podemos numerar os seguintes (Calyptix Security, 2015) :

Brute Force (WASC-11)

Um ataque de Força Bruta é um método para determinar um valor desconhecido, utilizando um processo automatizado para tentar um grande número de valores possíveis. O ataque tira vantagem do facto de que a entropia dos valores é menor do que a percebida.

Denial of Service (WASC-10)

Negação de Serviço é uma técnica de ataque com a intenção de impedir a atividade normal de um website. Os ataques de negação de serviço são normalmente aplicados à camada de rede, mais também são possíveis na camada de aplicação.

Cross-Site Scripting (WASC-8)

Cross-site Scripting (XSS) é uma técnica de ataque que envolve código fornecido pelo

atacante numa instância do navegador do utilizador. A instância do navegador pode ser um cliente de navegador web standard ou um objeto incorporado no navegador, tais como um leitor de RSS ou um cliente de e-mail.

2.2

Auditorias na Área de Segurança da Informação

O glossário da ITIL (Information technology Infrastructure Library) (AXELOS, 2011) define a palavra auditoria, como uma inspeção formal realizada para verificar se uma norma ou conjunto de orientações estão a ser seguidos, que os registros são precisos, ou que os objetivos de eficiência e eficácia estão a ser cumpridos.

Segundo (Pearson & Yee, 2013) a auditoria na área de segurança da informação é responsável por questões de segurança em toda a infraestrutura de tecnologias da informação e pode ser definida como um processo de análise de risco e avaliação de vulnerabilidades. As auditorias em segurança podem ser classificadas em diferentes tipos:

(18)

16  Avaliação de segurança: realizada com o objetivo de expor os problemas de segurança em toda a infraestrutura, através de análises automatizadas que procuram aceder às debilidades da mesma;

 Auditoria de vulnerabilidade: este tipo de auditoria é uma aproximação baseada em risco, onde são simulados ataques externos através de testes de intrusão;  Auditoria de segurança de aplicações: é uma auditoria intensiva de segurança,

realizada a uma aplicação e aos seus componentes associados;

 Gestão de vulnerabilidade: é uma auditoria automatizada, com múltiplas análises, onde são documentadas as vulnerabilidades detetadas por ordem cronológica.

2.3 Aplicações Web

Uma aplicação web é uma aplicação acedida através da Internet geralmente utilizando um navegador web. É um tipo especial de aplicação cliente/servidor, onde a comunicação é realizada através de um protocolo (HTTP). A aplicação web responde a solicitações de um utilizador, os clientes realizam os pedidos a um servidor, que posteriormente as processa e finalmente responde aos clientes com a informação solicitada. O cliente não precisa instalar o atualizar um software para ter acesso à aplicação e a atualização e administração são realizadas de forma centralizada, o que tem como vantagem não ter de fazer distribuição e instalação em múltiplos clientes. Esta facilidade de acesso às aplicações web poder causar problemas de segurança e portanto causar riscos na informação que manipulam. A Figura 2 esquematiza como funciona uma aplicação web.

(19)

17

Figura 2. Esquema de funcionamento de uma aplicação web (Acunetix, s.d.)

2.4 Auditoria de Segurança a uma Aplicação Web

Segundo (Bylica & Ksiezopolski, 2011) a segurança de aplicações web é dificultada principalmente por três aspetos principais: 1) os programadores são forçados a descer os custos das aplicações o que faz que sejam omitidos aspetos de segurança, 2) a criação de novas tecnologias traz consigo uma geração de novas vulnerabilidades e ameaças e 3) o acesso gratuito às aplicações web permite alargar os espectro de novos atacantes potenciais.

As auditorias são realizadas para evitar que uma aplicação web seja alvo de intrusões que possam colocar em risco os elementos de uma empresa como, por exemplo, os servidores, a base de dados e os aspetos não tangíveis como a sua reputação.

Segundo o OWASP Testing Guide v4 (OWASP Foundation, 2016) existem quatro técnicas básicas para analisar a segurança de uma aplicação web: revisão e inspeção manual, modelação de ameaças, revisão de código e testes de intrusão.

 Revisão e inspeção manual.

As inspeções manuais são avaliações humanas que fazem testes das implicações de segurança em pessoas, políticas e processos. São geralmente realizadas analisando documentação ou através de entrevistas com os criadores e proprietários do sistema.

(20)

18 As inspeções manuais e revisões são boas para testar se as pessoas percebem o processo de segurança, se foram informadas da política, e têm as habilidades necessárias para desenhar ou programar uma aplicação segura.

As inspeções manuais têm como vantagem o facto de não requererem tecnologia de suporte, serem flexíveis e poderem ser realizadas desde as etapas iniciais do desenvolvimento de uma aplicação. Como principal desvantagem é o facto de serem consumidoras de tempo, de nem sempre existir disponibilidade de material de suporte e de requererem maior experiência e pensamento humano.

 Modelação de ameaças.

É considerada uma técnica popular para ajudar os arquitetos de um sistema a pensar sobre as ameaças que o mesmo pode sofrer e a criar estratégias de mitigação para as vulnerabilidades potenciais. A modelação de ameaças deve ser feita desde etapas iniciais de uma aplicação e ser contínua durante o seu desenvolvimento. Esta técnica é considerada como uma técnica de avaliação de risco e pode envolver diferentes etapas como a inspeção manual da aplicação, a definição e classificação de ativos com o objetivo de fazer uma lista de prioridades de acordo a importância, a exploração de vulnerabilidades, a exploração de ameaças potenciais e finalmente a criação de estratégias de mitigação.

O guião de revisão de código da OWASP (OWASP Foundation, 2010) contém uma metodologia de modelação de ameaças que pode ser utilizada como referência, o que torna possível seguir uma abordagem estruturada durante a execução da técnica.

 Revisão de código

Através da auditoria manual do código de uma aplicação podem ser identificadas vulnerabilidades que dificilmente seriam detetadas através de outros tipos de testes. A revisão de código é realizada para verificar que os controlos de segurança estão presentes, que trabalham adequadamente e que as pessoas que desenvolveram a

(21)

19 aplicação seguiram as técnicas corretas. A revisão de código é efetiva, precisa e pode ser realizada de forma rápida quando é feita por pessoas com experiência, e é aconselhável que seja realizado por pessoas ou equipas que não estejam relacionados com os autores do código fonte.

 Testes de intrusão ou penetração

São também conhecidos como testes de caixa negra ou ethical hacking. Comprovam uma aplicação sem conhecer o funcionamento interno da mesma, procurando vulnerabilidades de segurança. Os auditores atuam como um atacante e tentam explorar vulnerabilidades. Podem-se realizar também testes a redes e a sistemas operativos. Têm-se vindo a deTêm-senvolver algumas ferramentas que permitem automatizar o processo de auditoria, no entanto a sua eficiência ainda é algo escassa.

2.5 Metodologias de Auditorias de Vulnerabilidades

As metodologias de análise de segurança funcionam como guias para a realização de testes de uma forma organizada e de acordo com um conjunto de regras estabelecidas entre diferentes profissionais. São utilizadas para evitar falhas humanas que possam comprometer os resultados finais. Há diferentes metodologias de auditoria de aplicações web, sendo que as mais utilizadas internacionalmente, uma vez que são abertas e de livre uso, são as seguintes:

 Information Systems Security Assessment Framework (ISSAF) (Open Information Systems Security Group, 2006);

 Open Source Security Testing Methodology Manual (OSSTMM) (Institute For Security and Open Methodologies, 2010);

 OWASP Testing Guide (OWASP Foundation, 2016).

Information Systems Security Assessment Framework (ISSAF)

ISSAF é um projeto do Open Information System Security Group (OISSG) e contém um guia detalhado das práticas e conceitos relacionados com cada uma das etapas que se devem realizar num teste de segurança. A metodologia definida pelo ISSAF compreende todos os aspetos relacionados com avaliação de segurança, desde uma

(22)

20 perspetiva de alto nível, como por exemplo, o impacto no negócio e na organização, até técnicas práticas, como os testes de segurança de palavras-passe, sistemas, entre outros. A metodologia encontra-se dividida em quatro fases principais, estruturadas em vários pacotes de trabalho: planeamento, avaliação, tratamento e acreditação. (Open Information Systems Security Group, 2006)

Open Source Security Testing Methodology Manual (OSSTMM)

O OSSTMM é um manual de uma metodologia aberta para realizar testes de segurança. Foi desenvolvido por Pete Herzog no ano 2000 e representa um padrão de referência para quem deseja realizar um teste de segurança de forma profissional e organizada. Este guia abarca temas da segurança da informação, qualificação do pessoal, segurança nas comunicações, segurança em redes de comunicação sem fios e segurança física. A metodologia OSSTMM pode ser adaptada a qualquer operação de auditoria. (Institute For Security and Open Methodologies, 2010)

Open Web Application Security Project (OWASP) Testing Guide

É um documento que proporciona uma guia centrado em testes e listas de verificação de segurança sobre aplicações web. Este guia está dividido em cinco fases diferentes: a anterior ao desenvolvimento, a fase de definição e desenho da aplicação, a fase de desenvolvimento, a fase de instalação e publicação e finalmente a fase de manutenção e operação. A OWASP está em grande medida dedicada a segurança web pelo que é uma referência para quando são realizadas auditorias de aplicações web. (OWASP Foundation, 2016)

2.6 Sistemas Operativos de Ethical Hacking.

Segundo (Maurya, 2015) as melhores ferramentas de auditoria de segurança são as seguintes:

 Kali Linux

Anteriormente conhecido como BackTrack é uma distribuição baseada no sistema operativo Debian, que contém uma coleção de ferramentas de segurança e auditoria forense. Possui suporte para a arquitetura ARM, uma escolha para quatro ambientes de

(23)

21

desktop populares e atualizações constantes. O Kali Linux1 foi criado pela companhia Offensive Security, traz pré-instalados mais de 600 programas, pode ser usado desde um Live CD, Live USB ou instalado como sistema operativo principal.

 BlackArch

O BlackArch Linux2 é uma distribuição baseada no sistema operativo Arch Linux para auditores de segurança. O repositório contém uma enorme quantidade de ferramentas. Tem a possibilidade de instalar ferramentas individualmente ou em grupos. O BlackArch Linux é compatível com as instalações do SO Arch já existentes. Foi criado e é mantido por um grupo de voluntários.

 BackBox

O Backbox3 é uma distribuição Linux baseada no sistema operativo Ubuntu. Tem-se desenvolvido para realizar testes de penetração e avaliações de segurança. Projetado para ser rápido, fácil de usar e fornecer um ambiente de desktop completo. Foi criado por Raffaele Forte no ano 2010.

 The Samurai Web Testing Framework

O Samurai Web Testing Framework4 é uma distribuição Linux "LiveCD" que está pré-configurada para auditorias web. A imagem contém as melhores ferramentas de código aberto para experimentar. Os programadores desta distribuição basearam a escolha das ferramentas na sua experiência em auditorias web. Esta distribuição está baseada no sistema operativo Ubuntu e foi criada por Kevin Johnson e Justin Searle.

 Computer Aided INvestigative Environment

É uma distribuição Linux baseada em Ubuntu, criada por Nanni Bassetti como um Projeto de Tecnologia Forense Digital5, e tem uma interface gráfica amigável e ferramentas de fácil utilização para o usuário. Atualmente é mantida por colaboradores.

1 https://www.kali.org/ 2 https://blackarch.org/ 3 https://backbox.org/ 4 https://sourceforge.net/projects/samurai/files/ 5 http://www.caine-live.net/page5/page5.html

(24)

22

2.7 Web Scanners

(Teodoro, 2011) define os web scanners como ferramentas que percorrem toda uma aplicação, analisando os seus conteúdos através da aplicação de funções internas que inspecionam o código e o seu comportamento de acordo com uma lista de vulnerabilidades conhecidas. Esta inspeção pretende imitar ataques realizados por agentes maliciosos que geram inputs específicos, enquanto a que as respostas e comportamentos gerados são analisados. Segundo (Gómez, 2015) as oito melhores ferramentas para realizar análises de vulnerabilidade são:

1. Grabber

O Grabber é uma ferramenta que deteta vários tipos de vulnerabilidades num website, é simples, não é muito rápida mas é portátil e muito adaptável. Utiliza-se através da interface de comandos e está programada em linguagem Python (Gaucher, 2006)

2. Subgraph Vega

O Subgraph Vega é um scanner automatizado que realiza testes rápidos para procurar vulnerabilidades sendo também um proxy que pode realizar inspeções táticas. Foi desenvolvido em Java e tem uma interfase gráfica de fácil utilização (Subgraph, 2014)

3. OWASP Zed Attack Proxy

O OWASP ZAP é uma ferramenta desenvolvida em Java pelo projeto OWASP para realizar testes de penetração. Tem como características principais: o Proxy de interceção de dados, a ferramenta de procura Spider, vários tipos de Scanner e a função de Fuzzer (OWASP Foundation, 2016)

4. Wapiti

O Wapiti é um scanner de vulnerabilidades web que realiza testes de caixa negra, sendo usada através da interface de linha de comandos. A ferramenta foi desenvolvida em Python e suporta métodos de ataques com GET e POST HTTP (Surribas, 2014)

(25)

23 A W3af é uma estrutura extremamente popular, poderosa e flexível para encontrar e explorar vulnerabilidades em aplicações web. É fácil de usar e apresenta dezenas de

plugins de avaliação e de exploração de aplicações. De certa forma, é como um

Metasploit focado na web (Riancho, 2013)

6. WebScarab

O WebScarab regista os pedidos e as respostas que observa (atuando como um proxy) e permite que o operador as possa rever de várias maneiras. O WebScarab foi concebido como uma ferramenta para quem precisa expor o funcionamento de um servidor HTTP(S), para permitir ao programador depurar problemas que de outra forma seriam difíceis, ou para permitir a um especialista em segurança identificar vulnerabilidades no desenho ou implementação da aplicação (OWASP Foundation, 2014)

7. Skipfish

O Skipfish é uma ferramenta criada pela empresa Google de reconhecimento de segurança de aplicações web ativas. Prepara um mapeamento interativo de um website alvo de realização de um teste. O mapa resultante é anotado com a saída de um número de controlos de segurança ativa. O relatório final gerado pela ferramenta destina-se a servir de base para as avaliações de profissionais de segurança de aplicações web (Google, s.d.)

8. RatProxy

O RatProxy é uma ferramenta semiautomática criada pela empresa Google, que permite realizar auditorias em aplicações web, utilizando crawlers ativos assim como revisões manuais dos dados através do Proxy (Google, s.d.)

2.8 Virtualização

A virtualização é a abstração dos recursos de um computador e o seu funcionamento como máquina virtual noutra máquina física. O termo “máquina anfitriã” refere-se a uma máquina física onde se leva a cabo a virtualização enquanto o termo “máquina hospedeira” refere-se a máquina virtual o hypervisor (Martín, Marrero, Urbano, Barra, & Moreiro, 2011).

(26)

24 O hypervisor é uma tecnologia composta por uma camada de software que permite utilizar ao mesmo tempo, diferentes sistemas operativos o maquinas virtuais (sem modificar o modificados no caso da paravirtualização) num mesmo computador central. O seja é a parte principal de uma maquina virtual que encarga-se de controlar os recursos do sistema principal exportando-lhos para a máquina virtual. (Velasco, 2004) Na Figura 3 pode-se observar a arquitetura de um sistema de virtualização.

Segundo (Monginho, 2012) existem 4 categorias importantes de tecnologias de virtualização, as quais são introduzidas de seguida.

Figura 3. Arquitetura de um sistema de virtualização (National Instruments, 2016)

1. Virtualização de aplicações

A virtualização de aplicações é a capacidade de instalar e utilizar qualquer aplicação de uma forma segura, enquanto protege o sistema operativo e outras aplicações de possíveis alterações que poderiam afetar a estabilidade e a segurança do sistema.

2. Virtualização de meios de armazenamento

A virtualização nos meios de armazenamento de dados possibilita que a informação gravada em diferentes meios de armazenamento de diferentes fabricantes possa ser partilhada, replicada, movida e até gerida, de uma forma mais fiável e segura.

(27)

25 3. Virtualização de sistemas operativos

A virtualização de sistemas operativos rompe com o conceito que existe de instalação de um único sistema operativo no servidor ou desktop para um único hardware. Apesar de ser possível que numa máquina física exista um único hypervisor também é usual a existência de mais do que um. Uma VM é, por norma, um ambiente criado por software, dentro do sistema operativo hospedeiro (host).

3.1 Virtualização nativa ou total

A virtualização nativa ou total é, acima de tudo, uma camada de software que simula todos os componentes existentes numa máquina real. Com esta técnica o hypervisor controla todo o hardware simulando todos os dispositivos da máquina real disponibilizando um ambiente completo às máquinas virtuais.

3.2 Paravirtualização

A paravirtualização surge como alternativa à virtualização total ou nativa. Neste modelo de virtualização, o sistema operativo é alterado para chamar o hypervisor sempre que executar uma instrução sensível que possa alterar o estado do sistema.

4. Virtualização de hardware

O principal conceito de virtualização de hardware é simples: utilizar software para criar uma máquina virtual que simula um computador físico. Desta forma cria-se um ambiente de sistema operativo separado do servidor host. Ao fornecer várias VM’s de uma vez, permite que sejam executados em simultâneo vários sistemas operativos numa única máquina virtual.

Benefícios da Virtualização:

Conhecidas as diferentes tecnologias de virtualização, examina-se a seguidamente os benefícios da virtualização em diferentes tópicos como segurança, portabilidade, eficiência e outros (Galiana, 2015):

 Permite o isolamento, o qual pode evitar que uma aplicação impacte no funcionamento de outra;

(28)

26  Diminui o número de servidores físicos que se precisam, podem instalar-se uma alta quantidade de máquinas virtuais num só servidor, simulando assim vários servidores físicos;

 Uma imagem pode ser duplicada facilmente, permitindo poupar tempo em processos como instalações de raiz e rápida recuperação de falhas através de cópias de segurança;

 Permite a eficiência de utilização do espaço utilizado nos discos rígidos;  As máquinas virtuais podem ser transportadas facilmente.

Melhores ferramentas de Virtualização

Segundo (Elvira, 2011) as melhores ferramentas para virtualização são as seguintes:  VMware Player

Criada pela empresa VMware Inc. (filial de EMC Corporation) é um programa gratuito que permite a criação de máquinas virtuais com uma variedade de sistemas operativos incríveis, desde Windows, passando pelo Mac até a ampla gama de sistemas Linux (Ubuntu, Suse, Fedora, Debian, Oracle, entre outros).

 VirtualBox

O VirtualBox é um programa gratuito open-source criado pela empresa Innotek GmbH (comprada posteriormente pela Sun Microsystem, atualmente Oracle Corporation), que permite a virtualização de muitos sistemas operativos (mas não tantos como VMware). O VirtualBox pode ser usado em Windows, Linux e MacOSX, podemos instalar sistemas operativos de 64 bits e partilhar pastas entre os diferentes sistemas.

 VirtualPC

VirtualPC e um software de virtualização criado pela Connectix e comprado pela empresa Microsoft. É o software de virtualização mais simples de todos, só permite virtualizar sistemas operativos Windows, consegue virtualizar sistemas de 64 bits e não permite conectar periféricos.

(29)

27

Capítulo

3.

Metodologia

e

Ambiente de Testes de Auditoria

Neste capítulo explica-se a metodologia utilizada para cumprir com os objetivos propostos na investigação, serão explicados todos os processos, os testes automatizados realizados, assim como os respetivas ferramentas a utilizar, desde o servidor até aos clientes, os sistemas operativos e a revisão dos resultados obtidos com ferramentas específicas de análises.

3.1 Identificação dos Processos da Metodologia

O processo tem início na identificação das principais categorias das aplicações web que são utilizadas pelas empresas. De seguida, é importante selecionar as diferentes ferramentas mais adequadas para estabelecer o ambiente de testes a usar neste trabalho. Assim é importante selecionar o software de virtualização para a criação dos ambientes virtuais, seguindo-se os sistemas operativos tanto do lado do cliente como do servidor, e

(30)

28 finalmente as aplicações web que serão testadas (as mesmas devem corresponder às categorias selecionadas no processo anterior). Para finalizar e estabelecer todo o ambiente de testes são igualmente instaladas todas as ferramentas automáticas de auditoria com que serão realizados os respetivos testes. Para realizar os testes, as aplicações web a testar selecionadas são instaladas em instâncias diferentes e individualizadas das máquinas virtuais, tendo em considerações os respetivos requisitos de cada uma (Ver Anexos, Tabela 30). Na fase seguinte são realizados os testes de auditoria utilizando as ferramentas previamente selecionadas. Os resultados são registados numa base de dados. Na fase posterior as vulnerabilidades são classificadas de acordo ao nível de risco e mapeadas no modelo OWASP Top Ten. Seguidamente será realizada uma inspeção manual das vulnerabilidades encontradas, para garantir que se trata efetivamente de uma vulnerabilidade existente e não um falso positivo, e posteriormente é conduzido um novo teste com uma ferramenta especializada no tipo de vulnerabilidade encontrada. O próximo passo consistirá na realização de novos testes com outra ferramenta geral (caso ainda não tenham sido usadas todas). Finalmente serão comunicadas as vulnerabilidades encontradas. O processo continuará atá serem testadas todas as respetivas aplicações. Todo o processo pode ser visualizado na figura 4.

3.2 Identificação das Categorias de Aplicações Web

São múltiplas as categorias de aplicações web open-source que são usadas pelas organizações, sendo que as mais importantes são as seguintes (Rubens, 2013):

 Sistema de Gestão de Conteúdo (Content Management System – CMS)

É um sistema usado para criar, editar, gerenciar e publicar conteúdo de forma consistentemente organizada permitindo que o mesmo seja modificado, removido e adicionado com facilidade.

De acordo com (Amudha, 2011) os CMS são importantes para as empresas já que criam métodos mais avançados de digitalização de processos de negócios, contribuindo à redução de custos através da eliminação da impressão, distribuição e atividades de

(31)

29 armazenamento físico. Os Sistema de Gestão de Conteúdo melhoram a produtividade das empresas.

 Planeamento de Recursos Empresariais (Enterprise Resource Planning - ERP) São sistemas de informação que integram todos os dados e processos de uma organização num único sistema. A integração pode ser vista sob uma perspetiva funcional ou uma perspetiva sistêmica.

(32)

30

Figura 4. Processos da Metodologia.

Segundo (P. Sivakumar, 2014) os ERP ajudam na automatização dos processos de negócios nas empresas através da personalização. Esta possibilidade de personalização

(33)

31 faz que uma organização seja diferente de outras, contribui à melhora da produtividade e reduz o tempo de espera para o atendimento das necessidades dos clientes. Ademais de isto, os ERP permitem a automatização de câmbios no processo de negócios através da flexibilidade, independência da plataforma e permite a geração de conhecimento interno com menores custos.

 Gestão de Relacionamento com o Cliente (Customer Relationship Management - CRM)

São uma classe de ferramentas e sistemas importantes para as empresas já que automatizam as funções de contacto de uma empresa com o cliente, estas permitem que sejam oferecidos produtos e serviços adaptados a suas necessidades, possibilitando assim o marketing relacional, mantendo e consolidando as relações com o cliente, fidelizando aos mesmos. (Serrano, 2014)

 Comércio Eletrónico (e-commerce)

Ferramentas que permitem implementar algum tipo de transação comercial (com ou sem fins lucrativos) feita especialmente através de um equipamento eletrônico, como, por exemplo, computadores, tablets e smartphones.

Segundo a (Forbes, 2014) o comércio eletrónico tem uma alta importância nas empresas motivado aos grandes benefícios:

 Reduz custos, abrir una loja virtual e mais económico que uma física.

 Gera lealdade com os clientes, oferendo uma boa experiencia através de um amplio catalogo de produtos, facilidade no uso da plataforma, serviço de pagos.  Atenção via chat e garantia depois de receber os produtos.

 Maior alcance ao público, mediante a possibilidade de poder comprar desde qualquer parte do mundo, a qualquer hora, ademais da enorme quantidade de usuários ativos na internet, o seja uma quantidade gigantesca de possíveis compradores.

 Segurança para o cliente e o vendedor através de cifrado e certificados de segurança eletrónico.

(34)

32

3.3 Escolha das Aplicações usadas

Nesta secção serão apresentadas todas as aplicações que foram utilizadas nos testes, desde o servidor como os respetivos clientes, sistemas operativos, e diferentes tipos de ferramentas automáticas de auditoria.

3.3.1 Seleção das Aplicações Web a serem testadas

Para a seleção das aplicações web a testar foram utilizados critérios baseados nos níveis de popularidade e na quantidade de descargas dos principais repositórios de

open-source (SourceForge, 2016) e (GitHub, 2016) assim como as estatísticas sobre quota de

mercado de cada uma delas (Wappalyzer, 2016).

Para ser mas específico, e para reduzir o âmbito da tese e dos alvos a testar, foram selecionadas apenas as aplicações web desenvolvidas na linguagem de programação PHP, sendo esta, uma das linguagens de desenvolvimento mais utilizadas para o desenvolvimento de aplicações web, tal como é representada na Figura 5.

Figura 5. Quota de mercado - Linguagem das aplicações web. (Wappalyzer, 2016)

Para a categoria Sistema de Gestão de Conteúdo foram selecionadas as seguintes aplicações, com base na sua quota de mercado (Figura 6):

(35)

33  Joomla – 10%

 Drupal – 6%

Figura 6. Quota de mercado - Sistemas de gestão de conteúdo. (Wappalyzer, 2016)

Na categoria de Comércio Eletrónico foram selecionadas as seguintes aplicações, com base na sua quota de mercado (Figura 7):

Figura 7. Quota de mercado - Comércio eletrónico. (Wappalyzer, 2016)

(36)

34  OpenCart – 11%

 PrestaShop – 8%

Apesar da aplicação WooCommerce apresentar a maior quota de mercado (cerca de 38%) a mesma não foi selecionada uma vez que se trata um plugin para o Sistema de Gestão de Conteúdo WordPress.

Na categoria Gestão de Relacionamento com o Cliente foram selecionadas as seguintes aplicações, baseadas na relevância uma vez que não existia informação relativa à quota de mercado de cada uma (Figura 8):

 Vtiger – 4.015 descargas semanais;  SugarCRM – 1.816 descargas semanais;  Zurmo – 130 descargas semanais.

Figura 8. Aplicações CRM com maior relevância - SourceForge (SourceForge, 2016)

Mais uma vez, para a categoria Planeamento de Recursos das Empresas foram selecionadas as seguintes aplicações, baseadas na relevância (Figura 9):

 webERP – 1.017 descargas semanais;  FrontAccounting -335 descargas semanais;  inoERP – 33 descargas semanais.

(37)

35

Figura 9. Aplicações ERP com maior relevância - SourceForge (SourceForge, 2016)

3.3.2 Seleção do Software para Virtualização

Depois de ter avaliado a Virtualização no capitulo de estado de arte foi tomada a decisão da utilização desta tecnologia neste trabalho motivado pelos seus grandes benefícios, através do isolamento permitiremos que cada aplicação seja protegida de interferências por parte de outro tipo de aplicações, será preciso só um servidor físico para realizar todos os testes, nele poderão ser instalados todos os servidores e clientes virtuais, de igual forma será necessário menor quantidade de espaço em disco, a imagem do servidor LAMP poderá ser replicada varias vezes e ser utilizada para instalar aplicações individualmente em cada uma de elas, poderão ser realizadas copias de segurança no transcurso da investigação e por ultimo as imagens podem ser transportadas facilmente como por exemplo num disco rígido externo.

Para a seleção desta ferramenta foi tomado o estudo realizado pelo website Xmodulo onde foram realizadas provas de desempenho no software Oracle VirtualBox e VMWare Player com diferentes ferramentas que avaliavam o desempenho (Benchmark) apresentando como resultado que o VMware Player apresentou um melhor desempenho, principalmente a nível de velocidade de Disco, CPU e memória RAM (Nanni, 2013).

(38)

36  Comparação do Rendimento do Disco, mais é melhor

Figura 10. Seleção do software para Virtualização - BlogBench, Read Test (Nanni, 2013)

Figura 11. Seleção do software para Virtualização - Dbench, MB/s (Nanni, 2013)

 Comparação do Rendimento da CPU, menos é melhor

Figura 12. Seleção do software para Virtualização - Gzip Compression: 2GB file (Nanni, 2013)

(39)

37

Figura 13. Seleção do software para Virtualização - FFmpeg: H.264 HD to NTSC DV (Nanni, 2013)

 Comparação do Rendimento da Memoria RAM, mais é melhor

Figura 14. Seleção do software para Virtualização - RAMspeed (Integer) (Nanni, 2013)

Figura 15. Seleção do software para Virtualização - RAMspeed (Floating Point) (Nanni, 2013)

(40)

38 O Software VirtualPC foi descartado da seleção pelo facto que não suporta virtualização de sistemas operativos open-source.

3.3.3 Seleção do Sistema Operativo do cliente Ethical Hacker

Foram realizados testes as diferentes distribuições Linux de Ethical Hacking (Kali, BlackArch, BackBox, TSWTF e CAINE) descritas no capítulo anterior, chegando a conclusão que a melhor distribuição que se adapta a este trabalho é o Kali Linux, devido às seguintes características:

 Maior quantidade de programas e ferramentas pré-instaladas;  Atualizações constantes através do modelo Rolling Release;  Interface gráfica de fácil utilização;

 Grande quantidade de utilizadores, forums, blogs e wikis, o qual permite uma maior comunidade de suporte.

3.3.4 Seleção do Sistema Operativo dos Servidores

Para a realização dos testes foi selecionado como o servidor onde se instalaram as aplicações web o sistema operativo Ubuntu 14.04 LTS devido a apresentar os seguintes benefícios:

 Fácil configuração e uso;  Requerimentos físicos baixos;  Interface gráfica intuitiva;

 Excelente segurança e estabilidade;

 Suporte a longo prazo (Long Term Support);  Desenvolvido e suportado pela empresa Canonical.

3.3.5 Seleção das Ferramentas para a realização de Testes de Intrusão

As ferramentas de testes de intrusão para as aplicações web selecionadas foram divididas em dos grupos: ferramentas gerais e ferramentas específicas.

(41)

39  Ferramentas Gerais

Estas ferramentas permitem verificar uma grande quantidade de vulnerabilidades de forma automática. Para a seleção destas ferramentas foram realizados testes, sendo selecionadas as seguintes ferramentas pelos critérios de nível de estabilidade, facilidade de utilização e o número de vulnerabilidades que conseguem verificar.

OWASP Zed Attack Proxy (ZAP)

O OWASP ZAP é uma ferramenta integrada, de interface gráfica desenvolvida e mantida pela organização OWASP. Esta ferramenta permite realizar testes de intrusão com scanners automáticos assim como análises manuais através de um conjunto de ferramentas.

Seguidamente são indicadas as vulnerabilidades específicas que o ZAP analisa assim como os respetivos módulos (OWASP Foundation, 2015).

Active Scan:

 Directory Browsing  Buffer Overflow  CRLF Injection  Cross Site Scripting  Format String Error  Parameter Tampering

 Remote OS Command Injection  Server Side Code Injection  Server Side Include

 SQL Injection  External Redirect  Script Active Scan Rules  Path Traversal

 Remote File Inclusion

Passive Scan:

(42)

40  Content-Type Header Missing

 Cookie No HttpOnly Flag  Cookie Without Secure Flag

 Cross-Domain JavaScript Source File Inclusion

 Incomplete or No Cache-control and Pragma HTTP Header Set  Password Autocomplete in Browser

 Private IP Disclosure  Script passive scan rules

 Secure Pages Include Mixed Content  Session ID in URL Rewrite

 Stats Passive Scan Rule

 Web Browser XSS Protection Not Enabled  X-Content-Type-Options Header Missing  X-Frame-Options Header Not Set

Subgraph Vega

Esta é uma plataforma que permite testar a segurança das aplicações web, recorrendo a uma interface gráfica. Foi desenvolvida em Java e corre em Linux, OS X e Windows. Seguidamente apresentam-se as vulnerabilidades específicas que analisa o programa assim como os respetivos módulos (Subgraph, 2016).

Injection Module (Active Scan):

 Cross Domain Policy Auditor  Shell Injection

 HTTP Trace Probes  Remote File Include

 Blind SQL Text Injection Differential  XSS Injection

 Blind SQL Injection Arithmetic Evaluation Differential  Blind XPath Injection

(43)

41  Format String Injection

 XML Injection

 HTTP Header Injection  Blind OS Command Injection  Blind SQL Injection

 Interger Overflow Injection  URL Injection

 Local File Include  Eval Code Injection

 Bash Environment Variable Blind OS Injection

Response Processing Module (Passive Scan):

 RSS/Atom/OPL Feed Detector  Cleartext Password Over HTTP  Directory Listing Detection  Path Disclosure

 Cookie Scope Detection

 Version Control String Detection

 Social Security/Social Insurance Number Detector  Unsafe Or Unrecognized Character Set

 Interesting Meta Tag Detection  WSDL Detector

 X-Frame Options Header Not Set  AJAX Detector

 Form autocomplete

 HTTP Authentication Over Unencrypted HTTP  Error Page Detection

 Empty Response Body Module  Character Set Not Specified  Internal IP Addresses  File Upload Detection

(44)

42  E-Mail Finder

 Insecure Cross-Domain Policy  Credit Card Identification  Insecure Script Include  Cookie Security Module

 Oracle Application Server Fingerprint  HTTP Header

 Source Code Disclosure

3.4 Execução dos Testes de Auditoria.

Um teste de intrusão é um método de avaliação da segurança de um sistema de informação mediante a simulação de ataques. Grande parte do trabalho realizado nesta tese será baseada especificamente em testes de intrusão realizados a aplicações web. O processo foca-se na busca de qualquer debilidade, falhas técnicas ou vulnerabilidades para posteriormente poderem ser identificadas e reportadas com uma respetiva avaliação assim como uma proposta para sua mitigação ou solução técnica (Salazar, 2016).

O modelo de testes é composto por:

 Auditor: indivíduo que realiza as atividades de teste e verificação;  Ferramentas e Metodologias: o núcleo do projeto de guia de testes;

 Aplicação e ambiente: o alvo dos testes numa abordagem de caixa negra (black

box).

Os testes dividem-se normalmente em duas fases distintas:

 Modo Passivo (Passive Scan): examina de maneira simples as respostas da aplicação (saída) sem modificar as respostas obtidas – por exemplo, uma “flag” não ativada;

 Modo Ativo (Active Scan): a ferramenta realizará varias tentativas de modificar a resposta obtida da aplicação web, serão modificados os valores de entrada

(45)

43 tentando procurar uma resposta “vulnerável” – por exemplo, através de injeção SQL.

Adicionalmente, o conjunto de testes a realizar encontra-se dividido em 9 subcategorias principais:

 Testes de gestão da configuração;  Testes da lógica de negócio;  Testes de autenticação;  Testes de autorização;  Testes de gestão de sessões;  Testes de validação de dados;  Testes de negação de serviço;  Testes de serviços web;  Testes de AJAX.

Testes de Caixa Negra

Os testes de caixa negra (black box) pressupõem que o programa que está a ser testado seja uma “caixa negra”, ou seja, é assumido que não há conhecimento sobre a forma como o programa está implementado. Este tipo de teste é tipicamente utilizado para isolar possíveis comportamentos erróneos do sistema, tais como resultados, interfaces e desempenho. Uma das abordagens usadas no desenvolvimento de testes de caixa negra é o teste baseado na especificação. Esta abordagem utiliza os requisitos como forma de testar as funcionalidades, já que a especificação dos requisitos é convertida em casos de teste, sendo que cada requisito resulta em pelo menos um caso de teste (Andrade, 2015).

3.5 Confirmação de Vulnerabilidades

Depois de terem sido realizados os testes gerais automatizados é preciso realizar novos testes que permitam filtrar os chamados falsos positivos, os quais são alertas de existência de vulnerabilidades que realmente não existem. Para solucionar este problema serão utilizadas ferramentas que sejam especializadas nas diferentes

Imagem

Figura 1. Esquema da metodologia Design Science in Information Systems Research (Hevner, A Three Cycle View of Design Science Research, 2007)
Figura 2. Esquema de funcionamento de uma aplicação web  (Acunetix, s.d.)
Figura 3. Arquitetura de um sistema de virtualização  (National Instruments, 2016)
Figura 4. Processos da Metodologia.
+7

Referências

Documentos relacionados

Muitas vezes nos Centros de Atenção Psicossocial Álcool e Outras Drogas (CAPS ad), observamos a infantilização dos usuários, que pode aparecer através dos familiares, quando

Assim, a presente pesquisa objetiva apresentar uma proposta voltada à re- ferida zona de esperança, que pressuponha o uso correto dos direitos do homem, a partir de uma

O primeiro volume é publicado em 2001, tendo sido a coleção criada por Manuel Lopes, antigo diretor da Biblioteca Municipal Rocha Peixoto e coordenador do

Em estudos mais aprofundados, tem-se a análise dinâmica não linear geométrica de estruturas laminadas modeladas com elementos tridimensionais de barra considerando o efeito

Os sais hidratados podem ser considerados ligas de um sal inorgânico e água, formando um sólido crsitalino de fórmula geral

A incerteza a respeito dos efeitos das mudanças climáticas sobre doenças de plantas somente será minimizada ao longo dos anos com estudos mais aprofundados sobre

Even for the usual Becker-D¨ oring equations with input of monomers, the long time behaviour of solutions is not completely understood, [12], and so it seemed advisable to start with

Na produção de sementes as características avaliadas foram: tempo para florescimento, número de ramificações por planta, comprimento de síliquas, número de síliquas por