Segurana e Auditoria de Sistemas PROFESSOR: Daves Martins
Segurana e Auditoria de Sistemas
Wesley Augusto Gimenes Pessanha
Juiz de Fora Minas Gerais - Brasil Julho/2014 1. XSS e Roubo de Sesso 1.1. XSS
Com o crescimento dos servios na Web e o grande volume de dinheiro movimentado por tais servios, uma falha explorvel nessas aplicaes de grande valia no Mercado das Vulnerabilidades. Dentre as falhas de segurana existentes na WEB, Cross-Site Scripting (XSS) , sem dvida, umas das mais recorrentes, contudo, ainda pouco explorada. XSS age numa pgina web, tal qual a ao do Buffer Overflow em um programa, podendo mudar por completo o comportamento de um site, aparentemente benfico, sem que o usurio perceba. Isso d ao atacante a possibilidade de ler todo o contedo da pgina como tambm mandar informaes para um servidor que o atacante controle, violando totalmente o conceito de privacidade e a poltica de segurana. estimado que cerca de 80% dos sites so vulnerveis a Cross-Site Scripting de uma forma ou de outra. A maioria dos ataques viabiliza o atacante a se passar pela vtima, ou para sequestro de sesso. Ataques mais sofisticados podem at fazer da mquina infectada um zumbi. O XSS pode ser dividido em trs categorias: o persistente, o no persistente e o Document Object Model (DOM) Based. Os nos persistentes so os mais comuns, sendo os principais responsveis por ataques de phishing. Esse tipo de ataque depende de uma ao do usurio normalmente um click num link. Diferentemente dos ataques que utilizam URLs maliciosas, facilmente percebveis (uma vez que os domnios destas URLs no so conhecidos tampouco confiveis), o XSS se beneficia da confiana depositada pelo usurio no domnio. O persistente o tipo mais perigoso, pois no depende da ao do usurio e frequentemente acontece em sites no qual o atacante pode postar texto, como, por exemplo, fruns, Twitter, Facebook, etc. Encaixa-se nesta definio o famoso vrus do Orkut, que infectou o profile de diversos brasileiros, fazendo-os entrar na comunidade Infectados pelo Vrus do Orkut. Esse vrus nada mais do que um XSS persistente, que rodava na mquina do usurio assim que ele visitasse a pgina de recados de um ou outro usurio, que teve o profile infectado. DOM Based ocorre quando um cdigo Javascript usa o parmetro passado na URL para escrever na prpria pgina, e esse parmetro no uma entidade HTML. O Cross-Site Scripting normalmente tem como objetivo o acesso aos cookies do usurio. Com eles em mos, o atacante pode se passar pelo usurio e, no caso de aplicaes e-banking, ter acesso a todas as movimentaes bancrias. Uma das grandes desvantagens deste tipo de ataque sua discrio, ou seja, a vtima no percebe que est sendo atacada. A proteo contra esse ataque baseado no tratamento dos inputs do website, passando um filtro (expresso regular) com um conjunto de stopwords. Isso permite que o webdeveloper elimine as principais formas de XSS. Em XSS Cheat Sheet existe uma lista dos vetores XSS mais conhecidos (cdigos de ataque que permitem executar scripts no computador do alvo), servindo de base para a implementao destes filtros. Outra forma de evitar ataques do tipo XSS tratar, no browser do usurio, as mensagens trocadas entre o cliente e o servidor web. Nessa abordagem, filtros, tambm na forma de expresses regulares, so passados no corpo da mensagem a ser enviada (HTTP Request), verificando a presena de vetores XSS j conhecidos. Uma vez identificados, o trecho da mensagem que contm o vetor removido ou modificado, evitando o ataque ao servidor. Cross-site Scripting uma vulnerabilidade crtica e, se bem explorada, pode causar danos srios, bem como perda de dados crticos. Muitos sites ignoram essa vulnerabilidade e, at o momento, apenas um dos browsers mais populares, Internet Explorer 8, vem com proteo nativa contra esse tipo de ataque. Outros browsers permitem a instalao de add-ons que ajudam a prevenir ataques XSS, como o caso do Firefox e seu popular add-on NoScript. A opo pelos add-nos, porm, no a ideal, uma vez que no contempla usurios menos experientes e, possivelmente, desinformados. Ataques usando XSS tm uma eficincia maior, pois o phishing mais bem sucedido. Isso se deve confiana que a maior parte dos usurios tem nos sites hospedados sobre um domnio conhecido, como sites de bancos. Quanto aos servios de e-banking, medidas de segurana apropriadas devem ser tomadas para que seus sites no sejam comprometidos, permitindo, a um eventual atacante, acesso irrestrito a todos os dados, tanto da pgina, quanto de seus clientes.
1.2. Roubo de Sesso De maneira resumida, a possibilidade de um cracker sequestrar a sesso entre dois computadores atravs do roubo do identificador de sesso (session ID) usado entre estas duas mquinas. O incio muito similar ao TCP hijacking, quando o cracker toma (ou sequestra) a sesso TCP entre duas mquinas o que, infelizmente, possvel por causa de uma falha do protocolo TCP e, pelo fato preponderante de que, na maior parte das vezes, a autenticao somente ocorre no incio de cada sesso. Hijacking tomar uma sesso j ativa onde, provavelmente, o usurio j efetuou autenticao. Embora este ataque de sequestro de sesso seja sofisticado, ele muito simples de se implementar por diversas razes: pela falha inerente do prprio protocolo TCP, porque grande parte da comunicao entre duas mquinas no criptografada; pelo fato de a maioria dos sites usarem sessions IDs muito pequenos e previsveis; pelo frequente uso de sessions IDs (ou cookies que os contm) sem perodo de expirao; ou pela ausncia de qualquer outro controle de invalidao destes sessions IDs. O session ID to valioso em uma comunicao pela web porque uma vez que o cracker esteja com a posse deste, poder fazer o que desejar no site que o usurio est visitando, como se fosse o prprio usurio. Isto possvel posto que a interceptao ocorresse antes do login e o website. Se a opo de roubar o session ID falhar, o cracker pode tentar inferir o session ID tentando advinhar seu mecanismo de gerao (principalmente quando este session ID pequeno). Isto relativamente fcil de ser feito capturando diversos sessions IDs e fazendo uma anlise para verificar se existe algum padro de criao destes. Se no for possvel fazer bom uso dos recursos anteriores (roubo ou inferncia do session ID), o cracker pode dispor de mtodos de fora bruta para consegui-lo. Falhou? Outro ataque que permite transpor esta dificuldade o Session Fixation Attack que, ao invs de roubar o session ID, define qual ser utilizada pelo usurio e, uma vez a autenticao tendo sido feita no website, o cracker usa este mesmo session ID para fazer o que desejar como se fosse o usurio real. Este procedimento no difcil pois o site precisa ser vulnervel a este tipo de explorao e, o cracker necessita ainda entender qual o padro de gerao destes sessions IDs. Algumas medidas preventivas: transferir os cookies (que incluem o session ID) de maneira segura (usando o protocolo HTTPS) para evitar a interceptao dos dados; gerar um novo session ID aps a autenticao do usurio; gerar sessions Ids de maneira aleatria e com bom comprimento; reduzir a vida til de um session ID (ou cookie) ou mesmo invalid-lo aps o usurio realizar o logout; fazer uso de um mtodo de autenticao mais forte como Kerberos ou, no caso de uma comunicao empresarial, fazer uso de VPNs.
2. Negao de Servio Diferentemente da maioria dos ataques da Internet, um ataque de negao de servio no visa invadir um computador para extrair informaes confidenciais, como nmeros de cartes de crdito e senhas bancrias, e nem para modificar o contedo armazenado neste computador, como stios da Internet. Tais ataques tm como objetivo tornar inacessveis os servios providos pela vtima a usurios legtimos. Nenhum dado roubado, nada alterado e no ocorre nenhum acesso no autorizado ao computador da vtima. A vtima simplesmente para de oferecer o seu servio aos clientes legtimos, enquanto tenta lidar com o trfego gerado pelo ataque. Um servio pode ser o uso de um buscador de pginas, a compra de um determinado produto ou simplesmente a troca de mensagens entre duas entidades. O resultado de um ataque de negao de servio pode ser o congelamento ou a reinicializao do programa da vtima que presta o servio, ou ainda o esgotamento completo de recursos necessrios para prover o seu servio. Os primeiros problemas com ataques de negao de servio na Internet surgiram no incio dos anos 90. Nesse perodo, foram desenvolvidos os primeiros programas para ataques remotos. Para usar estes programas e obter um grande impacto, o atacante precisava de um computador de grande capacidade conectado a uma rede de alta velocidade. Esses dois requisitos so encontrados em computadores de universidades, o que acarretou em um grande nmero de roubo de senhas de usurios nestas instituies. Hoje, os ataques de negao de servio so comuns e os prejuzos financeiros e de imagem que eles causam atingem cifras enormes. Sem sombra de dvida, o estudo e o desenvolvimento de tcnicas contra ataques de negao de servio tornaram-se importantes temas na rea de segurana. So abordadas ainda as caractersticas da arquitetura da Internet que possibilitam a execuo destes ataques, bem como so apresentados os principais fatores que motivam os atacantes a interferir em um servio. Uma forma comum de prejudicar a proviso de um determinado servio atravs do consumo de recursos essenciais para o seu funcionamento, como a memria, o processamento, o espao em disco e a banda passante. Como estes recursos so limitados, sempre possvel inundar a vtima com um grande nmero de mensagens de forma a consumir quase que a totalidade dos seus recursos. Este tipo de ataque denominado ataque por inundao. Nestes ataques, a aplicao, a vtima ou a prpria infraestrutura de rede fica sobrecarregada com o tratamento das mensagens de ataque e no consegue atender ao trfego de usurios legtimos.