Especialização em Segurança da Informação Segurança em Aplicações 3. Principais Ataques às...
Transcript of Especialização em Segurança da Informação Segurança em Aplicações 3. Principais Ataques às...
Especialização em Segurança da Informação
Segurança em Aplicações3. Principais Ataques às Aplicações
Márcio Aurélio Ribeiro [email protected]://si.uniminas.br/~marcio/
Pós-SI – 4ª Turma – 2008
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 2
Estrutura típica de aplicações
WebServer(DMZ)
`
Firewall
Clients
DatabaseServer
ApplicationServer
Pro
duct
ion
VLA
N (
switc
h)
Bac
kend
VLA
N (
switc
h)
Privated AreasPublic Areas
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 3
Principais pontos de ataque
Áreas públicas:Vantagem: Facilidade de ataqueDesvantagem: Baixo retornoAlvos e ataques:
Clientes: Roubo de informaçõesLinks: Coleta de pacotesWebservers: Negação de serviço
Áreas restritas:Vantagem: Alto retornoDesvantagem: ComplexidadeAlvos e ataques:
Firewall: Negação de serviçoS.Aplicação: Violação de acessoS.Banco: Violação de acesso
WebServer(DMZ)
`
Firewall
Clients
DatabaseServer
ApplicationServer
Pro
duct
ion
VLA
N (
switc
h)
Bac
kend
VLA
N (
switc
h)
Privated AreasPublic Areas
FácilBaixo Retorno
DifícilRentável
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 4
Principais vulnerabilidades
Áreas públicas:Baixo conhecimento dos usuáriosBaixo nível de proteção das estaçõesUso de protocolos inseguros ou frágeis
Áreas restritas:Gestão inadequada de usuáriosGestão inadequada de perfisInterfaces inseguras entre sistemasServidores mal configuradosAplicações mal escritas
WebServer(DMZ)
`
Clients
Public Areas
Firewall
DatabaseServer
ApplicationServer
Pro
duct
ion
VLA
N (
switc
h)
Bac
ken
d V
LAN
(sw
itch)
Privated Areas
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 5
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 restritasGanhar acesso e controle de servidores
`
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 6
Explorando gestão inadequada
Gestão inadequada de usuáriosUm usuário para cada sistema ou aplicaçãoUsuários demitidos, mas os acessos nãoAcumulação de acessos durante a carreiraFalta de padronizações (processos adequados)
Gestão inadequada de perfisNivelar perfil pela maior necessidadeAcumulação de perfis durante a carreiraIntegração de parceiros, terceiros, visitantes, etc.
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 7
Explorando servidores mal configurados
Trocando módulos e pacotes de correçõesInterceptando chamadas de sistemaExplorando Rootkits (kernel forjado)Explorando Condições de Corrida
Ganhar privilégios indevidos ou negar o serviço
Buffer OverflowAtacar protocolos frágeisAtacar utilitários frágeis
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 8
Explorando interfaces ruins
A integração de sistemas é muito comumComo sistemas heterogêneos podem
conversar entre si?Solução comum:
Arquivos texto ASCIIArmazenado em pastas comuns aos sistemasTransportados 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
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 9
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 acessoCapturar áreas de memória (memory dump)
Explorar falta de rastreabilidade e consistência:Usar credenciais válidas para ações ilícitas
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 10
Explorando aplicações web
Inspeção de pacotes: usar https com sslKeyloggers: usar teclado virtualExplorar portas: usar firewallEspalhar vírus e trojan: usar antivírusSites clonados: digite o endereçoE-mails falsos:
Não abra, use confirmação de remetente, etc.Utilize e-mails seguros (cifrados e autenticados)
Assistentes virtuais: personalize a página
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 11
Explorando o “man in the middle”
Ataque do homem do meio:Interceptar uma conexãoSeqüestrar a sessãoRecomendações:
Não use proxyUse certificados públicosUse uma entidade certificadora externaUse cartões de números variáveis (tokens)Autentique a estação de origem
Questão: como autenticar dispositivos móveis?
`
Cliente Servidor
Espião
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 12
Buffer Overflow
Exemplo:char nome[30];printf(“Nome: ");gets(nome); // permite o overflow da variávelchar b[100];strcpy(nome, b); // 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!
ClientesClientes
Nome:
Variável nome (RAM): Buffer overflow
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 13
Buffer Overflow - Estratégia
Injetar código nas variáveis das funções:Acessar o shell do SOAbrir portas para ataques posterioresInstalar 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.
Argumentos
Endereço de retorno
Variáveis
Código da função
Retorno
Estrutura de Funções:
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 14
SQL Injection
Idéia: injetar código para ganhar acessoExemplo de autenticação:
SELECT*FROM usuariosWHERE 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 --
LoginLogin
Usuário:
Senha:
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 15
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
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 16
Code Injection
Após ganhar acesso ao SO digite:cat > exs // copia digitação em exs
#!/bin/sh // o shell default é o shA=$1 // atribui o 1º parâmetro à Aeval "ls $A“ // executa ls com conteúdo de A
chmod a+rx exs // permite execução de exsO que acontece se digitarmos?
./exs ".;chmod o+r *“O caractere “;” é um separador de
comandos do shell do linux e unix
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 17
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
Segurança em AplicaçõesMárcio Moreira Unidade 3 – Principais Ataques às Aplicações – Slide 18
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çãoAtualização segura de SO e serviçosAvaliação periódica de segurança (Ethical Hacking)Monitoramento contínuo de log
Proteger as aplicações:Processo de desenvolvimento seguro de desenvolvimentoAutenticação centralizadaAdote padrões de comunicação e conexão com DBMSProcesso de garantia da qualidade (avaliações periódicas)