Escolar Documentos
Profissional Documentos
Cultura Documentos
ATAQUES E
VULNERABILIDADES
Técnico em Redes de Computadores
3º Módulo
Jacson Tiola
Arquiteturas OSI & TCP/IP
Aplicação
Aplicação
Apresentação
Sessão
Transporte
Transporte
Rede Inter-Rede
Enlace
Enlace & Físico
Físico
OSI TCP/IP
2
Família TCP/IP
DNS SNMP NFS OSPF FTP HTTP SSH SMTP
Aplicação
Transporte
UDP SCTP RTP TCP
Enlace & Físico ETHERNET PPP TOKEN RING FDDI ATM 802.11 ...
3
Ameaças na pilha TCP/IP
Funções do nível Enlace & Físico
Define as propriedades da rede, como níveis de voltagem, tipos e
tamanhos de cabos, conectores, frequência; Transferência confiável no
meio físico, acesso ao meio
Aplicação
Algumas Ameaças
• Vandalismo
– Acesso cabos lógicos e de força, disjuntores
– Acesso a equipamentos, racks distribuídos no
Transporte prédio
• Manutenção na rede elétrica interfere na rede
• Picos de energia afetam serviços
• Redes sem fio
Inter-Rede – Frequência do IEEE 802.11 é 2.4GHz (ISM)
– Muitos dispositivos podem interferir (ex: fornos
microondas, Bluetooth) e causar DoS (denial of
service)
Enlace & Físico
– Captura do sinal, captura de pacotes
– Criptografia de nível físico deve estar habilitada
• ARP cache poisoning (envenenamento tabela ARP)
Modelo TCP/IP
4
Ameaças na pilha TCP/IP
Funções do nível de Redes
Rotear dados através de várias redes até o destino final
6
Ameaças na pilha TCP/IP
Funções do nível de Aplicação
Protocolos de alto nível e aplicações
Algumas Ameaças
Aplicação
• Plugins para Browsers (ActiveX, Applets Java)
• Senhas enviadas sem criptografia
• Vírus, Worms, Trojans
– Vírus são programas malignos que se replicam
Transporte – Trojan horse programa maligno disfarçado
de benigno
– Worms são vírus auto-replicáveis
Inter-Rede • Bugs de software vulnerabilidade
– Muitos serviços rodam com privilégios
– Vulnerabilidades em SNMP, SSH, FTP, …
Enlace & Físico – Boa especificação, falhas na implementação
• Falha na configuração de serviços (FTP, HTTP, …)
– Boa especificação, boa implementação, falhas
de configuração
Modelo TCP/IP
7
Terminologia
• Ataque
– acesso a dados ou uso de recursos sem autorização
– execução de comandos como outro usuário
– uso de falsa identidade
– condução de negação de serviços (denial of service)
– Violação de uma política de segurança
• Vulnerabilidade
– É uma falha que pode permitir a condução de um ataque
• Incidente
– A ocorrência de um ataque; exploração de vulnerabilidades
• Ameaça
– Qualquer evento que pode causar dano a um sistema ou rede
– Por definição, a existência de uma vulnerabilidade implica em uma
ameaça
• Exploit code
– Um código preparado para explorar uma vulnerabilidade conhecida
– Uma ferramenta para ataques
Fonte: www.cert.dfn.de/eng/pre99papers/certterm.html
8 (entre outras)
Incidentes
Incidente
Ataque
Evento
Atacante Ferramenta Vulnerabilidade Ação Alvo Resultado Objetivo
Copiar
Roubar
Modificar
Apagar
10
Por que estamos vulneráveis?
• Sistemas se tornaram muito complexos nas últimas décadas
• Controle de qualidade não tem tido força contra as pressões do
mercado
• Deficiências no perfil dos programadores
• Milhares de computadores se somam à Internet todo mês
• Administradores de rede: pouco treinamento, muitas prioridades
conflitantes
• Prioridade: manter o sistema funcionando
• Atualizar sistema: quando tiver tempo...
• Nem todas as portas estão fechadas, porque pessoas estão ocupadas
fazendo coisas "úteis"
• Invasores dificilmente são pegos. Quando o são, não são punidos
11
Atacantes e seus objetivos
• Hackers – Atacam sistemas pelo desafio técnico, por status ou pela "adrenalina" da
invasão. Constroem suas próprias ferramentas
• Cracker, vândalo, defacer – Hacker com fins destrutivos (blck hat)
• Espião, Corporate raider – Ataca sistemas dos concorrentes pelo roubo da informação
para ganho financeiro ou competitivo
• Terroristas – Atacam para causar medo ou por motivação política
• Criminoso, Carder – Atacam sistema para obter ganho financeiro pessoal
• Voyeur – Atacam para ter acesso à informação
• Script Kiddy – Novato que se acha hacker, mas apenas segue "receitas de bolo"
disponíveis na Internet (não sabem exatamente porque aquilo funciona)
• Lamer, Luser – que se diz hacker (hacker não se diz hacker) "If you're a good hacker
everybody knows you. If you're a great hacker, no one does."
• Phreaker – Um hacker com maior atuação em telecomunicações
• White Hat – Um hacker, possivelmente aposentado, que trabalha como consultor de
segurança. Odiado pelos "Black Hats“
• Grupos hackers – Ex: Cult of the Dead Cow
12
Hall da Fama
Fonte: http://tlc.discovery.com/convergence/hackers/bio/bio.html
13
Tipos de Ataques
Ataques para obtenção de
informações
porta fechada
porta aberta
Scanning de vulnerabilidades
• Falhas de programação
• Ataques na Web
• Problemas com o SNMP
• Vírus, worms e cavalos de tróia
– Cada vez mais sofisticados. Ex: Stuxnet (2010)
Erros comuns de programação
Como não há uma fórmula para solucionar este problema, devemos adotar
uma metodologia. Uma abordagem muito aceita entre os programadores
envolvidos com segurança é codificar o software de forma que ele aceite um
conjunto restrito e precisamente mapeado de possibilidades; rejeitando todas
as demais.
Para Maria se autenticar no sistema: abre seu navegador, carrega o formulário, e entra
com o nome e senha corretos. As variáveis $login e $passwd serão preenchidas com os
valores passados pelo comando POST. A autenticação é feita através do comando SQL,
que busca uma entrada da tabela users que contenha ao mesmo tempo o login e a senha
fornecidos pelo usuário. No caso da Maria, o comando SQL processado será select *
from users where login='maria' and password='maria123'.
Injeção SQL
• Uma falha é susceptível a SQL injection quando é possível escolher um input tal que a
query resultante contenha um comando arbitrário.
Vejamos novamente a codificação da query SQL:
$qry= "select * from users where login='$login' and password='$passwd'"
O que acontece quando a variável $login contém um dos caracteres de controle da
linguagem SQL? Por exemplo, se o token de comentário (- -) fosse atribuído à variável
$login, o que aconteceria?
Ocorre que a variável $login é concatenada com as outras partes do comando sem haver
nenhum tratamento prévio. As informações fornecidas pelo usuário são substituídas na
cadeia de caracteres $qry sem que seja assegurada a consistência do comando
resultante.
Portanto, os campos Nome e Senha do formulário são extensões do comando SQL! Os
valores não são devidamente resguardados como um dos parâmetros da cláusula
WHERE. Se o campo Nome tem valor “‟--” (como no exemplo acima) e Senha é
deixado em branco, temos o seguinte resultado:
Injeção SQL
• Note o token de comentário “- - “ (terminado por um caractere branco). Toda a linha
à direita dele é ignorado, resultando em:
$qry= "select * from users where login= „ „ "
Esta modificação ainda não é o suficiente para burlar a autenticação do programa, já
que não há entradas com o campo login nulo na tabela users.
Partindo do princípio que não conhecemos nenhum usuário que nos permitiria entrar
algo como: “maria‟- - “ podemos concatenar uma condição OU com uma sentença
verdadeira, para obter como resposta todas as linhas da tabela users. A query
resultante da entrada da cadeia “‟ or 1 = 1 - - “ seria:
$qry= "select * from users where login=„ „ or 1=1"
Este comando fará com que todas as linhas da tabela sejam retornadas, já que 1 = 1 é
sempre verdadeiro.
Assim, o mecanismo de autenticação foi burlado. O atacante foi capaz de violar o
controle de acesso sem nem mesmo precisar de um usuário forjado.
Injeção SQL
• A maneira correta de implementar a construção da query é validando a entrada antes
de ser concatenada ao comando, assegurando que não há comandos injetados dentro do
valor recebido.
Uma das maneiras de se proteger do ataque é processar a entrada do usuário com a
função mysql_real_escape_string(), que adiciona escapes à todos os caracteres
reconhecidos como ameaças para um comando na linguagem SQL que são, na verdade,
os próprios caracteres especiais ou tokens da linguagem. Poderíamos usar a função para
adicionar escapes no conteúdo da variável $login, desta forma:
Note que o segundo acento é precedido de um escape, e isto faz com que todo o
argumento, incluindo a seqüência de comentário “- - “, seja considerado parte do
campo login na busca. O resultado é um sistema mais seguro, já que este novo
mecanismo é capaz de evitar a injeção do comando.
Cross-Site Scripting (XSS)
• Aproveita o mal processamento dos dados de entrada na construção de páginas
HTML. O XSS permite burlar mecanismos de controle de acesso para obter informações
confidenciais do usuário, ou executar scripts em sua máquina.
Cross-Site Scripting (XSS)
Enumeração
Escalando Acesso à
Invasão
privilégios informação
Instalação de Ocultação
back doors de rastros
Denial of
service
66
Anatomia de um ataque
Varredura Reconhecimento
Enumeração
Escalando Acesso à
Invasão
privilégios informação
Instalação de Ocultação
back doors de rastros
Denial of
service
67
1. Footprinting (reconhecimento)
68
Anatomia de um ataque
Varredura Reconhecimento
Enumeração
Escalando Acesso à
Invasão
privilégios informação
Instalação de Ocultação
back doors de rastros
Denial of
service
69
2. Scanning (varredura ou mapeamento)
Tela do Cheops
71
(http://cheops-ng.sourceforge.net)
Anatomia de um ataque
Varredura Reconhecimento
Enumeração
Escalando Acesso à
Invasão
privilégios informação
Instalação de Ocultação
back doors de rastros
Denial of
service
72
3. Enumeration (enumeração)
Enumeração
Escalando Acesso à
Invasão
privilégios informação
Instalação de Ocultação
back doors de rastros
Denial of
service
74
4. Ganhando acesso (invasão)
75
Anatomia de um ataque
Varredura Reconhecimento
Enumeração
Escalando Acesso à
Invasão
privilégios informação
Instalação de Ocultação
back doors de rastros
Denial of
service
76
5. Escalada de privilégios
77
Anatomia de um ataque
Varredura Reconhecimento
Enumeração
Escalando Acesso à
Invasão
privilégios informação
Instalação de Ocultação
back doors de rastros
Denial of
service
78
Anatomia de um ataque
Varredura Reconhecimento
Enumeração
Escalando Acesso à
Invasão
privilégios informação
Instalação de Ocultação
back doors de rastros
Denial of
service
80
7. Ocultação de rastros
81
Anatomia de um ataque
Varredura Reconhecimento
Enumeração
Escalando Acesso à
Invasão
privilégios informação
Instalação de Ocultação
back doors de rastros
Denial of
service
82
8. Instalação de Back doors (porta dos fundos)
83
Anatomia de um ataque
Varredura Reconhecimento
Enumeração
Escalando Acesso à
Invasão
privilégios informação
Instalação de Ocultação
back doors de rastros
Denial of
service
84
9. Denial of Service (negação de serviço)