Especialização em Segurança da Informação
Segurança em Aplicações
3. Principais Ataques às Aplicações
Márcio Aurélio Ribeiro Moreira
[email protected]
http://si.uniminas.br/~marcio/
Pós-SI – 4ª Turma – 2008
Estrutura típica de aplicações
WebServer
(DMZ)
Clients
Firewall
Database
Server
Backend VLAN (switch)
`
Privated Areas
Production VLAN (switch)
Public Areas
Application
Server
Márcio Moreira
Unidade 3 – Principais Ataques às Aplicações – Slide 2
Segurança em Aplicações
Principais pontos de ataque
 Áreas públicas:
Roubo de informações
Coleta de pacotes
Negação de serviço
`
Privated Areas
WebServer
(DMZ)
Clients
Firewall
Application
Server
 Áreas restritas:
 Vantagem:
Alto retorno
 Desvantagem: Complexidade
 Alvos e ataques:
Firewall:
S.Aplicação:
S.Banco:
Márcio Moreira
Database
Server
Fácil
Baixo Retorno
Difícil
Rentável
Negação de serviço
Violação de acesso
Violação de acesso
Unidade 3 – Principais Ataques às Aplicações – Slide 3
Segurança em Aplicações
Backend VLAN (switch)
Clientes:
Links:
Webservers:
Public Areas
Production VLAN (switch)
 Vantagem:
Facilidade de ataque
 Desvantagem: Baixo retorno
 Alvos e ataques:
Principais vulnerabilidades
Public Areas
Áreas públicas:
Baixo conhecimento dos usuários
Baixo nível de proteção das estações
Uso de protocolos inseguros ou frágeis
Clients
Áreas restritas:
Márcio Moreira
Unidade 3 – Principais Ataques às Aplicações – Slide 4
Firewall
Database
Server
Application
Server
Segurança em Aplicações
Backend VLAN (switch)
Privated Areas
Production VLAN (switch)
Gestão inadequada de usuários
Gestão inadequada de perfis
Interfaces inseguras entre sistemas
Servidores mal configurados
Aplicações mal escritas
WebServer
(DMZ)
`
Explorando vulnerabilidades públicas
 Explorando a fragilidade do usuário:
 Cavalo de tróia, vírus/verme (seqüestro de sessão)
 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:
 Coleta de credenciais (Ethereal)
 Preparação de ataques a áreas restritas
 Ganhar acesso e controle de servidores
Márcio Moreira
Unidade 3 – Principais Ataques às Aplicações – Slide 5
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
Unidade 3 – Principais Ataques às Aplicações – Slide 6
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
Unidade 3 – Principais Ataques às Aplicações – Slide 7
Segurança em Aplicações
Explorando interfaces ruins
A integração de sistemas é muito comum
Como sistemas heterogêneos podem
conversar entre si?
Solução comum:
Arquivos texto ASCII
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
Unidade 3 – Principais Ataques às Aplicações – Slide 8
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
Unidade 3 – Principais Ataques às Aplicações – Slide 9
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
Unidade 3 – Principais Ataques às Aplicações – Slide 10
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:
`
Cliente
Servidor
Não use proxy
Use certificados públicos
Espião
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
Unidade 3 – Principais Ataques às Aplicações – Slide 11
Segurança em Aplicações
Buffer Overflow
Clientes
 Exemplo:
Nome:
 char nome[30];
 printf(“Nome: ");
 gets(nome);
 char b[100];
 strcpy(nome, b);
Variável nome (RAM):
Buffer overflow
// 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
Unidade 3 – Principais Ataques às Aplicações – Slide 12
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
Unidade 3 – Principais Ataques às Aplicações – Slide 13
Estrutura de Funções:
Argumentos
Endereço de retorno
Variáveis
Código da função
Retorno
Segurança em Aplicações
SQL Injection
 Idéia: injetar código para ganhar acesso
 Exemplo de autenticação:
Login
 SELECT *
 FROM
usuarios
 WHERE usuario = '$usuario' AND senha = '$senha'
Usuário:
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
Unidade 3 – Principais Ataques às Aplicações – Slide 14
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
Unidade 3 – Principais Ataques às Aplicações – Slide 15
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“
chmod a+rx exs
// o shell default é o sh
// atribui o 1º parâmetro à A
// executa ls com conteúdo de A
// 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
Unidade 3 – Principais Ataques às Aplicações – Slide 16
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
Unidade 3 – Principais Ataques às Aplicações – Slide 17
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
Unidade 3 – Principais Ataques às Aplicações – Slide 18
Segurança em Aplicações
Download

Principais pontos de ataque