aula de bioquímica bioquímica dos carboidratos.ppt
Segurança e Auditoria de sistemas
1. CENTRO DE ENSINO SUPERIOR DE JUIZ DE FORA
Bacharelado em Sistemas de Informação
Segurança e Auditoria de Sistemas
PROFESSOR: Daves Martins
Segurança e Auditoria de Sistemas
Wesley Augusto Gimenes Pessanha
Juiz de Fora
Minas Gerais - Brasil
Julho/2014
2. 1. XSS e Roubo de Sessão
1.1.XSS
Com o crescimento dos serviços na Web e o grande volume de dinheiro movimentado
por tais serviços, uma falha explorável nessas aplicações é de grande valia no Mercado
das Vulnerabilidades. Dentre as falhas de segurança existentes na WEB, Cross-Site
Scripting (XSS) é, sem dúvida, umas das mais recorrentes, contudo, ainda pouco
explorada.
XSS age numa página web, tal qual a ação do Buffer Overflow em um programa,
podendo mudar por completo o comportamento de um site, aparentemente benéfico,
sem que o usuário perceba. Isso dá ao atacante a possibilidade de ler todo o conteúdo da
página como também mandar informações para um servidor que o atacante controle,
violando totalmente o conceito de privacidade e a política de segurança. É estimado
que cerca de 80% dos sites são vulneráveis a Cross-Site Scripting de uma forma ou de
outra. A maioria dos ataques viabiliza o atacante a se passar pela vítima, ou para
sequestro de sessão. Ataques mais sofisticados podem até fazer da máquina infectada
um zumbi.
O XSS pode ser dividido em três categorias: o persistente, o não persistente e o
Document Object Model (DOM) Based. Os nãos persistentes são os mais comuns,
sendo os principais responsáveis por ataques de phishing.
Esse tipo de ataque depende de uma ação do usuário – normalmente um click num link.
Diferentemente dos ataques que utilizam URLs maliciosas, facilmente percebíveis (uma
vez que os domínios destas URLs não são conhecidos tampouco confiáveis), o XSS se
beneficia da confiança depositada pelo usuário no domínio.
O persistente é o tipo mais perigoso, pois não depende da ação do usuário e
frequentemente acontece em sites no qual o atacante pode postar texto, como, por
exemplo, fóruns, Twitter, Facebook, etc. Encaixa-se nesta definição o famoso vírus do
Orkut, que infectou o profile de diversos brasileiros, fazendo-os entrar na comunidade
“Infectados pelo Vírus do Orkut”. Esse vírus nada mais é do que um XSS persistente,
que rodava na máquina do usuário assim que ele visitasse a página de recados de um ou
outro usuário, que teve o profile infectado.
DOM Based ocorre quando um código Javascript usa o parâmetro passado na URL para
escrever na própria página, e esse parâmetro não é uma entidade HTML. O Cross-Site
Scripting normalmente tem como objetivo o acesso aos cookies do usuário. Com eles
em mãos, o atacante pode se passar pelo usuário e, no caso de aplicações e-banking, ter
acesso a todas as movimentações bancárias. Uma das grandes desvantagens deste tipo
de ataque é sua discrição, ou seja, a vítima não percebe que está sendo atacada.
A proteção contra esse ataque é baseado no tratamento dos inputs do website, passando
um filtro (expressão 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 (códigos de ataque que permitem executar
scripts no computador do alvo), servindo de base para a implementação destes filtros.
Outra forma de evitar ataques do tipo XSS é tratar, no browser do usuário, as
mensagens trocadas entre o cliente e o servidor web. Nessa abordagem, filtros, também
na forma de expressões regulares, são passados no corpo da mensagem a ser enviada
(HTTP Request), verificando a presença de vetores XSS já conhecidos. Uma vez
identificados, o trecho da mensagem que contém o vetor é removido ou modificado,
evitando o ataque ao servidor.
3. Cross-site Scripting é uma vulnerabilidade crítica e, se bem explorada, pode causar
danos sérios, bem como perda de dados críticos. Muitos sites ignoram essa
vulnerabilidade e, até o momento, apenas um dos browsers mais populares, Internet
Explorer 8, vem com proteção nativa contra esse tipo de ataque. Outros browsers
permitem a instalação de add-ons que ajudam a prevenir ataques XSS, como é o caso do
Firefox e seu popular add-on NoScript. A opção pelos add-nos, porém, não é a ideal,
uma vez que não contempla usuários menos experientes e, possivelmente,
desinformados.
Ataques usando XSS têm uma eficiência maior, pois o phishing é mais bem sucedido.
Isso se deve à confiança que a maior parte dos usuários tem nos sites hospedados sobre
um domínio conhecido, como sites de bancos. Quanto aos serviços de e-banking,
medidas de segurança apropriadas devem ser tomadas para que seus sites não sejam
comprometidos, permitindo, a um eventual atacante, acesso irrestrito a todos os dados,
tanto da página, quanto de seus clientes.
1.2.Roubo de Sessão
De maneira resumida, é a possibilidade de um cracker “sequestrar a sessão” entre dois
computadores através do roubo do identificador de sessão (session ID) usado entre estas
duas máquinas. O início é muito similar ao TCP hijacking, quando o cracker toma (ou
sequestra) a sessão TCP entre duas máquinas o que, infelizmente, é possível por causa
de uma falha do protocolo TCP e, pelo fato preponderante de que, na maior parte das
vezes, a autenticação somente ocorre no início de cada sessão. Hijacking é tomar uma
sessão já ativa onde, provavelmente, o usuário já efetuou autenticação. Embora este
ataque de sequestro de sessão seja sofisticado, ele é muito simples de se implementar
por diversas razões: pela falha inerente do próprio protocolo TCP, porque grande parte
da comunicação entre duas máquinas não é criptografada; pelo fato de a maioria dos
sites usarem sessions IDs muito pequenos e previsíveis; pelo frequente uso de sessions
IDs (ou cookies que os contêm) sem período de expiração; ou pela ausência de qualquer
outro controle de invalidação destes sessions IDs. O session ID é tão valioso em uma
comunicação pela web porque uma vez que o cracker esteja com a posse deste, poderá
fazer o que desejar no site que o usuário está visitando, como se fosse o próprio usuário.
Isto é possível posto que a interceptação ocorresse antes do login e o website. Se a
opção de roubar o session ID falhar, o cracker pode tentar inferir o session ID tentando
advinhar seu mecanismo de geração (principalmente quando este session ID é pequeno).
Isto é relativamente fácil de ser feito capturando diversos sessions IDs e fazendo uma
análise para verificar se existe algum padrão de criação destes.
Se não for possível fazer bom uso dos recursos anteriores (roubo ou inferência do
session ID), o cracker pode dispor de métodos de força bruta para consegui-lo. Falhou?
Outro ataque que permite transpor esta dificuldade é o Session Fixation Attack que, ao
invés de roubar o session ID, define qual será utilizada pelo usuário e, uma vez a
autenticação tendo sido feita no website, o cracker usa este mesmo session ID para fazer
o que desejar como se fosse o usuário real. Este procedimento não é difícil pois o site
precisa ser vulnerável a este tipo de exploração e, o cracker necessita ainda entender
qual é o padrão de geração destes sessions IDs.
Algumas medidas preventivas: transferir os cookies (que incluem o session ID) de
maneira segura (usando o protocolo HTTPS) para evitar a interceptação dos dados;
gerar um novo session ID após a autenticação do usuário; gerar sessions Ids de maneira
aleatória e com bom comprimento; reduzir a vida útil de um session ID (ou cookie) ou
mesmo invalidá-lo após o usuário realizar o logout; fazer uso de um método de
4. autenticação mais forte como Kerberos ou, no caso de uma comunicação empresarial,
fazer uso de VPNs.
2. Negação de Serviço
Diferentemente da maioria dos ataques da Internet, um ataque de negação de serviço
não visa invadir um computador para extrair informações confidenciais, como números
de cartões de crédito e senhas bancárias, e nem para modificar o conteúdo armazenado
neste computador, como sítios da Internet. Tais ataques têm como objetivo tornar
inacessíveis os serviços providos pela vítima a usuários legítimos. Nenhum dado é
roubado, nada é alterado e não ocorre nenhum acesso não autorizado ao computador da
vítima. A vítima simplesmente para de oferecer o seu serviço aos clientes legítimos,
enquanto tenta lidar com o tráfego gerado pelo ataque. Um serviço pode ser o uso de um
buscador de páginas, a compra de um determinado produto ou simplesmente a troca de
mensagens entre duas entidades. O resultado de um ataque de negação de serviço pode
ser o congelamento ou a reinicialização do programa da vítima que presta o serviço, ou
ainda o esgotamento completo de recursos necessários para prover o seu serviço. Os
primeiros problemas com ataques de negação de serviço na Internet surgiram no início
dos anos 90. Nesse período, 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 são encontrados em computadores de universidades, o que acarretou em
um grande número de roubo de senhas de usuários nestas instituições. Hoje, os ataques
de negação de serviço são comuns e os prejuízos financeiros e de imagem que eles
causam atingem cifras enormes. Sem sombra de dúvida, o estudo e o desenvolvimento
de técnicas contra ataques de negação de serviço tornaram-se importantes temas na área
de segurança. São abordadas ainda as características da arquitetura da Internet que
possibilitam a execução destes ataques, bem como são apresentados os principais
fatores que motivam os atacantes a interferir em um serviço.
Uma forma comum de prejudicar a provisão de um determinado serviço é através do
consumo de recursos essenciais para o seu funcionamento, como a memória, o
processamento, o espaço em disco e a banda passante. Como estes recursos são
limitados, sempre é possível inundar a vítima com um grande número de mensagens de
forma a consumir quase que a totalidade dos seus recursos. Este tipo de ataque é
denominado “ataque por inundação”. Nestes ataques, a aplicação, a vítima ou a própria
infraestrutura de rede fica sobrecarregada com o tratamento das mensagens de ataque e
não consegue atender ao tráfego de usuários legítimos.